← Toutes les règles
SOCLE-CLD-GEN-047// Hardening (misc)moyenneruntime effectif

Désactiver la commande SMTP VRFY de Postfix

Positionne disable_vrfy_command = yes pour que le serveur SMTP Postfix refuse le verbe VRFY. VRFY demande au serveur si une boîte aux lettres existe, et le serveur répond honnêtement, ce qui transforme tout MTA joignable en oracle d'énumération d'utilisateurs gratuit : un attaquant moissonne les comptes locaux valides sonde par sonde, puis les alimente dans une campagne de pulvérisation de mots de passe ou d'hameçonnage.

Vérifié sur l’état résolu en cours d’exécution (ex. sshd -T, sysctl, systemctl show), attrape les drop-ins et Include qu’une lecture de fichier raterait. Réserve : runtime ≠ persistance ; une valeur correcte maintenant peut ne pas survivre à un redémarrage.

Un PASS prouve✓ actif maintenant? sur disque? survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04

Ce que vérifie Pavois

Pavois interroge le paramètre effectif avec postconf -h disable_vrfy_command, qui affiche la valeur que Postfix utilisera réellement, après main.cf et les valeurs par défaut intégrées (le défaut est no, donc un main.cf qui omet simplement le paramètre est exposé). Lire /etc/postfix/main.cf au grep rendrait une ligne absente indécidable au lieu de la non-conformité qu'elle est. Quand postconf est absent (Postfix non installé), le contrôle renvoie ok : un MTA inexistant ne peut rien divulguer.

describe command('if ! command -v /usr/sbin/postconf >/dev/null 2>&1; then echo ok; elif /usr/sbin/postconf -h disable_vrfy_command 2>/dev/null | grep -qi ''^yes''; then echo ok; else echo ko; fi') do
  its('stdout.strip') { should eq 'ok' }
end

Comment vérifier qu’elle est appliquée

Lisez la valeur résolue, puis prouvez-la sur le fil :

postconf -h disable_vrfy_command      # doit afficher : yes
printf 'VRFY root\r\nQUIT\r\n' | nc localhost 25

Un serveur durci répond 502 5.5.1 VRFY command is disabled. Sans le réglage, il répond 252 ou 250, ce qui confirme l'existence du compte.

Inspecter et investiguer

Postfix journalise les sessions SMTP dans /var/log/mail.log (Debian, Ubuntu) ou /var/log/maillog (RHEL), également accessibles via journalctl -u postfix. Une fois la commande désactivée, les tentatives d'énumération laissent une trace visible de verbes VRFY rejetés depuis une même source : ce motif mérite une alerte, car une sonde qui insiste relève de la reconnaissance, pas d'un client mal configuré.

Remédiation

Pavois exécute l'étape postfix-anti-vrfy : elle appelle postconf -e 'disable_vrfy_command = yes' (la manière supportée d'éditer main.cf, qui réécrit le paramètre sur place), retombe sur un sed de dédoublonnage suivi d'un ajout si postconf est indisponible, puis recharge Postfix. Une garde not_if saute l'étape quand main.cf porte déjà le réglage, ce qui garde confkit harden apply idempotent.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

commandmkdir -p /etc/postfix; touch /etc/postfix/main.cf; if command -v postconf >/dev/null 2>&1; then postconf -e 'disable_vrfy_command = yes'; else sed -ri '/^disable_vrfy_command/d' /etc/postfix/main.cf; echo 'disable_vrfy_command = yes' >> /etc/postfix/main.cf; fi; systemctl reload postfix 2>/dev/null || true
namepostfix-anti-vrfy
not_ifgrep -Eqs '^disable_vrfy_command[[:space:]]*=[[:space:]]*yes' /etc/postfix/main.cf
resourceexec
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

Aucun effet sur l'acheminement du courrier : VRFY est un verbe de diagnostic, hors du chemin des messages, et les clients modernes ne l'utilisent jamais. Les seules casses possibles concernent les rares sondes de supervision ou scripts de validation d'adresses qui appellent encore VRFY ; migrez-les vers un RCPT TO sur un destinataire de test, ou vers une consultation locale postmap -q. La remédiation recharge Postfix au lieu de le redémarrer : la file d'attente n'est pas affectée.

0