Seguridad en SSH

Si os fijais en los logs generados por ssh, veréis la cantidad de intentos de ataques que sufre este servicio. Existen gusanos que intentan lanzan ataques remotos con intención de loguearse como root en nuestros sistemas y así instalar otros rootkits o hacerse con el control del mismo.
Lo primero para mantener nuestra maquina protegida, será hacer un script de IPTABLES personalizado para nuestro sistema, con política por defecto DROP.

Una vez tengamos mas o menos restringidos los accesos con IPTABLES, añadiremos nuestro usuario al grupo sudoers, así evitamos tener que estar logeados como root para tareas de administración. Para ello editamos (como root) el archivo:

Código:

$ nano /etc/sudoers

y buscamos la linea:

Código:

root ALL=(ALL) ALL

a la que añadimos abajo el nombre de usuario que le permitiremos hacer sudo:

Código:

usuario ALL=(ALL) ALL

Conviene decir que es diferente hacer su o hacer sudo. Su es para convertirse en root, y sudo es para ejecutar un comando como root.

También restringiremos el login de root desde ssh y el puerto editando el archivo /etc/ssh/sshd.config:

Código:

$ sudo nano /etc/ssh/sshd.config

y cambiamos las siguientes lineas
Código:

PermitRootLogin Yes
Port 22

Por
Código:

PermitRootLogin No
Port 2222

Como hemos cambiado el puerto usado por ssh, tenemos que añadir una regla en nuestro script iptables (insisto, con política por defecto DROP):
Código:

$ sudo nano /etc/init.d/firewall.sh
Añadiendo lo siguiente

Código:

#Permitimos el acceso ssh al puerto especificado en /etc/ssh/sshd.config
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -A OUTPUT -p udp --sport 2222 -j ACCEPT

Bueno, ahora instalaremos una aplicación que revisa los logs de ssh en busca de ip’s que intente loguearse como root mediante ataques de fuerza bruta. Después de varios intentos fallidos (se puede configurar) denyhosts rechazará y baneará las ip’s atacantes.

Código:

$ sudo apt-get install denyhosts

y lo paramos para posteriormente configurarlo

Código:

$ /etc/init.d/denyhosts stop

editamos las siguientes variables a nuestro gusto:
Código:

$ sudo nano /etc/denyhosts.conf


DENY_THRESHOLD_INVALID: Número de intentos fallidos (con un usuario que no exista) necesarios para banear esa IP.
DENY_THRESHOLD_VALID: Número de intentos fallidos (con un usuario existente) necesarios para banear esa IP.
DENY_THRESHOLD_ROOT: Número de intentos fallidos (intentando entrar como root) necesarios para banear esa IP.
BLOCK_SERVICE = sshd/ALL/etc… : Servicios que bloqueados a usuarios baneados.
DAEMON_LOG = /var/log/denyhosts : Ubicación del log de denyhosts.
y lo volvemos a iniciar:

Código:

$ /etc/init.d/denyhosts start

Ahora tendremos nuestro acceso ssh bastante protegido de ataques, recordad que tener una contraseña compuesta por letras, números y algún carácter especial ayuda mucho a la seguridad de nuestro sistema.

0 comentarios: