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
- Packet logger mode — save to disk
snort -dev -l /var/log/snort/
- NIDS mode — detect intrusions
snort -c /etc/snort/snort.conf
- 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