v4.0  ·  GPL-2.0  ·  CIS Benchmark  ·  NIST SP 800-123
HARDCTL

Linux Server Hardening Tool

Audite, corrige et documente la sécurité de vos serveurs Linux — en une seule commande, sans dépendances.

→ Installer ⎇ GitHub
root@prod-srv — hardctl --check
50+
Règles de sécurité
10
Modules
3
Formats de rapport
5
Distributions Linux

// fonctionnalités

Durcissement réel,
résultats mesurables.

HARDCTL vérifie l'état actuel de chaque règle avant d'agir. Pas de faux positifs, pas de modifications inutiles — seulement ce qui doit être corrigé.

vérification réelle
Audit ✓/✗ précis
Chaque règle dispose d'une commande de vérification dédiée (sshd -T, sysctl, stat…). En mode audit, le script sait distinguer ce qui est déjà appliqué de ce qui manque vraiment.
mode fix
Correction chirurgicale
Le mode --fix n'applique que les règles en FAIL. Les règles déjà correctes sont ignorées. Idéal pour les serveurs en production où chaque changement doit être maîtrisé.
multi-distro
Détection automatique
Rocky Linux, RHEL, Fedora, Ubuntu, Debian. Les commandes s'adaptent automatiquement : dnf/apt, firewalld/ufw, SELinux/AppArmor. Aucune configuration manuelle requise.
rapports
HTML · JSON · TXT
Rapports de conformité avec score pondéré, tableau par règle CIS, statut et sévérité. Le HTML est autonome — envoyable par email sans dépendances. Le JSON s'intègre dans n'importe quel SIEM.
surface d'attaque
Module scan intégré
Détecte les ports dangereux ouverts, les mises à jour de sécurité disponibles, les IPs bannies par fail2ban, les connexions établies et les tentatives SSH échouées. Tout en une seule commande.
sécurité
Backups + audit trail
Chaque fichier modifié est sauvegardé dans /var/log/hardctl/backups/ avec horodatage. Un log complet est généré à chaque exécution pour une traçabilité totale.

// modules

10 modules,
50+ règles CIS.

Exécutables indépendamment via -m MODULE ou regroupés dans un profil de sécurité.

● critical
● high
● medium
● low
🔐SSH9 règles
  • PermitRootLogin no
  • PasswordAuthentication no
  • MaxAuthTries ≤ 4
  • X11Forwarding off
  • Algorithmes modernes
  • Bannière légale
🌐Réseau7 règles
  • Firewall (firewalld/ufw)
  • fail2ban actif
  • IP forwarding off
  • SYN cookies activés
  • Redirections ICMP off
  • Telnet supprimé
🔑Auth8 règles
  • pwquality (minlen=14)
  • Expiration 90j
  • Lockout après 5 échecs
  • NOPASSWD sudoers
  • UID 0 = root only
  • Hash MD5 détection
⚙️Système7 règles
  • MAJ automatiques
  • SELinux / AppArmor
  • umask 027
  • Core dumps off
  • cron.allow
  • Perms /etc/shadow
🧬Kernel5 règles
  • ASLR (randomize_va_space=2)
  • dmesg_restrict=1
  • BPF non-privilégié off
  • Modules blacklistés
  • ptrace_scope ≥ 1
📋Audit4 règles
  • auditd + règles CIS
  • Rétention 100MB
  • journald persistant
  • Surveillance sudoers
📁Fichiers5 règles
  • /tmp noexec/nosuid/nodev
  • Sticky bit
  • Perms répertoires home
  • Scan SUID/SGID
  • Fichiers orphelins
🔍Scansurface d'attaque
  • Ports dangereux ouverts
  • MAJ de sécurité dispo
  • Services en échec
  • IPs bannies fail2ban
  • Tentatives SSH échouées
🔒Crypto2 règles
  • Politique crypto système
  • TLS 1.2 minimum
📡Services5 règles
  • FTP désactivé
  • r-commands supprimés
  • CUPS / Avahi masqués
  • SFTP configuré

// modes d'exécution

Trois modes,
un workflow naturel.

-c
Mode Audit
Vérifie l'état réel sans modifier. Affiche ✓ DONE si appliqué, ✗ FAIL si manquant. Commencer ici.
-f
Mode Fix
Corrige uniquement les règles en FAIL. Les règles déjà correctes sont ignorées. Parfait pour la production.
(défaut)
Application complète
Applique l'ensemble du profil. Chaque règle est vérifiée : [=] DONE si déjà active, appliquée sinon.
01
Auditer l'état actuel
sudo bash hardctl.sh -c -r html
Score de sécurité + détail complet. Aucune modification.
02
Corriger les failles
sudo bash hardctl.sh -f -y
Applique uniquement les règles manquantes. Backups automatiques.
03
Vérifier le résultat
sudo bash hardctl.sh -c -r json
Re-audit post-correction. Score cible ≥ 80% pour CIS Level 1.
04
Scanner la surface d'attaque
sudo bash hardctl.sh -m scan -r html
Ports dangereux, packages vulnérables, intrusions détectées.

// rapports

Trois formats,
une commande.

Score pondéré, détail par règle CIS, sévérité et statut. Générez-les tous avec -r all.

.html
Dark-theme autonome. Score visuel, tableau complet. Envoyable sans serveur web.
.json
Format machine. Compatible SIEM, Elasticsearch, CI/CD et dashboards.
.txt
Texte brut. Archivable, versionnable dans Git, compatible tout terminal.

// installation

Opérationnel
en 30 secondes.

Bash natif uniquement. Aucune dépendance externe. Fonctionne sur toute installation Linux récente avec accès root.

curl -fsSL https://raw.githubusercontent.com/jonas52/hardctl/main/hardctl.sh -o hardctl.sh
sudo bash hardctl.sh -c -r html
sudo bash hardctl.sh -p cis1 -r all -y
Prérequis
  • Linux (distro récente)
  • Bash 4.0+
  • Root / sudo
  • Aucune dépendance
Profils
  • cis1 — CIS Level 1 (défaut)
  • cis2 — CIS Level 2
  • nist — NIST SP 800-123
  • minimal — Critical seulement
  • server — Serveur web
  • db — Base de données
Options
  • -c Audit seul
  • -f Fix des FAIL
  • -p Choisir un profil
  • -m Module unique
  • -r txt|json|html|all
  • -y Sans confirmation
  • -v Mode verbeux
Sorties
  • /var/log/hardctl/*.log
  • /var/log/hardctl/report-*.html
  • /var/log/hardctl/report-*.json
  • /var/log/hardctl/report-*.txt
  • /var/log/hardctl/backups/