Bueno.. desde ayer tengo a fail2ban funcionando en mi servidor casero, esperando por el chileno para que siga con su ataque de diccionario..
Asi que aca les paso una mini guia para instalarlo. es en Gentoo pero en ubuntu por ejemplo solo cambia la instalacion por un hermoso "apt-get install fail2ban"
En Gentoo:
Luego de que se termine de compilar:
Vamos al archivo de configuracion :
/etc/fail2ban/jail.conf
y configuramos los parametros por defecto, y las jaulas que querramos activar, o sea los servicios que queremos monitorear con fail2ban
en mi caso es:
Código:
[DEFAULT]
# ignorar los intentos desde el servidor
ignoreip = 127.0.0.1
#Tiempo por defecto del ban
bantime = 600
#Maximos intentos fallidos de logueo
maxretry = 3
# Esto describe el metodo que usa fail2ban para leer los logs y modificaciones en los mismos. esta en auto por defecto
backend = auto
#Aca empiezo con la configuracion especifica de la jaula para el servidor ssh. en mi caso solo tengo ese servicio escuchando asi que solo #uso esa jaula
[ssh-iptables]
#Lo habilito
enabled = true
#Elijo el filtro a usar
filter = sshd
#La accion a tomar
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=mimail@midominio.com.ar, sender=fail2ban@baikonur.midominio.com.ar]
# El archivo donde revisar por failed logins. Cabe destacar que este archivo puede variar de acuerdo a la configuracion del demonio sshd
logpath = /var/log/messages
#Maximos intentos fallidos.
maxretry = 5
Para Iniciarlo ejecutamos:
Código:
fail2ban-client start
Para cargar nuevas configuraciones:
Código:
fail2ban-client reload
Y para que inicie en nuestro gentoo al inicio del sistema:
Código:
rc-update add fail2ban default
la anterior es una configuracion muy sencilla pero que funciona para evitar el tipo de ataques descriptos anteriormente. sin ir mas lejos. intentando yo mismo desde otro server entrar con login incorrecto veo al 5 intento una hermosa regla de iptables generada en rojo:
Código:
baikonur fail2ban # iptables -L | grep DROP
Chain INPUT (policy DROP)
Chain FORWARD (policy DROP)
Chain OUTPUT (policy DROP)
DROP udp -- anywhere anywhere udp dpt:epmap
DROP udp -- anywhere anywhere udp dpt:microsoft-ds
DROP udp -- anywhere anywhere udp dpts:netbios-ns:netbios-ssn
DROP udp -- anywhere anywhere udp spt:netbios-ns dpts:1024:65535
DROP tcp -- anywhere anywhere tcp dpt:epmap
DROP tcp -- anywhere anywhere tcp dpt:netbios-ssn
DROP tcp -- anywhere anywhere tcp dpt:microsoft-ds
DROP udp -- anywhere anywhere udp dpt:1900
DROP udp -- anywhere anywhere udp spt:domain
DROP udp -- anywhere anywhere udp dpt:1900
DROP udp -- anywhere anywhere udp spt:domain
DROP all -- anywhere 255.255.255.255
DROP all -- anywhere 192.168.2.255
DROP all -- anywhere 255.255.255.255
DROP all -- anywhere BASE-ADDRESS.MCAST.NET/4
DROP all -- anywhere anywhere state INVALID
DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN
DROP all -- ******.static.slicehost.net anywhere
LOG all -- anywhere anywhere LOG level info prefix `Shorewall:logdrop:DROP:'
DROP all -- anywhere anywhere
LOG all -- anywhere anywhere LOG level info prefix `Shorewall:net2all:DROP:'
DROP all -- anywhere anywhere
DROP all -- anywhere 255.255.255.255
DROP all -- anywhere 192.168.2.255
DROP all -- anywhere 255.255.255.255
DROP all -- anywhere BASE-ADDRESS.MCAST.NET/4
DROP all -- 255.255.255.255 anywhere
DROP all -- BASE-ADDRESS.MCAST.NET/4 anywhere
LOG all -- 255.255.255.255 anywhere LOG level info prefix `Shorewall:smurfs:DROP:'
DROP all -- 255.255.255.255 anywhere
LOG all -- 192.168.2.255 anywhere LOG level info prefix `Shorewall:smurfs:DROP:'
DROP all -- 192.168.2.255 anywhere
LOG all -- 255.255.255.255 anywhere LOG level info prefix `Shorewall:smurfs:DROP:'
DROP all -- 255.255.255.255 anywhere
LOG all -- BASE-ADDRESS.MCAST.NET/4 anywhere LOG level info prefix `Shorewall:smurfs:DROP:'
DROP all -- BASE-ADDRESS.MCAST.NET/4 anywhere
En resumen. Cada 5 intento fallido, la IP que lo genero recibe un ban temporal de 10 minutos. si bien no es un castigo demasiado extricto, logra dificultar el ataque, ya que te toma muchisimo tiempo el lograr pasar el diccionario completo. Si a esto le sumas un buen uso de claves, con una complejidad aceptable de ellas y el cambio de las mismas tras un tiempo determinado, seria raro que alguien pueda entrar de esta manera. Pero bueno, como siempre hay que recordar: "Security, is a state of mind"