Ejemplo de IPTABLES (firewall)

De GNU/Linux - UTN FRA - Especialización GNU/Linux

#!/bin/bash

#
# Limpio las cadenas
#
iptables -F
iptables -F -t nat

# El contador
iptables -X

#
# Dropeo el input y forward
#
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#
# Abrimos conexiones establecidas y relacionadas
#
iptables -t filter -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# Levanto localhost (lo)
iptables -t filter -A INPUT -i lo -j ACCEPT

#
# No dejo que me realizen ping.
iptables -t filter -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

#
# Si tratan de entrar al puerto 80 lo rechazo y le mando una respuesta
#
iptables -t filter -A INPUT -p tcp -s 192.168.1.10 --dport 80 -j REJECT


#
# Abrimos solo el puerto 22
#
iptables -t filter -A INPUT -p tcp -s 192.168.1.10 --dport 22 -j LOG --log-prefix "Entrando a ssh"
iptables -t filter -A INPUT -p tcp -s 192.168.1.10 --dport 22 -j ACCEPT

#
# NAT Postrouting
#

# Activar reenvio de paquetes
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -s 192.168.1.0/24 -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -s 192.168.1.0/24 -A POSTROUTING -o eth1 -j MASQUERADE

#
# Forwardeo ciertos puertos
#
iptables -t filter -A FORWARD -i wlan0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Dejo salir a las pc a los puertos 53(dns), 80(http) y 443(https).
iptables -t filter -A FORWARD -p udp -i eth0 -o wlan0 --dport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp -i eth0 -o wlan0 --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p udp -i eth0 -o wlan0 --dport 443 -j ACCEPT
Herramientas personales