La expresión Linux hardening significa “endurecimiento”, se refiere a las acciones que debemos tomar para securizar un sistema Linux. En este caso un servidor VPS.

Cambiar la contraseña por defecto del usuario root

Cambiando la contraseña por defecto que suministra el proveedor de servicios, evitamos los ataques de diccionario y terceros que traten de intentar conectarse de forma fraudulenta a nuestro servidor. Además es nuestra oportunidad de crear una contraseña fuerte.

passwd root

Actualizar el sistema

Actualizar el sistema de forma regular para tener las aplicaciones protegidas contra las últimas vulnerabilidades encontradas.

sudo dnf update

Crear usuario sin privilegios

Creamos un usuario con el que nos logueamos al sistema, sin permisos de modificación del sistema. Si tenemos que realizar operaciones con permisos de superusuario, entramos primero con un usuario normal y luego elevamos los provilegios.

Creamos un usuario en el sistema, con su propia carpeta home y establecemos su contraseña.

useradd -m andres
passwd andres

Deshabilitar el acceso root a ssh

El usuario root tiene acceso completo a los sistemas Linux. Es recomendable evitar el acceso remoto de este usuario.

nvim /etc/ssh/sshd_config
#Localizamos la frase PermitRootLogin y lo establecemos a false
PermitRootLogin no
#Reinicamos servicio para recargar la configuración
systemctl restart sshd

Cambiar el puerto ssh por defecto

En mi opinión esto es una medida de seguridad por ofuscación, sin embargo es cierto que “evitamos” los ataques dirigidos de forma automática al puerto 22.

nvim /etc/ssh/sshd_config
Port <número de puerto>

Configurar claves ssh como único acceso a ssh

En este paso deshabilitamos el acceso a nuestro VPS mediante contraseña y habilitamos exclusivamente el acceso mediante claves ssh.

Tener cuidado de tener a buen recaudo las claves ssh, si las perdemos no podremos entrar a nuestro VPS

nvim /etc/sshd/sshd_config
PasswordAuthentication no
PubKeyAuthentication yes

Instalar fail2ban

fail2ban monitoriza los intentos de acceso y banea las IP’s que tratan de conectarse actualizando las iptables.

Es recomendable crear nuestras reglas en un fichero llamado jail.local y dejar el que viene por defecto

sudo dnf install fail2ban
cp /etc/fail2ban/jail.conf  /etc/fail2ban/jail.local

Configuración jaula ssh

[sshd]
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
bantime = 5m
findtime = 1d
enabled = true

Arrancar el servicio

systemctl enable fail2ban
systemctl restart fail2ban

Consultar los intentos de login

fail2ban-client status sshd

Enlaces

https://docs.ovh.com/gb/en/vps/tips-for-securing-a-vps/

https://wiki.archlinux.org/index.php/fail2ban