La seguridad, para los administradores de sistemas, es una lucha constante porque debe asegurar sus sistemas lo suficiente como para protegerlos de ataques no deseados, pero no tanto como para obstaculizar la productividad del usuario. Es un equilibrio difícil de mantener. Siempre hay quejas de "demasiada" seguridad, pero cuando un sistema está comprometido, las quejas van desde "No había suficiente seguridad" hasta "¿Por qué no usó mejores controles de seguridad?" La lucha es real. Hay controles que puede implementar que son efectivos contra ataques de intrusos y, sin embargo, lo suficientemente sigilosos para permitir que los usuarios operen sin restricciones. Fail2ban es la respuesta para proteger los servicios de la fuerza bruta y otros ataques automatizados.
Nota:Fail2ban solo se puede usar para proteger servicios que requieren autenticación de nombre de usuario/contraseña. Por ejemplo, no puede proteger el ping con fail2ban.
En este artículo, demuestro cómo proteger el demonio SSH (SSHD) de un ataque de fuerza bruta. Puede configurar filtros, como fail2ban
los llama, para proteger casi todos los servicios de escucha en su sistema.
Instalación y configuración inicial
Afortunadamente, hay un paquete listo para instalar para fail2ban
eso incluye todas las dependencias, si las hay, para su sistema.
$ sudo dnf -y install fail2ban
Habilite e inicie fail2ban
.
$ sudo systemctl enable fail2ban
$ sudo systemctl start fail2ban
A menos que tenga algún tipo de problema de sintaxis en su fail2ban
configuración, no verá ningún mensaje de salida estándar.
Ahora para configurar algunas cosas básicas en fail2ban
para proteger el sistema sin que interfiera consigo mismo. Copie el /etc/fail2ban/jail.conf
archivo a /etc/fail2ban/jail.local
. El jail.local
file es el archivo de configuración que nos interesa.
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Abra /etc/fail2van/jail.local
en su editor favorito y realice los siguientes cambios o verifique que estos pocos parámetros estén configurados. Busque la configuración ignoreip
y agregue todas las direcciones IP a esta línea que deben tener acceso sin posibilidad de bloqueo. De manera predeterminada, debe agregar la dirección de loopback y todas las direcciones IP locales al sistema protegido.
ignoreip = 127.0.0.1/8 192.168.1.10 192.168.1.20
También puede agregar redes completas de direcciones IP, pero esto elimina gran parte de la protección que desea aplicar fail2ban
por. Mantenlo simple y local por ahora. Guarde el jail.local
archivo y reinicie el fail2ban
servicio.
$ sudo systemctl restart fail2ban
Debe reiniciar fail2ban
cada vez que realiza un cambio de configuración.
Configurar un servicio filtrado
Una nueva instalación de fail2ban
realmente no hace mucho por ti. Debe configurar los llamados filtros para cualquier servicio que desee proteger. Casi todos los sistemas Linux deben ser accesibles por SSH. Hay algunas circunstancias en las que seguramente se detendría y deshabilitaría SSHD para proteger mejor su sistema, pero asumo que todos los sistemas Linux permiten conexiones SSH.
Las contraseñas, como todo el mundo sabe, no son una buena solución de seguridad. Sin embargo, a menudo es el estándar por el cual vivimos. Por lo tanto, si el acceso administrativo o de usuario está limitado a SSH, debe tomar medidas para protegerlo. Usando fail2ban
"observar" SSHD en busca de intentos de acceso fallidos con la posterior prohibición es un buen comienzo.
Nota:Antes de implementar cualquier control de seguridad que pueda dificultar el acceso de un usuario a un sistema, informe a los usuarios que este nuevo control podría bloquearlos del sistema durante diez minutos (o el tiempo que decida) si sus intentos fallidos de inicio de sesión superan su configuración de umbral. .
Para configurar servicios filtrados, debe crear un archivo "cárcel" correspondiente en /etc/fail2ban/jail.d
directorio. Para SSHD, cree un nuevo archivo llamado sshd.local
e ingrese las instrucciones de filtrado del servicio en él.
[sshd]
enabled = true
port = ssh
action = iptables-multiport
logpath = /var/log/secure
maxretry = 3
bantime = 600
Crea el [sshd] e ingrese la configuración que ve arriba como punto de partida. La mayoría de los ajustes se explican por sí mismos. Para los dos que pueden no ser intuitivamente obvios, la configuración de "acción" describe la acción que desea fail2ban
tomar en caso de una infracción. Para nosotros, fail2ban
usa iptables
para prohibir la dirección IP del sistema infractor durante un "tiempo de baneo" de 600 segundos (10 minutos).
Por supuesto, puede cambiar cualquiera de estas configuraciones para satisfacer sus necesidades. Diez minutos parece ser suficiente para hacer que un bot o script "se mueva" a hosts menos seguros. Sin embargo, diez minutos no son tantos como para alienar a los usuarios que escriben mal sus contraseñas más de tres veces.
Una vez que esté satisfecho con la configuración, reinicie fail2ban
servicio.
Cómo se ve la prohibición
En el sistema protegido (192.168.1.83), tail
el /var/log/fail2ban.log
para ver cualquier acción de prohibición actual.
2020-05-15 09:12:06,722 fail2ban.filter [25417]: INFO [sshd] Found 192.168.1.69 - 2020-05-15 09:12:06
2020-05-15 09:12:07,018 fail2ban.filter [25417]: INFO [sshd] Found 192.168.1.69 - 2020-05-15 09:12:07
2020-05-15 09:12:07,286 fail2ban.actions [25417]: NOTICE [sshd] Ban 192.168.1.69
2020-05-15 09:22:08,931 fail2ban.actions [25417]: NOTICE [sshd] Unban 192.168.1.69
Puede ver que la dirección IP 192.168.1.69 se bloqueó a las 09:12 y se desbloqueó diez minutos después a las 09:22.
En el sistema remoto, 192.168.1.69, una acción de prohibición tiene el siguiente aspecto:
$ ssh 192.168.1.83
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
$ ssh 192.168.1.83
ssh: connect to host 192.168.1.83 port 22: Connection refused
Puede ver que ingresé mi contraseña incorrectamente tres veces antes de ser baneado. El usuario prohibido, a menos que se le informe explícitamente, no sabrá por qué ya no puede llegar al sistema de destino. El fail2ban
El filtro realiza una acción de prohibición silenciosa. No da ninguna explicación al usuario remoto, ni se notifica al usuario cuando se levanta la prohibición.
Desbanear un sistema
Inevitablemente, sucederá que se prohíba un sistema que deba ser desbaneado rápidamente. En otras palabras, no puede o no quiere esperar a que expire el período de prohibición. El siguiente comando desbancará inmediatamente un sistema.
$ sudo fail2ban-client set sshd unbanip 192.168.1.69
No necesita reiniciar el demonio fail2ban después de emitir este comando.
Resumir
Así es básicamente cómo fail2ban
obras. Configura un filtro y, cuando se cumplen las condiciones, se prohíbe el sistema remoto. Puede prohibir durante períodos de tiempo más largos y puede configurar múltiples filtros para proteger su sistema. Recuerda que fail2ban
es una solución única y no protege su sistema de otras vulnerabilidades. La estrategia que desea seguir es un enfoque multifacético y en capas de la seguridad. Ninguna solución única proporciona suficiente seguridad.
Puede encontrar ejemplos de otros filtros y algunos fail2ban
avanzados implementaciones descritas en fail2ban.org.
[ ¿Quiere obtener más información sobre seguridad? Consulte la lista de verificación de cumplimiento y seguridad de TI. ]