rendered paste body#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina con DROP por defecto
## Pello Xabier Altadill Izura
## www.pello.info - pello@pello.info
## Actualizado 08-09-2006
# Borrado de reglas anteriores
#
echo "Borrando reglas anteriores ..."
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## Establecemos politica por defecto: DROP
#
echo "Estableciendo politica por defecto: DROP"
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
## Empezamos a filtrar? no! empezamos a abrir! porque ahora esta TODO denegado.
## Debemos decir de manera explicita qué es lo que queremos abrir
#
echo "Abriendo todo para el localhost"
# Operar en localhost sin limitaciones
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
## WAN
# Permitimos que la maquina conecte a puertos de correo
# SMTP 25
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
# POP3 110
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
# ADMINISTRACION REMOTA
# Abrimos el puerto ssh 22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
# Abrimos el puerto vnc-http-1 5801
iptables -A INPUT -p tcp --dport 5801 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 5801 -j ACCEPT
# Abrimos el puerto vnc-1 5900
iptables -A INPUT -p tcp --dport 5900 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 5900 -j ACCEPT
## Abrimos el acceso a otros puertos
# Abrimos el puerto del apache es un servidor web
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
#iptables -A INPUT -p tcp --dport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Abrimos el puerto del ftp 20 y 21 es un servidor ftp
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
# Abrimos el puerto del NTPD
iptables -A INPUT -p tcp --dport 123 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 123 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
# Abrimos el puerto del P2P (aMule) 4662 tcp y 4665, 4672 udp
# 4662 tcp
iptables -A INPUT -p tcp --dport 4662 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 4662 -j ACCEPT
# 4665 udp
iptables -A INPUT -p udp --dport 4665 -j ACCEPT
iptables -A OUTPUT -p udp --dport 4665 -j ACCEPT
# 4672 udp
iptables -A INPUT -p udp --dport 4672 -j ACCEPT
iptables -A OUTPUT -p udp --dport 4672 -j ACCEPT
# Abrimos el puerto del P2P (Azureus) 59250 tcp y udp
# 59250 tcp
iptables -A INPUT -p tcp --dport 59250 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 59250 -j ACCEPT
# 59250 udp
iptables -A INPUT -p udp -m udp --dport 59250 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 59250 -j ACCEPT
# Y abrimos el puerto pptpd para la ip del adsl de casa del jefe
#iptables -A INPUT -s 231.45.134.23 -p tcp --dport 1723 -j ACCEPT
#iptables -A OUTPUT -d 231.45.134.23 -p tcp --sport 1723 -j ACCEPT
# Permitimos que la maquina pueda salir a la web
# si le ponemos la opcion "-m state --state ESTABLISHED,RELATED -j ACCEPT" no navegara
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
# Y tambien a webs seguras
iptables -A INPUT -p tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
# Reglas necesarias para FTP pasivo y activo. Se permiten conexiones entrantes YA establecidas
iptables -A INPUT -p tcp --sport 20:21 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 1024:65535 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# Permitimos la consulta a un primer DNS
iptables -A INPUT -s 200.13.224.8 -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -d 200.13.224.8 -p udp --dport 53 -j ACCEPT
# Permitimos la consulta a un segundo DNS
iptables -A INPUT -s 200.75.78.78 -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -d 200.75.78.78 -p udp --dport 53 -j ACCEPT
# Permitimos consultar el reloj de ch.pool.ntp.org (Switzerland) para sincronizarse
iptables -A INPUT -s 217.150.242.8 -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -d 217.150.242.8 -p udp --sport 123 -j ACCEPT
## MENSAJERIA INSTANTANEA
# Aceptamos conexiones AOL
#iptables -A INPUT -p tcp --sport 9898 -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 9898 -j ACCEPT
# Aceptamos conexiones ICQ
#iptables -A INPUT -p tcp --sport 5190:5193 -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 5190:5193 -j ACCEPT
# Aceptamos conexiones Jabber
#iptables -A INPUT -p tcp --sport 5222:5223 -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 5222:5223 -j ACCEPT
# Aceptamos conexiones Yahoo! Messenger
#iptables -A INPUT -p tcp --sport 5000:5010 -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 5000:5010 -j ACCEPT
# Aceptamos conexiones MSN Messenger
#iptables -A INPUT -p tcp --sport 1863 -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 1863 -j ACCEPT
## LAN
## 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 -d 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 80 -j ACCEPT
# Aceptamos que vayan a puertos 443 https
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 443 -j ACCEPT
# Aceptamos que vayan a puertos SMTP correo
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 25 -j ACCEPT
# Aceptamos que vayan a puertos POP3 correo
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 110 -j ACCEPT
# Aceptamos que vayan a puertos 20 y 21 Data ftp
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 20:21 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 20:21 -j ACCEPT
# Aceptamos que consulten los DNS
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 53 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p udp --sport 53 -j ACCEPT
# Aceptamos conexiones SAMBA 137 y 139
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 137 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 137 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 139 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 139 -j ACCEPT
# Aceptamos conexiones 68 DHCP
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 68 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 68 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -p udp --dport 68 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p udp --sport 68 -j ACCEPT
# Aceptamos conexiones NTPD
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 123 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -p udp --dport 123 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p udp --sport 123 -j ACCEPT
## MENSAJERIA INSTANTANEA
# Aceptamos conexiones AOL
#iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 9898 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 9898 -j ACCEPT
# Aceptamos conexiones ICQ
#iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 5190:5193 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 5190:5193 -j ACCEPT
# Aceptamos conexiones Jabber
#iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 5222:5223 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 5222:5223 -j ACCEPT
# Aceptamos conexiones Yahoo! Messenger
#iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 5000:5010 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 5000:5010 -j ACCEPT
# Aceptamos conexiones MSN Messenger
#iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 1863 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -p tcp --sport 1863 -j ACCEPT
# 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
# Barrera de backup por si cambiamos a modo ACCEPT temporalmente
# Con esto protegemos los puertos reservados y otros well-known
iptables -A INPUT -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 1:1024 -j DROP
iptables -A INPUT -p tcp --dport 1723 -j DROP
iptables -A INPUT -p tcp --dport 3306 -j DROP
iptables -A INPUT -p tcp --dport 5432 -j DROP
echo " OK . Verifique reglas con: iptables -L -n"
# Fin del script