¿Me puede recomendar una buena introducción a iptables? [cerrado]


15

Tengo que configurar un firewall en un servidor Linux (toda mi experiencia previa es con Windows). Mis reglas están destinadas a ser bastante simples: prohibir todo, permitir algunos puertos con todos, permitir algunos puertos para subredes IP específicas, mientras que la red es pequeña pero compleja (cada host tiene IP en al menos 2 192.168 ... redes, todos pueden interconectamos muchas formas diferentes). Creo que el uso de envoltorios de iptables puede complicar demasiado el sistema introduciendo lógicamente muchas entidades innecesarias y sería mejor mantenerlo simple y usar iptables directamente.

¿Me puede recomendar una buena introducción rápida sobre cómo escribir reglas de iptables?

Respuestas:


26

Existen enlaces a documentación oficial y recomendada en el sitio web de Netfilter.

Este no es un tema nuevo, los recursos son ilimitados .

La mayoría de los comandos básicos son bastante intuitivos y pueden hacer referencia fácilmente a la página de manual .

netfilter, que es la tecnología de nivel de kernel que permite el filtrado de paquetes, es bastante avanzada. Hay tablas adicionales que pueden alterar paquetes, traducir paquetes y afectar el enrutamiento. La iptablesutilidad es la herramienta de usuario para interactuar con netfilter. Si desea obtener información sobre la funcionalidad avanzada, le sugiero que consulte la documentación mencionada anteriormente. Para una introducción a la funcionalidad básica, lea más.

Para enumerar todas las reglas existentes:

iptables -L -n

-n evita que iptables resuelva ips, lo que produce una salida más rápida.

La tabla predeterminada es la filtertabla, que es la que se usa para aplicar reglas básicas de firewall a las tres cadenas. Las tres cadenas por defecto en la filtertabla son INPUT, OUTPUTy FORWARD.

Las cadenas son en gran parte autoexplicativas. La cadena de ENTRADA afecta los paquetes que ingresan, la cadena de SALIDA afecta los paquetes generados localmente y, finalmente, ENVIAR los paquetes que se enrutan a través del sistema.

Entre los objetivos que puede especificar, puede DROPpaquetes, lo que significa simplemente ignorar y no responder. Puede REJECTpaquetes, donde se enviaría una respuesta icmp a la fuente de la negación. Finalmente, puede ACCEPThacerlo, lo que permite que los paquetes continúen enrutando.

A menudo, con un firewall externo, la opción predeterminada será la DROPopuesta REJECT, ya que reduce la huella visible de su red en Internet. Por ejemplo, una IP que de otro modo limita los servicios a un host específico tendría menos visibilidad con DROP.

Nota, -Asignifica agregar al final de la cadena. Si desea insertar en la parte superior, puede usar -I. Todas las reglas se procesan de arriba hacia abajo. -Dpara su eliminación

A DROPun paquete entrante procedente de 192.168.235.235:

iptables -A INPUT -s 192.168.235.235 -j DROP

Esto salta al DROPobjetivo para todos los protocolos que provienen de esa IP.

Aceptar:

iptables -A INPUT -s 192.168.235.235 -j ACCEPT

Para evitar el acceso a esa IP desde su servidor o red local:

iptables -A OUTPUT -d 192.168.235.235 -j DROP

Puede especificar el -pprotocolo, el -sorigen del paquete, el -ddestino del paquete, el puerto de destino --dport, el puerto de origen --sporty muchos otros indicadores que afectarán la forma en que la regla trata los paquetes.

Si su INPUTpolítica predeterminada fuera DROPy desea permitir que todos en la 192.168.123.0/24subred accedan a SSH en su servidor, este es un ejemplo:

iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT

Así es, ¡también puedes usar la notación CIDR !

En términos generales, la mejor política predeterminada es DROPpara todas las cadenas. Cada cadena tiene una política predeterminada, que se especifica mediante la -Pbandera. Incluso si tiene su política establecida por defecto DROP, se recomienda que la entrada final en una cadena también sea una DROP.

Por ejemplo, para cambiar la política a DROPlas cadenas INPUT, FORWARD y OUTPUT:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Tenga cuidado , si especifica la política predeterminada de DROP for INPUT en un sistema remoto sin primero permitirse el acceso SSH, podría evitar el acceso al sistema. Si está en un sistema remoto, puede especificar un crontab temporal para eliminar todas las reglas cada 5 minutos como a prueba de fallas.

Para eliminar todas las reglas y permitir todo el tráfico:

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F

Tenga en cuenta que -Xelimina todas las cadenas creadas. -FLimpia todas las reglas.

Hay herramientas nativas para guardar y restaurar las reglas. En particular, iptables-savey iptables-restore. La mayoría de las distribuciones modernas de Linux tienen savey restorefuncionan dentro de un archivo de inicio de iptables proporcionado con el sistema.

Existen otras prácticas recomendadas de firewall, como descartar paquetes mal formados y otro tipo de tráfico no deseado. Esta es una ventaja de utilizar una utilidad front-end como Shorewall , ya que implementará muchas de estas políticas de forma predeterminada. Sin embargo, estoy de acuerdo con su enfoque y prefiero mantener mis propias reglas directamente también, y estas mismas mejores prácticas se pueden implementar sin un front-end.


2
Acabo de encontrar esta respuesta mientras buscaba algunas cosas de iptables al azar aquí (¡busco SF / SO antes que Google!), Y esta respuesta muy detallada parece merecer más amor de voto, ¡así que le di algo!
Andrew Barber

+1 buena respuesta. También mencionaría Debian WIKI .
michal.kreuzman


1

Encontré https://help.ubuntu.com/community/IptablesHowTo útil recientemente. No creo que nada allí sea especialmente específico de Ubuntu.


Uso Arch en mi computadora portátil, pero un Ubuntu Lucid Server es exactamente la tarea que debo configurar. Por lo tanto, esto puede ser útil si no está obsoleto (hasta donde puedo ver, Ubuntu 8.04).
Ivan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.