Définir un délai d'expiration des sessions interactives
Définit une valeur TMOUT du shell dans /etc/profile, /etc/profile.d/ ou /etc/bashrc afin que les shells interactifs inactifs soient automatiquement déconnectés.
Vérifié sur le contenu d’un fichier de configuration persistant, la source de vérité qui survit aux redémarrages.
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
Terminer automatiquement une session inactive réduit la fenêtre durant laquelle une console ou une session SSH laissée connectée sans surveillance peut être détournée par une personne non autorisée. Sans TMOUT, un shell root oublié sur un terminal verrouillé mais non déconnecté constitue un risque permanent.
Ce que vérifie Pavois
Pavois recherche dans les fichiers d'initialisation du shell (/etc/profile, /etc/profile.d/*, /etc/bashrc) une affectation TMOUT= non commentée. Comme TMOUT est une variable interne du shell positionnée à la connexion par ces scripts (il n'y a pas de service à interroger), la source de vérité effective est les fichiers d'init eux-mêmes, Pavois vérifie précisément les fichiers que le shell source, y compris les drop-ins de /etc/profile.d/.
describe command('grep -qrE \'^[^#]*TMOUT=[0-9]\' /etc/profile /etc/profile.d/ /etc/bashrc 2>/dev/null && echo ok || echo ko') do
its('stdout.strip') { should eq 'ok' }
endComment vérifier qu’elle est appliquée
Exécutez grep -rE '^[^#]*TMOUT=' /etc/profile /etc/profile.d/ /etc/bashrc. Attendez-vous à au moins une correspondance telle que readonly TMOUT=600. Dans un nouveau shell de connexion, echo $TMOUT doit afficher le nombre de secondes configuré.
Inspecter et investiguer
Les fins de session déclenchées par TMOUT ferment la session SSH/console, journalisées dans /var/log/auth.log (Debian/Ubuntu) ou /var/log/secure (RHEL). Vérifiez directement la variable avec echo $TMOUT dans un shell interactif.
Remédiation
Aucun plan de durcissement automatisé n'est fourni ; appliquez-la manuellement. Ajoutez un fichier comme /etc/profile.d/tmout.sh contenant TMOUT=600; readonly TMOUT; export TMOUT (10 minutes). L'usage de readonly empêche les utilisateurs de le désactiver. Attention : seuls /bin/sh/bash respectent TMOUT ; les autres shells (zsh, fish) nécessitent leur propre équivalent.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| content | TMOUT=900 readonly TMOUT export TMOUT |
|---|---|
| group | root |
| mode | 0644 |
| owner | root |
| path | /etc/profile.d/99-pavois-tmout.sh |
| resource | file |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Définir TMOUT trop bas gêne le travail légitime, des commandes interactives longues à l'invite, un éditeur en pause ou un suivi de log peuvent se déconnecter en pleine utilisation, et une valeur readonly ne peut être contournée par session. Choisissez une valeur (souvent 600:900 s) équilibrant sécurité et ergonomie, et rappelez-vous qu'elle s'applique à tous les shells interactifs, y compris ceux des administrateurs. Elle n'affecte pas les tâches non interactives, cron ou les processus d'arrière-plan établis, donc aucun risque d'interruption de service.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R32 | direct | 2.0 | haute |
| CIS | 5.4.3.2, 8.6.1 | direct | per OS, see the benchmark table | haute |
| NIST | 3.1.11, AC-12, AC-2(5), CM-6(a), SC-10 | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| PCI DSS | 8.6.1 | support | 4.0.1 | moyenne |
| DISA STIG | UBTU-22-412030, UBTU-24-200060 | direct | per OS STIG release | haute |
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.