← retour aux outils back to tools

# 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

2. Packet logger mode — save to disk

    snort -dev -l /var/log/snort/

3. NIDS mode — detect intrusions

    snort -c /etc/snort/snort.conf

4. 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