Exploración de la configuración de Shorewall Firewall y las opciones de la línea de comandos


En mi artículo anterior, echamos un vistazo a Shorewall, cómo instalarlo, configurar los archivos de configuración y configurar el reenvío de puertos a través de NAT. En este artículo, exploraremos algunos de los errores comunes de Shorewall, algunas soluciones y obtendremos una introducción a sus opciones de línea de comandos.

  1. Shorewall – A High-Level Firewall for Configuring Linux Servers – Part 1

Shorewall ofrece una amplia gama de comandos que se pueden ejecutar en la línea de comandos. Echar un vistazo a man shorewall debería darte mucho que ver, pero la primera tarea que vamos a realizar es una verificación de nuestros archivos de configuración.

$ sudo shorewall check

Shorewall imprimirá una comprobación de todos sus archivos de configuración y las opciones que contienen. La salida se verá así.

Determining Hosts in Zones...
Locating Actions Files...
Checking /usr/share/shorewall/action.Drop for chain Drop...
Checking /usr/share/shorewall/action.Broadcast for chain Broadcast...
Checking /usr/shrae/shorewall/action.Invalid for chain Invalid...
Checking /usr/share/shorewall/action.NotSyn for chain NotSyn..
Checking /usr/share/shorewall/action.Reject for chain Reject...
Checking /etc/shorewall/policy...
Adding Anti-smurf Rules
Adding rules for DHCP
Checking TCP Flags filtering...
Checking Kernel Route Filtering...
Checking Martian Logging...
Checking Accept Source Routing...
Checking MAC Filtration -- Phase 1...
Checking /etc/shorewall/rules...
Checking /usr/share/shorewall/action.Invalid for chain %Invalid...
Checking MAC Filtration -- Phase 2...
Applying Policies...
Checking /etc/shorewall/routestopped...
Shorewall configuration verified

La línea mágica que buscamos es la de la parte inferior que dice: “Configuración de Shorewall verificada”. Si recibe algún error, lo más probable es que se deba a que faltan módulos en la configuración del kernel.

Le mostraré cómo resolver dos de los errores más comunes, pero le conviene volver a compilar su kernel con todos los módulos necesarios si planea usar su máquina como firewall.

El primer error, y el más común, es el error sobre NAT.

Processing /etc/shorewall/shorewall.conf...
Loading Modules...
Checking /etc/shorewall/zones...
Checking /etc/shorewall/interfaces...
Determining Hosts in Zones...
Locating Actions Files...
Checking /usr/share/shorewall/action.Drop for chain Drop...
Checking /usr/share/shorewall/action.Broadcast for chain Broadcast...
Checking /usr/shrae/shorewall/action.Invalid for chain Invalid...
Checking /usr/share/shorewall/action.NotSyn for chain NotSyn..
Checking /usr/share/shorewall/action.Reject for chain Reject...
Checking /etc/shorewall/policy...
Adding Anti-smurf Rules
Adding rules for DHCP
Checking TCP Flags filtering...
Checking Kernel Route Filtering...
Checking Martian Logging...
Checking Accept Source Routing...
Checking /etc/shorewall/masq...
    ERROR: a non-empty masq file requires NAT in your kernel and iptables /etc/shorewall/masq (line 15)

Si ve algo parecido a esto, es probable que su Kernel actual no esté compilado con soporte para NAT. Esto es común con la mayoría de los Kernels listos para usar. Lea mi tutorial sobre "Cómo compilar un núcleo Debian" para comenzar.

Otro error común producido por la verificación es el error sobre iptables y registro.

[email protected]:/etc/shorewall# shorewall check
Checking...
Processing /etc/shorewall/params...
Processing /etc/shorewall/shorewall.conf
Loading Modules..
   ERROR: Log level INFO requires LOG Target in your kernel and iptables

Esto también es algo que puede compilar en un nuevo kernel, pero hay una solución rápida si desea utilizar ULOG. ULOG es un mecanismo de registro diferente de syslog. Es muy facil de usar.

Para configurar esto, debe cambiar cada instancia de "info" a "ULOG" en todos sus archivos de configuración en/etc/shorewall. El siguiente comando puede hacer eso por usted.

$ cd /etc/shorewall
$ sudo sed –i ‘s/info/ULOG/g’ *

Después de eso, edite el archivo /etc/shorewall/shorewall.conf y configure la línea.

LOGFILE=

A donde le gustaría que se almacenara su registro. El mío está en /var/log/shorewall.log.

LOGFILE=/var/log/shorewall.log

Ejecutar "sudo shorewall check" debería darte un certificado de buena salud.

La interfaz de línea de comandos de Shorewall viene con muchas frases sencillas para los administradores de sistemas. Un comando de uso frecuente, especialmente cuando se realizan numerosos cambios en el firewall, es guardar el estado de configuración actual para que pueda retroceder si hay alguna complicación. La sintaxis para esto es simple.

$ sudo shorewall save <filename>

Revertir es igual de fácil:

$ sudo shorewall restore <filename>

Shorewall también se puede iniciar y configurar para usar un directorio de configuración alternativo. Puede especificar que este es el comando de inicio, pero primero querrá verificarlo.

$ sudo shorewall check <config-directory>

Si simplemente desea probar la configuración y si está funcionando, iníciela, puede especificar la opción de prueba.

$ sudo shorewall try <config-directory> [  ]

Shorewall es solo una de las muchas soluciones de firewall robustas que están disponibles en los sistemas Linux. No importa en qué extremo del espectro de redes se encuentre, muchos lo encuentran simple y útil.

Este es solo un pequeño comienzo, y uno que puede ayudarlo a seguir su camino sin tener que profundizar en los conceptos de redes. Como siempre, investigue y eche un vistazo a las páginas de manual y otros recursos. La lista de correo de Shorewall es un lugar increíble, y está actualizada y bien mantenida.