Reglas de firmas con Snort y Suricata
Escriba y lea reglas de red.
Reglas de firmas con Snort y Suricata es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.
Snort y Suricata
Snort y Suricata son los dos principales motores IDS/IPS de código abierto. Comparten un lenguaje de reglas prácticamente compatible, por lo que una regla escrita para uno suele ejecutarse en el otro.
Suricata añade multihilo, analizadores nativos de protocolos, extracción de archivos y registros detallados (EVE JSON); Snort 3 modernizó su propio motor de forma similar. Aprender la sintaxis de las reglas una sola vez le permite aprovechar ambos.
Anatomía de una regla
Cada regla tiene dos partes: un encabezado y un cuerpo de opciones entre paréntesis. El encabezado establece la acción, el protocolo y la dirección del tráfico; el cuerpo define qué debe coincidir y cómo informar del resultado.
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
msg:"WEB suspicious request"; \
content:"/admin.php"; http_uri; \
sid:1000001; rev:1; )Los campos del encabezado
El encabezado se lee de izquierda a derecha:
- acción — alert, drop, reject, pass
- protocolo — tcp, udp, icmp, ip (o protocolos de aplicación en Suricata: http, dns, tls)
- IP/puerto de origen y IP/puerto de destino
- dirección —
->unidireccional, o<>bidireccional
Las variables como $HOME_NET y $EXTERNAL_NET provienen de su configuración, para que las reglas sigan siendo portátiles entre distintos sitios.
drop tcp any any -> $HOME_NET 22 ( msg:"SSH blocked"; sid:1000002; rev:1; )Acciones: alert frente a drop
La acción determina si la regla se comporta como IDS o IPS:
alert— registra y notifica, pero no detiene el tráfico (IDS)drop— descarta el paquete silenciosamente (IPS, solo en línea)reject— descarta y envía un restablecimiento TCP o un mensaje ICMP de destino inalcanzablepass— permite explícitamente el tráfico y omite las reglas posteriores
El mismo motor funciona como IDS o IPS según si se implementa en línea y las acciones que se utilizan.
Coincidencia de contenido
La palabra clave content busca un patrón de bytes en la carga útil. El texto se escribe entre comillas; los datos binarios se escriben entre barras verticales en formato hexadecimal.
Las palabras clave de anclaje hacen más precisas las coincidencias: offset, depth, distance y within restringen dónde puede aparecer el patrón, lo que mejora tanto la exactitud como el rendimiento.
alert tcp any any -> $HOME_NET any ( \
msg:"Malware magic bytes"; \
content:"|4D 5A|"; offset:0; depth:2; \
sid:1000003; rev:1; )Búferes adhesivos
Las reglas modernas buscan coincidencias en búferes sensibles al protocolo en lugar de hacerlo en el flujo sin procesar. Después de una palabra clave de búfer, las coincidencias posteriores de content se aplican a esa parte del protocolo analizado.
http_uri— el URI de la solicitudhttp_header— los encabezados de la solicitud o la respuestahttp_user_agent— el User-Agenttls_sni/dns_query— el nombre del servidor TLS / la consulta DNS
Esto es mucho más fiable que buscar una subcadena en todo el paquete.
alert http any any -> any any ( \
msg:"Suspicious user agent"; \
http.user_agent; content:"sqlmap"; nocase; \
sid:1000004; rev:1; )PCRE y nocase
Cuando las cadenas fijas no son suficientes, pcre proporciona expresiones regulares compatibles con Perl. Combine un filtro previo económico de content con pcre para que la expresión regular solo se ejecute en los paquetes candidatos y se conserve el rendimiento.
El modificador nocase hace que la coincidencia de contenido no distinga entre mayúsculas y minúsculas, algo importante para los encabezados y los campos controlados por el usuario que los atacantes pueden variar.
alert http any any -> $HOME_NET any ( \
msg:"SQLi attempt in URI"; \
http.uri; content:"select"; nocase; \
pcre:"/union\s+select/i"; \
sid:1000005; rev:1; )Palabras clave de flujo y estado
La opción flow limita una regla al estado y la dirección de la conexión, lo que reduce los falsos positivos y el coste.
established— solo en sesiones TCP completadasto_server/to_client— dirección de la solicitud frente a la respuesta
Buscar respuestas del servidor solo cuando la conexión está establecida y la dirección es to_client evita que la regla se active con paquetes aislados o falsificados.
alert tcp $HOME_NET any -> $EXTERNAL_NET any ( \
msg:"Beacon response"; \
flow:established,to_client; \
content:"|00 01 02 03|"; \
sid:1000006; rev:1; )Metadatos: sid, rev, msg, reference
Las opciones de gestión mantienen un conjunto de reglas fácil de mantener:
sid— identificador único de firma (use 1000000+ para las reglas locales)rev— número de revisión; increméntelo con cada ediciónmsg— el texto de la alerta que ven los analistasclasstype— categoría que determina la prioridadreference— enlace a un CVE o aviso de seguridad
Los sid estables y los rev incrementales permiten realizar el seguimiento y actualizar las reglas sin romper los paneles ni las supresiones.
alert tcp any any -> $HOME_NET 445 ( \
msg:"EternalBlue exploit attempt"; \
flow:to_server,established; content:"|FF|SMB"; \
classtype:attempted-admin; \
reference:cve,2017-0144; sid:1000007; rev:2; )Diferencias entre Snort y Suricata
Aunque son compatibles a nivel de reglas, los motores difieren en sus capacidades:
- Suricata utiliza varios hilos, analiza protocolos de aplicación de forma nativa, extrae archivos, calcula JA3 y genera EVE JSON
- Snort 3 reescribió su motor para mejorar el rendimiento y ofrecer un sistema modular de plugins
Algunas palabras clave son específicas de cada motor. Suricata añade palabras clave de la capa de aplicación (tls.sni, dns.query, http.method) y funciones de conjuntos de datos y flowbits. Al compartir reglas, diríjalas al mínimo común denominador o mantenga conjuntos de reglas específicos para cada motor.
Filtrado por frecuencia y umbrales
Para evitar que una regla inunde la consola, aplique umbrales. detection_filter se activa solo después de N eventos dentro de una ventana; threshold con limit limita el volumen de alertas.
Esto es esencial para detectar ataques de fuerza bruta y escaneos, en los que un solo evento no tiene significado, pero una ráfaga sí constituye una señal.
alert tcp any any -> $HOME_NET 22 ( \
msg:"SSH brute force"; flow:to_server; \
detection_filter:track by_src, count 5, seconds 60; \
sid:1000008; rev:1; )Comprobación rápida
Lea una regla y prediga su comportamiento.
Resumen
Ahora puede leer y escribir firmas de Snort/Suricata:
- Una regla consta de un encabezado (acción, protocolo, origen/destino y dirección) y opciones del cuerpo
- La acción determina si funciona como IDS o IPS:
alert,drop,reject,pass content, junto con offset/depth y las coincidencias hexadecimales, busca bytes en la carga útil- Los búferes adhesivos (http.uri, tls.sni, dns.query) buscan coincidencias en campos del protocolo analizado
pcreynocasegestionan patrones variablesflowlimita la búsqueda al estado y la direcciónsid/rev/msg/referencemantienen las reglas fáciles de gestionar- Los umbrales moderan el ruido de los ataques de fuerza bruta y los escaneos
A continuación: detección de amenazas sin ninguna firma.
Preguntas frecuentes
¿La lección «Reglas de firmas con Snort y Suricata» es gratis?
Sí — el texto completo de «Reglas de firmas con Snort y Suricata» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Reglas de firmas con Snort y Suricata»?
Escriba y lea reglas de red. Practicas Cyber Security Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cyber Security Academy?
No se requiere experiencia previa. Cyber Security Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Reglas de firmas con Snort y Suricata»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cyber Security Academy?
Sí. Cada lección de Cyber Security Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Conceptos de IDS frente a IPS
- Reglas de firmas con Snort y Suricata
- Detección de anomalías y comportamientos
- Ajuste e implementación