Si tenéis un servidor SSH corriendo y alguna vez os habéis parado a mirar los logs, habréis visto una gran cantidad de intentos de acceso no autorizados. Si estudiáis más detenidamente los logs descubriréis que la mayoría de veces son ataques basados en diccionarios o similares, por tanto a no ser que nuestros passwords sean muy débiles es difícil que consigan acceder a nuestra máquina. Pero para que arriesgarnos...vamos a ver como protegernos de estos seres malignos e indeseables que intentan entrar en nuestro sistema.
menéame
#1 Si lees el comentario ya lo digo que no vale sólo para ssh...
NO PERMITIR LOS LOGINS COMO ROOT!!!!!!!!
Eso
Si que doy cierto consejo y es activar el PURGE_DENY, yo lo tengo en 2 días, esto quiere decir que todas las ips baneadas a los dos dias se desbanean, yo lo tengo así porque el BLOCK_SERVICE lo tengo puesto a ALL (es decir si intentas entrar por ssh te banea en todo, http, ftp, etc... ) así evito banear ips dinámicas demasiado tiempo.
También y ya que estamos aconsejo el Firewall APF, el servidor VsFtp, repasar el directorio /tmp para ponerlo como noexec, y dar un repasito al etc/password para desactivar el shell en usuarios innecesarios... bueno y mil cosas mas XDD ...
#4: Lo de que es mas pesado de administrar es hasta cierto punto. Una vez configurado correctamente y con buenas prácticas de administración no se hace pesado, se hace seguro.
Por otro lado, si dispones de firewall, tu numero de clientes es reducido, y no son usuarios con IP dinámica (más dificil), aplicas una política en el firewall y asi ni siquiera les das la oportunidad de intentarlo, ya que cambiar el puerto del 22 a otro solo supone quitarse de encima a los 'chicos de los scripts'. Un buen barrido de puertos con Nmap delatará el servidor SSH sin necesidad de nada mas que un poco de tiempo.
Pero me reitero, la combinación #6 + #4 es una de las mejores opciones, y creo que pesa mas la opinión de #4 que la de #6, sin descartarla.
Tambien es importante cuando se detecten estos scaneos hacer un whois de la IP y enviar el log al departamento de abuse, ultimamente yo al menos estoy recibiendo muchos ataques de servidores dedicados, algo que me preocupa bastante.
iptables -A INPUT -p tcp –dport 22 -i eth0 -m state –state NEW -m recent –name SSHD –set
iptables -A INPUT -p tcp –dport 22 -i eth0 -m state –state NEW -m recent –name SSHD –update –seconds 60 –hitcount 4 -j DROP
Esto limitará a 4 conexiones a tu puerto SSH desde la misma IP durante 60 segundos. Es decir, que por minuto solo permites 4 conexiones de SSH, con lo cual, un ataque automático parará a los 4 intentos porque no podrá llegar al puerto.
Me ha gustado esa "nueva" sintaxis para ipv4, ah y lo mismo para los pings, realmente MUY útil y recomendable.
Ahora, haciendome un poco de autobombo, otra herramienta que he desarrollado yo: serhost.com/banfromlog (en base al log genera las sentencias iptables).
0 Cerrar el puerto si se puede (o limitarlo a donde conectemos)
1 Cambiar el puerto a uno alto
2 Aplicar iptables como he explicado en #15
3 Usar llave pública
4 En caso de no querer sólo llave pública tener contraseñas seguras
5 Poner permitrootlogin a no
6 Mirar que ningún usuario típico: ssh, ftp, oracle, webmaster, admin etc tenga contraseñas por defecto o sus cuentas no estén deshabilitadas
7 Si se puede usar port-knocking: en.wikipedia.org/wiki/Port_knocking
8 Mirar los logs, para esto es muy útil logcheck (te envía por emails los logs relevantes).