Está en la página 1de 9

IMPLEMETACIN DE FIREWALL CON SHOREWALL Acerca de Shorewall.

Shorewall (Shoreline Firewall) es una robusta y extensible herramienta de alto nivel para la configuracin de muros cortafuego. Shorewall solo necesita se le proporcionen algunos datos en algunos ficheros de texto simple y ste crear las reglas de cortafuegos correspondientes a travs de iptables. Shorewall puede permitir utilizar un sistema como muro cortafuegos dedicado, sistema de mltiples funciones como puerta de enlace, dispositivo de encaminamiento y servidor. URL: http://www.shorewall.net/

Acerca de Iptables y Netfilter.


Netfilter es un conjunto de ganchos (Hooks, es decir, tcnicas de programacin que se emplean para crear cadenas de procedimientos como manejador) dentro del ncleo de GNU/Linux y que son utilizados para interceptar y manipular paquetes de red. El componente mejor conocido es el cortafuegos, el cual realiza procesos de filtracin de paquetes. Los ganchos son tambin utilizados por un componente que se encarga del NAT (acrnimo de Network Address Translation o Traduccin de direccin de red). Estos componentes son cargados como mdulos del ncleo. Iptables es el nombre de la herramienta de espacio de usuario (User Space, es decir, rea de memoria donde todas las aplicaciones, en modo de usuario, pueden ser intercambiadas hacia memoria virtual cuando sea necesario) a travs de la cual los administradores crean reglas para cada filtrado de paquetes y mdulos de NAT. Iptables es la herramienta estndar de todas las distribuciones modernas de GNU/Linux. URL: http://www.netfilter.org/

Acerca de Iproute.
Iproute es una coleccin de herramientas (ifcfg, ip, rtmon y tc) para GNU/Linux que se utilizan para controlar el establecimiento de la red TCP/IP, as como tambin el control de trfico. Aunque ifconfig sigue siendo la herramienta de configuracin de red estndar en las distribuciones de GNU/Linux, iproute tiende a sustituirlo al proveer soporte para la mayora de las tecnologas modernas de red (incluyendo IP versiones 4 y 6), permitiendo a los administradores configurar los parmetros de red y el control de trfico. URL: http://linux-net.osdl.org/index.php/Iproute2

Requisitos.
Un sistema GNU/Linux con todos los parches de seguridad correspondientes instalados. Shorewall 3.0.8 o versiones posteriores. Tres interfaces de red: Interfaz para acceso hacia Internet. Interfaz para acceso hacia una DMZ, tras la cual se podrn colocar servidores. Interfaz para acceso hacia la LAN (acrnimo de Local Area Network o rea de Red Local).

Conceptos requeridos.
Qu es una zona desmilitarizada?
Una zona desmilitarizada (DMZ), es parte de una red que no est dentro de la red interna (LAN) pero tampoco est directamente conectada hacia Internet. Podra resumirse como una red que se localiza entre dos redes. En trminos ms tcnicos se refiere a un rea dentro del cortafuegos donde los sistemas que la componen tienen acceso hacia las redes interna y externa, sin embargo no tienen acceso completo hacia la red interna y tampoco acceso completamente abierto hacia la red externa. Los cortafuegos y dispositivos de encaminamiento (routers) protegen esta zona con funcionalidades de filtrado de trfico de red.

Diagrama de una Zona Desmilitarizada. Imagen de dominio pblico tomada de Wikipedia y modificada con el Gimp.

Que es una Red Privada?


Una Red Privada es aquella que utiliza direcciones IP establecidas en el RFC 1918. Es decir, direcciones IP reservadas para Redes Privadas dentro de los rangos 10.0.0.0/8 (desde 10.0.0.0 hasta 10.255.255.255), 172.16.0.0/12 (desde 172.16.0.0 hasta 172.31.255.255) y 192.168.0.0/16 (desde 192.168.0.0 hasta 192.168.255.255).

Qu es un NAT?
NAT (acrnimo de Network Address Translation o Traduccin de direccin de red), tambin conocido como enmascaramiento de IP, es una tcnica mediante la cual las direcciones de origen y/o destino de paquetes IP son reescritas mientras pasan a travs de un dispositivo de encaminamiento (router) o muro cortafuegos. Se utiliza para permitir a mltiples anfitriones en una Red Privada con direcciones IP para Red Privada para acceder hacia una Internet utilizando una sola direccin IP pblica.

Qu es un DNAT?
DNAT, (acrnimo de Destination Network Address Translation o traduccin de direccin de red de destino) es una tcnica mediante la cual se hace pblico un servicio desde una Red Privada. Es

decir permite redirigir puertos hacia direcciones IP de Red Privada. El uso de esta tcnica puede permitir a un usuario en Internet alcanzar un puerto en una Red Privada (dentro de una LAN) desde el exterior a travs de un encaminados (router) o muro cortafuegos donde ha sido habilitado un NAT.

Procedimientos.
Sustento lgico necesario.
iptables: iproute: Controla el cdigo del ncleo de GNU/Linux para filtracin de paquetes de red. Conjunto de utilidades diseadas para utilizar las capacidades avanzadas de gestin de redes del ncleo de GNU/Linux.

shorewall: Shoreline Firewall. Shorewall puede descargarse en formato RPM desde http://www.shorewall.net/. Si dispone de un sistema con Red Hat Enterprise Linux 4, CentOS 4 o White Box Enterprise Linux 4, puede utilizar el siguiente depsito yum (utilizado por Linux Para Todos para distribuir MailScanner y que adems incluye Shorewall):
[mailscanner-lpt] name=MailScanner Linux Para Todos para Enterprise Linux 4.0 baseurl=http://www.linuxparatodos.net/lpt/whitebox/4.0/mailscanner/ gpgkey=http://www.linuxparatodos.net/lpt/LPT-RPM-KEY

Una vez configurado lo anterior, solo bastar utilizar:


yum -y install shorewall

Fichero de configuracin /etc/shorewall/shorewall.conf


En ste se definen, principalmente, dos parmetros. STARTUP_ENABLED y CLAMPMSS. STARTUP_ENABLED se utiliza para activar Shorewall. De modo predefinido est desactivado, solo basta cambiar No por Yes.
STARTUP_ENABLED=Yes

CLAMPMSS se utiliza en conexiones tipo PPP (PPTP o PPPoE) y sirve para limitar el MSS (acrnimo de Maximum Segment Size que significa Mximo Tamao de Segmento). Cambiando el valor No por Yes, Shorewall calcular el MSS ms apropiado para la conexin. Si se es osado, puede tambin especificarse un nmero en paquetes SYN. La recomendacin es establecer Yes si se cuenta con un enlace tipo PPP.
CLAMPMSS=Yes

Fichero de configuracin /etc/shorewall/zones


Este fichero se utiliza para definir las zonas que se administrarn con Shorewall y el tipo de zona (firewall, ipv4 o ipsec). La zona fw est presente en el fichero /etc/shorewall.conf como configuracin predefinida. En el siguiente ejemplo se registrarn las zonas de Internet (net), Red Local (loc) y Zona Desmilitarizada (dmz):

#ZONE DISPLAY OPTIONS fw firewall net ipv4 loc ipv4 dmz ipv4 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Fichero de configuracin /etc/shorewall/interfaces


En ste se establecen cuales sern las interfaces para las tres diferentes zonas. Se establecen las interfaces que corresponden a la Internet, Zona Desmilitarizada DMZ y Red Local. En el siguiente ejemplo, se cuenta con una interfaz ppp0 para acceder hacia Internet, una interfaz eth0 para acceder hacia la LAN y una interfaz eth1 para acceder hacia la DMZ, y en todas se solicita se calcule automticamente la direccin de transmisin (Broadcast):
#ZONE INTERFACE BROADCAST OPTIONS GATEWAY net ppp0 detect loc eth0 detect dmz eth1 detect #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

En el siguiente ejemplo, se cuenta con una interfaz eth0 para acceder hacia Internet, una interfaz eth1 para acceder hacia la LAN y una interfaz eth2 para acceder hacia la DMZ, y en todas se solicita se calcule automticamente la direccin de transmisin (Broadcast):
#ZONE INTERFACE BROADCAST OPTIONS GATEWAY net eth0 detect loc eth1 detect dmz eth2 detect #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Hay una cuarta zona implcita que corresponde al cortafuegos mismo y que se denomina fw. Si acaso hubiera un servicio de DHCP, sea como cliente, como servidor o como intermediario, en alguna de las interfaces, se debe aadir la opcin dhcp para permitir la comunicacin requerida para este servicio. En el siguiente ejemplo el anfitrin donde opera el muro cortafuegos obtiene su direccin IP, para la interfaz ppp0, a travs del servicio DHCP del ISP; en este mismo anfitrin opera simultneamente un servidor DHCP, el cual es utilizado en la red de rea local para asignar direcciones IP; por todo lo anterior se debe activar la opcin DHCP para las interfaces ppp0 y eth1, que correspondientemente son utilizadas por la zona de Internet y la red de rea local, pero no es necesario hacerlo para la interfaz eth2 que es utilizada para la zona de la DMZ:
#ZONE INTERFACE BROADCAST OPTIONS GATEWAY net ppp0 detect dhcp loc eth1 detect dhcp dmz eth2 detect #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Fichero de configuracin /etc/shorewall/policy


En este fichero se establece como se acceder desde una zona hacia otra y hacia la zona de Internet.
#SOURCE loc dmz fw DEST net net net POLICY ACCEPT ACCEPT ACCEPT LOG LIMIT:BURST

net all DROP info all all REJECT info #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Lo anterior hace lo siguiente: 1. La zona de la red local puede acceder hacia la zona de Internet. 2. La zona de la DMZ puede acceder hacia la zona de Internet. 3. El cortafuegos mismo puede acceder hacia la zona de Internet. 4. Se impiden conexiones desde Internet hacia el resto de las zonas. 5. Se establece una poltica de rechazar conexiones para todo lo que se haya omitido. Todo lo anterior permite el paso entre las diversas zonas hacia Internet, lo cual no es deseable si se quiere mantener una poltica estricta de seguridad. La recomendacin es cerrar todo hacia todo e ir abriendo el trfico de acuerdo a como se vaya requiriendo. Es decir, utilizar algo como lo siguiente:
#SOURCE DEST POLICY LOG LIMIT:BURST net all DROP info all all REJECT info #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Lo anterior bloquea todo el trfico desde donde sea a donde sea. Si es necesario realizar pruebas de diagnstico desde el cortafuegos hacia Internet para probar conectividad y acceso hacia diversos protocolos, se puede utilizar lo siguiente:
#SOURCE DEST POLICY LOG LIMIT:BURST fw net ACCEPT net all DROP info all all REJECT info #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Lo anterior permite al propio cortafuegos acceder hacia la zona de Internet. Esta sera la poltica ms relajada que se pudiera recomendar para mantener un nivel de seguridad aceptable.

Fichero de configuracin /etc/shorewall/masq


Se utiliza para definir que a travs de que interfaz o interfaces se habilitar enmascaramiento, o NAT, y para que interfaz o interfaces o redes se aplicar dicho enmascaramiento. En el siguiente ejemplo, se realizar enmascaramiento a travs de la interfaz ppp0 para las redes que acceden desde las interfaces eth0 y eth1:
#INTERFACE SUBNET ADDRESS PROTO PORT(S) IPSEC ppp0 eth0 ppp0 eth1 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

En el siguiente ejemplo, se realizar enmascaramiento a travs de la interfaz eth0 para las redes 192.168.0.0/24 y 192.168.1.0/24:
#INTERFACE SUBNET ADDRESS PROTO PORT(S) IPSEC eth0 192.168.0.0/24 eth0 192.168.1.0/24 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Tambin es posible hacer NAT solamente hacia una IP en particular y para un solo protocolo en particular. En el siguiente ejemplo se hace NAT a travs de la interfaz ppp0 para la direccin 192.168.3.25 que accede desde la interfaz eth1 y solo se le permitir hacer NAT de los protocolos smtp y pop3. Los nombres de los servicios se asignan de acuerdo a como estn listados en el fichero /etc/services.
#INTERFACE SUBNET ADDRESS PROTO PORT(S) IPSEC ppp0 eth1 192.168.3.25 tcp 25,110 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Fichero de configuracin /etc/shorewall/rules


Todos los puertos estn cerrados de modo predefinido, y es en este fichero donde se habilitan los puertos necesarios. Hay diversas funciones que pueden realizarse. ACCEPT La accin ACCEPT se hace para especificar si se permiten conexiones desde o hacia una(s) zona (s) un protocolo(s) y puerto(s) en particular. En el siguiente ejemplo se permiten conexiones desde Internet hacia el puerto 80 (www), 25 (smtp) y 110 (pop3). Los nombres de los servicios se asignan de acuerdo a como estn listados en el fichero /etc/services.
#ACTION SOURCE DEST PROTO DEST # PORT ACCEPT net fw tcp 80,25,110 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

REDIRECT La accin REDIRECT permite redirigir peticiones hacia un puerto en particular. Muy til cuando se quieren redirigir peticiones para HTTP (puerto 80) y se quiere que estas pasen a travs de un Servidor Intermediario (Proxy) como Squid. En el siguiente ejemplo las peticiones hechas desde la red local y desde la DMZ sern redirigidas hacia el puerto 8080 del cortafuegos, en donde hay un Servidor Intermediario (Proxy) configurado de modo transparente.
#ACTION SOURCE DEST PROTO DEST # PORT REDIRECT loc 8080 tcp 80 REDIRECT dmz 8080 tcp 80 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

DNAT La accin DNAT se utiliza para reenviar peticiones desde un puerto del cortafuegos hacia una IP y puerto en particular tanto en la red local como en la DMZ. Cabe destacar que para que el DNAT funcion se necesita que: Est habilitado el reenvo de paquetes en /etc/sysconfig/sysctl.cfg y /etc/shorewall/shorewall.conf Los equipos hacia los que se est haciendo DNAT utilicen como puerta de enlace al cortafuegos desde sus correspondientes zonas. En el siguiente ejemplo, se hace DNAT desde la zona de Internet para HTTP (puerto 80), SMTP (puerto 25) y POP3 (puerto 110) por TCP y DNS (puerto 53) por TCP y UDP hacia la IP 10.10.10.28 localizada en la zona de la Red Local.

#ACTION SOURCE DEST PROTO DEST # PORT DNAT net dmz:10.10.10.28 tcp 80,25,110,53 DNAT net dmz:10.10.10.28 udp 53 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Ejemplos diversos de reglas. En el siguiente ejemplo se permite a la zona de Red Local el acceso hacia el puerto 22 (SSH) de cualquier equipo dentro de la DMZ:
#ACTION SOURCE DEST PROTO DEST # PORT ACCEPT loc dmz tcp 22 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

En el siguiente ejemplo se permite solo a la direccin 192.168.2.34 de zona de Red Local el acceso hacia el puerto 22 (SSH) de cualquier equipo dentro de la DMZ:
#ACTION SOURCE DEST PROTO DEST # PORT ACCEPT loc:192.168.2.34 dmz tcp 22 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

En el siguiente ejemplo se permite solo a la direccin 192.168.2.34 de zona de Red Local el acceso hacia el puerto 22 (ssh) de la direccin 10.10.10.5 que est dentro de la DMZ:
#ACTION SOURCE DEST PROTO DEST # PORT ACCEPT loc:192.168.2.34 dmz:10.10.10.5 tcp 22 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

En el siguiente ejemplo se hace DNAT desde la zona de Internet para los servicios de HTTP (puerto 80), SMTP (puerto 25) y POP3 (puerto 110) por TCP y DNS (puerto 53) por TCP y UDP hacia diversos servidores localizados DMZ:
#ACTION SOURCE DEST PROTO # DNAT net dmz:10.10.10.1 tcp DNAT net dmz:10.10.10.2 tcp DNAT net dmz:10.10.10.3 tcp DNAT net dmz:10.10.10.3 udp #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE DEST PORT 80 25,110 53 53

En el siguiente ejemplo se hace DNAT desde la zona de la Red Local para los servicios de HTTP (puerto 80), SMTP (puerto 25), POP3 (puerto 110) y DNS (puerto 53) hacia diversos servidores localizados DMZ:
#ACTION SOURCE DEST PROTO # DNAT loc dmz:10.10.10.1 tcp DNAT loc dmz:10.10.10.2 tcp DNAT loc dmz:10.10.10.3 tcp DNAT loc dmz:10.10.10.3 udp #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE DEST PORT 80 25,110 53 53

En el siguiente ejemplo se hace DNAT desde la zona de Internet para los servicios de HTTP

(puerto 80), SMTP (puerto 25), POP3 (puerto 110) y DNS (puerto 53) hacia diversos servidores localizados DMZ y limitar la taza de conexiones a diez por segundo con rfagas de hasta cinco conexiones para cada servicio:
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL # PORT PORT(S) DEST DNAT net dmz:10.10.10.1 tcp 80 DNAT net dmz:10.10.10.2 tcp 25,110 DNAT net dmz:10.10.10.3 tcp 53 DNAT net dmz:10.10.10.3 udp 53 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE RATE LIMIT 10/sec:5 10/sec:5 10/sec:5 10/sec:5

En el siguiente ejemplo las peticiones hechas desde la red local (LAN) sern redirigidas hacia el puerto 8080 del cortafuegos, en donde hay un Servidor Intermediario (Proxy) configurado de modo transparente, limitando la taza de conexiones a diez por segundo con rfagas de hasta cinco conexiones. Esto es muy til para evitar ataques de DoS (acrnimo de Denial of Service que se traduce como Denegacin de Servicio) desde la red local (LAN).
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE # PORT PORT(S) DEST LIMIT REDIRET loc 8080 tcp 80 20/sec:5 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Iniciar el cortafuegos y aadirlo a los servicios de arranque del sistema


Para ejecutar por primera vez el servicio, utilice:
service shorewall start

Para hacer que los cambios hechos a la configuracin surtan efecto, utilce:
service shorewall restart

Para detener el cortafuegos, utilice:


service shorewall stop

Cabe sealar que detener el cortafuegos tambin detiene todo trfico de red, incluyendo el trfico proveniente desde la LAN. Si se desea restaurar el trfico de red, sin la proteccin de un cortafuegos, ser necesario tambin utilizar el guin de iptables.
service iptables stop

Lo ms conveniente, en caso de ser necesario detener el cortafuegos, es definir que direcciones IP o redes podrn continuar accediendo cuando el cortafuegos es detenido, o cuando ste se encuentra en proceso de reinicio. Esto se define en el fichero /etc/shorewall/routestopped, definiendo la interfaz, a travs de la cual se permitir la comunicacin, y la direccin IP o red, en un formato de lista separada por comas, de los anfitriones que podrn acceder al cortafuegos. Ejemplo:
#INTERFACE HOST(S) OPTIONS eth0 192.168.1.0/24 eth0 192.168.2.30,192.168.2.31 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Para aadir Shorewall al arranque del sistema, utilice:


chkconfig shorewall on

También podría gustarte