Sabemos que para GNU/Linux existen infinidad de herramientas para modificar las reglas del iptables (firewall), muy potentes la mayoría de ellas. Sin embargo les voy a hablar de un firewall que por muchos se reconoce como uno de los más potentes que existe para el sistema operativo GNU/Linux. Ya yo había probado con otros como: guardog, firestarter, ufw, arnoiptables-firewall, firehol, etc, pero ninguno de ellos me resultaba práctico ni me ofrecía lo que yo quería, ademas de no tener tantas opciones. Lo que sucede es que estos firewall antes mencionados son de "alto nivel", en cambio el shorewall es de "bajo nivel", o sea, el shorewall como firewall es para el iptables el equivalente en lenguaje de programación lo que es C para ensamblador. Puedes manejar desde lo mas sencillo hasta lo mas complejo. Ahora veamos algunos ejemplos de su uso:
Instalación:
root:~# apt-get install shorewall
root:~# apt-get install shorewall-doc (aporta una información totamente completa y detallada)Configuración:
Aquí pueden enredarse un poco pues yo al principio no sabía ni por donde empezar, luego vi un mensaje del kernel donde me decía que el firewall no estaba iniciado que viera su ayuda en /usr/share/doc/shorewall-common/README.Debian.gz, entonces fue aqui donde puede ver como se configuraba y comenze a entenderlo todo.
Lo primero que hay que hacer es crear en /etc/shorewall cuatro archivos fundamentales para el funcionamiento del firewall:
1.interfaces
2.policy
3.rules
4.zones
NOTA: en /etc/shorewall/ sólo veeremos al principio de instalado dos archivos: Makefile y shorewall.conf (No tocarlos!)
Por supuesto que crear estos archivos seria una tarea tediosa pero lo bueno es que ya estan creados, sólo hay que copiarlos. Los archivos se encuentran en /usr/share/doc/shorewall-common/examples/one-interface/, aunque en /usr/share/doc/shorewall-common/default-config/ se encuentran tambien pero no están listos para la compilación. Por lo tanto copiaremos los que están en la primera dirección, o sea en ../../examples/one-interface. Esto se puede hacer fácil desde el mc para ahorrarse trabajo. Una vez copiados los cuatro archivos en /etc/shorewall/ nos disponemos a configurar cada uno de ellos:
1. /etc/shorewall/interfaces
Lo dejo por defecto, usted configura el suyo a su manera:
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect dhcp,tcpflags,logmartians,nosmurfs
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE2. /etc/shorewall/policy
Como puede ver he cambiado la ultima línea, en la columna POLICY sustituí REJECT por ACCETP, de lo contrario sería imposible navegar. Lo demás esta por defecto.
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
$FW net ACCEPT
net $FW DROP info
net all DROP info
# The FOLLOWING POLICY MUST BE LAST
all all ACCEPT info
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE3. rules
En mi configuración pueden ver como bloqueo el protocolo SMB desde internet(net) hacia mi firewall($FW) y el Ping desde la internet(net) hacia mi firewall($FW)
#ACTION SOURCE DEST PROTO
SMB/DROP net $FW
# Drop Ping from the "bad" net zone.. and prevent your log from being flooded..
Ping/DROP net $FW
# Permit all ICMP traffic FROM the firewall TO the net zone
ACCEPT $FW net icmp
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE4. zones
Este es el archivo por defecto.
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVELuego de tener una configuración básica, que no tiene que ser ésta que puse como ejemplo, procedemos a compilar el firewall:
root:~# shorewall startY está todo listo para navegar seguros por la red.
Cualquier cambio posterior que se le quiera hacer solo basta con ejecutar:
root:~# shorewall restartpor supuesto, despues de hacer los cambios.
Para que se autoinicie con el sistema basta con editar el archivo /etc/default/shorewall y cambiarle el valor 0 por 1 donde dice startup.
Y cuando lo tengamos todo a nuesto gusto guardamos los cambios haciendo un backup de nuestra configuración:
root:~# shorewall saveLes dirá que guardo la configuración en un script que se encuentra en /var/lib/shorewall/restore, si queremos que se guarde con otro nombre entonces sería p.ej:
root:~# shorewall save shorewallbackupSi luego queremos restaurarlo sólo hay que ejecutar:
shorewall restore (para restaurar desde el script con el nombre restore que se crea pro defecto)
shorewall restore shorewallbackup (para restaurar desde el script al que le asignamos el nombre shorewallbackup)
Hasta ahora he expuesto una manera básica y fácil de trabajar con este potente firewall. Para profundizar más en el funcionamiento y las muchas opciones del mismo sólo instale el paquete shorewall-doc y desde el navegador web escriba:
file:///usr/share/doc/shorewall-doc/html/index.html
Aqui encontrará ayuda para cualquier duda y verá ejemplos bastante interesantes y prácticos.
Espero que les sea de utilidad este artículo.
Saludos.

Hmmmmm.... a probar!! :P
Saludos!
Muy interesante, gracias, lo probaré :)
Me parece bastante interesante. De todas maneras (y como ya he dicho muchas veces), me gusta mucho más arno-iptables-firewall. Es un script bastante potente, completo y realmente sencillo.
Una saludo.
Muy buena tu entrada solo un comentario
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST$FW net ACCEPT
net $FW DROP info
net all DROP info
# The FOLLOWING POLICY MUST BE LAST
all all ACCEPT info
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
Esa última línea es terrible! Estás dejando un campo muy abierto pues estas declarando que puedes aceptarás peticiones de todos hacia todos.
Para navegar basta tu primer línea
$FW net ACCEPTFuera de ello lo veo completo.
Una de las ventajas de shorewall es que lo complementas con scripts PERL y te permite infinidad de combinaciones además de ser intuitivo.
@Aguila_Rabuda, arno lo probe una vez pero creo que no entendí e hice un fiasco... así que preferí usar iptables de a pelo y shorewall (ni el firestarter lo entendí XD)
Yo he usado shorewall y es muy bueno.
Muy buena tu entrada solo un comentario
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST$FW net ACCEPT
net $FW DROP info
net all DROP info
# The FOLLOWING POLICY MUST BE LAST
all all ACCEPT info
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
Esa última línea es terrible! Estás dejando un campo muy abierto pues estas declarando que puedes aceptarás peticiones de todos hacia todos.
Para navegar basta tu primer línea
$FW net ACCEPTFuera de ello lo veo completo.
Si NataShell gracias por la correccion. Al principio tuve problemas con esta linea pues por default viene con REJECT y no podia navegar, luego lo solucioné cambiando el REJECT por ACCEPT pero no le di mas importancia. Mi maquina es de casa sencilla no un server asi que no le di tanta importancia al asunto aunque me sentía incomodo, sabía que algo andaba mal en esa línea. Gracias una vez más por tu aporte.
Saludos. ;)
Espero que pueda leer esto. Segui los pasos de su guia para la instalacion, pero jamas encontre esta ruta /usr/share/doc/shorewall-common/README.Debian.gz
¿Hay otra manera de obtener los archivos necesarios para la configuracion?
[...] jamas encontre esta ruta /usr/share/doc/shorewall-common/README.Debian.gz [...]
¿
# aptitude install shorewall-doc?