Vérifier les permissions du répertoire /etc/ipsec.d
Garantit que le répertoire /etc/ipsec.d n'est ni lisible, ni modifiable, ni traversable par le groupe ou les autres et ne porte aucun bit setuid, setgid ou sticky (mode attendu 0700 root:root).
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
/etc/ipsec.d/ contient le matériel secret IPsec : certificats, clés privées, CRL et fragments de configuration par connexion pour Libreswan/strongSwan. Si le répertoire est lisible par le groupe ou les autres, un attaquant peut lister et copier les clés privées, brisant la confidentialité de chaque tunnel ; s'il est modifiable, il peut y déposer une clé ou une configuration malveillante. Le restreindre à root (mode 0700) garde le matériel cryptographique du VPN privé et inaltérable.
Ce que vérifie Pavois
Pavois lit les permissions réelles de l'inode du répertoire /etc/ipsec.d avec la ressource InSpec file (un stat), sous only_if. Pour un répertoire, le bit de lecture groupe/autres autorise le listage et le bit d'exécution la traversée ; les deux sont donc interdits, avec l'écriture et tout bit setuid/setgid/sticky, soit 0700 root:root. Inspecter le mode réel du répertoire détecte une dérive due à un changement manuel ou une restauration qu'une hypothèse de défaut de paquet manquerait.
only_if { file('/etc/ipsec.d').exist? }
describe file('/etc/ipsec.d') do
it { should_not be_setuid }
it { should_not be_executable.by('group') }
it { should_not be_writable.by('group') }
it { should_not be_readable.by('group') }
it { should_not be_setgid }
it { should_not be_executable.by('other') }
it { should_not be_writable.by('other') }
it { should_not be_readable.by('other') }
it { should_not be_sticky }
endComment vérifier qu’elle est appliquée
Exécutez stat -c '%a %U %G' /etc/ipsec.d. La sortie attendue est le mode 700 appartenant à root root, soit 700 root root. Tout bit de lecture, d'écriture ou d'exécution groupe/autres, ou un bit spécial, fait échouer la règle.
Inspecter et investiguer
Le démon IPsec charge les clés et certificats depuis ce répertoire ; vérifiez journalctl -u ipsec / journalctl -u strongswan et ipsec status pour confirmer que les tunnels négocient toujours après un changement de permissions. Utilisez ls -ld /etc/ipsec.d / stat /etc/ipsec.d pour vérifier le mode.
Remédiation
Aucune remédiation automatique n'est définie ; appliquez-la manuellement : chmod 0700 /etc/ipsec.d && chown root:root /etc/ipsec.d. Pensez à durcir également les fichiers de clés à l'intérieur (chmod 0600 /etc/ipsec.d/private/*), puis ipsec reload.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| mode | 0700 |
|---|---|
| path | /etc/ipsec.d |
| resource | file |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Appliquer 0700 root:root au répertoire est sûr, le démon IPsec s'exécute en root et conserve un accès complet. Aucun risque de blocage. Précaution : si un utilisateur de supervision ou de sauvegarde non-root lisait auparavant ce répertoire, il perdra l'accès ; c'est voulu pour du matériel secret, mais adaptez vos outils pour qu'ils s'exécutent en privilégié. Vérifiez ensuite les tunnels avec ipsec status. Laisser le répertoire lisible par tous expose les clés privées du VPN.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R50 | direct | 2.0 | 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.