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:
- Configure Fail2ban a bajo tiempo de bantime. 60 segundos Entonces recargar.
- Intente iniciar sesión (con SSH), directamente con passwd incorrecto.
- 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.
iptables -L
me mostró como se menciona anteriormente. Entonces, la prohibición estaba activa, cuando me conecté, ordené a mi servidor.
Prueba # 2 paso a paso:
- Detener Fail2ban. Cree un
at
script para eliminar la siguiente regla de prohibición escrita en el futuro. (iptables -D INPUT 1
) - Crea una regla de prohibición:
iptables -I INPUT 1 -s 84.x.y.z -j DROP
- 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.
- Después del
at
script, puedo acceder a mi servidor.
No veo la solución, ¿qué debo hacer para que mi prohibición de IPtables (hecha por Fail2ban) funcione?
Respuestas:
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
iptables
refiere 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):
port
sección a todos . Ejemplo:port = all
banaction
línea existente después de la línea del puerto, con el valor iptables-allports . Ejemplo:banaction = iptables-allports
.# service fail2ban restart
.No pude encontrar una solución para cambiar la
port ssh
directiva, o escribir allí un número. Si tiene una solución que no sea para todos los puertos, ¡la escucharé!fuente
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
.dentro
Supongo que un enfoque similar funcionaría para otros servicios en puertos no estándar.
fuente
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 copiarjail.conf
ajail.local
, por lo que tiene dos archivos en/etc/fail2ban/
. Editarjail.local
, vaya a la línea que contiene[ssh]
y habilítelo así:Después de eso, reinicie fail2ban:
Es posible que funcione ahora, lo he configurado así y funciona.
fuente
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:
fuente
sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade
. Es bastante simple.