La détection des balayages de ports a une particularité qui la fait sortir de la boîte à outils habituelle. Fail2ban lit les journaux applicatifs — or, lorsqu’un port fermé est balayé, il n’y a pas d’application, donc pas d’entrée de journal. Un balayage n’est visible qu’au niveau du pare-feu, et c’est précisément là que travaille PSAD : il lit les messages qu’iptables écrit à propos des paquets rejetés.

Condition obligatoire : la journalisation doit être active

C’est la principale raison pour laquelle PSAD « est installé et ne montre rien ». Sans règles de journalisation dans le pare-feu, il n’a rien à lire, et aucune erreur ne se produit pour autant.

Si vous utilisez UFW :

sudo ufw logging low
sudo ufw status verbose

Pour confirmer que des messages apparaissent bien :

sudo journalctl -k | grep -c '\[UFW'
sudo grep -c 'UFW BLOCK' /var/log/ufw.log

Des zéros aux deux commandes signifient que PSAD ne fonctionnera pas. Et une remarque à part sur Debian 12 et Ubuntu 24.04 : sans rsyslog, le fichier /var/log/ufw.log n’existe pas et tout part dans le journal systemd — le chemin du journal dans les réglages de PSAD doit en tenir compte.

Installation

sudo apt install psad
sudo psad --sig-update
sudo psad -R
sudo psad --Status

La dernière commande est la principale. Elle indique combien de paquets ont été analysés, quelles adresses ont été repérées et à quel niveau de danger. Si le compteur de paquets analysés est à zéro, revenez à la section précédente : le problème est la journalisation, non l’absence de balayages.

Les réglages sont dans /etc/psad/psad.conf. Peu de paramètres ont une portée pratique : l’adresse pour le courrier, le chemin du journal et les seuils de niveaux de danger.

Les niveaux de danger

PSAD note chaque source de 1 à 5 selon le nombre de ports différents touchés et la ressemblance du comportement avec des techniques de balayage connues.

  • 1–2 — contacts isolés avec des ports fermés. C’est le bruit de fond permanent de l’internet ; aucune réaction nécessaire ;
  • 3 — parcours systématique de ports. D’ordinaire les scanners de recherche, dont il existe quelques dizaines sur le réseau ;
  • 4–5 — sondage délibéré d’un grand nombre de ports depuis une adresse, souvent en tentant de masquer la nature des contacts.

Le seuil pour le courrier se règle par EMAIL_ALERT_DANGER_LEVEL. Une valeur de 3 signifie d’ordinaire plusieurs courriels par jour, ce qui aboutit assez vite à une règle dans le client de messagerie. Il est plus sensé de mettre 4 et de voir le reste sur une page de synthèse.

Le blocage automatique : à éviter

PSAD sait ajouter lui-même des règles de pare-feu (ENABLE_AUTO_IDS). Sur un serveur de production unique, mieux vaut ne pas l’activer, et la raison est précise : l’adresse d’expéditeur d’un paquet se falsifie. Il suffit d’envoyer vers vous des paquets à adresse substituée — et vous bloquerez l’adresse choisie par quelqu’un d’autre. Ce peut être votre propre client, une passerelle de paiement ou un service de surveillance.

Si le blocage est malgré tout nécessaire, activez-le avec un seuil de danger élevé et toujours avec une limite de durée (AUTO_BLOCK_TIMEOUT), pour qu’une entrée erronée ne reste pas éternellement.

Ce qu’on en fait concrètement

Un balayage en soi est inoffensif : il ne casse rien et arrive à tout le monde en permanence. La valeur des données de PSAD ne tient pas au fait lui-même mais aux changements de caractère.

Observations utiles :

  • Un intérêt dirigé. Un scanner ordinaire parcourt des milliers d’adresses et une douzaine de ports populaires. Si quelqu’un parcourt méthodiquement les ports de votre serveur en particulier, ports non standard compris, ce n’est plus du bruit de fond ;
  • Le balayage d’un port précis. Des contacts avec le port d’une base de données ou d’un panneau de gestion signifient que quelqu’un cherche précisément ce service — d’ordinaire après l’annonce d’une nouvelle vulnérabilité le concernant ;
  • La reconnaissance avant la tentative. Un pic de balayage suivi quelques heures plus tard d’une recherche de mots de passe depuis la même plage est une séquence typique, et sa première moitié offre un peu de temps.

La conclusion pratique de chacune de ces observations est la même : vérifier que la liste des ports exposés correspond aux attentes, et que ce qui tourne sur chacun d’eux a été mis à jour cette année.

Sa place dans la boîte à outils

PSAD ne remplace ni le pare-feu, ni Fail2ban, ni un système de détection d’intrusion. Il comble une lacune étroite — les tentatives qui ne laissent de traces nulle part ailleurs parce qu’elles n’ont atteint aucune application. Il coûte peu, fonctionne sans configuration après la première exécution, et sa synthèse répond à une question que personne ne pose autrement : quelqu’un s’intéresse-t-il à votre serveur au-delà du bruit de fond général ? À quoi ressemble cette synthèse, la page de démonstration ci-dessous le montre.