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
1763il 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 : 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

Télécharger l’outil