# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

APF: Unable to load iptables module (ip_tables), aborting

En caso de recibir el siguiente error en el log de APF:

Unable to load iptables module (ip_tables), aborting.

El problema solamente lo he encontrado en instalaciones Fedora, y se soluciona modificando el siguiente parámetro en el fichero de configuración de apf:

fichero: /etc/apf/conf.apf

Parámetro:

MONOKERN="0" 

Lo pasamos a:

MONOKERN="1"

Y reiniciamos APF:

/etc/init.d/apf restart

El origen del problema reside en tener iptables compilado en el kernel de forma estática en lugar de como módulo.

Generador de reglas para el firewall APF

He encontrado un sitio web que dispone de un asistente para generar reglas para el firewall APF. Concretamente se centra en las reglas de denegación de servicio, las cuales incluimos en el fichero deny_host.rules.

Bien es cierto, que denegar una IP (para todos los servicios) es tan simple como añadir la IP en dicho fichero, pero como en todo, podemos ir un poco más allá.

Por ejemplo, queremos denegar a una IP o rango IP el acceso de entrada al puerto 80 y 25. Pues simplemente indicando la IP, los puertos, y si es de entrada/salida en el asistente, recibiremos las reglas a añadir en el fichero deny_host.rules, ejemplo indicado:

tcp:in:d=80:s=217.174.32.0/20
tcp:in:d=25:s=217.174.32.0/20

Enlace al asistente de reglas para el firewall APF.

Como instalar y configurar el firewall APF

En esta entrada vamos a proteger nuestro sistema Unix con APF (Advanced Policy Firewall).

APF es un sistema de Firewall basado en IPtables, con la peculiaridad de que su manejo e instalación es extremadamente sencilla. Próximamente explicaremos también como instalar BFD, un detector de ataques de fuerza bruta, que unido a APF forman un excelente nivel de seguridad en el servidor, pues trabajan de forma conjunta.

Comenzamos con la instalación de APF:

cd /root/descargas (o la carpeta en la que guardes tus sources)
wget http://rfxnetworks.com/downloads/apf-current.tar.gz
tar -zxf apf-current.tar.gz
cd apf-0.*
./install.sh

Una vez instalado nos indicará las distintas rutas de ficheros de configuración y ejecutables:

Installation Details:
  Install path:         /etc/apf/
  Config path:          /etc/apf/conf.apf
  Executable path:      /usr/local/sbin/apf
  AntiDos install path: /etc/apf/ad/
  AntiDos config path:  /etc/apf/ad/conf.antidos
  DShield Client Parser:  /etc/apf/extras/dshield/

Comenzamos a configurar APF, abirmos el fichero de configuración con nuestro editor favorito, estas son las opciones principales a configurar, recordad leer los comentarios en el fichero de configuración y en los README:

vi /etc/apf/conf.apf

Desactivamos/activamos el cron que desactiva el firewall cada 5 minutos, es útil activarlo mientras estemos de pruebas, pero aseguraos de dejarlo en 0 cuando el server entre en producción:

# Set firewall cronjob (devel mode)
# 1 = enabled / 0 = disabled
DEVEL_MODE="1"

Interfaces de red que APF va a rastrear su tráfico, ponemos la interfaz que salga a Internet, en este caso es la eth1:

# Untrusted Network interface(s); all traffic on defined interface will be
# subject to all firewall rules. This should be your internet exposed
# interfaces. Only one interface is accepted for each value.
# NOTE: The interfacing structure is being worked towards support of MASQ/NAT
IFACE_IN="eth1"
IFACE_OUT="eth1"

Por otro lado, podemos configurar que ciertas interfaces no sean rastreadas por el firewall, pueden ser interfaces de tráfico local:

# Trusted Network interface(s); all traffic on defined interface(s) will by-pass
# ALL firewall rules, format is white space or comma seperated list.
IFACE_TRUSTED="eth0"

Y para terminar la configuración básica, la parte más importante, la sección de puertos, configurable dependiendo de los puertos abiertos necesarios para cada servidor:

Puertos de entrada TCP permitidos:

# Common ingress (inbound) TCP ports
IG_TCP_CPORTS="21,25,80,110,443,465"

Puertos de entrada UDP permitidos:

# Common ingress (inbound) UDP ports
IG_UDP_CPORTS=""

Puertos de entrada ICMP permitidos:

# Common ICMP (inbound) types
# 'internals/icmp.types' for type definition; 'all' is wildcard for any
IG_ICMP_TYPES="3,5,11"

Después están las mismas opciones, pero para salida, configurar según los requerimientos de cada uno. Y recordad revisar todas las demás opciones para sacar el mayor partido a este excelente firewall.

Otros dos ficheros importantes a tener en cuenta son :

/etc/apf/deny_host.rules
/etc/apf/allow_host.rules

En estos ficheros podemos incluir ips, rangos y reglas a las que denegar acceso (deny_host.rules) o permitir(allow_host.rules) al servidor. Finalmente arrancamos APF:

/usr/local/sbin/apf -s