Ampliacion iptables

El otro dia me dio por poner firewall mas serio con iptables. Ya que usaba iptables para enrutar la conexion haciendo de router lo aproveche para tambien poner politicas a drop y aceptar solo algunas concretas… La info la saque de alguna web, copie lineas y adapte a mi iptables. No se si realmente funciona el firewall pero esto es lo que tengo ahora ^^U


#### SCRIPT DE CONFIGURACION DE IPTABLES ####
#!/bin/bash

# Dispositivo de red de internet
EXIF=»eth3″
# Dispositivo de red local
INIF=»CASA»

fail=0

[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

log_begin_msg «Aplicando Reglas de Firewall…»

## Borrado de reglas anteriores
iptables -F || fail=1
iptables -X || fail=1
iptables -Z || fail=1
iptables -t nat -F || fail=1

## Establecemos politica por defecto
iptables -P INPUT DROP || fail=1
iptables -P OUTPUT DROP || fail=1
iptables -P FORWARD DROP || fail=1
iptables -t nat -P PREROUTING ACCEPT || fail=1
iptables -t nat -P POSTROUTING ACCEPT || fail=1

# Marcar paquetes salientes con su ip de origen
iptables -t nat -A POSTROUTING -o $EXIF -j MASQUERADE || fail=1

############################SCRIPT NUEVO############################
# Deshabilitar broadcast
echo «1» > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts || fail=1

# Deshabilitar la redirección del ping
echo «0» > /proc/sys/net/ipv4/conf/all/accept_redirects || fail=1

# Registrar los accesos extraños, paquetes falseados, etc..
echo «1» > /proc/sys/net/ipv4/conf/all/log_martians || fail=1

# Anti-flooding o inundación de tramas SYN.
iptables -N syn-flood || fail=1
iptables -A INPUT -i $INIF -p tcp –syn -j syn-flood || fail=1
iptables -A syn-flood -m limit –limit 1/s –limit-burst 4 -j RETURN || fail=1
iptables -A syn-flood -j DROP || fail=1

# Guardar los accesos con paquetes fragmentados, recurso utilizado para tirar
# servidores y otras maldades (bug en Apache por ejemplo)
iptables -A INPUT -i $INIF -f -j LOG –log-prefix «Fragmento! » || fail=1
iptables -A INPUT -i $INIF -f -j DROP || fail=1
############################SCRIPT NUEVO############################

# Reenvio de IP
echo 1 > /proc/sys/net/ipv4/ip_forward || fail=1

# Aceptar paquetes para reenviar procedentes de la red local
iptables -A FORWARD -i $INIF -o $EXIF -j ACCEPT || fail=1

# Aceptar paquetes para reenviar procedentes de internet de conexiones ya establecidas
iptables -A FORWARD -i $EXIF -o $INIF -m state –state RELATED,ESTABLISHED -j ACCEPT || fail=1

############################SCRIPT NUEVO############################
# Operar en localhost sin limitaciones
iptables -A INPUT -i lo -j ACCEPT || fail=1
iptables -A OUTPUT -o lo -j ACCEPT || fail=1

# Permitimos que la maquina pueda salir a la web
iptables -A INPUT -p tcp -m tcp –sport 80 -m state –state RELATED,ESTABLISHED -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –dport 80 -j ACCEPT || fail=1

# Y tambien a webs seguras
iptables -A INPUT -p tcp -m tcp –sport 443 -m state –state RELATED,ESTABLISHED -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –dport 443 -j ACCEPT || fail=1

# Reglas necesarias para FTP pasivo y activo y SSH. Se permiten conexiones entrantes YA establecidas
iptables -A INPUT -p tcp -m tcp –sport 20:22 -m state –state RELATED,ESTABLISHED -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –dport 20:22 -j ACCEPT || fail=1
iptables -A INPUT -p tcp -m tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –dport 1024:65535 -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT || fail=1

# Permitimos la consulta a un primer DNS
iptables -A INPUT -s 62.42.63.52 -p udp -m udp –sport 53 -j ACCEPT || fail=1
iptables -A OUTPUT -d 62.42.63.52 -p udp -m udp –dport 53 -j ACCEPT || fail=1

#Ahora para el amsn
iptables -A INPUT -p tcp -m tcp –dport 6891:6895 -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –sport 6891:6895 -j ACCEPT || fail=1

# 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 -m tcp –dport 1:1024 -j DROP || fail=1
iptables -A INPUT -p udp -m udp –dport 1:1024 -j DROP || fail=1
iptables -A INPUT -p tcp -m tcp –dport 1723 -j DROP || fail=1
iptables -A INPUT -p tcp -m tcp –dport 3306 -j DROP || fail=1
iptables -A INPUT -p tcp -m tcp –dport 5432 -j DROP || fail=1
############################SCRIPT NUEVO############################

# Se muestran los resultados
log_end_msg $fail

if [ $fail -eq 0 ]
then
log_success_msg «Verifique que lo que se aplica con: iptables -L -n.»
else
log_warning_msg «Se ha producido un error al aplicar alguna de las reglas»
fi

#### FIN SCRIPT DE CONFIGURACION DE IPTABLES ####