====== Configuración de Shorewall ====== Shorewall es una herramienta de alto nivel que permite crear reglas de filtrado de forma cómoda. Esta guía describe los pasos necesarios para llevar a cabo una configuración relativamente simple en la que se dispone de un equipo (que hará las veces de firewall) con dos interfaces de red, una conectada directamente a internet y la otra a una red local. La primera de las interfaces está configurada en modo bridge debido a que en dicha máquina se ejecutan varias máquinas virtuales que comparten dicha interfaz de red. Por otro lado, la red local utiliza un rango privado de IP, por lo que es necesario enmascarar dichas IP cuando se accede a la red externa. ====== Instalación de Shorewall ====== Para la instalación descrita basta con instalar el paquete shorewall. emerge -av shorewall ====== Configuración de Shorewall ====== Los archivos de configuración de Shorewall están en el directorio ''/etc/shorewall''. Los ficheros que será necesario modificar son: * ''/etc/shorewall/zones'' * ''/etc/shorewall/interfaces'' * ''/etc/shorewall/policy'' * ''/etc/shorewall/masq'' * ''/etc/shorewall/shorewall.conf'' El fichero ''zones'' define las zonas sobre las que va a actuar Shorewall y su tipo. Para la configuración anterior necesitamos definir 3 zonas: la máquina en sí (''fw''), la red externa (''net'') y la red local (''loc''): ############################################################################### #ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4 loc ipv4 El fichero ''interfaces'' define las interfaces de red utilizadas por aquellas zonas que no son del tipo ''firewall'': #ZONE INTERFACE OPTIONS net br0 routeback,bridge loc eno2 El fichero ''policy'' define las políticas. El siguiente ejemplo permite prácticamente cualquier comunicación (la única que realmente se impide es el acceso desde la red externa a la local): ############################################################################### #SOURCE DEST POLICY LOG LIMIT: CONNLIMIT: # LEVEL BURST MASK loc net ACCEPT fw net ACCEPT net fw ACCEPT fw loc ACCEPT loc fw ACCEPT net all DROP info all all REJECT info El fichero ''masq'' permite definir qué rango de IP deben ser enmascaradas al salir por una determinada interfaz (la siguiente configuración determina la IP pública de forma automática): ################################################################################################################ #INTERFACE:DEST SOURCE ADDRESS PROTO PORT(S) IPSEC MARK USER/ SWITCH ORIGINAL # GROUP DEST br0 192.168.0.1/24 Por último, en el fichero ''shorewall.conf'' hay que comprobar el valor de las siguientes líneas: STARTUP_ENABLED=Yes IP_FORWARDING=On La primera permite generar las reglas de filtrado y poner en marcha el cortafuegos. La segunda es para permitir el envío de tráfico procedente de una interfaz a la otra, y viceversa. ====== Probar la configuración ====== Es posible probar una determinada configuración durante un tiempo prudencial y revertir el cortafuegos a su estado anterior pasado dicho tiempo. De esta forma, si las reglas no son correctas, se podría volver a acceder a la máquina. Para probar las reglas en ''/etc/shorewall'' durante 10 segundos se puede ejecutar el comando: shorewall try /etc/shorewall 10s ====== Lanzar el cortafuegos ====== Una vez probados todos los casos, se puede poner en marcha el cortafuegos de forma definitiva con: /etc/init.d/shorewall start Para añadirlo al arranque (openrc en Gentoo): rc-update add shorewall ====== Configuración avanzada ====== El fichero ''/etc/shorewall/policy'' es el encargado de definir las reglas por defecto para la conexión entre zonas. Las excepciones a dichas reglas se definen en el fichero ''/etc/shorewall/rules''. Para cada conexión entrante primero se comprobarán las reglas en ''rules'' y en caso de no encontrarse ninguna coincidencia, se acudirá entonces a las reglas por defecto. La configuración ideal, al contrario de lo planteado en este documento, es que las reglas por defecto sean lo más restrictivas posibles y que se indique en el fichero ''rules'' solo aquellas conexiones que realmente se quieren permitir. Se puede consultar cómo redactar dichas reglas en la [[ http://shorewall.net/manpages/shorewall-rules.html |documentación del fichero rules]]. ====== Referencias ====== * [[ http://shorewall.net/Introduction.html | Introduction to Shorewall ]] * [[ http://shorewall.net/GettingStarted.html | Getting started with Shorewall ]] * [[ http://shorewall.net/shorewall_quickstart_guide.htm | Shorewall quick start guides ]]