All pastes #162648 Raw Edit

angelv

public text v1 · immutable
·published 2006-09-06 18:51 UTC
rendered paste body
#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet
## con servicios abiertos de puerto 25, 110, y 1723
## Pello Xabier Altadill Izura
## www.pello.info - pello@pello.info
## 3.2 Firewall de una LAN con salida a internet, ejemplo 2

echo -n Aplicando Reglas de Firewall...

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT

## Abrimos el acceso a puertos de correo

# Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP
#iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
# Abrimos el pop3
#iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT

## Abrimos el acceso a puertos de administracion

# Abrimos el puerto ssh 22
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT

# Abrimos el puerto vnc-http-1 5801
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 5801 -j ACCEPT
# Abrimos el puerto vnc-1 5900
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 5900 -j ACCEPT

## Abrimos el acceso a otros puertos

# Abrimos el puerto del apache
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT

# Abrimos el puerto del ftp
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 21 -j ACCEPT

# Abrimos el puerto del aMule
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 4662 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 4672 -j ACCEPT

# Abrimos el puerto del Azureus 59250
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 59250 -j ACCEPT
#iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 59250 -j ACCEPT

# Y abrimos el puerto pptpd para la ip del adsl de casa del jefe
#iptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPT

## Ahora con regla FORWARD filtramos el acceso de la red local
## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD

# Aceptamos que vayan a puertos 80 http
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
# Aceptamos que vayan a puertos 443 https
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT

# Aceptamos que vayan a puertos SMTP correo
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 25 -j ACCEPT
# Aceptamos que vayan a puertos POP3 correo
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 110 -j ACCEPT

# Aceptamos que vayan a puertos 20 ftp
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 20 -j ACCEPT
# Aceptamos que vayan a puertos 21 ftp
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 21 -j ACCEPT

# Aceptamos que consulten los DNS
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 53 -j ACCEPT

# Aceptamos conexiones SAMBA 137 y 139
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 137 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 139 -j ACCEPT

# Aceptamos conexiones 68 DHCP
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 68 -j ACCEPT

# Aceptamos conexiones NTPD
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 123 -j ACCEPT

## MENSAJERIA INSTANTANEA
# Aceptamos conexiones AOL e ICQ
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 9898 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5190:5193 -j ACCEPT
#
# Aceptamos conexiones jabber
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5222:5223 -j ACCEPT
#
# Aceptamos conexiones MSN Messenger
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 1863 -j ACCEPT
#(Para bloquearlo, hay que redireccionarlo, pues si no puede usar el 1863 usa el 80
#En donde 192.168.1.53 es la ip de la computadora a la que le quieres bloquear el messenger y 192.168.1.5 es una computadora inexistente en tu red)
#iptables -t nat -A PREROUTING -p tcp -s 192.168.1.53 --dport 1863 -j DNAT --to-destination 192.168.1.5:1863
#
# Aceptamos conexiones Yahoo! Messenger
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5000:5010 -j ACCEPT

## STREAMING
# pendiente... (posiblemente estara bloqueado)


# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j DROP

# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

# Activamos el redireccionamiento del puerto 80 -> 3128 para hacerlo transparente
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puertos bien conocidos
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp --dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP

# Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe.
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1723 -j DROP


echo " OK . Verifique lo que se aplica con: iptables -L -n"

# Fin del script