Comandos más usados para gestionar Iptables
Si bien hace tiempo ya publicábamos unos artículos sobre iptables el firewall que viene integrado con Red Hat y muchísimas más distribuciones. Hoy toca poner algunos ejemplos de reglas habituales o cómo se ponen o por lo menos entrar un poco más hondo en la gestión de este magnífico firewall
1 – Borrar todas las reglas en Iptables
root@nexolinux ~ # iptables -F
o también:
root@nexolinux ~ # iptables --flush
2- Configurar políticas por defecto.
Iptables por defecto tiene una configuración que permite todo, para un mayor control lo recomendable sería bloquear todo y permitir lo que queremos. Para ello hay dos formas, poner una regla en cada cadena (INPUT, OUTPUT, FORWARD ) que bloquee todo al final, pues recordad que lee de arriba a abajo en orden estricto, o lo mejor es poner la política por defecto DROP con lo que se negará todo salvo lo que configuremos, y no corremos el riesgo de tocar la última línea en una configuración y dejar el firewall abierto.
root@nexolinux ~ # iptables -P INPUT DROP
root@nexolinux ~ # iptables -P OUTPUT DROP
root@nexolinux ~ # iptables -P FORWARD DROP
root@nexolinux ~ # iptables --list Chain INPUT (policy DROP) Chain FORWARD (policy DROP) Chain OUTPUT (policy DROP)
3- Bloquear a una IP específica.
Para algunas direcciones IP que nos dan un tráfico sospechoso:
root@nexolinux ~ # iptables -A INPUT -s 192.168.1.22 -j DROP
4- Permitir todo el tráfico entrante de SSH
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
5- Permitir tráfico de SSH sólo de un segmento de red.
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp -s 192.168.200.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
6- Permitir tráfico HTTP y HTTPS
#HTTP
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
# HTTPS
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACC
7- Combinar múltiples reglas con multipuerto.
Este ejemplo permite todo el tráfico entrante SSH, HTTP y HTTPS:
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT
8- Permitir SSH saliente
root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
9- Permitir SSH sólo a una red en particular.
Esta regla sólo permitirá el tráfico saliente ssh a una red en particular. En concreto la del rango 192.168.100.0/24
root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp -d 192.168.101.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
10- Permitir HTTPS saliente.
Esta regla es buena para permitir el internet a los usuarios.
root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
11- Balanceo de tráfico entrante.
Se puede hacer balanceo en iptables, usando la extensión nth, así podemos balancear el tráfico a tres direcciones IP distintas. Cada tercer paquete lo balancea al servidor adecuado.
root@nexolinux ~ # iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
root@nexolinux ~ # iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
root@nexolinux ~ # iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443
12- Permitir PING de fuera hacia dentro.
root@nexolinux ~ # iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
root@nexolinux ~ # iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
13- Permitir PING de dentro a fuera.
root@nexolinux ~ # iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
14- Permitir tráfico de la red interna al exterior.
En un Firewall perimetral en donde las redes están separadas completamente.
# Si eth1 está conectada a una red externa (internet)
# Si eth0 Está conectada a una red interna (192.168.1.x)
root@nexolinux ~ # iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
15- Permitir tráfico DNS saliente.
root@nexolinux ~ # iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
root@nexolinux ~ # iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
16- Permitir Rsync de una red en particular.
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT
17- Permitir POP3 y POP3S
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT
18- Prevenir ataques DoS
-Limit 25/minute : Limita a sólo 25 conexiones por minuto.
-Limit-burst 100: Indica que el valor de limit/minute será forzado sólo después del número de conexiones en este nivel
root@nexolinux ~ # iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
19- Permitir redirección de puertos.
Ejemplo puerto 422 redirigimos al 22, con lo que podemos tener conexiones al puerto 22 y al puerto 422 por ssh.
root@nexolinux ~ # iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22
root@nexolinux ~ # iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
root@nexolinux ~ # iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT
20- Sacar en el log los paquetes caídos.
Primero creamos una cadena llamada LOGGING:
root@nexolinux ~ # iptables -N LOGGING
Luego todas las conexiones entrantes vayan por la cadena LOGGING
root@nexolinux ~ # iptables -A INPUT -j LOGGING
Logueamos paquetes con un log-prefix
root@nexolinux ~ # iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
Y los bloqueamos:
root@nexolinux ~ # iptables -A LOGGING -j DROP
Fuente: www.thegeekstuff.com
Deja un comentario