Hardening Red Hat Enterprise Linux 9
DISA STIG et OpenSCAP~
Aujourd’hui on va parler hardening, et voir ensemble comment appliquer certains profils de sécurité sur une RHEL 9 ! On utilisera aussi OpenSCAP pour auditer notre système.
I) Introduction
Comme d’habitude avant de se lancer à corps perdu, on va un peu expliquer les choses 😉
Ici je suis parti sur une RHEL pour plusieurs raisons, mais surtout car nativement durant l’installation cette distrib permet d’appliquer plusieurs profils de sécurité. Enfin quand je dis « plusieurs« , il va de soit qu’on en appliquera qu’un seul, histoire d’éviter de potentiels conflits…
Une fois qu’on aura réalisé notre installation, on utilisera le logiciel OpenSCAP pour réaliser un audit de notre système, et avoir un joli rapport HTML. En parallèle, on installera une seconde RHEL mais non-hardenée, pour comparer un peu.
Concernant SCAP, pour Security Content Automation Protocol, c’est un standard défini par le NIST qui permet de décrire/vérifier la sécurité et conformité d’un système, et pour OpenSCAP, c’est simplement un logiciel open source qui l’implémente, et qui permet donc de scanner des systèmes, générer des rapports, mais aussi de remédier à certains manquements !
A noter qu’il est tout à fait possible d’appliquer des profils de sécurité post-install’, j’en ferai sûrement un article dédié, ici il s’agit plutôt d’un article découverte.
II) Installation RHEL et choix du DISA STIG
Comme dit en début, on a directement la possibilité de pouvoir utiliser un profil de sécurité:

Vous en avez plusieurs proposés par défaut, en voici une rapide liste:
- DISA STIG → USA / Département de la Défense : règles de durcissement militaires pour garantir une sécurité maximale sur les systèmes critiques.
- CIS → International / Center for Internet Security : bonnes pratiques largement adoptées dans l’industrie pour sécuriser serveurs et postes.
- PCI-DSS → International / secteur paiement par carte : règles pour protéger les données de cartes bancaires et respecter les obligations légales.
- ANSSI → France / Agence nationale de la sécurité des systèmes d’information : recommandations nationales pour durcir les systèmes et protéger les infrastructures critiques.
Pour ce labo, je suis parti sur le DISA STIG no-GUI, mais le principe reste le même, il s’agit d’un ensemble de bonnes pratiques/configurations pour durcir votre système.

Une fois sélectionné, et dépendant du dit profil, vous pourriez avoir un warning vous indiquant de régler certaines choses avant de poursuivre. Par exemple ici, j’avais choisi Partitionnement automatique, et donc forcément ça coince, car il faut que je partitionne le tout correctement avant.
Un autre cas de figure pourrait être un mot de passe root pas assez complexe.

Une fois que tout est fait, on choisi les softs à installer, ici on part sur une install en CLI avec packages de base:

Et on installe !
III) Tour du propriétaire
Dès la console on peut voir la jolie bannière rajoutée via le profil de sécurité !

On peut aussi voir qu’une fois logué, on doit directement changer de password… et la complexité de ce dernier est plutôt pas mal !
- Longueur & classes : ≥15 caractères, majuscule + minuscule + chiffre + symbole.
- Limites répétitions : max 3 caractères identiques consécutifs, max 4 caractères de même classe.
- Historique & durée : min 1 jour, max ~60 jours

Alors je ne vais pas tout détailler ici, voici grossièrement les changements les plus « notables », à noter que tout est dispo via ce lien.
- Comptes & mots de passe : root et utilisateurs renforcés (≥15 caractères, complexité, répétitions limitées, historique).
- SELinux & permissions : SELinux forcé en enforcing, permissions fichiers durcies, comptes sans mot de passe désactivés.
- Services & SSH : services non essentiels désactivés, SSH sécurisé (pas de root login, chiffrement fort, idle timeout).
- Audit & logs : auditd obligatoire, journaux renforcés, bannière légale DoD (vue plus haut).
- Réseau & NTP : sysctl durci (IP forwarding off, protections réseau), chrony synchronisé et sécurisé.
IV) Scan via OpenSCAP, et génération d’un rapport d’audit
Rien de très sorcier ici, on installe les tools directement depuis les repos de base, bien qu’en l’occurrence ils sont déjà installés :
dnf update && dnf install scap-security-guide openscap-scanner -y
*Bien penser qu’avec des environnements durcis comme ici, on veillera toujours à bien backuper les configs importantes (pwquality et selinux par ex.), et à appliquer une bonne politique de patching… aucun intérêt d’avoir un système hardené à instant T si une semaine après on fait des dnf upgrades à tout va ! 🫣
On peut ensuite lancer un scan et voir ce qu’il nous trouve (et en profiter pour passer en SSH, car la console ça va bien deux minutes…) :
oscap xccdf eval --profile stig --report report.html --results results.xml /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml

Comme on peut le voir, forcément certaines choses sont en fail, par exemple concernant la disponibilité de nos serveurs DNS: effectivement, mon DHCP n’en a offert qu’un seul à mon serveur, on peut lui en renseigner un second et le tour est joué ! Mais bien entendu, certains contrôles sont plus compliqués à corriger que celui-ci…
Histoire d’y voir plus clair, on peut télécharger l’HTML ou installer Lynx/autre pour l’ouvrir en CLI:


On tape quand même un très joli 93% de compliance, out of the box… pas mal du tout ! Au niveau des fail, on peut facilement voir le tout à l’aide des différents filtres:

On peut voir par exemple que le module FIPS (pour Federal Information Processing Standard) n’est pas activé, un petit sudo fips-mode-setup –enable pourrait fixer ça 😉
Mais encore une fois, tout est une question de contraintes légales/environnementales, de performances, compatibilité… bref, le choix des possibles s’offre à vous ! Et vous n’êtes clairement pas obligé de partir sur une compliance aussi ferme que celle proposée par la Defense Information Systems Agency ! 😅
IV) Scoring RHEL « vanilla » et conclusion
Juste pour la bonne forme, voilà le scoring via une RHEL installée de manière classique comme plus haut, mais sans profil de sécurité, et toujours en se basant sur le DISA:

Alors effectivement, on voit bien qu’il y a une nette différence… mais tout de même ! Je m’attendais à pire 😁
Sur ce, j’espère comme à mon habitude vous avoir appris quelques bricoles voir plus, et vous souhaite une bonne journée/soirée ! On se retrouvera bien vite pour de nouveaux articles !



Laisser un commentaire