====== Instal·lació Linux Server Ubuntu 20.04.3 ======
{{tag>recepta}}
== instal·lació
== configuració
sudo apt update -y && sudo apt upgrade -y
sudo apt install -y git vim curl
sudo update-alternatives --config editor # canvi d'editor per defecte
sudo visudo -f /etc/sudoers.d/nopass # %sudo ALL=(ALL:ALL) NOPASSWD:ALL
sudo groupadd docker
getent group docker # Get entries from administrative database.
sudo usermod -aG docker ${USER}
sudo chown :docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
# https://bytexd.com/x2go-ubuntu/
sudo apt-get install x2goserver x2goserver-xsession
sudo apt install mate-core mate-desktop-environment mate-notification-daemon
sudo apt-get install nfs-common
=== zsh
sudo apt install -y fonts-powerline zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
chsh -s $(which zsh)
sudo apt-get install -y zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
ZSH_THEME="agnoster"
plugins=(git
colored-man-pages
colorize
zsh-syntax-highlighting
vagrant
zsh-autosuggestions
timer
)
=== ntp
sudo apt install -y ntp
sudo ln -s /usr/share/zoneinfo/Etc/UTC localtime_old
sudo unlink /etc/localtime
sudo ln -s /usr/share/zoneinfo/Europe/Andorra /etc/localtime
sudo systemctl restart ntp.service
=== docker
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker fidmag
=== seguridad
* instalar libreria contraseñas en diccionario:sudo apt install libpam-cracklib
* añadir/reeemplazar:password requisite pam_cracklib.so retry=3 minlen=8 difok=3
* parámetros:
* retry: número de intentos antes de que el sistema devuelva un error en la autenticación y nos expulse.
* minlen: es la longitud mínima de la contraseña, por defecto está en 8 caracteres.
* difok: número de caracteres diferentes que debe tener la nueva clave en comparación con la antigua.
* ucredit: caracteres en mayúscula que debe tener como mínimo o máximo.
* lcredit: caracteres en minúscula que debe tener como mínimo o máximo.
* dcredit: el número de dígitos que debe tener como mínimo o máximo.
* ocredit: el número de otros caracteres (símbolos) que debe tener la clave como mínimo o máximo.
* para los credit:
* lcredit=-2 : significa que como mínimo debe tener 2 caracteres en minúscula.
* lcredit=+2 : significa que como máximo debe tener 2 caracteres en minúscula.
* expira la contaseña y obliga a cambio en próximo login:paswd -e
* caducidad:passwd -w 5 -x 30-i 1
* **w**: aviso X dias antes de la caducidad
* **x**: expira cada X dias
* **i**: desactiva la cuenta a los X dias si no ha habido cambio de contraseña. Solo root puede reactivar.
/via:[[https://www.redeszone.net/tutoriales/seguridad/configurar-politica-contrasenas-debian/]]
=== ufw
sudo apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw enable
ufw status
ufw app list
/more: [[linux:ufw:start|]]\\
/via: [[https://community.hetzner.com/tutorials/simple-firewall-management-with-ufw]]
=== ssh
/via: [[https://community.hetzner.com/tutorials/securing-ssh]]
Protocol 2 # Disables protocol 1
AllowTcpForwarding no # Disables port forwarding.
X11Forwarding no # Disables remote GUI view.
AllowAgentForwarding no # Disables the forwarding of the SSH login.
MaxAuthTries 2
AllowUsers fidmag
ClientAliveInterval 300 # Timeout por inactividad
ClientAliveCountMax 1 # cliente ssh que no responde
PermitRootLogin no
LoginGraceTime 30 # tiempo disponible para teclear usuario y contraseña
sudo sshd -t # test configuration
sudo systemctl restart sshd
==== fail2ban
sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/custom.conf
sudo vim /etc/fail2ban/jail.d/custom.conf # add enabled = true in [sshd] section
[sshd]
enabled = true
fail2ban-client status sshd
sudo zgrep 'Ban' /var/log/fail2ban.log # IPs baneadas
sudo iptables -L INPUT -v -n | less
=== sudo
==== sudoreplay
sudo visudo
# add: Defaults log_output
sudo sudoreplay -l # list sessions
sudo sudoreplay
=== su
sudo groupadd su
sudo usermod -a -G su fidmag
sudo dpkg-statoverride --update --add root admin 4750 /bin/su
=== IPv6 disable
# comprobar estado
ip a | grep inet6
# desactivar ya
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
# persistencia (solo activa tras un reboot)
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6=1" | sudo tee -a /etc/sysctl.conf
=== IPv4 forward disable
# comprobar estat
sysctl net.ipv4.ip_forward
# desactivar inmediatament
sudo sysctl -w net.ipv4.ip_forward=0
# persistència
cho "net.ipv4.ip_forward=0" | sudo tee -a /etc/sysctl.conf
== updates
=== expand filesystem
parted -l /dev/sda
sudo cfdisk
sudo resize2fs /dev/sda2
=== canvi IP
sudo vim /etc/netplan/00-installer-config.yaml
sudo netplan apply
* [[linux:tcpip:netplan|]]
=== canvi hostname
sudo vim /etc/hostname
== scripts
* git:%%//%%fidmag.org:/home/git/vmw-master
* setup.sh
* post-clone.sh
* new-docker-certificates.sh
* certificats:
* en local:scp CA_FIDMAG.crt CA_FIDMAG.key openssl.cnf fidmag@10.213.6.154:~
* en remot:sudo mv CA_FIDMAG.crt CA_FIDMAG.key openssl.cnf /root
* en local:mkdir ~/Documents/certificats-CA/10.213.6.154; scp vmware-master:~/.docker/\* ~/Documents/certificats-CA/10.213.6.154
== apache+php
sudo apt install apache2
sudo apt install ca-certificates apt-transport-https software-properties-common -y
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
#wget -qO - https://packages.sury.org/php/apt.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/php-archive-keyring.gpg
#echo "deb [signed-by=/usr/share/keyrings/php-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
sudo apt update -y
sudo apt install php8.0
sudo apt install php8.0-{mysql,cli,common,xml,fpm,curl,mbstring,zip,gd}
#apt install php php-common php-xml php-gd php-mbstring php-tokenizer php-json php-bcmath php-zip -y
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000
systemctl restart apache2
=== default php
a2dismod php7.4 # disable 7.4
a2enmod php8.0
systemctl restart apache2
/via: [[https://www.howtoforge.com/how-to-install-php-8-on-debian-11/]]\\
/via: [[https://computingforgeeks.com/how-to-install-php-on-debian-linux/]]