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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
FencePost — マルチホストUFWファイアウォールダッシュボード — ルールを平易な英語で説明し、セキュリティの弱点を検出、接続診断を提供 | Kitploit
ツール/GitHubGitHub/seriocomic/fencepost
コンテナセキュリティ脆弱性分析構成監査ネットワークセキュリティクラウドセキュリティDevSecOps脅威インテリジェンスインシデントレスポンスログ分析
GitHubseriocomic/fencepost

FencePost

マルチホストUFWファイアウォールダッシュボード — ルールを平易な英語で説明し、セキュリティの弱点を検出、接続診断を提供

24ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

FencePost

マルチホストUFWファイアウォールダッシュボード。SSH経由でLinuxホストに接続し、ファイアウォールルールとリッスンポートを解析し、すべてを平易な英語で説明し、セキュリティ上のギャップをフラグします。

Python FastAPI License

機能

  • マルチホスト概要 — すべてのホストのUFWステータス、デフォルトポリシー、アクティブサービスを一目で確認
  • 平易な英語による説明 — すべてのファイアウォールルールをVLAN名やサービス名を含む読みやすい説明に変換
  • ギャップ検出 — UFW許可ルールが一致しないリッスンポートを検出し、外部公開とローカル公開に分類
  • 接続診断 — 送信元IPと宛先ポートをルールチェーンに沿ってトレースし、トラフィックが許可/ブロック/拒否されるかを確認
  • 変更検出 — 現在の状態を直前のスナップショットと比較し、イベント(ルール追加/削除、UFW有効/無効、ホスト到達不能)をウェブフックに投稿
  • Docker対応 — iptablesがUFWをバイパスする可能性があるDockerホストにフラグを立てる

スクリーンショット

Home Rule List Rule Detail

ページ

Route説明
/ホストカード、サービスピル、ギャップ数を含む概要ダッシュボード
/host/{name}ホスト詳細。タブ付きビュー:説明付きルール、未カバーポート、リッスンポート、生出力

アーキテクチャ

root@kitploit:~
Browser --> Cloudflare Tunnel --> Reverse Proxy --> FencePost (:8890)
  FastAPI container
    |-- SSH --> Host 1 (ufw status, ss -tlnp)
    |-- SSH --> Host 2
    |-- SSH --> Host N
    '-- POST --> Notification webhook

FencePostは読み取り専用です。ファイアウォールルールを変更することはなく、レポートのみを行います。

クイックスタート

前提条件

  • Python 3.12+(ローカル開発)または Docker(本番環境)
  • SSHキーペア(ed25519)で、公開鍵を対象ホストに配置済み
  • 各ホストのSSHユーザーに対するsudoersエントリ:
    root@kitploit:~
    <user> ALL=(ALL) NOPASSWD: /usr/sbin/ufw status verbose, /usr/sbin/ufw status numbered, /usr/bin/ss -tlnp
    

1. クローンと設定

root@kitploit:~
git clone <repo-url> && cd fencepost

# SSHキーを追加
cp ~/.ssh/your_key ssh/id_ed25519
chmod 600 ssh/id_ed25519

# テンプレートから環境ファイルを作成
cp .env.example .env
# .env を実際の認証情報で編集

2. config.yaml を編集

root@kitploit:~
timezone: Australia/Melbourne

hosts:
  - name: My Server
    hostname: 192.168.1.10
    ssh_user: deploy
    ssh_port: 22
    is_docker_host: false

networks:
  "192.168.1.0/24": "LAN"

3. 実行

ローカル開発

root@kitploit:~
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# 環境変数をロード(bash/zsh)
export $(grep -v '^#' .env | xargs)

uvicorn app.main:app --reload --port 8890

http://localhost:8890 を開きます。

注意:ローカルモードでは、config.yaml で指定されたパスのSSHキー(ssh.key_path)を使用します。ローカル開発では、これをローカルの ssh/id_ed25519 にオーバーライドするとよいでしょう。

root@kitploit:~
ssh:
  key_path: ssh/id_ed25519
  timeout: 10

Docker(本番環境)

root@kitploit:~
docker compose up -d --build

http://localhost:8890 を開きます。コンテナは compose.yaml を介して .env から自動的に認証情報を読み取ります。

設定

config.yaml

環境変数(.env)

認証情報は .env(gitignored)に保存され、compose.yaml から参照されます。機密情報をリポジトリにコミットしないでください。

スタック

  • バックエンド: Python 3.12 / FastAPI / Uvicorn
  • SSH: ed25519鍵認証を使用したParamiko
  • テンプレート: Jinja2(サーバーサイドレンダリング、JSフレームワークなし)
  • HTTPクライアント: httpx(ウェブフック通知)
  • スタイリング: カスタムCSS、ダークテーマ、フレームワークなし
  • フォント: DM Mono(データ)、Anybody(見出し)

プロジェクト構造

root@kitploit:~
app/
  main.py           # FastAPIのルートと認証
  models.py         # HostFirewallState、UFWRule、ListeningPortのデータクラス
  parser.py         # ufw status と ss の出力をパース
  explainer.py      # ルールを平易な英語に変換
  diagnose.py       # 接続診断エンジン
  gap_detector.py   # 未カバーのリッスンポートを検出
  ssh_client.py     # Paramikoラッパー、並列ホスト取得
  eventfeed.py      # 変更検出とウェブフック投稿
  templates/
    base.html       # レイアウト、CSS、ナビゲーション
    overview.html   # ホストダッシュボードグリッド
    host_detail.html # ホストごとのタブ付き詳細ビュー
    diagnose.html   # 接続診断フォームと結果
    login.html      # 認証ページ
config.yaml         # ホスト定義、VLAN、デバイス、タイムゾーン
compose.yaml        # Docker Composeサービス定義
Dockerfile          # Python 3.12 slimイメージ
.env.example        # 環境変数のテンプレート
ssh/                # SSHキーディレクトリ(キーはコミットしない)
data/               # ランタイム状態(last_state.json、コミットしない)

ホストの追加

  1. config.yaml の hosts: にエントリを追加
  2. SSH公開鍵をホストにコピー: ssh-copy-id -i ssh/id_ed25519.pub user@host
  3. ホスト上で /etc/sudoers.d/fencepost を作成し、必要なNOPASSWDルールを記述
  4. 再ビルド: docker compose up -d --build

通知

config.yaml に設定し、NOTIFICATIONS_API_KEY 環境変数を指定すると、FencePostはダッシュボードの更新ごとに変更イベントを投稿します。

  • UFWが有効化/無効化された
  • ルールが追加/削除された(ルール詳細を含む)
  • 新しい未カバーの外部ポート
  • ホストが到達不能/復旧した

イベントには冪等性キーが含まれ、重複を防ぎます。

ライセンス

MIT

ツールをダウンロード
/diagnose
ルール単位のトレース可視化を備えた接続診断ツール
/loginセッションベースの認証
セクション目的
timezone表示するタイムスタンプのIANAタイムゾーン(例:Australia/Melbourne、UTC)
hostsSSHターゲットの配列:name、hostname、ssh_user、ssh_port、is_docker_host
sshkey_path(秘密鍵へのパス)と timeout(秒)
networksVLAN用のCIDR-to-nameマッピング。ルールの説明と診断で使用
devices診断ページのクイック選択ボタン用の名前付きIP
notificationsオプションのウェブフック:url、channel(APIキーは環境変数で設定)
変数デフォルト説明
FENCEPOST_USERNAMEadminログインユーザー名
FENCEPOST_PASSWORDfencepostログインパスワード
FENCEPOST_SECRET_KEYchange-meセッションCookie署名キー
FENCEPOST_CONFIGconfig.yaml設定ファイルへのパス
NOTIFICATIONS_API_KEY通知ウェブフックのBearerトークン