2011-12-10

Proteger CentOS de ataques externos con fail2ban

Cuando tenemos un servidor en internet es muy común sufrir a diario algún tipo de ataque externo automatizado que trata de acceder y controlar nuestra máquina linux.

Podemos evitar parte de estos ataques instalando la utilidad fail2ban, que permite escanear los ficheros logs del sistema, detecta los ataques sufridos y toma automáticamente medidas para evitarlos, por ejemplo, baneando la IP de la máquina atacante durante cierto tiempo.

Podemos descargar fail2ban directamente en nuestra máquina linux desde su página en github.

wget --no-check-certificate --output-document=fail2ban.0.8.6.tar.gz https://github.com/fail2ban/fail2ban/tarball/0.8.6

También es interesante instalar las librerías de gamin en nuestro sistema, para facilitar la tarea de monitorización de los ficheros logs.
Esto se hace con el comando

yum install gamin

Una vez descargado el fichero fail2ban.0.8.6.tar.gz lo podemos descomprimir usando el comando

tar xvfz fail2ban.0.8.6.tar.gz

La instalación consiste ahora en ejecutar el script de instalación que se encuentra en la carpeta creada por la descompresión.

python setup.py install

Una vez hecho esto podemos comprobar que la instalación ha sido correcta ejecutando el comando

fail2ban-client -h

que mostrará la ayuda del comando.

Si queremos que fail2ban se arranque al iniciar la máquina, podemos copiar el fichero redhat-initd que está dentro del directorio files al directorio de los scripts de arranque de linux CentOS.

cp files/redhat-initd /etc/init.d/fail2ban

Recordar que debemos darle los permisos adecuados

chmod 755 /etc/init.d/fail2ban
y que debemos usar la utilidad chkconfig para crear los enlaces simbólicos usados en el arranque automático.

chkconfig --add fail2ban

Fail2ban también genera su propio fichero log que es conveniente rotar con logrotate.
Para esto podemos crear el fichero /etc/logrotate.d/fail2ban con el siguiente contenido.

/var/log/fail2ban.log {
    weekly
    rotate 7
    missingok
    compress
    postrotate
        /usr/bin/fail2ban-client reload 1>/dev/null || true
    endscript
}

Ahora podemos habilitar las reglas de escaneo de logs que queramos modificando el fichero de configuración /etc/fail2ban/jail.conf.
Por ejemplo, podemos habilitar el escaneo del fichero /var/log/secure que, entre otras cosas, usa el demonio sshd para escribir el log de los intentos fallidos de login para que, usando iptables, restringa los accesos desde la IP atacante y, a la vez, nos envíe un correo electronico avisándonos (un ataque de fuerza bruta muy habitual en internet).

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           mail-whois[name=SSH, dest=correo.de.destino@dominio.com, sender=persona.que.manda.el.correo@dominio.com]
logpath  = /var/log/secure
maxretry = 5

Por último, debemos instalar el comando whois en nuestra máquina para recibir más información sobre la IP atacante.

yum install jwhois

La mayoría de las veces se trata de máquinas que han sido infectadas por algún troyano sin que sus dueños sepan que están siendo usadas para atacar a otras máquinas.
Si podeis poneros en contacto con el dueño y avisarle os lo agradecerá enormemente.

3 comentarios:

  1. Se ve que es muy buena herramienta, funciona bien para un servidor web, y como monitoria. gracias de antemano espero alla sido claro...

    ResponderEliminar
  2. Muchas gracias por el aporte. Es posible colocar un umbral para que los ataques sean dirigidos a un sector menos vulnerable creado por nosotros y que la IP al tercer intento sea pase a la lista de bloqueos.

    gracias por su respuesta

    ResponderEliminar