← Toutes les règles
SOCLE-RUN-SVC-020// systemd servicesmoyenneruntime effectif

Désactiver le service nginx

Garantit que l'unité nginx.service n'est ni activée au démarrage ni en cours d'exécution, sauf si l'hôte est volontairement un serveur web.

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 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 1 norme

Pavois vérifie la configuration effective, l’état résolu et réellement appliqué, pas un fichier. Les scanners basés fichier (OVAL/SCAP, Lynis) ratent les Include, drop-ins et défauts runtime ; ce check voit ce qui est réellement en vigueur.

Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.

Pourquoi cette règle

Une instance nginx écoute sur le réseau (généralement 80/443) et expose à des attaquants distants un analyseur, une pile TLS et tout hôte virtuel configuré. Sur une machine qui n'a pas vocation à servir du HTTP, une installation nginx oubliée ou par défaut élargit inutilement la surface d'attaque : une seule CVE nginx, un bloc location mal configuré ou une page de statut exposée peut devenir un point d'entrée ou une fuite d'information. Si ce rôle n'est pas requis, le service doit être arrêté et désactivé.

Ce que vérifie Pavois

Pavois interroge l'état effectif du service via service('nginx.service'), qui résout à la fois le statut enabled (au démarrage) et running (courant) depuis systemd, et non depuis un fichier de configuration. C'est important car une unité peut être masquée, surchargée par un drop-in sous /etc/systemd/system/nginx.service.d/, ou activée par socket, des faits que seul systemd connaît. Un scanner basé sur les fichiers qui se contente de vérifier si le paquet nginx est installé manquerait un service installé mais bel et bien en cours d'exécution, ou inversement.

describe service('nginx.service') do
  it { should_not be_enabled }
  it { should_not be_running }
end

Comment vérifier qu’elle est appliquée

Exécutez systemctl is-enabled nginx.service et systemctl is-active nginx.service. Les deux doivent renvoyer respectivement disabled (ou masked/not-found) et inactive. Vue complète : systemctl status nginx.service doit afficher Loaded: ... disabled et Active: inactive (dead).

Inspecter et investiguer

Inspectez journalctl -u nginx.service pour les événements de démarrage/arrêt et toute activité passée de l'écouteur. systemctl show nginx.service -p ActiveState -p UnitFileState donne l'état lisible par machine sur lequel Pavois s'appuie. Pour confirmer que rien n'est encore lié aux ports HTTP, utilisez ss -tlnp | grep -E ':80|:443'.

Remédiation

Le plan de durcissement de Pavois agit sur la ressource service nommée nginx avec les actions disable puis stop : il supprime l'activation au démarrage et arrête l'instance en cours. Appliqué avec pavois harden apply. Aucun fichier n'est réécrit, seul l'état de l'unité systemd change.

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

actiondisable, stop
namenginx
resourceservice
pavois harden plan local

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

Impact & précautions

Si nginx sert légitimement du trafic (application web, reverse proxy, challenge ACME/Let's Encrypt HTTP-01), le désactiver mettra ce service hors ligne et pourra casser les applications dépendantes ou le renouvellement des certificats. Avant d'appliquer : confirmez que l'hôte n'a pas vocation à servir du HTTP (ss -tlnp | grep -E ':80|:443', vérifiez les vhosts dans /etc/nginx/sites-enabled/) et qu'aucun rôle de reverse-proxy ou de répartiteur de charge n'en dépend. Sur un hôte qui a réellement besoin de nginx, cette règle ne s'applique pas et doit être exclue du périmètre.

Mapping des normes

NormeRéférenceTypeVersionConfiance
CIS2.1.18directper OS, see the benchmark tablehaute

Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.

Sources & références