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
176315hace 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

Descargar herramienta
  • 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