El bloque Fail2ban con IPtables no funciona en Debian Lenny. [movió el puerto ssh]

11

Recientemente he decidido hacer un mantenimiento de seguridad. Vi mis registros, y hubo algunos intentos contra mi servidor SSH. Al principio, alejé el puerto SSH del valor predeterminado 22. Después, leí algo sobre Fail2ban , BlockHosts y DenyHosts .

Eché un vistazo al primero: es simple de configurar, todo es comprensible; pero cuando traté de "probar su protección", las pruebas fallaron . Todo parece estar bien, pero aún puedo acceder al servidor.

También probé las tablas IP: # iptables -I INPUT -j DROP- después de eso mi conexión SSH se perdió (entonces, lo que quería). Entonces # iptables -I INPUT -s 84.x.y.z -j DROP, que funcionó también.

Pero, qué reglas hizo Fail2ban, eso no funciona: ( $ sudo iptables -L)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-apache  tcp  --  anywhere             anywhere            multiport dports www,https
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain fail2ban-apache (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh (1 references)
target     prot opt source               destination        
DROP       all  --  84.x.y.z           anywhere            
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere

Módulos de kernel cargados: ( $ lsmod | grep ip)

iptable_nat             4680  0
nf_nat                 15576  1 iptable_nat
nf_conntrack_ipv4      12268  3 iptable_nat,nf_nat
nf_conntrack           55540  4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport            2816  2
iptable_filter          2624  1
ip_tables              10160  2 iptable_nat,iptable_filter
x_tables               13284  5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6                  235396  24

Versiones

  • Debian Lenny 5.06, kernel 2.6.26-2-686
  • IPtables 1.4.2-6
  • Fail2ban 0.8.3-2sid1
  • openssh-server 1: 5.1p1-5

Prueba n. ° 1 paso a paso:

  1. Configure Fail2ban a bajo tiempo de bantime. 60 segundos Entonces recargar.
  2. Intente iniciar sesión (con SSH), directamente con passwd incorrecto.
  3. Por sexta vez, ingrese la contraseña correcta (el máximo de intentos es solo 4 aquí). Me conecté. También puedo acceder a la página web alojada por ese servidor.
  4. iptables -Lme mostró como se menciona anteriormente. Entonces, la prohibición estaba activa, cuando me conecté, ordené a mi servidor.

Prueba # 2 paso a paso:

  1. Detener Fail2ban. Cree un atscript para eliminar la siguiente regla de prohibición escrita en el futuro. ( iptables -D INPUT 1)
  2. Crea una regla de prohibición: iptables -I INPUT 1 -s 84.x.y.z -j DROP
  3. No pude escribir nada más, la conexión SSH es inutilizable. No pude acceder a la página web. Entonces, lo que quería de iptables.
  4. Después del atscript, puedo acceder a mi servidor.

No veo la solución, ¿qué debo hacer para que mi prohibición de IPtables (hecha por Fail2ban) funcione?

antivirtel
fuente
Pregunta editada! ¿Algunas ideas?
antivirtel

Respuestas:

8

Encontré el problema, lo que hice, antes de instalar fail2ban. Perdón por tu tiempo.

Por razones de seguridad, alejé mi sshd del puerto 22 a otro. La referencia en se iptablesrefiere solo al puerto 22. Pensé que es una variable, lo que siempre se refiere al puerto sshd actual. Pero NO .

La solución exacta (si alejaste tu demonio de su puerto original):

  1. Abra jail.local (o .conf).
  2. Encuentra tu servicio (entre llaves).
  3. Arregle la portsección a todos . Ejemplo:port = all
  4. Agregue o edite una banactionlínea existente después de la línea del puerto, con el valor iptables-allports . Ejemplo: banaction = iptables-allports.
  5. Reinicia el demonio. Ejemplo: # service fail2ban restart.

No pude encontrar una solución para cambiar la port sshdirectiva, o escribir allí un número. Si tiene una solución que no sea para todos los puertos, ¡la escucharé!

antivirtel
fuente
1
Todo lo que necesita hacer es proporcionar el número de puerto en lugar del nombre.
Julian Knight
También tenga en cuenta que su nombre de iptable debe tener menos de 32 caracteres para que se agregue correctamente.
Adrián López
2

Tuve el mismo problema con fail2ban que no se bloqueó después de mover mi servidor ssh al puerto no estándar 12345 (digamos).

Para hacer que fail2ban produzca las reglas correctas después de varios intentos fallidos de autenticación, edité /etc/fail2ban/jail.conf.

port = ssh 

dentro

port = 12345

Supongo que un enfoque similar funcionaría para otros servicios en puertos no estándar.

John
fuente
0

La configuración de fail2ban está en /etc/fail2ban/jail.local. En una instalación predeterminada, no estoy seguro de si está allí. Entonces lo que se hace es copiar jail.confa jail.local, por lo que tiene dos archivos en /etc/fail2ban/. Editar jail.local, vaya a la línea que contiene [ssh]y habilítelo así:

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

Después de eso, reinicie fail2ban:

sudo /etc/init.d/fail2ban restart

Es posible que funcione ahora, lo he configurado así y funciona.

enedene
fuente
¡Creo que no entendiste mi pregunta! Fail2ban hace lo que quiero: ver registros y prohibir a los atacantes. Pero esa prohibición, lo que deberían hacer las IPtables, no funciona. Todavía puedo ACCEDER al servidor, con la configuración de la regla mencionada anteriormente.
antivirtel
Lo siento, tenía prisa, así que no lo entendí y como tenía el mismo problema, que resolví agregando jail.local, pensé que sería útil. Desafortunadamente, si tiene todo configurado correctamente, no sé cuál es el problema, pero espero que alguien más lo haga.
enedene
0

Usted enumeró "Fail2ban 0.8.3-2sid1" como instalado. Esta es una configuración no compatible. Los paquetes Sid no deben instalarse en un entorno estable.

Ejecuto Debian 6 (Squeeze), que se actualizó desde Lenny, en una máquina virtual específicamente como un servidor SSH para mi hogar. También uso fail2ban. Realicé su Prueba # 1 y todo funcionó como debería. No pude iniciar sesión para el número máximo de intentos, y luego mis solicitudes para iniciar sesión se eliminaron durante 60 segundos.

Mi lista de versiones:

  • / etc / debian_version = 6.0.1
  • fail2ban = 08..4-3
  • iptables = 1.4.8
  • openssh-server = 1: 5.5p1-6
James Sumners
fuente
No, tengo el paquete correcto. packages.debian.org/search?suite=lenny&keywords=fail2ban
antivirtel
En ese caso, recomiendo hacer una actualización dist.
James Sumners
okok, no es demasiado fácil, pero lo
lograré de
sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade. Es bastante simple.
James Sumners
sí, pero ¿hay alguna posibilidad de no arrancar la próxima vez ... las notas de la versión escribieron, ese nuevo sistema kenel + nuevo udev ... - tuvo éxito con su máquina?
antivirtel