Introducción
Un firewall es una parte de un sistema o una red cuyo fin es bloquear el acceso no autorizado a la vez que permite comunicaciones autorizadas. No hay un manual a seguir para elegir en que partes de la red colocar un firewall, simplemente se han de tener nociones de seguridad muy básicas. Algo a destacar es que debemos elegir una política de seguridad que se ajuste a nuestras necesidades antes de pensar en donde colocar un firewall. El firewall de Gnu/Linux es Netfilter, este al no ser que compilemos nuestro kernel y lo “quitemos” a propósito, lo deberiamos tener, por dar un dato más, Pf es el firewall con soporte para núcleos de BSD. Existen multitud de soluciones para tener un firewall funcional, IPCOP, Shorewall, ClearOS...etc.
¿Que es Shoreline Firewall? AKA Shorewall
Shorewall es una herramienta para configurar el Firewall de Gnu/Linux.
Shh, para el carro...¿Entonces que es Iptables?
Iptables es una herramienta usada para configurar y controlar Netfilter. Cualquiera que no sepa lo que es Shorewall o no tenga mucha idea de iptables, se preguntará cual es la razón para usar Shorewall y no firestarter...etc. La respuesta mas acertada seria que Shorewall es mucho mas flexible y potente que la mayoria de las soluciones de firewall para Gnu/Linux.
Instalación e introducción a Shoreline Firewall
En Debian y derivados deberia bastar con:
root:~# aptitude install shorewall shorewall-doc
Si todo ha salido bien, deberemos tener dos ficheros en /etc/shorewall, Makefile y shorewall.conf. Por ahora no tocaremos ninguno. El primer paso para llevarnos bien con nuestro colega, Shoreline es crear 4 documentos de texto: interfaces, policy, rules, zones.
Interfaces:
Aca irán definidas las “interfaces” de red. (eth1, eth2,
wlan0...etc).
Zones: Aquí declararemos las zonas de nuestra red.
Policy: En él, definiremos las políticas para las conexiones entre las zonas definidas anteriormente.
Rules: ¿Hace falta que diga lo que tendremos aquí?
Configurando
Shoreline Firewall nos ofrece varios documentos (interfaces, zones, policy, rules) que ya vienen “hechos” y estan listos para ser copiados a /etc/shorewall y comenzar a configurar. Para el ejemplo utilizaré una sola interfaz de red, si hacemos:
$ ls /usr/share/doc/shorewall/examples/
Veremos que tenemos varios directorios, yo elegiré one-interface. Copiamos todo a /etc/shorewall
# cp /usr/share/doc/shorewall/examples/one-interface/* /etc/shorewall
El primer documento que veremos será zones. Lo abrimos y lo dejamos así:
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4
Explico, fw somos nosotros, osea el firewall y net es internet y como vemos es ipv4. ¿Fácil? A que si.
Abrimos ahora interfaces:
#ZONE INTERFACE BROADCAST OPTIONS net wlan1 detect dhcp,tcpflags,logmartians,nosmurfs
Como vemos, en Zone->net y en interface mi interfaz inhalambrica (iwconfig/ifconfig para saber que interfaz poner).
Le toca el turno a policy, recordemos que aca estarian nuestras políticas.
#SOURCE DEST POLICY LOG LIMIT: CONNLIMIT: # LEVEL BURST MASK net fw REJECT fw net REJECT
No hay demasiado que explicar, todo el tráfico generado en net con destino fw será rechazado y todo el trafico generado en fw con destino net será rechazado también. Sin ninguna regla, estariamos totalmente incomunicados con esta política.
Abrimos ahora rules.
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK # PORT PORT(S) DEST LIMIT GROUP
ACCEPT net fw tcp 2345 # SSH #ACCEPT net fw icmp 8 # Ping
#ACCEPT fw net tcp 21 # FTP ACCEPT fw net tcp 22 # SSH ACCEPT fw net tcp 80 # HTTP ACCEPT fw net tcp 53 # DNS Queries ACCEPT fw net udp 53 # DNS Queries ACCEPT fw net icmp 8 # PING ACCEPT fw net tcp 443 # HTTPS
Puede parecer un lio de narices, voy a explicar un par de reglas y luego las entenderás todas.
Fíjate:
ACCEPT fw net tcp 80 # HTTP
Con ACCEPT le decimos que acepte todo el tráfico de fw (nosotros) con destino net (internet) si es tcp y va por el puerto 80, sin esta regla no podríamos navegar.
Ahora esta, mira:
#ACCEPT net fw icmp 8 # Ping
Tiene un asterisco, por lo que es como si la regla no estuviese.
Con ACCEPT le decimos que acepte todo el tráfico originado en net (internet) con destino fw (nosotros), siempre y cuando fuese icmp y vaya por el puerto 8. Como está comentada(da igual que esté comentada, aunque no estuviese, nadie podría hacer un ping desde fuera), nadie nos podrá hacer un ping.
A partir de aquí podeis configurar vuestras propias reglas.
El siguiente paso es editar 2 ficheros de configuracion y luego compilar.
Editamos /etc/shorewall/shorewall.conf
Donde pone:
STARTUP_ENABLED=No
Lo dejamos así:
STARTUP_ENABLED=Yes
Abrimos ahora /etc/default/shorewall, donde pone:
startup=0
Dejamos:
startup=1
Llega el momento, como root escribirmos:
shorewall start
Si todo ha ido bien nos pondrá al final un bonito done, de lo contrario has hecho algo mal. Podemos comprobar si realmente está corriendo con:
shorewall status Si te has quedado con ganas de profundizar en la configuración de Shorewall y saber a lo que me referia con "flexibilidad" puedes consultar la documentación que hay en www.shorewall.net |