Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Repérer une attaque dans les journaux

Après cette leçon: Je peux reconnaître une analyse de ports ou une série d'échecs dans des lignes de journal.

Leçon de 55 min2 commandesLab de passerelle NAT : masquerade et redirection de port avec nftables dans le navigateur

Une adresse essaie tous les ports

Repérer une attaque réseau, c'est reconnaître dans le trafic et les journaux des traces qui ne ressemblent pas à un usage normal. Plus tôt on les voit, moins l'attaquant a de temps.

Le serveur d'une école d'ingénieurs reçoit des milliers de demandes chaque nuit. Parmi elles, une adresse en essaie cent différentes en quelques secondes. Cette leçon apprend à la voir.

À la fin de cette leçon

Remarque

Je peux reconnaître une analyse de ports ou une série d'échecs dans des lignes de journal.

Mots clés

MotCe que ça veut dire
Journalun fichier où un système note ce qui se passe, ligne par ligne
Signatureune trace connue qui décrit une attaque précise
Seuilla valeur à partir de laquelle on déclenche une alerte
Force bruteessayer très vite beaucoup de mots de passe
Faux positifune alerte déclenchée par un usage normal

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Deux manières de reconnaître une attaque

La première cherche une signature : une trace déjà connue, par exemple une demande qui contient un morceau de code malveillant. Elle est précise mais ne voit pas ce qu'on n'a jamais vu.

La seconde cherche un comportement inhabituel : trop de demandes, trop d'échecs, trop de ports. Elle voit du nouveau, mais se trompe plus souvent.

Exemple : deux méthodes comparées

MéthodeElle repèreSa faiblesse
SignatureUne attaque déjà connueRate une attaque nouvelle
Taux inhabituelBeaucoup de demandes en peu de tempsDéclenche aussi pour un usage normal
Nombre de portsUne analyse de portsUn outil de supervision fait pareil
Échecs répétésUne force brute sur un mot de passeUn utilisateur distrait échoue aussi

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un journal compte, ligne par ligne

Le serveur extérieur du labo note chaque demande dans /var/log/netlab/outside-server.log : l'heure, l'adresse qui demande, puis le chemin. Un journal de pare-feu ou de serveur suit une idée semblable.

Pour repérer un comportement, on ne lit pas mille lignes. On compte : combien de lignes par adresse, combien de ports différents, combien d'échecs.

Exemple : cinq lignes de journal

AdressePort viséLignesCe que cela suggère
203.0.113.922, 23, 80, 4454 lignes, 4 portsUne analyse de ports
198.51.100.44431 ligneUn usage normal

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Compter les lignes par adresse

Commande
printf '203.0.113.9 22\n203.0.113.9 23\n203.0.113.9 80\n198.51.100.4 443\n203.0.113.9 445\n' | cut -d' ' -f1 | sort | uniq -c

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Comment lire ce compte

Les cinq lignes inventées sortent de printf. cut garde la première colonne, sort range les adresses, et uniq -c compte les lignes identiques qui se suivent.

Vous lisez deux lignes : 198.51.100.4 avec 1, puis 203.0.113.9 avec 4. Une adresse en a quatre, c'est elle qu'on regarde de plus près.

Compter les ports différents

Commande
printf '203.0.113.9 22\n203.0.113.9 22\n203.0.113.9 80\n' | sort -u | wc -l

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Les ports différents comptent, pas les lignes

La commande affiche 2. L'adresse a écrit trois lignes, mais le port 22 revient deux fois, et sort -u ne garde qu'un exemplaire de chaque ligne.

C'est le bon chiffre pour une analyse de ports. Un essai répété sur le même port est peut-être une panne. Cent ports différents sont une exploration.

Un seuil transforme un compte en alerte

Un seuil dit à partir de quand un compte devient une alerte. Par exemple : plus de dix ports différents pour une adresse en une minute.

Trop bas, il déclenche tout le temps, et personne ne lit plus les alertes. Trop haut, il laisse passer un attaquant patient. On le règle avec les journaux d'un jour normal.

Appliquer un seuil à un compte

Code: python
# Le nombre de ports différents vus pour chaque adresse.
ports_vus = {
    "203.0.113.9": 4,
    "198.51.100.4": 1,
    "192.0.2.77": 12,
}
seuil = 5
for adresse in ports_vus:
    if ports_vus[adresse] >= seuil:
        print("alerte pour", adresse)
# À vous : montez le seuil à 20, puis descendez-le à 1, et comparez.

Une erreur fréquente

Attention

On croit souvent qu'une alerte prouve une attaque. Elle prouve seulement qu'un compte a dépassé le seuil. Un outil de supervision qui teste vos propres ports déclenche la même alerte : c'est un faux positif. Il faut vérifier avant de conclure.

À propos de ce labo et de sa source: Lab de passerelle NAT : masquerade et redirection de port avec nftables dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.