![](https://assets.isu.pub/document-structure/210704010333-d20041590640d7946e960a83bff93dea/v1/447fd25daa14274ed380c79749cac47e.jpeg?width=720&quality=85%2C50)
4 minute read
2.3.- Filtrado de paquetes mediante iptables: FILTER
Práctica Nº2.-Seguridad Perimetral. Diseño de Firewalls. Iptables y Zentyal
2.3.- Filtrado de paquetes mediante iptables: FILTER.
Advertisement
Ipables, como va a poder probarse, es un perfecto firewall que es capaz de filtar los paquetes TCP/IP en función de las reglas que se le hayan programado. Con la finalidad de facilitar su configuración, iptables cuenta con tres tablas o listas de reglas correspondientes a los tres tipos de filtrado que puede llevar a cabo: INPUT, OUTPUT o FORWARD. En concreto, los paquetes TCP/IP manipulados por el equipo firewall podríamos clasificarlos de la siguiente manera: 1. INPUT: Paquetes TCP/IP que vayan destinados al propio equipo firewall. Es decir, en la cabecera de estos paquetes debe figurar la dirección ip del firewall como dirección ip de destino. 2. OUTPUT: Paquetes TCP/IP generados por el propio equipo firewall. Es decir, en la cabecera de estos paquetes debe figurar la dirección ip del firewall como dirección ip de origen. 3. FORWARD: Paquetes TCP/IP que atraviesan al equipo firewall. Es decir, en la cabecera de estos paquetes deben figurar como direcciones ip de origen y destino que no se corresponden con las del equipo firewall.
De una manera general, a modo de ejemplo, la sintaxis del comando iptables que sería necesario ejecutar para agregar (-A, add) una nueva regla de filtrado sería la siguiente: [root@linux] # iptables -t filter -A [INPUT|OUTPUT|FORWARD] \ [ -i 'interfaz de red de entrada ] [ -o 'interfaz de red de salida' ] \ [ -s 'dirección ip de origen' ] [ -d 'dirección ip de destino' ] \ [ -p tcp|udp|icmp ] [ --dport 'puerto de destino' ] [ --sport 'puerto de origen' ] \ [ -j ACCEPT|DROP|REJECT ] ¡¡Observación!! Al filtrar paquetes TCP/IP mediante iptables se nos permite tomar una decisión entre tres posibles: (1) ACCEPT: Aceptará todos aquellos paquetes a los que hagan referencia los parámetros especificados.
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 43
Práctica Nº2.-Seguridad Perimetral. Diseño de Firewalls. Iptables y Zentyal
[root@firewall]# iptables -t filter -A FORWARD -i eth1 -o eth0 \ -p tcp --dport 80 -s 192.168.2.0/24 -j ACCEPT
(2) DROP: Denegará todos aquellos paquetes a los que hagan referencia los parámetros especificados. [root@firewall]# iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.1.180 -j DROP
(3) REJECT: Similar a DROP pero con la salvedad de que podemos especificar el motivo del rechazo, el cual será enviado al equipo emisor de los paquetes rechazados. En concreto, si el protocolo utilizado es ICMP o UDP pueden usarse las siguientes opciones (icmp-port-unreachable es la opción por defecto): --reject-with icmp-net-unreachable | icmp-host-unreachable | icmp-port-unreachable | icmp-proto-unreachable | icmp-net-prohibited | icmp-host-prohibited | icmp-admin-prohibited. [root@firewall]# iptables -t filter -A FORWARD -p udp --dport 53 \ -d 8.8.8.8 -j REJECT --reject-with icmp-host-unreachable
En el caso de que el protocolo que se este filtrando sea TCP se recomienda usar directamente DROP o REJECT con la opción --reject-with tcp-reset. [root@firewall]# iptables -t filter -A FORWARD -p tcp --dport 443 \ -d www.facebook.com -j REJECT --reject-with tcp-reset
Por ejemplo, si quisiéramos denegar el acceso a un equipo con dirección IP 192.168.1.1 al servicio SSH (tcp/22) que ofrece un equipo GNU/Linux ejecutaríamos lo siguiente: [root@linux] # iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.1.1 -j DROP
A continuación, se plantearán diferentes casos prácticos con su solución, lo cual ayudará a comprender mejor la sintáxis y utilidad de iptables. Por último, comentar que además de la opción "-A" (añadir regla), disponemos de las siguientes opciones: • Opción "-L": Muestras las reglas que hay programadas en una determinada lista de filtrado o nat. Si queremos que se muestre un número que identifique la posición de una regla dentro de la lista añadiremos la opción "--line-numbers". [root@linux] # iptables -t filter -L [root@linux] # iptables -t filter -L INPUT [root@linux] # iptables -t filter -L FORWARD --line-numbers [root@linux] # iptables -t nat -L POSTROUTING --line-numbers
• Opción "-I": Inserta una regla a una lista de filtrado o nat de nuestro firewall en la posición indicada como parámetro. Esta opción resulta muy útil cuando queremos insertar una regla en una posición concreta para que sea tenida en cuenta por el firewall antes que otras que se programaron previamente.
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 44
Práctica Nº2.-Seguridad Perimetral. Diseño de Firewalls. Iptables y Zentyal
[root@linux] # iptables -t filter -I FORWARD 2 -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT
• Opción "-D": Borra una regla de una lista. Para ello indicaremos la lista que queremos que se vea afectada y su posición. [root@linux] # iptables -t filter -D OUTPUT 1
• Opción "-F": Borrar todas las reglas de la lista indicada. [root@linux] # iptables -t filter -F OUTPUT [root@linux] # iptables -t filter -F [root@linux] # iptables -t nat -F
• Opción "-P": Indica la política por defecto. Es decir, mediante esta opción le indicaremos al firewall cual queremos que sea el criterio por defecto a aplicar a un paquete TCP/IP que no se vea afectado por ninguna de las reglas programadas. [root@linux] # iptables -t filter -P INPUT DROP [root@linux] # iptables -t filter -F FORWARD ACCEPT
¡¡Aclaración!! iptables en un software que ofrece infinidad de posibilidades, tal como se puede advertir a través de su manual de uso (man iptables). Tratar de ver todas sus posibilidades sería imposible por lo que en los ejercicios prácticos propuestos a continuación tan sólo se va a mostrar algunos de usos más habituales.
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 45