Wednesday, December 15, 2010

Implementando un Firewall básico con Shorewall


Saludos mis estimados lectores, el dia de hoy vamos a configurar un Firewall o Cortafuegos básico con Shorewall, el cual es una herramienta que nos facilita la configuración de Iptables, la idea de este articulo es introducirlo a un nivel en el que puedan entender el funcionamiento de shorewall, sus principales archivos de configuración, entre otras cosas básicas.

Shorewall se encuentra en la mayoría de las distribuciones de GNU/Linux, puedo asegurar su disponibilidad Fedora/CentOS/Debian, así que simplemente lo instalan desde los repositorios, el paquete se llama "shorewall", si no esta en sus repositorios pueden descargarlo desde www.shorewall.net, a continuación la guia".

Antes de empezar a configurar shorewall vamos a activar una capacidad del kernel llamada Ip Forwarding, que permitirá que nuestro sistema tenga capacidad de enrutamiento para complementarlo con Shorewall.

Editamos el archivo /etc/sysctl.conf y ponemos el parámetro net.ipv4.ip_forward en 1, por ejemplo:


net.ipv4.ip_forward = 1


Y luego ejecutamos el comando "sysctl -a" para activar los cambios.


Ahora vamos con Shorewall... nos dirigimos a /etc/shorewall, y verificamos si estan todos los archivos de configuración de ejemplo (En CentOS/Fedora estaban por defecto, en Debian tuve que copiarlos de la ruta /usr/share/doc/shorewall/default-config), para una configuración básica nos limitaremos a modificar 5 archivos:

1) shorewall.conf: archivo de configuración general.
2) zones: Donde declararemos las zonas y su tipo.
3) interfaces: Donde le asignaremos las interfaces a la zonas.
4) policy: Donde declaremos la políticas.
5) rules: Donde declararemos las reglas.

Abrimos con nuestro editor de textos preferido el archivo /etc/shorewall/shorewall.conf y modificamos el siguiente parametro y guardamos:

STARTUP_ENABLED=Yes

Editamos el archivo /etc/shorewall/zones, y aqui declararemos las zonas como dije anteriormente, en nuestro caso tenemos dos interfaces de red eth0 y eth1, la eth0 se conecta a internet a través de un router (le llamaremos net), y la eth1 se conecta a un switch, al cual están conectadas las otras maquinas de la red (la llamaremos loc), por lo tanto en nuestro caso el archivo se veria asi:


#ZONE   TYPE            OPTIONS         IN                      OUT
#                                   OPTIONS                 OPTIONS
fw            firewall
net         ipv4
loc         ipv4

Aqui ya hemos agregado las dos zonas, y por defecto tenemos la zona fw, la cual es nuestro firewall, osea nuestra maquina, guardamos y abrimos el archivo /etc/shoreall/interfaces, en este le asignaremos las interfaces a las zonas creadas previamente, el archivo de configuración se vería así:


#ZONE   INTERFACE       BROADCAST       OPTIONS
net           eth0                     detect
loc           eth1                     detect

Aqui le asignamos las interfaces a las zonas, y en BROADCAST escribimos detect, para que detecte automaticamente el broadcast, el siguiente archivo es policy, como su nombre lo indica aquí declararemos las políticas de seguridad, en mi caso el archivo quedo así:


#SOURCE       DEST         POLICY          LOG     LIMIT:          CONNLIMIT:
fw                     net             ACCEPT
fw                     loc             ACCEPT
net                     fw             REJECT
net                     loc            REJECT
loc                     fw              REJECT
loc                     net            REJECT       

Aqui hemos definido 6 políticas, la primera acepta todas las conexiones desde el firewall a la zona net, la cual es el Internet, la segunda acepta todas las conexiones desde el firewall hasta la red local, la tercera evita la conexión desde el Internet hasta el firewall, la cuarta evita la conexión desde el Internet hasta la red local, la quinta evita la conexión desde la red local al firewall, y la ultima evita la conexión desde la red local a el Internet.

Con esto ya tendremos nuestro pequeña red bien segura, pero no podremos hacer nada, ya que solamente tenemos acceso a la red desde el firewall, todo esta bloqueado, por eso necesitaremos editar el archivo rules, para agregar reglas en las cuales definiremos lo que vamos a aceptar, editamos el archivo de configuración /etc/shorewall/rules.



Agregaremos debajo de la linea SECTION NEW las reglas que queramos por ejemplo las siguiente permitirá la conexion al puerto 22 (SSH), 80, 8080, desde la red a nuestro firewall.


#ACTION         SOURCE          DEST            PROTO   DEST    SOURCE          ORIGINAL        RATE          
#SECTION ESTABLISHED
#SECTION RELATED
SECTION NEW
ACCEPT           loc                      fw                tcp            22
ACCEPT           loc                      fw                tcp            80,8080          


Claro esto es un simple ejemplo, en su caso deben conocer cuales son los puertos que estan usando sus servicios, ya para finalizar vamos a enmascarar, y para ello utilizaremos el fichero /etc/shorewall/masq, en este definiremos el enmascaramiento para la red local (Interfaz eth1, zona loc), la cual sale por medio de la interfaz eth0 (Zona net).

#INTERFACE   SUBNET   ADDRESS   PROTO   PORT(S)   IPSEC
eth0                    eth1


Y listo, solo basta reiniciar el servicio de shorewall con el comando /etc/init.d/shorewall restart, y tambien tengan en cuenta que el servicio de iptables debe estar arriba, cualquier duda o aclaración ya saben lo que hacer :D, hasta la proxima.

0 comentarios:

Post a Comment