Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
shh — Systemd Hardening Helper - https://github.com/desbma/shh のミラー | Kitploit
ツール/GitHubGitHub/synacktiv/shh
クラウドインフラストラクチャセキュリティ防御ツール構成監査DevSecOpsユーティリティとフレームワーク設定ミス
GitHubsynacktiv/shh

shh

Systemd Hardening Helper - https://github.com/desbma/shh のミラー

リポジトリを見る
17633ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

SHH(Systemd ハードニングヘルパー)

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

strace プロファイリングに基づく systemd サービスの自動ハードニング。

SHH は各サービスの最適なハードニングオプション一式を生成できるため、過度に制限の厳しいサンドボックス化によって本番環境で発生する予期しないエラーを心配することなく、システムのセキュリティレベルを引き上げることができます。

公式リポジトリ - ミラーリポジトリ

ドキュメント

  • 概要: SHH で簡単にできる systemd ハードニング
  • FAQ
  • 変更履歴
  • 現在サポートされている systemd オプション

インストール

依存関係

Strace をインストールし、その実行ファイルが PATH から参照できる必要があります。現在、Strace バージョン >= 6.6 が必要です。

ソースから

たとえば rustup など、Rust のビルド環境が必要です。

現在のリポジトリ内で以下を実行します:

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

crates.io から

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

Debian(または Debian ベースのディストリビューション)

各タグ付きバージョン用にビルドされた Debian パッケージは、GitHub releases を参照してください。

Arch Linux

Arch Linux ユーザーは shh AUR パッケージ をインストールできます。

Nixpkgs

Nixos/Nix ユーザーは unstable ブランチ から最新パッケージをインストールできます。

使い方

サービスをハードニングする

SERVICE.service という名前のシステムユニットをハードニングするには:

  1. サービスのプロファイリングを開始します: shh service start-profile SERVICE。サービスは strace プロファイリング付きで再起動されます。
  2. サービスを通常どおりしばらく使用し、できるだけ多くの機能とユースケースをカバーするようにします。
  3. shh service finish-profile SERVICE -a を実行します。サービスは、以前の実行時プロファイリングから構築されたハードニング構成で再起動され、プロファイリング期間中に観測されたとおりに安全に実行できるようにするとともに、その他の危険なシステム操作を拒否します。

完全なコマンドラインリファレンスは shh -h を実行するか、サブコマンドに -h を付けるとヘルプが表示されます。

[!WARNING] shh が生成するハードニングオプションは、設計上、異なるシステム間では移植できません。 これらは多くの要因に依存しており、そのいずれかが変化するとサービスが壊れる可能性があります:

  • プロファイリング中にカバーされたコードパス
  • Linux カーネルのバージョン
  • 使用される libc
  • systemd のバージョン

異なる環境(つまり異なる Linux ディストリビューション)のシステムで shh が生成したオプションを再利用すると、サービスが壊れる可能性が非常に高くなります。

ローカルでのテスト

生成されるオプションを確認するための簡単なテストを実行したい場合は、shh run -- COMMAND を使用できます。

カレントディレクトリと PATH 環境変数はどちらもプログラムの実行に影響するため、最初にこれらをリセットしてください:

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

次に、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 --------

または、可能な限りサンドボックス化する場合:

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

ライセンス

GPLv3

ツールをダウンロード