Saltar al contenido

Protección de servidores linux: iptables vs fail2ban

Solución:

¿Debo usar fail2ban o iptables?

Usas fail2ban además de una solución de firewall, para ampliar Bajo demanda las reglas de firewall existentes con reglas para bloquear las direcciones IP específicas de los sistemas que realizan acciones no deseadas en servicios públicos. Trabajan en concierto entre ellos.

Simplificado: un firewall solo ve las conexiones de red y los paquetes y puede dar algún sentido a los patrones que contienen, pero no tiene la información a nivel de aplicación para distinguir las solicitudes deseadas y válidas de las solicitudes maliciosas, mal formadas e indeseables. Por ejemplo, su firewall no puede distinguir entre un montón de solicitudes de API HTTP y un número de intentos de inicio de sesión incorrectos causados ​​por adivinar la contraseña por fuerza bruta en su página de administración de Wordpress, al firewall ambos son solo conexiones TCP al puerto 80 o 443.

Fail2ban es un enfoque genérico y extensible para proporcionar esa información de nivel de aplicación a su firewall, aunque de forma algo indirecta.
Con frecuencia, las aplicaciones registrarán y registrarán solicitudes maliciosas, mal formadas e indeseables como tales, pero solo en raras ocasiones tendrán la capacidad nativa para evitar más abusos. Aunque está ligeramente desacoplado, Fail2ban puede actuar sobre los eventos maliciosos registrados y limitar el daño y evitar un mayor abuso, generalmente reconfigurando dinámicamente su firewall para denegar un mayor acceso. En otras palabras, Fail2ban proporciona a sus aplicaciones existentes, sin modificarlas, los medios para evitar el abuso.

Un método diferente para proporcionar a los firewalls información a nivel de aplicación sería mediante un sistema de detección / prevención de intrusiones.


Por ejemplo, un servidor web es un servicio público común y en su firewall los puertos TCP 80 y 443 están abiertos para Internet en general.
Por lo general, no tiene ningún límite de velocidad en los puertos HTTP / HTTPS porque varios usuarios válidos pueden tener un solo origen cuando, por ejemplo, están detrás de una puerta de enlace NAT o un proxy web.

Cuando detecta acciones indeseables y / o maliciosas hacia su servidor web, utiliza fail2ban para automatizar el bloqueo de dicho delincuente (ya sea bloqueándolo por completo o bloqueando solo su acceso a los puertos 80 y 443).

Por otro lado, el acceso SSH no es un servicio público, pero si no está en condiciones de restringir el acceso SSH en su firewall a solo rangos de direcciones IP en la lista blanca, las conexiones entrantes que limitan la velocidad son una forma de hacerlo. desacelerar ataques de fuerza bruta. Pero su firewall aún no puede distinguir entre el usuario bob que inicia sesión con éxito 5 veces porque está ejecutando libros de jugadas ansible y 5 intentos fallidos de iniciar sesión como root por un bot.

¿Debo usar fail2ban o iptables?

Esto es algo parecido a preguntar “¿debo usar el cinturón de seguridad o el automóvil?”.

Primero que nada, recuerda eso fail2ban realmente es solo una herramienta para detectar automáticamente entradas recurrentes en archivos de texto y ejecutar algún comando cuando estos alcanzan un umbral específico.

A menudo lo usamos para bloquear hosts que violan alguna política, como lo demuestran las entradas de registro recurrentes que indican una violación de la política, pero eso no es lo único para lo que puede usarlo.

usted pueden use fail2ban para agregar (y eliminar) reglas de iptables bajo demanda. También puede agregar y eliminar reglas de iptables a mano, o puede usar fail2ban para hacer algo completamente diferente en respuesta. Eso es todo sobre cómo lo configuras.

Debe tener un cortafuegos general en su lugar independientemente de si está ejecutando fail2ban o no. Tal cortafuegos sería, por ejemplo, bloquear el tráfico (entrante o saliente) que sabe que es Nunca va a ser legítimo. Por ejemplo, ¿ese servidor de base de datos De Verdad ¿Necesita ocuparse de las conexiones entrantes en el puerto 25 desde todo Internet?

Además de eso, hacer que fail2ban responda a las violaciones de la política cortando las IP ofensivas por un tiempo no hará mucho para proteger su servidor. per se (un buen exploit solo necesita atravesar su firewall una vez) pero reducirá el nivel de ruido en su sistema, incluidos, entre otros, los registros del sistema. La forma más sencilla de hacerlo es hacer que fail2ban ejecute iptables para configurar el kernel para que descarte los paquetes durante un tiempo. Si puede reconfigurar su firewall perimetral en lugar de solo el firewall del host, entonces mucho mejor.

En otras palabras, en la medida en que puedan separarse fácilmente en primer lugar, querrás ambos.

¿Podría ser una exageración si todo lo que estoy tratando de lograr es ‘bloquear’ una IP del servidor si hacen 2 intentos de acceso fallidos en cualquier servicio / protocolo durante una cantidad de tiempo ax?

Es decir exactamente el caso de uso fail2ban está diseñado para resolver. Usar una herramienta para su propósito previsto casi nunca es excesivo.

El objetivo aquí es abrir informes de vigilancia de registros diarios y no tener que desplazarse por las páginas de intentos fallidos de conexión al servidor.

Un aparte, no directamente relacionado con su pregunta: siempre que esté filtrando registros para su revisión, considere lo que hará con alguna entrada en particular. Si todo lo que vas a hacer con una entrada es decir “meh” y seguir adelante, entonces probablemente quieras filtrarla. Asegúrese de guardar los registros completos para su revisión en caso de que sea necesario, pero solo inserte en su flujo de trabajo de monitoreo regular las cosas que realmente va a hacer hacer algo con cuando aparece. Si configura fail2ban para bloquear un host después de algunos intentos fallidos de conexión, es muy probable que no necesite revisarlos manualmente y pueda eliminarlos de sus notificaciones de monitoreo. Si un usuario legítimo se queja de la pérdida de acceso, simplemente extraiga los registros completos y eche un vistazo.

Resolví la misma pregunta hace algunos años. Decidí usar iptables con un módulo reciente debido al rendimiento y la fácil configuración. Tuve que proteger muchos contenedores virtuales en hosts. Solo tenga en cuenta que no debe abrir ningún vector DOS con sus reglas. También use ipset para hacer coincidir listas de red o listas de ip en las reglas. Lo uso para listas blancas. Todas las redes de un país en una lista son excelentes para realizar ajustes. Y es muy fácil proteger otro servicio con el mismo conjunto de reglas solo agregando un puerto más para que coincida. Así que no me gusta cambiar con fail2ban pero tal vez alguien con otras necesidades estará contento con fail2ban.

Aquí hay una muestra:

  #
  # SSH tracking sample
  #
  #################################################################################
  iptables -X IN_SSH
  iptables -N IN_SSH
  iptables -A IN_SSH -m set --match-set net_blacklist src -p tcp -j REJECT
  iptables -A IN_SSH -m set --match-set net_whitelist src -p tcp --match limit --limit 5/second -j LOG --log-prefix whitelist_de_prefix
  iptables -A IN_SSH -m set --match-set net_whitelist src -p tcp -j ACCEPT
  # filter update
  iptables -A IN_SSH -m recent --name sshbf --set --rsource
  # connlimit
  iptables -A IN_SSH -m connlimit --connlimit-above 4 --match limit --limit 5/second -j LOG --log-prefix ssh_connlimit_per_ip_above_4
  iptables -A IN_SSH -m connlimit --connlimit-above 4 -j REJECT
  # filter
  iptables -A IN_SSH -m recent --name sshbf --rttl --rcheck --hitcount 13 --seconds 60 --match limit --limit 5/second -j LOG --log-prefix ssh_filtered_13in60sec
  iptables -A IN_SSH -m recent --name sshbf --rttl --rcheck --hitcount 13 --seconds 60 -j REJECT
  iptables -A IN_SSH -j ACCEPT

iptables -A FORWARD -p tcp --dport ssh --syn --jump IN_SSH
# iptables -A INPUT -p tcp --dport ssh --syn --jump IN_SSH

La salida de sus mensajes de registro podría combinarse con fail2ban. También puede usarlo para las reglas INPUT.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *