Sections du handbook▾
Fondations
Comprendre les menaces qui pèsent sur un hôte LinuxPourquoi on durcitLes principes de défense derrière chaque règleConfiguration effective : la vérité qu'aucun fichier ne contientLes normes que Pavois cartographieModèle d'identifiant de contrôle SOCLEPreuves & exportsComment la note A-E est calculéeCe qu'un PASS prouve : le verdict qualifiéModèle de confiance du bundle de preuveSOCLE, n'est-ce pas votre propre norme ? (gouvernance & la question de la circularité)Ce que Pavois couvre, et ce qu'il ne couvre pasDomaines
Durcir SSHDurcir PAMContrôle d'accès obligatoire (SELinux / AppArmor)Durcir le pare-feu localDurcir sudoPermissions et propriété des fichiersDurcir les montages et le système de fichiersDurcir les modules noyauDurcir le noyau et le réseau avec sysctlJournalisation d'audit avec auditdDurcir la journalisation avec journald et rsyslogDurcir les services systemdHygiène des paquetsDurcir le chargeur d'amorçage (GRUB)Synchroniser l'heureBannières de connexion et MOTDContrôler l'accès à cron et atDurcir le bureau GNOME (dconf)Outillage
Annuler un durcissement : les points de restaurationExploiter Pavois : privilèges, air-gap, durée, dérogationsLancer Pavois en CI (GitHub Actions)État des fonctionnalités : livré, partiel, roadmapGouvernance : licence, versionnement, provenance, sécuritéBannières de connexion et MOTD
Revu le
Une bannière de connexion est à la fois l'avis légal à afficher avant authentification et l'endroit où un système divulgue discrètement son OS et la version du noyau : corriger les deux.
La menace
Le texte affiché autour de l'invite login: passe facilement inaperçu, et pourtant il joue contre vous de deux manières distinctes.
D'abord, la fuite d'informations. Sur de nombreuses distributions, les bannières par défaut interpolent des séquences d'échappement : \s affiche le nom de l'OS, \r la version du noyau, \m l'architecture, \v la version, \l la ligne du terminal. /etc/issue.net est le pire cas : il est envoyé sur le réseau, avant toute authentification ; ainsi un attaquant non authentifié qui se contente d'ouvrir une connexion TCP vers sshd (lorsque Banner /etc/issue.net est défini) obtient une empreinte gratuite : "Ubuntu 24.04, noyau 6.8". C'est exactement l'information nécessaire pour choisir un exploit ciblé, et elle est offerte gratuitement.
Ensuite, l'avertissement légal manquant. Sans avis explicite d'utilisation autorisée, un intrus peut prétendre que le système semblait ouvert à l'accès. De nombreuses juridictions et référentiels (CIS, et la politique d'entreprise) exigent une bannière indiquant que l'accès est restreint et surveillé avant que l'utilisateur ne s'authentifie ; sans quoi poursuivre un accès non autorisé devient plus difficile.
Pourquoi le durcir
Aucun de ces problèmes n'est une faille d'exécution de code à distance, alors les bannières sont négligées, mais les deux sont peu coûteux à corriger et tous deux comptent. Supprimer les échappements OS/version retire un cadeau de reconnaissance à tout scanner qui touche le port ou la console. Mettre en place un avis clair d'utilisation autorisée établit l'intention et soutient la réponse à incident. Le coût est un fichier texte d'une ligne avec les bons droits ; le bénéfice est une empreinte de moins et une posture juridique défendable.
Cela couvre chaque point d'entrée : le TTY local (/etc/issue, lu par getty avant l'invite), la bannière distante pré-authentification (/etc/issue.net, servie par SSH lorsqu'elle est configurée) et le message post-connexion (/etc/motd, rendu par pam_motd). L'objectif est un avis neutre et cohérent sur les trois.
Principes de défense appliqués
- Minimiser la divulgation d'information : retirer tout échappement
\s/\m/\r/\v/\lafin qu'aucun détail d'OS, de noyau ou d'architecture ne soit diffusé avant authentification. Les utilisateurs autorisés obtiennent ces faits délibérément viauname -aaprès connexion ; aucune raison de les divulguer plus tôt. - Défense en profondeur : couvrir les trois surfaces (locale, distante, post-connexion), pas seulement SSH ; un attaquant devant une console physique ou une ligne série voit aussi
/etc/issue. - Moindre surprise / traçabilité : un unique avis d'accès autorisé neutre, propriétaire
root:rootet mode0644, indiquant que le système est surveillé et l'accès restreint. - L'effectif plutôt que le nominal : la bannière ne dissuade à distance que si SSH la sert réellement (
sshd -Tdoit indiquerbanner /etc/issue.net) ; écrire le fichier est nécessaire mais pas suffisant.
Ce que Pavois audite
Pavois fournit trois règles dans ce domaine, une par surface, toutes mappées sur CIS :
banner-issue: lit/etc/issue(la bannière pré-connexion de la console locale) et vérifie qu'elle est non vide et exempte des échappements\[smrvlSMRVL].banner-issue-net: lit/etc/issue.net(la bannière proposée aux connexions distantes/SSH) avec les deux mêmes vérifications : présente, et sans échappement OS/version fuitant sur le réseau.banner-motd: lit/etc/motd(le message post-connexion rendu parpam_motd) et applique les mêmes contrôles.
Ce sont des fichiers statiques consommés directement par getty, sshd et pam_motd ; lire le fichier représente donc bien la configuration effective ici : aucune commande d'état résolu ne s'intercale entre le fichier et ce qu'affiche le terminal. Le volet SSH complémentaire (savoir si sshd -T indique réellement banner /etc/issue.net) relève du contrôle SSH de config effective de Pavois, de sorte que la vue du handbook relie le contenu du fichier au fait qu'il soit véritablement servi. pavois harden apply écrit chaque fichier avec un avis d'accès autorisé neutre, la propriété root:root et le mode 0644, et aucun échappement dynamique : sans redémarrage ni relance de service, puisque chaque consommateur lit le fichier à la connexion suivante.
Comment le poser et vérifier ?
- Écrivez un avis neutre (sans échappement OS/version) dans
/etc/issue,/etc/issue.netet/etc/motd, propriétaireroot:root, mode0644. - Pointez SSH dessus :
Banner /etc/issue.netdanssshd_config, puissystemctl reload sshd. - Confirmez que la bannière distante est réellement servie :
sshd -T | grep -i bannerdoit indiquerbanner /etc/issue.net, etssh -o PreferredAuthentications=none user@hostaffiche le texte avant toute invite. - Confirmez l'absence de fuite :
grep -E '\\[smrvlSMRVL]' /etc/issue /etc/issue.netne renvoie rien.
Que doit dire la bannière ?
Un avis d'utilisation autorisée court et neutre : le système est réservé aux utilisateurs autorisés, l'activité peut être surveillée et journalisée, et l'accès non autorisé est interdit. N'incluez pas le nom d'hôte, l'OS, la version, des détails internes de l'organisation, ni un bienvenue amical (qui affaiblit la posture juridique).
FAQ
Pourquoi /etc/issue.net est-il pire que /etc/issue ? Parce que SSH peut le servir avant authentification, sur le réseau ; ses échappements divulguent donc l'OS et le noyau à quiconque se connecte. /etc/issue ne s'affiche qu'à un TTY local.
J'ai écrit la bannière mais SSH ne l'affiche pas. SSH ne sert une bannière que si Banner /etc/issue.net est défini dans sshd_config ; vérifiez sshd -T | grep banner et rechargez sshd.
La bannière doit-elle souhaiter la bienvenue ? Non. Un bienvenue peut être interprété comme une invitation ; utilisez plutôt un avis d'accès restreint et de système surveillé.