Hola, ahora escribiendo sobre esto, que leyendo un poco no es tan dificil como parece, se que no es la unica forma ya que existen miles de frond-end de iptables que facilitan la tarea de estar haciendo script's, uno de ellos facil de usar y a la vez complejo es firestarter..Pero aqui trataremos de hacer un script basico como firewall..
Necesitas algunas opciones del kernel(2.6.11-gentoo-r2):
Device Drivers --->
Networking support --->
Networking options --->
- Network packet filtering (replaces ipchains) --->
--- Network packet filtering (replaces ipchains)
- Network packet filtering debugging
IP: Netfilter Configuration --->
<*> Connection tracking (required for masq/NAT)
<M> IRC protocol support
<*> IP tables support (required for filtering/masq/NAT)
<M> limit match support
<M> Packet type match support
<M> Connection state match support
<M> Packet filtering
<M> Full NAT
<M> MASQUERADE target support
<M> REDIRECT target support
- NAT of local connections (READ HELP)
Bien pongo mi script el cual esta en la siguiente situacio, tengo un router (firewall activado con nivel bajo) con servidor dhcp el cual comparte internet mediante un tarjeta de red (eth0).. aqui desabilito paquete ICMP y tambien puertos por los cuales el servidor x puede ser tomado remotamente..
nota: seria bueno abrir puertos si usas algun p2p o para compartir archivos mediante mensajeria..
Aqui esta el scrip
#!/bin/sh
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
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT
# A nuestra IP le dejamos todo
iptables -A INPUT -i eth0 -j ACCEPT
#No aceptados
#iptables -A INPUT,FORWARD -s IP -j DROP
#Servicios
#Sistema Grafico X
iptables -A INPUT -i eth0 -p TCP -s 0/0 --dport 6000:6005 -j DROP
iptables -A INPUT -i eth0 -p UDP -s 0/0 --dport 6000:6005 -j DROP
#ICMP
iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j DROP
iptables -A FORWARD -i eth0 -p icmp --icmp-type 8 -j DROP
#Cualquier conexion que habra "yo" me lo aceptara
iptables -A INPUT -p TCP -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p UDP -m state --state RELATED,ESTABLISHED -j ACCEPT
#Cualquier otra conexion nueva o invalida de fuera hacia mi es desechada
iptables -A INPUT -m state --state NEW,INVALID -j DROP
echo " OK . Verifique que lo que se aplica con: iptables -L -n"
# Fin del script
Bueno hagamos un archivo para guardar el script con alguno de estos comandos
nano -w script_iptables
vim script_iptables
gedit script_iptables
Lo copiamos y gurdamos, salimos y ahora damos permisos de ejecucion al script de shell, para no liarnos hacemos:
chmod 777 script_iptables
Ahora ejecutamos
./script_iptables
Si todo esta bien no dara señal de error y pondra algo asi
UnderHouse soullost # ./script_iptables
Aplicando Reglas de Firewall... OK . Verifique que lo que se aplica con: iptables -L -n
Verificamos con:
UnderHouse soullost # iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:6000:6005
DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:6000:6005
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID,NEW
Chain FORWARD (policy DROP)
target prot opt source destination
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
Chain OUTPUT (policy DROP)
target prot opt source destination
Vemos que han sido aplicadas y cerificamos que ande el internet en nuestra pc xD.. ahora sin mas errores guardamos la reglas, en gentoo se hace asi:
UnderHouse soullost # /etc/init.d/iptables save
* Saving iptables state ... [ ok ]
En otras distros:
# iptables-save
Nadamas hace falta agregar el script al inicio del sistema para que ya agregue las reglas cada vez que encendamos el internet, en gentoo:
UnderHouse soullost # rc-update add iptables default
En este caso no hay ningun puerto abierto extra, hacemos un nmap localhost para ver que tal o con el mismo nessus
UnderHouse soullost # nmap localhost
Starting nmap 3.81 (
http://www.insecure.org/nmap/ ) at 2005-03-17 10:28 UTC
All 1663 scanned ports on localhost (127.0.0.1) are: closed
Nmap finished: 1 IP address (1 host up) scanned in 0.261 seconds
Parece que esta de lujo no ? xDDD .. Espero que les sirva y buena suerte gente..
Links:
http://es.tldp.org/Manuales-LuCAS/doc-iptables-firewall/doc-iptables-firewall-html/http://www.xtech.com.ar/articulos/iptables/iptables/