Guía de tecnologías

Configurar un IPS (Sistema de Prevención de Intrusiones) en Fedora 17

6 min read Seguridad Actualizado 24 Sep 2025
Configurar IPS con Suricata y Vuurmuur en Fedora 17
Configurar IPS con Suricata y Vuurmuur en Fedora 17

Introducción

Vuurmuur es un administrador de cortafuegos para Linux. Traduce una sintaxis humana de reglas a los comandos iptables adecuados. Soporta visualización de registros, shaping de tráfico, cancelación de conexiones y otras funciones. Suricata es un IDS/IPS de red moderno. Es multihilo, puede ejecutarse en modo IDS o IPS, extraer archivos de flujos HTTP y ofrece muchas funcionalidades para inspección profunda.

Fedora 17 incluye paquetes de Vuurmuur y Suricata en sus repositorios. Esta guía muestra cómo montar un IPS funcional usando solo paquetes oficiales de Fedora.

Importante: Un IPS puede bloquear tráfico legítimo si se configura mal. Nunca habilites bloqueo en producción antes de haber probado las reglas y el flujo en modo IDS.

Instalación de Vuurmuur y Suricata

Instala Vuurmuur y Suricata con yum:

yum install suricata Vuurmuur-daemon Vuurmuur-tui

Ejecutar Suricata en modo IDS para pruebas

Antes de bloquear tráfico, prueba Suricata en modo pasivo (IDS). Descargaremos las reglas Emerging Threats optimizadas para Suricata y las colocaremos en /etc/suricata/rules/:

cd /etc/suricata/
curl -O https://rules.emergingthreatspro.com/open/suricata/emerging.rules.tar.gz
tar xzvf emerging.rules.tar.gz
ln -s /etc/suricata/rules/reference.config /etc/suricata/reference.config
ln -s /etc/suricata/rules/classification.config /etc/suricata/classification.config
cp /etc/suricata/rules/suricata-1.2-prior-open.yaml /etc/suricata/suricata.yaml

Prueba Suricata apuntando a tu interfaz (ejemplo eth0):

suricata -c /etc/suricata/suricata.yaml -i eth0

Déjalo correr unos minutos y revisa /var/log/suricata/stats.log y /var/log/suricata/http.log para confirmar que inspecciona tráfico. Genera tráfico abriendo un navegador y visitando sitios web.

Preparar Vuurmuur y pasar tráfico a Suricata

Para que Suricata inspeccione tráfico en modo IPS, iptables debe reenviar paquetes hacia Suricata. Usaremos Vuurmuur para gestionar las reglas.

  1. Abre vuurmuur_conf y ve a Rules. Añade una regla nueva con este contenido:
accept service any from any to any log

La regla se ve así:

Captura de la regla 'accept service any from any to any log' en vuurmuur_conf

  1. Añade una interfaz en Interfaces. Pon el nombre que prefieras y en device escribe “eth0”:

Captura de la sección 'Interfaces' en vuurmuur_conf mostrando eth0 añadido

  1. Para que el visor de logs de Vuurmuur funcione, adapta rsyslog. Edita /etc/rsyslog.conf y añade:
*.debug /var/log/debug

Reinicia rsyslog:

service rsyslog restart
  1. Arranca Vuurmuur y habilítalo en el arranque:
service vuurmuur start
systemctl enable vuurmuur.service

Abre vuurmuur_conf y en el logviewer comprueba que el tráfico pasa:

Visor de registros de Vuurmuur mostrando tráfico en tiempo real

Si todo está bien, cambia la regla para pasar tráfico a NFQUEUE y poder inspeccionarlo con Suricata:

nfqueue service any from any to any

La regla se ve así:

Regla 'nfqueue service any from any to any' en vuurmuur_conf para pasar tráfico a Suricata

Aplica los cambios en vuurmuur_conf. El visor de registros debería mostrar que el tráfico se dirige ahora a NFQUEUE:

Visor de registros de Vuurmuur indicando que el tráfico se enruta a NFQUEUE

  1. Inicia Suricata en modo NFQUEUE (cola 0 en este ejemplo):
suricata -c /etc/suricata/suricata.yaml -q0

Abre un navegador y comprueba que el tráfico fluye. Revisa /var/log/suricata/stats.log y /var/log/suricata/http.log para validar el funcionamiento.

Ejemplo parcial de stats.log (salida de Suricata):

-------------------------------------------------------------------
Date: 10/8/2012 -- 17:20:08 (uptime: 0d, 01h 39m 02s)
-------------------------------------------------------------------
Counter                   | TM Name                   | Value
-------------------------------------------------------------------
decoder.pkts              | Decode1                   | 3147
decoder.bytes             | Decode1                   | 1453192
... (salida truncada)

Ejemplo de http.log:

10/08/2012-17:24:02.447292 www.howtoforge.com [] / [] Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 [] 192.168.122.48:48396 -> 188.40.16.205:80

Cuando detengas el Suricata corriendo en primer plano (Ctrl-C), edita /etc/sysconfig/suricata y modifica OPTIONS para ejecutar en background y crear pidfile:

OPTIONS="-q 0 -D --pidfile /var/run/suricata.pid"

Luego arranca como servicio y habilita en el arranque:

service suricata start
systemctl enable suricata.service

Empezar a bloquear tráfico

Hasta ahora no se ha descartado tráfico porque las reglas descargadas por defecto suelen estar en modo “alert”. Para que Suricata haga reensamblado de flujos en modo IPS, edita /etc/suricata/suricata.yaml y en la sección stream activa inline:

stream:
  memcap: 32mb
  checksum_validation: yes      # reject wrong csums
  inline: yes

Añade además local.rules al listado de ficheros de reglas en suricata.yaml:

default-rule-path: /etc/suricata/rules/
rule-files:
 - local.rules
 - emerging-ftp.rules
 - emerging-policy.rules

Crea /etc/suricata/rules/local.rules y añade una regla de ejemplo en una sola línea que bloquee Facebook por contenido en cabecera HTTP:

drop tcp any any -> any any (msg:"facebook is blocked"; content:"facebook.com"; http_header; nocase; classtype:policy-violation; sid:1;)

Reinicia Suricata:

service suricata restart

Ahora, al intentar acceder a http://www.facebook.com/ desde el equipo cliente, la petición debería agotarse y Suricata registrará entradas de tipo Drop en /var/log/suricata/fast.log:

10/06/2012-11:40:49.018377  [Drop] [] [1:1:0] facebook is blocked [**] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {TCP} 192.168.122.48:57113 -> 173.252.100.16:80

Comprobaciones y métricas a revisar

  • Verifica que Vuurmuur ha aplicado la regla NFQUEUE y que la interfaz está activa.
  • Revisa /var/log/suricata/stats.log para contadores de paquetes y flujos.
  • Revisa /var/log/suricata/fast.log para eventos de drop y /var/log/suricata/http.log para HTTP detectado.
  • Asegúrate de que rsyslog recoge mensajes debug si usas el logviewer.

Runbook de incidente y reversión rápida

Si el IPS empieza a bloquear tráfico legítimo y necesitas restaurar conectividad inmediatamente:

  1. En Vuurmuur vuelve a cambiar la regla a aceptarla:
accept service any from any to any log
  1. O para desconectar Suricata temporalmente:
service suricata stop
service vuurmuur restart
  1. Revisa /var/log/messages o /var/log/debug para identificar el motivo.

Volver a producción: tras ajustar reglas, aplica cambios en Vuurmuur y reinicia Suricata.

Cuándo falla y mitigaciones

  • Problema: Suricata no inspecciona tráfico. Mitigación: comprueba que la regla NFQUEUE está aplicada y que Suricata escucha la cola correcta (-q0).
  • Problema: Alto consumo de memoria/CPU. Mitigación: ajusta memcap en suricata.yaml, reduce conjunto de reglas, aumenta núcleos o usa modos de captura más eficientes (af_packet en versiones modernas).
  • Problema: Falsos positivos que bloquean servicios. Mitigación: pasar a modo alert y afinar reglas o usar sid-enabled/disabled para filtrar reglas problemáticas.

Alternativas y enfoques complementarios

  • Usar iptables + NFQUEUE directamente con scripts personalizados en lugar de Vuurmuur.
  • Emplear Suricata con af_packet/PCAP para alta velocidad en hardware moderno (si la versión y kernel lo soportan).
  • Considerar Snort/Zeek según requisitos funcionales y compatibilidad de reglas.

Checklist por roles

  • Administrador sistema:

    • Instalar paquetes y ajustar /etc/sysconfig/suricata.
    • Habilitar servicios en systemd.
  • Administrador de red:

    • Añadir interfaces en Vuurmuur.
    • Verificar reglas NFQUEUE y políticas de enrutado.
  • Operaciones de seguridad:

    • Gestionar reglas (local.rules y conjuntos de reglas externas).
    • Revisar logs y ajustar firmas para reducir falsos positivos.

Pequeño glosario en una línea

  • IDS: sistema de detección de intrusiones que alerta pero no bloquea.
  • IPS: sistema de prevención que puede bloquear tráfico en línea.
  • NFQUEUE: cola de Netfilter que permite pasar paquetes a un espacio de usuario.
  • Suricata: motor IDS/IPS capaz de inspección profunda y multihilo.
  • Vuurmuur: front-end para iptables que facilita reglas legibles.

Consejos de seguridad y privacidad

  • Evita enviar logs sensibles fuera de la red sin cifrado.
  • Limita acceso al servidor IPS y a los ficheros de reglas.
  • Mantén una política de retención de logs coherente con RGPD y normativas locales.

Resumen y siguientes pasos

Esta guía muestra cómo configurar un IPS con Suricata y Vuurmuur en Fedora 17: instala paquetes, prueba en modo IDS, enruta tráfico a NFQUEUE y añade reglas de bloqueo. Para producción, crea un proceso de gestión de reglas, prueba en entornos controlados y monitoriza recursos.

Lecturas recomendadas:

  • Suricata User Guide
  • Gestión de reglas con oinkmaster
  • Vuurmuur user guide
Autor
Edición

Materiales similares

Ver y eliminar historial de YouTube
Privacidad

Ver y eliminar historial de YouTube

Leer y organizar cómics en tu ordenador
Software.

Leer y organizar cómics en tu ordenador

Soluciones al error "Something Went Wrong" en Prime Video
Soporte técnico

Soluciones al error "Something Went Wrong" en Prime Video

Responder llamadas sin salir de apps en Android
Android

Responder llamadas sin salir de apps en Android

Hazel Sky se bloquea al iniciar en PC: 15 soluciones
Guía técnica

Hazel Sky se bloquea al iniciar en PC: 15 soluciones

Aprende nudos esenciales: guía práctica
Nudos

Aprende nudos esenciales: guía práctica