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 iptables
utilidad 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 filter
tabla, que es la que se usa para aplicar reglas básicas de firewall a las tres cadenas. Las tres cadenas por defecto en la filter
tabla son INPUT
, OUTPUT
y 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 DROP
paquetes, lo que significa simplemente ignorar y no responder. Puede REJECT
paquetes, donde se enviaría una respuesta icmp a la fuente de la negación. Finalmente, puede ACCEPT
hacerlo, lo que permite que los paquetes continúen enrutando.
A menudo, con un firewall externo, la opción predeterminada será la DROP
opuesta 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, -A
significa 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. -D
para su eliminación
A DROP
un paquete entrante procedente de 192.168.235.235
:
iptables -A INPUT -s 192.168.235.235 -j DROP
Esto salta al DROP
objetivo 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 -p
protocolo, el -s
origen del paquete, el -d
destino del paquete, el puerto de destino --dport
, el puerto de origen --sport
y muchos otros indicadores que afectarán la forma en que la regla trata los paquetes.
Si su INPUT
política predeterminada fuera DROP
y desea permitir que todos en la 192.168.123.0/24
subred 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 DROP
para todas las cadenas. Cada cadena tiene una política predeterminada, que se especifica mediante la -P
bandera. 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 DROP
las 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 -X
elimina todas las cadenas creadas. -F
Limpia todas las reglas.
Hay herramientas nativas para guardar y restaurar las reglas. En particular, iptables-save
y iptables-restore
. La mayoría de las distribuciones modernas de Linux tienen save
y restore
funcionan 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.