martes, 19 de octubre de 2010

Fail2ban

Fail2ban permite evitar ataques de diccionario o de denegación de servicio en nuestros sistemas.
Monitoriza ficheros de log del sistema y permite aplicar reglas de firewall si detecta un posible ataque bloqueando el acceso al servidor desde la ip del atacante.

La instalación desde Debian es muy sencilla:

# aptitude install fail2ban

Para configurarlo editamos el siguiente fichero:

# nano /etc/fail2ban/jail.conf

En este fichero encontramos una primera sección con parámetros globales de configuración, si en las secciones posteriores no se indican todas las opciones utilizará las que hemos definido en esta sección.

Las secciones posteriores determinan los servicios que queremos monitorizar y las acciones que se realizarán si se sobrepasan los reintentos máximos permitidos, por ejemplo el servicio de ssh se configurara:

[ssh]

enabled = true
port    = 222

filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6


Como podéis comprobar he cambiado el número de puerto estándar para que se adecue al sistema.

Otros servicios activados:

[ssh-ddos]

enabled = true
port    = ssh
filter  = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 6

[postfix]

enabled  = true
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log

[couriersmtp]

enabled  = true
port     = smtp,ssmtp
filter   = couriersmtp
logpath  = /var/log/mail.log

[courierauth]

enabled  = true
port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter   = courierlogin
logpath  = /var/log/mail.log

[sasl]

enabled  = true
port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter   = sasl
logpath  = /var/log/mail.log

En Debian es muy sencillo configurar fail2ban ya que la configuración por defecto es muy exacta, en casi todos estos servicios lo único que he hecho es poner la opción enabled a true.

Para poner más de una ip en la opción ignoreip hay que separar las ips/subredes mediante espacios.

Tras los cambios reiniciar el servicio para que asuma la nueva configuración:

# /etc/init.d/fail2ban restart

Instalación para CentOS5.5:

Desde la web oficial de fail2ban obtenemos un repositorio para centos desde donde nos podemos descargar un rpm: http://download.fedora.redhat.com/pub/epel/5/i386/repoview/fail2ban.html
He probado a instalarlo y pide muchos prerrequisitos, entre ellos shorewall. En mi caso no estoy interesado en utilizar shorewall por lo que he buscado otras opciones.

Buscando en rpmforge podemos encontrar varias versiones de fail2ban:
http://rpms.arrfab.net/rpmforge/packages/fail2ban/

Con esto podemos proceder a la instalación:

[root@centos55 ~]# wget http://rpms.arrfab.net/rpmforge/packages/fail2ban/fail2ban-0.8.2-3.el5.rf.noarch.rpm

[root@centos55 ~]# rpm -Uvh fail2ban-0.8.2-3.el5.rf.noarch.rpm
advertencia:fail2ban-0.8.2-3.el5.rf.noarch.rpm: CabeceraV3 RSA/SHA1 signature: NOKEY, key ID 9def3191
error: Error de dependencias:
        gamin-python se necesita para fail2ban-0.8.2-3.el5.rf.noarch

Como podemos tenemos dependencias pendientes y no nos permite la instalación, lo solucionamos:
[root@centos55 ~]# yum install gamin-python

Cuando termine repetimos el comando de instalación del rpm:

[root@centos55 ~]# rpm -Uvh fail2ban-0.8.2-3.el5.rf.noarch.rpm
advertencia:fail2ban-0.8.2-3.el5.rf.noarch.rpm: CabeceraV3 RSA/SHA1 signature: NOKEY, key ID 9def3191
Preparando...    ############################## [100%]
   1:fail2ban    ############################## [100%]

Tras la instalación procedemos a la configuración, en el caso de CentOS no es tan exacta y tenemos que modificar más parámetros, a continuación tenéis varios ejemplos:

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=info@mimaquina.com, sender=fail2ban@vps.
mimaquina.com]
#logpath  = /var/log/sshd.log
logpath  = /var/log/secure
maxretry = 5

[proftpd-iptables]

enabled  = true
filter   = proftpd
action   = iptables[name=ProFTPD, port=ftp, protocol=tcp]
           sendmail-whois[name=ProFTPD, dest=info@
mimaquina.com]
#logpath  = /var/log/proftpd/proftpd.log
logpath  = /var/log/secure
maxretry = 6

[qmail-iptables]

enabled = true
filter = qmail
action = iptables[name=QMAIL, port=smtp, protocol=tcp]
         sendmail-whois[name=QMAIL, dest=info@mimaquina.com]
logpath = /var/log/maillog
maxretry = 6

Tenemos que reiniciar el servicio tras los cambios:

[root@centos55 fail2ban]# service fail2ban restart
Stopping fail2ban:                       [  OK  ]
Starting fail2ban:                       [  OK  ]
[root@
centos55 fail2ban]# service fail2ban status
Fail2ban (pid 6057) is running...
Status
|- Number of jail:      3
`- Jail list:           proftpd-iptables, qmail-iptables, ssh-iptables



;-)

No hay comentarios:

Publicar un comentario