Como proteger tu servidor Linux de ataques por fuerza bruta

En la Categoría Debian, Sec-Info, Ubuntu el dia 28 marzo 2008

Hace ya algunos años que tengo servidores Web online las 24 horas del día en mi casa ofreciendo servicios hacia Internet los cuales necesitan un nombre de usuario y un password para poder acceder a ellos como pueden ser el SSH o el FTP. He recibido todo tipo de ataques de algunos indeseables pero el mas frecuente es el ataque por fuerza bruta que viene a ser el uso de una lista de nombres tipo diccionario. Han habido días que han estado probando una y otra vez con una lista interminable de nombres haber si coincidían con el password de súper usuario root para hacerse con el servidor por el puerto del SSH.

Hasta el día de hoy los he ido bloqueando de diferentes modos pero el que os voy a explicar esta vez es el mejor que he encontrado contra este tipo de amenazas. El manual que podéis leer a continuación es aplicable en las distribuciones Linux Debian y Linux Ubuntu ya que han sido las dos en las que he probado esta técnica siendo correcta su instalación y configuración.

Este manual es aplicable a cualquier ordenador que ofrezca algún tipo de servicio hacia Internet y quieras protegerlo de un modo cómodo, seguro y funcional.

La aplicación que vamos a usar para protegernos se llama Fail2Ban y se va a encargar de hacer de guardián las 24 horas del día bloqueando a todo aquel que tenga un numero de intentos fallidos de login en alguno de nuestros servicios. Vamos con su instalación …

Ejecutamos una Terminal y nos logeamos como súper usuario ( root ) con el comando su, a continuación lo instalamos con …

apt-get install fail2ban

Ahora vamos a renombrar el fichero de configuración jail.conf por jail.confOLD ya que este mismo nos puede servir como referencia aunque mas adelante os explicare como me lo he configurado yo ;)

mv /etc/fail2ban/jail.conf /etc/fail2ban/jail.confOLD

Como podemos ver en el interior de el archivo jail.confOLD, ya hay varias opciones editadas por defecto y solo están a la espera de ser editadas para ser activadas. A continuación os voy a exponer cual es mi configuración para que os sirva como ejemplo.

Creamos un nuevo jail.conf para asignarle nuestras propias reglas …

vi /etc/fail2ban/jail.conf

Especificando un poco sobre el fichero de configuración …..

ignoreip : IPs de nuestra área local que queremos que se haga la vista gorda en caso de equivocación.
bantime : Tiempo que el usuario que fallo el logeo se quedara sin poder acceder al servicio especificado en segundos.
maxretry : Numero de intentos de logeo.
backend : Permite de un modo o otro la escritura de ficheros log. ( Yo estoy en Debian 4.0 y solo me funciona con la opción polling )
destemail : Dirección de correo donde nos enviara las alertas.
action : Forma en que iptables aplica sus reglas.
mail-whois-lines : Se especifica que queremos que nos envié al correo en caso de intrusión.

Esas lineas explican la configuración básica de el fichero, a continuación vamos a ver un ejemplo de las celdas que creamos para cada servicio …

[ssh] : Tomare ssh como ejemplo pero esta es una linea que da igual lo que pongamos, ya que no afecta a la configuración.
enable : Podemos introducir true para activarlo y false para desactivarlo.
port : Nombre del servicio relacionado con el puerto.
filter : Nombre del archivo .conf ubicado en el subdirectorio /etc/fail2ban/filter.d, este va relacionado con algún filtro ya creado.
logpath : Ruta donde se ubica el fichero log donde se almacena toda la información de el servicio en cuestión.
maxretry : Numero de intentos fallidos, aquí podemos especificar un carácter diferente para cada celda que creemos.
findtime : Si alguien prueba x intentos en este periodo de tiempo especificado en segundos se le considera ataque.
Yo voy a proteger a los servicios SSH, FTP, y al WWW que son los que ofrecen mi servidor hacia internet. A cada uno le voy a dar un retardo de 300 segundos que vienen a ser unos 5 minutos para que durante ese tiempo el usuario que quiera conectarse no le sea una molestia esta medida de seguridad. 5 minutos es suficiente para evitar el uso malintencionado de un ataque por fuerza bruta o también llamado diccionario de nombres.

Si nos fijamos en mi fichero de configuración veréis un ejemplo de como lo tengo yo montado …

[DEFAULT]

ignoreip = 127.0.0.1 192.168.1.0/24
bantime = 300
maxretry = 3
backend = polling
destemail = root@localhost
action = iptables[name=%(__name__)s, port=%(port)s]
mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s]

[ssh]

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600

[apache]

enabled = true
port = http
filter = apache-auth
logpath = /var/log/apache*/*access.log
maxretry = 3
findtime = 600

[apache-noscript]

enabled = true
port = http
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 3
findtime = 600

[proftpd]

enabled = true
port = ftp
filter = proftpd
logpath = /var/log/proftpd/proftpd.log
maxretry = 3
findtime = 600

Como podéis ver en la configuración anterior se especifican reglas para cada servicio especificando el puerto, filtro, ruta donde se ubica el fichero log que genera el servicio y el máximo de intentos de logeo. ( Verifica en tu PC que las rutas son correctas )

Una vez editado este fichero de configuración salimos y guardamos con la tecla ESC y :wq! . A continuación ejecutamos nuestro guardián con …

fail2ban-client start

Y veremos algo así …

2008-03-26 14:19:16,700 fail2ban.server : INFO Starting Fail2ban

Si lo configuramos correctamente solo veremos esta linea, si no veremos alguna linea tipo Warning. ( ATENCIÓN : Ella siempre nos especifica el problema que tenemos en el fichero fail.conf )

Este manual a sido aplicado al servidor Web con Linux Debian que hace unos días publique. Si lo tienes montado quizás te interese aplicarle un poco de seguridad ante esta pequeña molestia que tarde o temprano todos tenemos alguna vez en la vida aunque no nos demos cuenta.

Si queréis ver que tal andamos de bloqueos podéis ver el fichero fail2ban.log que se ubica en la ruta /var/log donde se guardan todos los bloqueos, ips, fecha y hora de quien nos está atacando. Yo lo he probado localmente para ver que tal funciona y aquí tenemos el resultado …

Para mas información sobre el tema podéis visitar la web oficial Fail2ban.org donde tienen toda la documentación oficial sobre el programa en cuestión.

Ahora solo me queda irme a dormir tranquilo y mañana veré en mi correo que tal ando de intentos de logeo fallidos :D

 
 

Artículos Recientes ...

 
Sitio protegido por una licencia Creative Commons. © 2006 / 2013 Política de privacidad en Forat. Design by: Charleston Dating with Ohio Singles | Volleyball Singles | Florida Telemarketing Jobs