Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
shh — Assistant de durcissement Systemd - Miroir de https://github.com/desbma/shh | Kitploit
Outils/GitHubGitHub/synacktiv/shh
Sécurité de l'Infrastructure CloudOutils DéfensifsAudit de ConfigurationDevSecOpsUtilitaires et FrameworksMauvaise Configuration
GitHubsynacktiv/shh

shh

Assistant de durcissement Systemd - Miroir de https://github.com/desbma/shh

Voir le dépôt
176315il y a 3 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

SHH (Systemd Hardening Helper)

CI status crates.io version AUR version nixpkgs unstable version License

Durcissement automatique des services systemd guidé par le profilage strace.

SHH peut générer un ensemble optimal d'options de durcissement pour chacun de vos services, afin d'élever le niveau de sécurité de votre système sans craindre des erreurs aléatoires en production causées par un sandboxing trop restrictif.

Dépôt officiel - Dépôt miroir

Documentation

  • Introduction de haut niveau :
Télécharger l’outil
Systemd hardening made easy with SHH
  • FAQ
  • Changelog
  • Options systemd actuellement prises en charge
  • Installation

    Dépendances

    Strace doit être installé et son exécutable accessible dans PATH. Une version de Strace >= 6.6 est actuellement requise.

    Depuis les sources

    Vous avez besoin d'un environnement de compilation Rust, par exemple via rustup.

    Exécutez dans le dépôt courant :

    root@kitploit:~
    cargo build --release
    install -Dm 755 -t /usr/local/bin target/release/shh
    

    Depuis crates.io

    root@kitploit:~
    sudo cargo install --root /usr/local systemd-hardening-helper
    

    Debian (ou distribution basée sur Debian)

    Consultez les versions GitHub pour les paquets Debian construits pour chaque version taguée.

    Arch Linux

    Les utilisateurs d'Arch Linux peuvent installer le paquet AUR shh.

    Nixpkgs

    Les utilisateurs de Nixos/Nix peuvent installer le dernier paquet depuis la branche instable.

    Utilisation

    Durcissement d'un service

    Pour durcir une unité système nommée SERVICE.service :

    1. Démarrez le profilage du service : shh service start-profile SERVICE. Le service sera redémarré avec le profilage strace.
    2. Utilisez le service normalement pendant un certain temps, en essayant de couvrir autant de fonctionnalités et de cas d'utilisation que possible.
    3. Exécutez shh service finish-profile SERVICE -a. Le service sera redémarré avec une configuration durcie construite à partir du profilage d'exécution précédent, afin de lui permettre de fonctionner en toute sécurité comme observé pendant la période de profilage, et de refuser d'autres actions système dangereuses.

    Exécutez shh -h pour la référence complète de la ligne de commande, ou ajoutez -h à une sous-commande pour obtenir de l'aide.

    [!WARNING] Les options de durcissement générées par shh ne sont par construction pas portables entre différents systèmes. Elles dépendent de nombreux facteurs et peuvent casser le service si l'un d'entre eux change :

    • le chemin de code couvert pendant le profilage
    • la version du noyau Linux
    • la libc utilisée
    • la version de systemd

    Réutiliser les options générées par shh sur un système avec un environnement différent (par exemple une distribution Linux différente) risque très probablement de casser le service.

    Test local

    Si vous souhaitez exécuter un test rapide pour voir quelles options seraient générées, vous pouvez utiliser shh run -- COMMANDE.

    Le répertoire courant et la variable d'environnement PATH influencent tous deux l'exécution du programme ; réinitialisez-les d'abord :

    root@kitploit:~
    $ cd /
    export PATH=/usr/local/bin:/usr/bin:/bin
    

    Ensuite, pour voir quelles options seraient générées pour un appel curl https://www.example.com :

    root@kitploit:~
    $ shh run -- curl https://www.example.com
    ...
    -------- Début des options de service suggérées --------
    ProtectSystem=strict
    ProtectHome=true
    PrivateTmp=disconnected
    PrivateDevices=true
    ProtectKernelTunables=true
    ProtectKernelModules=true
    ProtectKernelLogs=true
    ProtectControlGroups=true
    ProtectProc=ptraceable
    LockPersonality=true
    RestrictRealtime=true
    ProtectClock=true
    MemoryDenyWriteExecute=true
    RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX
    SocketBindDeny=ipv4:tcp
    SocketBindDeny=ipv4:udp
    SocketBindDeny=ipv6:tcp
    SocketBindDeny=ipv6:udp
    CapabilityBoundingSet=~CAP_BLOCK_SUSPEND CAP_BPF CAP_CHOWN CAP_MKNOD CAP_NET_RAW CAP_PERFMON CAP_SYS_BOOT CAP_SYS_CHROOT CAP_SYS_MODULE CAP_SYS_NICE CAP_SYS_PACCT CAP_SYS_PTRACE CAP_SYS_TIME CAP_SYSLOG CAP_WAKE_ALARM
    SystemCallFilter=~@aio:EPERM @chown:EPERM @clock:EPERM @cpu-emulation:EPERM @debug:EPERM @ipc:EPERM @keyring:EPERM @memlock:EPERM @module:EPERM @mount:EPERM @obsolete:EPERM @pkey:EPERM @privileged:EPERM @raw-io:EPERM @reboot:EPERM @resources:EPERM @sandbox:EPERM @setuid:EPERM @swap:EPERM @sync:EPERM @timer:EPERM
    -------- Fin des options de service suggérées --------
    

    Ou pour sandboxer autant que possible :

    root@kitploit:~
    $ shh run --mode aggressive --filesystem-whitelisting --network-firewalling -- curl https://www.example.com -o /dev/null
    ...
    -------- Début des options de service suggérées --------
    ProtectSystem=strict
    ProtectHome=true
    PrivateTmp=disconnected
    PrivateDevices=true
    ProtectKernelTunables=true
    ProtectKernelModules=true
    ProtectKernelLogs=true
    ProtectControlGroups=true
    ProtectProc=ptraceable
    LockPersonality=true
    RestrictRealtime=true
    ProtectClock=true
    MemoryDenyWriteExecute=true
    SystemCallArchitectures=native
    ReadOnlyPaths=-/
    ReadWritePaths=-/dev
    InaccessiblePaths=-/boot -/home -/lost+found -/media -/mnt -/opt -/root -/srv -/sys -/tmp -/var
    TemporaryFileSystem=/usr:ro
    BindReadOnlyPaths=-/usr/bin -/usr/lib -/usr/lib64 -/usr/local -/usr/share
    NoExecPaths=-/
    ExecPaths=-/usr/bin/curl -/usr/lib/x86_64-linux-gnu
    RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX
    SocketBindDeny=ipv4:tcp
    SocketBindDeny=ipv4:udp
    SocketBindDeny=ipv6:tcp
    SocketBindDeny=ipv6:udp
    IPAddressDeny=any
    IPAddressAllow=[redacted]
    CapabilityBoundingSet=~CAP_BLOCK_SUSPEND CAP_BPF CAP_CHOWN CAP_MKNOD CAP_NET_RAW CAP_PERFMON CAP_SYS_BOOT CAP_SYS_CHROOT CAP_SYS_MODULE CAP_SYS_NICE CAP_SYS_PACCT CAP_SYS_PTRACE CAP_SYS_TIME CAP_SYSLOG CAP_WAKE_ALARM
    SystemCallFilter=~@aio:EPERM @chown:EPERM @clock:EPERM @cpu-emulation:EPERM @debug:EPERM @ipc:EPERM @keyring:EPERM @memlock:EPERM @module:EPERM @mount:EPERM @obsolete:EPERM @pkey:EPERM @privileged:EPERM @raw-io:EPERM @reboot:EPERM @resources:EPERM @sandbox:EPERM @setuid:EPERM @swap:EPERM @sync:EPERM @timer:EPERM
    -------- Fin des options de service suggérées --------
    

    Licence

    GPLv3