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 ####