Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
shh — Asistente de endurecimiento de Systemd - Espejo de https://github.com/desbma/shh | Kitploit
Herramientas/GitHubGitHub/synacktiv/shh
Seguridad de Infraestructura en la NubeHerramientas DefensivasAuditoría de ConfiguraciónDevSecOpsUtilidades y FrameworksMala Configuración
GitHubsynacktiv/shh

shh

Asistente de endurecimiento de Systemd - Espejo de https://github.com/desbma/shh

Ver Repositorio
1763hace 3 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

SHH (Systemd Hardening Helper)

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

Endurecimiento automático de servicios systemd guiado por el perfilado con strace.

SHH puede generar un conjunto óptimo de opciones de endurecimiento para cada uno de tus servicios, de modo que puedas aumentar el nivel de seguridad de tu sistema sin preocuparte por errores aleatorios en producción causados por un sandboxing demasiado restrictivo.

Repositorio oficial - Repositorio espejo

Documentación

  • Introducción de alto nivel: Endurecimiento de systemd simplificado con SHH
  • FAQ
  • Changelog
  • Opciones de systemd actualmente soportadas

Instalación

Dependencias

Strace debe estar instalado y su ejecutable accesible en PATH. Actualmente se requiere Strace >= 6.6.

Desde el código fuente

Necesitas un entorno de compilación de Rust, por ejemplo desde rustup.

Ejecuta en el repositorio actual:

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

Desde crates.io

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

Debian (o distribución basada en Debian)

Consulta las versiones de GitHub para obtener paquetes Debian compilados para cada versión etiquetada.

Arch Linux

Los usuarios de Arch Linux pueden instalar el paquete shh de AUR.

Nixpkgs

Los usuarios de NixOS/Nix pueden instalar el último paquete desde la rama inestable.

Uso

Endurecer un servicio

Para endurecer una unidad del sistema llamada SERVICE.service:

  1. Inicia el perfilado del servicio: shh service start-profile SERVICE. El servicio se reiniciará con el perfilado de strace.
  2. Usa el servicio con normalidad durante un tiempo, intentando cubrir tantas características y casos de uso como sea posible.
  3. Ejecuta shh service finish-profile SERVICE -a. El servicio se reiniciará con una configuración endurecida creada a partir del perfilado de ejecución anterior, para permitir que se ejecute de forma segura tal como se observó durante el período de perfilado y para denegar otras acciones peligrosas del sistema.

Ejecuta shh -h para obtener la referencia completa de la línea de comandos, o añade -h a un subcomando para obtener ayuda.

[!WARNING] Las opciones de endurecimiento generadas por shh no son portables entre diferentes sistemas por construcción. Dependen de muchos factores y pueden romper el servicio si cualquiera de ellos cambia:

  • la ruta de código cubierta durante el perfilado
  • la versión del kernel de Linux
  • la libc utilizada
  • la versión de systemd

Reutilizar opciones generadas por shh en un sistema con un entorno diferente (es decir, una distribución de Linux distinta) muy probablemente romperá el servicio.

Probando localmente

Si quieres ejecutar una prueba rápida para ver qué opciones se generarían, puedes usar shh run -- COMMAND.

Tanto el directorio actual como la variable de entorno PATH influyen en la ejecución del programa; restablece ambos primero:

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

Luego, para ver qué opciones se generarían para una invocación de curl https://www.example.com:

root@kitploit:~
$ shh run -- curl https://www.example.com
...
-------- Start of suggested service options --------
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
-------- End of suggested service options --------

O para aplicar el mayor sandboxing posible:

root@kitploit:~
$ shh run --mode aggressive --filesystem-whitelisting --network-firewalling -- curl https://www.example.com -o /dev/null
...
-------- Start of suggested service options --------
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
-------- End of suggested service options --------

Licencia

GPLv3

Descargar herramienta