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

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 の中核機能と原則を掘り下げたブログ記事のシリーズです:
その他にも役立つリソース:
The Bastion を機能させるために、イングレス側またはエグレス側で特別なものは必要ありません。
接続にはおなじみの ssh クライアントだけが必要であり、反対側では標準の sshd サーバーがあれば十分です。これには、例えば、カスタムソフトウェアをインストールする可能性がないネットワークデバイスも含まれます。
低セキュリティの暗号アルゴリズムや telnet のみをサポートする古いデバイスは、ファイアウォールでインターネットから隠し、The Bastion のみを許可することで、イングレス側では高セキュリティグレードの接続のみを許可し、低セキュリティのトレードオフを回避できます。
オンラインドキュメント または doc/ フォルダにある対応するテキストベースのバージョンを参照してください。
これは数秒で The Bastion をテストする良い方法ですが、本番環境でコンテナ化を使用することを真剣に考えている場合はFAQ を読んでください。
サンドボックスイメージは以下のアーキテクチャで利用可能です:linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/s390x。
Docker イメージを実行しましょう:
docker run -d -p 22 --name bastiontest ovhcom/the-bastion:sandbox
公開 SSH 鍵を手元に用意し、最初の管理者アカウントを設定します:
docker exec -it bastiontest /opt/bastion/bin/admin/setup-first-admin-account.sh poweruser auto
これでデフォルト設定で起動しました!便利な bastion エイリアスを設定し、info コマンドをテストしましょう:
PORT=$(docker port bastiontest | cut -d: -f2)
alias bastion="ssh [email protected] -tp $PORT -- "
bastion --osh info
bastion の管理者として認識され、すべてのコマンドにアクセスできることが表示されるはずです。インタラクティブモードに入りましょう:
bastion -i
これは複数の --osh プラグインを連続して呼び出すのに便利です。ヘルプを表示するには:
$> help
bastion を経由してリモートマシンへの接続を試したい場合は、エグレス鍵を取得します:
$> selfListEgressKeys
この公開鍵を、接続先アカウントのリモートマシンの .ssh/ フォルダ内の authorized_keys にコピーし、次のコマンドを実行します:
$> selfAddPersonalAccess --host <remote_host> --user <remote_account_name> --port-any
$> ssh <remote_account_name>@<remote_host>
インタラクティブモードを使わずに直接接続することもできます:
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 ファイルのカスタマイズをお忘れなく。
以下の Linux ディストリビューションは各リリースでテストされていますが、これはセキュリティ製品であるため、最新の安定版を使用することを強くお勧めします:
その他のいわゆる「モダン」な Linux バージョンは各リリースでテストされていませんが、軽微な調整で動作するはずです。
以下の OS も各リリースでテストされています:
FreeBSD は、利用可能な pam プラグインのセットが限られているため、部分的な MFA サポートのみです。追加のパスワードまたは TOTP 要素のいずれかを設定できますが、両方を同時に設定することはできません。
perltidy の下で実行されますperlcritic の下でも実行されます最も保守的で、慎重で、偏執的なコーディングプロセスであっても、コードにはバグがあるため、盲目的に信頼すべきではありません。そのため、bastion は自身のコードを信頼しません。以下に示すように、オペレーティングシステムのセキュリティプリミティブを活用して追加のセキュリティを確保しています。
よく知られ、信頼されている UNIX の任意アクセス制御(DAC)を使用:
bastion メインスクリプトは bastion ユーザーのシステムシェルとして宣言されています:
bash のような)シェルアクセスを持つユーザーはいませんコードはモジュール化されています
ssh アクセスの有効化を行います拡張システム権限が必要なコードはすべて、ヘルパーと呼ばれるモジュールでメインコードから分離されています
sudo の下でのみ実行されますsudoers 設定はコマンドに固有のシステムグループにアタッチされ、必要性に基づいてアカウントに付与されますsudoers 設定にハードコードされています-T)は sudo で実行されるすべてのコードに使用され、ユーザー入力がロジックに干渉するのを防ぎ、即座に実行を停止しますsudo で実行されるコードは呼び出し元を信頼せず、すべての入力を再チェックしますsyslog(リモート syslog サーバーにも送信して、bastion 管理者でさえ痕跡を改ざんできないようにする必要があります)、および/またはsqlite3 データベースttyrec で記録されます。これらの記録を暗号化してリモートのエスクローファイラーにプッシュするためのヘルパースクリプトが提供されていますコミュニティによってメンテナンスされている関連ツールの非網羅的なリスト:
Apache License, Version 2.0(以下「ライセンス」)の下でライセンスされています。 このファイルは、ライセンスに準拠する場合を除き、使用することはできません。 ライセンスのコピーは以下から入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用法で義務付けられている場合、または書面で同意された場合を除き、ライセンスに基づいて配布されるソフトウェアは、「現状のまま」、明示的または黙示的ないかなる保証もなく配布されます。詳細については、ライセンスで規定されている許可および制限を参照してください。
イングレス側とエグレス側の間でプロトコルブレイクが実行され、ほとんどのプロトコルベースの脆弱性を無効にします