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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
the-bastion — SSHアクセスのための認証、認可、トレーサビリティ、および監査可能性。 | Kitploit
ツール/GitHubGitHub/ovh/the-bastion
認証と認可構成監査ネットワークセキュリティペネトレーションテストユーティリティとフレームワークアイデンティティ&アクセス管理 (IAM)レッドチーミング
GitHubovh/the-bastion

the-bastion

SSHアクセスのための認証、認可、トレーサビリティ、および監査可能性。

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

The Bastion Logo

🔒 The Bastion

概要

Bastion(バスティオン)は、運用チーム(システム管理者、開発者、データベース管理者など)が、通常 ssh を使用して、デバイス(サーバー、仮想マシン、クラウドインスタンス、ネットワーク機器など)に安全に接続するための唯一のエントリポイントとして使用されるマシンのクラスターです。

The Bastion は、インフラストラクチャ全体に対する認証、認可、トレーサビリティ、および監査可能性のメカニズムを提供します。

ユーザーとインフラストラクチャの間に位置することで、The Bastion は抽象化のレイヤーを追加し、インフラストラクチャが運用チームのメンバーを個別に知る必要をなくします。

各チームメンバーは The Bastion に個別のアカウントを持ち、1つまたは複数の bastion グループのメンバーになることができ、それによって1つまたは複数のインフラストラクチャへのアクセスが許可される場合があります。インフラストラクチャのデバイスは、自分たちが所属する可能性のある bastion グループを知り、信頼するだけで済みます。

The Bastion のきめ細かい RBAC により、任意のアカウント(グループスコープまたは bastion 全体)に一部の責任を委任することが可能です。これには、自動化によってアカウントのライフサイクルを管理するために使用されるアカウント(人事管理システム、LDAP、AD にリンク)、グループの ACL を最新に保つため(CMDB にリンク)のアカウントなどが含まれます。自動化プロセスは、SSH 経由の JSON API を通じて簡単に実装できます。

ナレッジリソース

素敵な図を見ながらさらに詳しく知りたいですか?以下は、The Bastion の中核機能と原則を掘り下げたブログ記事のシリーズです:

  • パート1 - 創世記
  • パート2 - 委任のめまい
  • パート3 - セキュリティを中核に
  • パート4 - 新時代

その他にも役立つリソース:

  • オンラインドキュメント
  • (フランス語の動画、英語のスライド)The Bastion at the Very Tech Trip 2023 – The Bastion を使用した場合と使用しない場合のインフラ管理のケーススタディ
  • (フランス語の動画、英語のスライド)The Bastion at the OSSIR, 2021 – コア原則を簡単に説明し、レルム機能を詳述し、最後に技術実装の選択がなぜセキュリティを強化するのかを詳しく説明(コードに意図的にセキュリティ脆弱性を追加して証明!)
  • (フランス語のポッドキャスト)The Bastion at NoLimitSecu, 2021 – 質疑応答形式のインタビュー

♻️ 環境に対するゼロアサンプション

The Bastion を機能させるために、イングレス側またはエグレス側で特別なものは必要ありません。

接続にはおなじみの ssh クライアントだけが必要であり、反対側では標準の sshd サーバーがあれば十分です。これには、例えば、カスタムソフトウェアをインストールする可能性がないネットワークデバイスも含まれます。

低セキュリティの暗号アルゴリズムや telnet のみをサポートする古いデバイスは、ファイアウォールでインターネットから隠し、The Bastion のみを許可することで、イングレス側では高セキュリティグレードの接続のみを許可し、低セキュリティのトレードオフを回避できます。

➰ 信頼性

  • 使用するのはよく知られた少数のライブラリのみ。サードパーティのコードが少ないほど、攻撃対象領域は小さくなります
  • The Bastion は自己完結型に設計されています。認証や認可のフェーズにおいて、データベース、他のデーモン、他のマシン、サードパーティのクラウドサービスなどの依存関係がないため、統計的にダウンタイムが減少します
  • 複数の bastion インスタンスがクラスターを形成し、任意のインスタンスを常に使用可能にする(アクティブ/アクティブ方式)高可用性を設定できます

:godmode: 非網羅的な機能一覧

  • 個人およびグループアクセススキーム。グループロールの委任により、セキュリティのトレードオフなしにチームの自律性を確保
  • イングレス接続とエグレス接続間の SSH プロトコルブレイク
  • インタラクティブセッションの記録(標準 ttyrec ファイル)
  • 非インタラクティブセッションの記録(ttyrec による stdout および stderr)
  • 簡単な SIEM 消費のための syslog を通じた広範なロギングサポート
  • 認証機能には、公開鍵認証に加えてMFA/2FA(パスワード、TOTP)のサポートを含む
  • Yubico PIVキーのアテステーションチェックとイングレス接続側での強制をサポート
  • イングレス接続側でのmoshサポート
  • リモートサーバーへのファイルのアップロード/ダウンロードのためのscp、sftp、rsyncパススルーサポート
  • netconf SSH サブシステムパススルーサポート
  • レルムをサポートし、異なる2つの企業の bastion 間に信頼関係を構築。認証と認可のフェーズを分割しながらも、ローカルポリシーを強制
  • エグレス側での SSH パスワード自動ログインをサポート(pubkey 認証をサポートしないレガシーデバイス向け)、イングレス側では適切な pubkey 認証を強制
  • エグレス側での telnet パスワード自動ログインをサポート(SSH をサポートしない古いデバイス向け)、イングレス側では適切な SSH pubkey 認証を強制
  • 中間者認証と認可処理を含むHTTPS プロキシをサポート。イングレスとエグレスのパスワードを分離(主にネットワークデバイス API に有用)

🔧 The Bastion のインストール、アップグレード、使用方法

オンラインドキュメント または doc/ フォルダにある対応するテキストベースのバージョンを参照してください。

🎥 クイック接続と再生の例

asciicast

⚡ TL;DR: テストする: Docker を使用した使い捨てサンドボックス

これは数秒で The Bastion をテストする良い方法ですが、本番環境でコンテナ化を使用することを真剣に考えている場合はFAQ を読んでください。

サンドボックスイメージは以下のアーキテクチャで利用可能です:linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/s390x。

Docker イメージを実行しましょう:

root@kitploit:~
docker run -d -p 22 --name bastiontest ovhcom/the-bastion:sandbox

公開 SSH 鍵を手元に用意し、最初の管理者アカウントを設定します:

root@kitploit:~
docker exec -it bastiontest /opt/bastion/bin/admin/setup-first-admin-account.sh poweruser auto

これでデフォルト設定で起動しました!便利な bastion エイリアスを設定し、info コマンドをテストしましょう:

root@kitploit:~
PORT=$(docker port bastiontest | cut -d: -f2)
alias bastion="ssh [email protected] -tp $PORT -- "
bastion --osh info

bastion の管理者として認識され、すべてのコマンドにアクセスできることが表示されるはずです。インタラクティブモードに入りましょう:

root@kitploit:~
bastion -i

これは複数の --osh プラグインを連続して呼び出すのに便利です。ヘルプを表示するには:

root@kitploit:~
$> help

bastion を経由してリモートマシンへの接続を試したい場合は、エグレス鍵を取得します:

root@kitploit:~
$> selfListEgressKeys

この公開鍵を、接続先アカウントのリモートマシンの .ssh/ フォルダ内の authorized_keys にコピーし、次のコマンドを実行します:

root@kitploit:~
$> selfAddPersonalAccess --host <remote_host> --user <remote_account_name> --port-any
$> ssh <remote_account_name>@<remote_host>

インタラクティブモードを使わずに直接接続することもできます:

root@kitploit:~
bastion <remote_account_name>@<remote_machine_host_or_ip>

これで完了です!もちろん、これ以上に多くのことがあり、ドキュメントは doc/ フォルダとオンラインで入手できます。 bastion のヘルプ (bastion --help) と各 osh プラグインのヘルプ (bastion --osh command --help) を必ず確認してください。 また、/etc/bastion/bastion.conf(Linux の場合)にある bastion.conf ファイルのカスタマイズをお忘れなく。

🔀 インストール対応 OS

以下の Linux ディストリビューションは各リリースでテストされていますが、これはセキュリティ製品であるため、最新の安定版を使用することを強くお勧めします:

  • Debian 13 (Trixie), 12 (Bookworm), 11 (Bullseye)
  • RockyLinux 10.x, 9.x, 8.x
  • Ubuntu LTS 26.04, 24.04, 22.04
  • OpenSUSE Leap 16.0

その他のいわゆる「モダン」な Linux バージョンは各リリースでテストされていませんが、軽微な調整で動作するはずです。

以下の OS も各リリースでテストされています:

  • FreeBSD 15.1, 15.0, 14.4

FreeBSD は、利用可能な pam プラグインのセットが限られているため、部分的な MFA サポートのみです。追加のパスワードまたは TOTP 要素のいずれかを設定できますが、両方を同時に設定することはできません。

🆗 コード品質

  • コードは perltidy の下で実行されます
  • コードは perlcritic の下でも実行されます
  • 各リリース前に機能テストが実施されます

🛂 セキュリティを中核に

最も保守的で、慎重で、偏執的なコーディングプロセスであっても、コードにはバグがあるため、盲目的に信頼すべきではありません。そのため、bastion は自身のコードを信頼しません。以下に示すように、オペレーティングシステムのセキュリティプリミティブを活用して追加のセキュリティを確保しています。

  • よく知られ、信頼されている UNIX の任意アクセス制御(DAC)を使用:

    • Bastion ユーザーは実際のシステムユーザーにマッピングされます
    • Bastion グループは実際のシステムグループにマッピングされます
    • すべてのコードは、アクションを許可する前に常に権限をチェックします
    • UNIX DAC は、コードがだまされてアクションを許可した場合でも、アクションが成功するのを防ぐ安全ベルトとして使用されます
  • bastion メインスクリプトは bastion ユーザーのシステムシェルとして宣言されています:

    • システム上で実際の(bash のような)シェルアクセスを持つユーザーはいません
    • すべてのコードは、権限のないユーザーのシステムアカウント権限で実行されます
    • ユーザーが実際のシェルにエスケープできたとしても、アクセス権のないマシンには接続できません。SSH 鍵へのファイルシステムレベルの読み取りアクセス権がないためです
  • コードはモジュール化されています

    • メインコードは主に権限のチェック、アクションのログ記録、他のマシンへの ssh アクセスの有効化を行います
    • プラグインと呼ばれるすべてのサイドコマンドは、メインコードから分離されたモジュールにあります
    • モジュールはオープンまたは制限付きのいずれかです
      • 特定の制限付きプラグインを実行できるのは、必要性に基づいて特別に許可されたアカウントのみです
      • これはコードによってチェックされ、UNIX DAC によっても強制されます(プラグインは、プラグインに固有のシステムグループのみが読み取りおよび実行可能です)
  • 拡張システム権限が必要なコードはすべて、ヘルパーと呼ばれるモジュールでメインコードから分離されています

    • ヘルパーは sudo の下でのみ実行されます
    • sudoers 設定はコマンドに固有のシステムグループにアタッチされ、必要性に基づいてアカウントに付与されます
    • ヘルパーは、コマンドに固有のシステムグループのみが読み取りおよび実行可能です
    • ヘルパーのパスとその不変パラメータの一部は sudoers 設定にハードコードされています
    • Perl の汚染モード(-T)は sudo で実行されるすべてのコードに使用され、ユーザー入力がロジックに干渉するのを防ぎ、即座に実行を停止します
    • sudo で実行されるコードは呼び出し元を信頼せず、すべての入力を再チェックします

🔍 監査可能性

  • Bastion 管理者は bastion のロジックを使用して自身に接続して管理する必要があります(または、別の bastion を使用する方が良い)。これにより、すべての場合において監査可能性が確保されます
  • すべてのアクセスとアクション(許可されたものも拒否されたものも)は次の方法でログ記録されます:
    • syslog(リモート syslog サーバーにも送信して、bastion 管理者でさえ痕跡を改ざんできないようにする必要があります)、および/または
    • 簡単な検索のためのローカル sqlite3 データベース
  • すべてのセッションは ttyrec で記録されます。これらの記録を暗号化してリモートのエスクローファイラーにプッシュするためのヘルパースクリプトが提供されています
  • このコードは、いくつかの PCI-DSS、ISO 27001、SOC1、SOC2 認定環境で本番運用されています

🔗 関連

依存関係

  • ovh-ttyrec – ttyrec(端末(tty)レコーダー)の拡張だが互換性のあるバージョン

オプションツール

  • yubico-piv-checker – PIV キーと証明書の有効性をチェックする自己完結型の Go バイナリ。The Bastion の PIV 対応機能を有効にするためのオプション
  • puppet-thebastion (GitHub) – Puppet モジュール。The Bastion マシンの設定を自動化および保守するため
  • the-bastion-ansible-wrapper – Ansible プレイブックを The Bastion 経由で実行可能にするラッパー
  • debian-cis – CIS 推奨事項に従って Debian ホストの強化を適用および監視するスクリプト

コミュニティツール

コミュニティによってメンテナンスされている関連ツールの非網羅的なリスト:

  • chef-cookbook – Chef クックブック。the-bastion をインストールし、デフォルト設定をセットアップするため
  • ansible role – Ansible ロール。the-bastion をインストールおよび設定するため

📝 ライセンス

Apache License, Version 2.0(以下「ライセンス」)の下でライセンスされています。 このファイルは、ライセンスに準拠する場合を除き、使用することはできません。 ライセンスのコピーは以下から入手できます。

root@kitploit:~
http://www.apache.org/licenses/LICENSE-2.0

適用法で義務付けられている場合、または書面で同意された場合を除き、ライセンスに基づいて配布されるソフトウェアは、「現状のまま」、明示的または黙示的ないかなる保証もなく配布されます。詳細については、ライセンスで規定されている許可および制限を参照してください。

ツールをダウンロード
  • 非特権コードと特権コードの間の通信は JSON を使用して行われます
  • イングレス側とエグレス側の間でプロトコルブレイクが実行され、ほとんどのプロトコルベースの脆弱性を無効にします