¿Un firewall potente?: Shorewall!

Enviado por Neo el 7 Enero, 2010 - 07:36.

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 REMOVE

2. /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 REMOVE

3. 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 REMOVE

4. 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 REMOVE

Luego de tener una configuración básica, que no tiene que ser ésta que puse como ejemplo, procedemos a compilar el firewall:

root:~# shorewall start

Y está todo listo para navegar seguros por la red.
Cualquier cambio posterior que se le quiera hacer solo basta con ejecutar:

root:~# shorewall restart

por 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 save

Les 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 shorewallbackup

Si 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.

Imagen de aBuSiViTo
Enviado por aBuSiViTo el 7 Enero, 2010 - 07:40.

Hmmmmm.... a probar!! :P

Saludos!

Imagen de macondo
Enviado por macondo el 7 Enero, 2010 - 15:21.

Muy interesante, gracias, lo probaré :)

Imagen de Aguila Rabuda
Enviado por Aguila Rabuda el 7 Enero, 2010 - 15:23.

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.

Imagen de NataSHell
Enviado por NataSHell el 7 Enero, 2010 - 19:13.

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             ACCEPT

Fuera 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)

Imagen de scs_calleros
Enviado por scs_calleros el 7 Enero, 2010 - 21:15.

Yo he usado shorewall y es muy bueno.

Imagen de Neo
Enviado por Neo el 20 Enero, 2010 - 01:31.
NataSHell escribió:

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             ACCEPT

Fuera 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. ;)

Imagen de alexander_a
Enviado por alexander_a el 14 Agosto, 2011 - 21:05.

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?

Imagen de siddharta
Enviado por siddharta el 15 Agosto, 2011 - 05:06.
alexander_a escribió:

[...] jamas encontre esta ruta /usr/share/doc/shorewall-common/README.Debian.gz [...]

¿

# aptitude install shorewall-doc

?