En general, la seguridad es una cuestión de cebolla, como ya se mencionó. Hay razones por las que existen cortafuegos, y no solo todos los otros lemmings son estúpidos imbéciles.
Esta respuesta viene, ya que la búsqueda de 'fail2ban' en esta página no me dio ningún resultado. Entonces, si doblo otro contenido, tengan paciencia conmigo. Y discúlpeme, si despotrico un poco, proporciono una experiencia sencilla, ya que esto podría ser útil para otros. :)
Consideraciones de redes, locales versus externas
Esto es más bien específico de Linux y se concentra en el firewall basado en host, que suele ser el caso de uso. El cortafuegos externo va de la mano con una estructura de red adecuada y otras consideraciones de seguridad generalmente entran en eso. O sabes lo que está implícito aquí, entonces es probable que no necesites esta publicación. O no, entonces sigue leyendo.
Ejecutar cortafuegos externa y localmente puede parecer contrario a la intuición y doble trabajo. Pero esto también da la posibilidad de cambiar las reglas en el externo, sin comprometer la seguridad de todos los demás hosts que están detrás. La necesidad podría surgir por razones de depuración o porque alguien acaba de joder. Otro caso de uso vendrá allí en la sección 'firewall global adaptativo', para el cual también necesitará firewalls locales y globales.
Costo y disponibilidad y la misma historia todo el tiempo:
El firewall es solo un aspecto de un sistema seguro adecuado. No instalar un firewall ya que 'cuesta' dinero, introduce un SPOF o lo que sea solo una mierda, perdón por mi francés aquí. Simplemente configure un clúster. Oh, pero ¿y si la celda de incendio tiene un corte de energía? Luego, configure su clúster en dos o más compartimentos contra incendios.
Pero, ¿qué sucede si no se puede acceder a todo el centro de datos, ya que ambos operadores externos están fuera del negocio (el excavador mató su fibra)? Simplemente haga que su clúster abarque varios centros de datos, entonces.
¿Eso es caro? Los grupos son demasiado complejos? Bueno, la paranoia tiene que pagarse.
Simplemente quejarse de SPOF, pero no querer pagar más dinero o crear configuraciones un poco más complejas es un caso claro de doble rasero o simplemente una pequeña billetera por parte de la empresa o el cliente.
Este patrón se aplica a TODAS estas discusiones, sin importar qué servicio sea el tema actual del día. No importa si se trata de una puerta de enlace VPN, un Cisco ASA se usa solo para firewall, una base de datos MySQL o PostgreSQL, un sistema virtual o hardware de servidor, un back-end de almacenamiento, conmutadores / enrutadores, ...
A estas alturas ya deberías tener la idea.
¿Por qué molestarse con cortafuegos?
En teoría su razonamiento es sólido. (Solo los servicios en ejecución pueden ser explotados).
Pero esto es solo la mitad de la verdad. El firewall, especialmente el firewall con estado, puede hacer mucho más por usted. Los firewalls sin estado solo son importantes si experimenta problemas de rendimiento como otros que ya se mencionaron.
Fácil, central, control de acceso discreto
Usted mencionó los contenedores TCP que implementan básicamente la misma funcionalidad para asegurar su. Por el bien del argumento, supongamos que alguien no sabe tcpd
y le gusta usar un mouse. fwbuilder
podría venir a la mente.
Tener acceso completo desde su red de administración es algo que debería haber habilitado, que es algo de los primeros casos de uso de su firewall basado en host.
¿Qué tal una configuración multiservidor, donde la base de datos se ejecuta en otro lugar y no puede colocar ambas / todas las máquinas dentro de una subred compartida (privada) por cualquier razón? Use el firewall para permitir el acceso a MySQL en el puerto 3306 solo para la única dirección IP dada del otro servidor, hecho, simple.
Y eso también funciona perfectamente para UDP. O cualquier protocolo. Los cortafuegos pueden ser muy flexibles. ;)
Mitigación de Portscan
Además, con el firewall, se pueden detectar y mitigar los escaneos de puertos generales, ya que la cantidad de conexiones por intervalo de tiempo se puede monitorear a través del kernel y su pila de redes, y el firewall puede actuar sobre eso.
También se pueden manejar paquetes no válidos u oscuros antes de que lleguen a su aplicación.
Limitación de tráfico saliente
Filtrar el tráfico saliente suele ser un fastidio. Pero puede ser obligatorio, según el contrato.
Estadística
Otra cosa que un cortafuegos puede darle son las estadísticas. (Piense watch -n1 -d iptables -vnxL INPUT
en haber agregado algunas reglas para direcciones IP especiales en la parte superior para ver si los paquetes están llegando).
Puede ver a plena luz del día si las cosas funcionan o no. Lo cual es MUY útil al solucionar problemas de conexiones y poder decirle a la otra persona por teléfono que no recibe paquetes, sin tener que recurrir a conversadores tcpdump
. La creación de redes es divertida, la mayoría de las personas ahora saben lo que están haciendo y, a menudo, son simples errores de enrutamiento. Demonios, incluso yo no siempre sé lo que estoy haciendo. Aunque he trabajado literalmente con docenas de sistemas y dispositivos complejos, a menudo también con túneles.
IDS / IPS
El firewall de Layer7 generalmente es aceite de serpiente (IPS / IDS), si no se atiende correctamente y se actualiza regularmente. Además, las licencias son muy caras, por lo que ahorraría obtener una si no tiene la necesidad real de obtener todo lo que el dinero puede comprarle.
Masqerading
Fácil, solo intenta esto con tus envoltorios. :RE
Reenvío de puerto local
Ver disfraces.
Asegurar canales de acceso de contraseña con direcciones IP dinámicas
¿Qué pasa si los clientes tienen direcciones IP dinámicas y no hay una configuración de VPN implementada? ¿U otros enfoques dinámicos para el firewall? Esto ya se insinuó en la pregunta, y aquí vendrá un caso de uso para Desafortunadamente, no puedo encontrar ningún firewall que haga eso. parte.
Haber deshabilitado el acceso a la cuenta raíz a través de una contraseña es imprescindible. Incluso si el acceso está limitado a ciertas direcciones IP.
Además, tener otra cuenta blanko lista con un inicio de sesión con contraseña si se pierden las claves ssh o falla la implementación es muy útil si algo sale realmente mal (¿un usuario tiene acceso administrativo a la máquina y 'cosas sucedieron'?). Es la misma idea para el acceso a la red, ya que tener un modo de usuario único en Linux o usar init=/bin/bash
vía grub
para acceso local es realmente malo y no puede usar un disco en vivo por cualquier razón. No se ría, hay productos de virtualización que lo prohíben. Incluso si existe la funcionalidad, ¿qué sucede si se ejecuta una versión de software desactualizada que carece de la funcionalidad?
De todos modos, incluso si ejecuta su ssh daemon en algún puerto esotérico y no en el 22, si no ha implementado cosas como el bloqueo de puertos (para abrir incluso otro puerto y mitigar escaneos de puertos, bordeando poco a poco ser demasiado poco práctico), los escaneos de puertos detectarán su servicio eventualmente.
Por lo general, también configura todos los servidores con la misma configuración, con los mismos puertos y servicios por razones de eficiencia. No puede configurar ssh en un puerto diferente en cada máquina. Además, no puede cambiarlo en todas las máquinas cada vez que considere que es información "pública", porque ya está después de un escaneo. La cuestión de nmap
ser legal o no no es un problema al tener una conexión Wi-Fi pirateada a su disposición.
Si esta cuenta no se llama 'root', es posible que las personas no puedan adivinar el nombre de cuenta de usuario de su 'puerta trasera'. Pero lo sabrán, si obtienen otro servidor de su empresa, o simplemente compran un espacio web, y tienen una mirada sin raíz / sin encerrar / sin contención /etc/passwd
.
Para una ilustración puramente teórica ahora, podrían usar un sitio web pirateable allí para obtener acceso a su servidor y buscar cómo se ejecutan las cosas en su lugar. Es posible que sus herramientas de búsqueda de pirateo no se ejecuten las 24 horas del día, los 7 días de la semana (por lo general, ¿lo hacen por la noche por razones de rendimiento del disco para los análisis del sistema de archivos?) Y sus escáneres de virus no se actualizan en el segundo en que un nuevo día cero ve la luz del día, por lo que lo hará no detecte estos sucesos de inmediato, y sin otras medidas de protección, es posible que nunca sepa lo que sucedió. Para volver a la realidad, si alguien tiene acceso a exploits de día cero, es muy probable que no apunte a sus servidores de todos modos, ya que estos son simplemente caros. Esto es solo para ilustrar que siempre hay una forma de entrar en un sistema si surge la 'necesidad'.
Pero sobre el tema nuevamente, ¿simplemente no use una cuenta adicional con contraseña y no se moleste? Por favor sigue leyendo.
Incluso si los atacantes obtienen el nombre y el puerto de esta cuenta adicional, una combinación fail2ban
+ iptables
los detendrá, incluso si usó solo una contraseña de ocho letras. Además, fail2ban también se puede implementar para otros servicios, ampliando el horizonte de monitoreo.
Para sus propios servicios, si alguna vez surgió la necesidad: Básicamente, todas las fallas de registro de servicios en un archivo pueden obtener soporte de fail2ban mediante la provisión de un archivo, qué expresiones regulares deben coincidir y cuántas fallas están permitidas, y el firewall bloqueará felizmente cada dirección IP. se le dice que lo haga.
¡No estoy diciendo que use contraseñas de 8 dígitos! Pero si se les prohíbe durante 24 horas por cinco intentos de contraseña incorrecta, puede adivinar cuánto tiempo tendrán que intentarlo si no tienen una botnet a su disposición, incluso con una seguridad tan pésima. Y se sorprendería de las contraseñas que los clientes tienden a usar, no solo para ssh
. Echar un vistazo a las contraseñas de correo de las personas a través de Plesk le dice todo lo que preferiría no querer saber, si alguna vez lo hace, pero lo que no estoy tratando de implicar aquí, por supuesto. :)
Cortafuegos global adaptativo
fail2ban
es solo una aplicación que usa algo similar iptables -I <chain_name> 1 -s <IP> -j DROP
, pero puedes construir fácilmente esas cosas tú mismo con algo de magia Bash bastante rápido.
Para ampliar aún más algo como esto, agregue todas las direcciones IP fail2ban de los servidores dentro de su red en un servidor adicional, que conserva todas las listas y las pasa a su vez a los firewalls centrales que bloquean todo el tráfico que ya está en el borde de su red.
Dicha funcionalidad no puede venderse (por supuesto que sí, pero será un sistema frágil y apestará), pero debe entrelazarse con su infraestructura.
Mientras lo hace, también puede usar direcciones IP de listas negras o listas de otras fuentes, ya sea agregadas por usted mismo o externas.