Firewall con IPTABLES
Esta práctica me la han pedido ya varias personas así que me he decidido a colgarla aquí. Además, creo que le puede resultar de utilidad a bastante gente y, ya que me he tomado el esfuerzo de hacerlo perfecto (en mi opinión y en la de mi profesor), pues lo comparto con la comunidad científica =)
#!/bin/sh
##Borramos todo lo anteriorIP_DNS=”80.58.61.250″
IP_ALPHA=”10.0.0.2″
IP_BETA=”10.0.0.3″
RED_ACCEP_MAQ_2=”192.168.1.0/24″
IPEXTDOM0=”192.168.1.2″
IP_EXT_DOM0=”192.168.1.2″
IP_ALPHA_80=”10.0.0.2:80″
IP_ALPHA_22=”10.0.0.2:22″##Carga de módulos necesaria para ftp
modprobe ip_nat_ftp ports=21
modprobe ip_conntrack_ftp ports=21##Flush!
iptables -F
iptables -Z
iptables -X
iptables -t nat -Z##Le decimos a la maquina que actue como enrutador
echo 1 > /proc/sys/net/ipv4/ip_forward
##Establecemos politica por defecto DROP para el esquema FORWARD.
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP# Permitimos localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT##Redireccionamiento del dom0 a alpha de los puertos www y ssh
iptables -t nat -A PREROUTING -d $IP_EXT_DOM0 -p tcp –dport 80 –j DNAT –to $IP_ALPHA_80
iptables -t nat -A PREROUTING -d $IP_EXT_DOM0 -p tcp –dport 22 –j DNAT –to $IP_ALPHA_22##Aceptamos conexiones externas e internas al servidor web (esta en alpha) por
##el puerto 80. Ademas, aceptamos conexiones establecidas.(FUNCIONA)iptables -A FORWARD -d $IP_ALPHA -p tcp –dport 80 -j ACCEPT
iptables -A FORWARD -s $IP_ALPHA -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT##Permitimos conexiones de beta a la red externa al protocolo HTTP.
iptables -A FORWARD -s $IP_BETA -p tcp –dport www -o eth0 -j ACCEPT
##Permitimos conexiones establecidas del protocolo http a beta.(BIEN)
iptables -A FORWARD -d $IP_BETA -p tcp -m state –state ESTABLISHED –sport www -i eth0 -j ACCEPT
##Permitimos conexiones ssh a alpha
iptables -A FORWARD -d $IP_ALPHA -p tcp –dport 22 -j ACCEPT
iptables -A FORWARD -s $IP_ALPHA -p tcp –sport 22 -j ACCEPT##Permitir conexiones DNS a BETA(funciona).
iptables -A FORWARD -s $IP_BETA -d $IP_DNS -p udp –dport 53 -j ACCEPT
iptables -A FORWARD -s $IP_DNS -d $IP_BETA -p udp –sport 53 -j ACCEPT
iptables -A FORWARD -s $IP_BETA -d $IP_DNS -p tcp –dport 53 -j ACCEPT
iptables -A FORWARD -s $IP_DNS -d $IP_BETA -p tcp –sport 53 -j ACCEPT##Permitir conexion total de BETA a la red 192.168.1.1
iptables -A FORWARD -s $IP_BETA -d $RED_ACCEP_MAQ_2 -j ACCEPT
iptables -A FORWARD -d $IP_BETA -s $RED_ACCEP_MAQ_2 -m state –state ESTABLISHED -j ACCEPT##Reglas necesarias para FTP activo y pasivo.
iptables -A FORWARD -p tcp -s $IP_BETA -m state –state ESTABLISHED –sport 1024:65535 –dport 1024:65535 -j ACCEPT
iptables -A FORWARD -p tcp -d $IP_BETA -m state –state ESTABLISHED,RELATED –sport 1024:65535 –dport 1024:65535 -j ACCEPT
iptables -A FORWARD -p tcp -s $IP_BETA -m state –state NEW,ESTABLISHED,RELATED –dport 20:21 -j ACCEPT
iptables -A FORWARD -p tcp -d $IP_BETA -m state –state ESTABLISHED,RELATED –sport 20:21 -j ACCEPT
Un saludo y que os sea de utilidad ^-^
EDITO: Dejo un enlace para descargar directamente el script.
Descargar –> http://dl.getdropbox.com/u/693399/Nueva%20carpeta/script_iptables.rar


