Seguridad‎ > ‎GNU/Linux‎ > ‎

Configuración de Shoreline Firewall

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

Comments