snort

Système de détection et de prévention d'intrusion open-source. Analyse le trafic réseau en temps réel via une correspondance de signatures basée sur des règles pour détecter les attaques, exploits et comportements réseau malveillants. Open-source intrusion detection and prevention system. Analyzes network traffic in real-time using rule-based signature matching to detect attacks, exploits, and malicious network behavior.

↗ https://www.snort.org/

Overview

Snort is the industry-standard open-source IDS/IPS. It performs real-time traffic analysis and packet logging, detecting thousands of attack patterns using a rule-based language. Used both as a defensive tool and for understanding what attacks look like from a network perspective.

Installation

sudo apt install snort

→ Configure during install: set home network (e.g., 192.168.1.0/24)

Basic Usage

Sniffer mode (print packet headers)

snort -v -i eth0

Packet logging mode

snort -dev -l /var/log/snort/ -i eth0

IDS/IPS mode with rules

snort -c /etc/snort/snort.conf -i eth0

Run on a pcap file

snort -c /etc/snort/snort.conf -r capture.pcap

Operating Modes

snort -v                          # Headers only
snort -vd                         # Headers + data
snort -vde                        # Headers + data + link layer
  1. Packet logger mode — save to disk
snort -dev -l /var/log/snort/
  1. NIDS mode — detect intrusions
snort -c /etc/snort/snort.conf
  1. Inline/IPS mode — block traffic
snort -c /etc/snort/snort.conf -Q

Rule Writing

# Snort rule format:
# action protocol src_ip src_port direction dst_ip dst_port (options)

Detect SSH brute force attempts

alert tcp any any -> $HOME_NET 22 (msg:"SSH Brute Force"; \
  threshold: type threshold, track by_src, count 5, seconds 60; \
  sid:1000001; rev:1;)

Detect nmap SYN scan

alert tcp any any -> $HOME_NET any (msg:"Possible Nmap Scan"; \
  flags:S; threshold: type threshold, track by_src, count 100, seconds 10; \
  sid:1000002; rev:1;)

Detect SQL injection attempt

alert tcp any any -> $HTTP_SERVERS $HTTP_PORTS (msg:"SQL Injection Attempt"; \
  content:"UNION SELECT"; nocase; sid:1000003; rev:1;)

Configuration

# Key config file: /etc/snort/snort.conf

Set home network

ipvar HOME_NET 192.168.1.0/24
# Rule files included by default:
# /etc/snort/rules/
# community.rules      — community rules
# local.rules          — your custom rules

Add rules to local.rules:

echo 'alert tcp any any -> $HOME_NET 22 (msg:"SSH access"; sid:1000001; rev:1;)' \
  >> /etc/snort/rules/local.rules

Alert Analysis

Alert log location (default)

/var/log/snort/alert

Watch alerts in real-time

tail -f /var/log/snort/alert
# Parse alerts
grep "ATTACK" /var/log/snort/alert
grep "Priority: 1" /var/log/snort/alert  # High priority

# Use barnyard2 or snorby for database logging

Tips

  • Snort is invaluable for understanding what your attacks look like from the defender’s perspective
  • Test your custom attack techniques against Snort to see if they’re detected
  • Community rules cover most known attacks — tune them to reduce false positives
  • Inline mode (IPS) drops malicious packets — sniffer mode (IDS) only alerts
  • Suricata is a modern alternative with better performance and multi-threading
Help / Man page
snort [options]

-v          Verbose (print headers)
-d          Dump application data
-e          Show link layer headers
-i IFACE    Network interface
-l DIR      Log directory
-c FILE     Configuration file
-r FILE     Read from pcap file
-A MODE     Alert mode: full, fast, console, cmg
-Q          Inline (IPS) mode
-D          Daemon mode

Vue d’ensemble

Snort est l’IDS/IPS open-source de référence dans l’industrie. Il effectue une analyse de trafic en temps réel et une journalisation de paquets, détectant des milliers de motifs d’attaque grâce à un langage de règles. Utilisé à la fois comme outil défensif et pour comprendre à quoi ressemblent les attaques du point de vue réseau.

Installation

sudo apt install snort

→ Configurer pendant l’installation : définir le réseau local (ex. 192.168.1.0/24)

Utilisation de base

# Mode sniffer (afficher les en-têtes de paquets)
snort -v -i eth0

# Mode journalisation de paquets
snort -dev -l /var/log/snort/ -i eth0

# Mode IDS/IPS avec règles
snort -c /etc/snort/snort.conf -i eth0

# Lancer sur un fichier pcap
snort -c /etc/snort/snort.conf -r capture.pcap

Modes de fonctionnement

snort -v                          # En-têtes uniquement
snort -vd                         # En-têtes + données
snort -vde                        # En-têtes + données + couche liaison

# Mode journal de paquets : sauvegarder sur disque
snort -dev -l /var/log/snort/

# Mode NIDS : détecter les intrusions
snort -c /etc/snort/snort.conf

# Mode inline/IPS : bloquer le trafic
snort -c /etc/snort/snort.conf -Q

Écriture de règles

# Format de règle Snort :
# action protocol src_ip src_port direction dst_ip dst_port (options)
# Détecter les tentatives de brute-force SSH
alert tcp any any -> $HOME_NET 22 (msg:"SSH Brute Force"; \
  threshold: type threshold, track by_src, count 5, seconds 60; \
  sid:1000001; rev:1;)

# Détecter un scan SYN nmap
alert tcp any any -> $HOME_NET any (msg:"Possible Nmap Scan"; \
  flags:S; threshold: type threshold, track by_src, count 100, seconds 10; \
  sid:1000002; rev:1;)

# Détecter une tentative d'injection SQL
alert tcp any any -> $HTTP_SERVERS $HTTP_PORTS (msg:"SQL Injection Attempt"; \
  content:"UNION SELECT"; nocase; sid:1000003; rev:1;)

Configuration

# Fichier de config principal : /etc/snort/snort.conf
# Définir le réseau local
ipvar HOME_NET 192.168.1.0/24
# Fichiers de règles inclus par défaut :
# /etc/snort/rules/
# community.rules      : règles communautaires
# local.rules          : vos règles personnalisées

Ajouter des règles à local.rules :

echo 'alert tcp any any -> $HOME_NET 22 (msg:"SSH access"; sid:1000001; rev:1;)' \
  >> /etc/snort/rules/local.rules

Analyse des alertes

# Emplacement du journal d'alertes (par défaut)
/var/log/snort/alert
# Surveiller les alertes en temps réel
tail -f /var/log/snort/alert
# Parser les alertes
grep "ATTACK" /var/log/snort/alert
grep "Priority: 1" /var/log/snort/alert  # Priorité haute

# Utiliser barnyard2 ou snorby pour la journalisation en base de données

Conseils

  • Snort est précieux pour comprendre à quoi ressemblent vos attaques du point de vue du défenseur
  • Tester vos techniques d’attaque personnalisées contre Snort pour voir si elles sont détectées
  • Les règles communautaires couvrent la plupart des attaques connues : les affiner pour réduire les faux positifs
  • Le mode inline (IPS) rejette les paquets malveillants ; le mode sniffer (IDS) se contente d’alerter
  • Suricata est une alternative moderne avec de meilleures performances et le multi-threading
Aide / Page de manuel
snort [options]

-v          Verbose (print headers)
-d          Dump application data
-e          Show link layer headers
-i IFACE    Network interface
-l DIR      Log directory
-c FILE     Configuration file
-r FILE     Read from pcap file
-A MODE     Alert mode: full, fast, console, cmg
-Q          Inline (IPS) mode
-D          Daemon mode