12/11/2004, 15:10
|
| | Fecha de Ingreso: septiembre-2004
Mensajes: 30
Antigüedad: 20 años, 2 meses Puntos: 0 | |
Este es lo basico del script, se ejecuta en una maquina con dos interfaces de red, una de ellas esta conectada a internet y la otra a una red local.
Las direcciones de la red local son 192.168.0.X
El objetivo es cerrar todos los servicios al exterior, pero permitiendo recibir paquetes si la conexion es iniciada desde una maquina de la red local.
eth0 es la interface conectada con el exerior
eth1 es la interface conectada a la red local
Te pongo comentarios
# Vacio todas las cadenas de la tabla nat
iptables -t nat -F
# Vacio todas las cadenas de la tabla mangle
iptables -t mangle -F
# Vacia todas las cadenas de la tabla filter
iptables -t filter -F
# Pongo una politica DROP a la cadena INPUT.
#Con esto cualquier paquete que no coincida con una de las siguientes reglas
#será rechazado
iptables -P INPUT DROP
# Activo el enmascaramineto ip para que las maquinas de la red local salga al
#exterior con la ip publica.
#Esto es para ip dinamica si la tuya es estatica se hace de otra manera
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
# Acepto los paquetes con un estado diferente de new.
# Con esto se consigue que los paquetes que llegan procedentes de una
#conexion extablecida desde la red local puedan entrar
iptables -A INPUT -p tcp --dport 1024:65535 -i eth0 -m state --state ! NEW -j ACCEPT
# Permito el acceso a toda la red local.
#Desde la red local se puede acceder a todo
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
# Dejo pasar todos los paquetes de icmp que llegen por cualquier interface.
iptables -A INPUT -p icmp -j ACCEPT
#Los paquetes con estado NEW son rechazados con un paquete RESET.
#Esto se pone para que cualquier intento de conexion sea rechazado con un
#paquete reset, ya que por defecto simplemente no se responde, y eso
#indica que hay un servicio funcionando detras de un firewall
iptables -A INPUT -p tcp --dport 0:65535 -i eth0 -m state --state NEW -j REJECT --reject-with tcp-reset
#Esto lo pongo para asegurarme de que el script se ejecuta entero
echo "Llego hasta el final"
Esto es resumen de lo basico, lo tendras que adaptar a tus necesidades pero como ves no es muy complicado, de todas formas si tienes dudas, te las intentaré responder.
Un saludo
Skelter |