Bastillion は、システムへの管理アクセスを集中管理する Web ベースの SSH コンソールです。 Web ベースの管理は、ユーザーの公開 SSH キーの管理および配布と組み合わされます。キーの管理と管理は、定義されたユーザーに割り当てられたプロファイルに基づいて行われます。
管理者は、Authy または Google Authenticator による 2 要素認証を使用してログインできます。そこから、公開 SSH キーを管理したり、Web シェルを通じてシステムに接続したりできます。コマンドをシェル間で共有できるため、パッチ適用が容易になり、冗長なコマンド実行が排除されます。
Bastillion は SSH の上に TLS/SSL を重ね、管理用の踏み台ホストとして機能します。プロトコルはスタックされている (TLS/SSL + SSH) ため、トンネリングやポート転送を通じてインフラストラクチャを公開することはできません。詳細については、ホワイトペーパー「セキュア シェル用の信頼できるサードパーティ システムの実装」を参照してください。また、公開キーが管理されていないことを防ぎ、ベスト プラクティスを適用するために、SSH キー管理がデフォルトで有効になっています。
Bastillion は Prosperity Public License に基づいて無料で使用できます
https://github.com/bastillion-io/Bastillion/releases
または AWS マーケットプレイスから購入する
https://aws.amazon.com/marketplace/pp/Loophole-LLC-Bastillion/B076PNFPCL
また、Bastillion は、FreeBSD ポート システムを介して FreeBSD にインストールできます。バイナリ パッケージ経由でインストールするには、次のコマンドを実行するだけです。
pkg install security/bastillion
Open-JDK / Oracle-JDK - 1.9 以降
apt-get インストール openjdk-9-jdk
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Authy または Google Authenticator をインストールして、 Android または iOS で 2 要素認証を有効にします
応用 | アンドロイド | iOS |
---|---|---|
認証済み | Googleプレイ | iTunes |
Google認証システム | Googleプレイ | iTunes |
bastillion-jetty-vXX.XX.tar.gz をダウンロード
https://github.com/bastillion-io/Bastillion/releases
環境変数をエクスポートする
Linux/Unix/OSX用
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
Windows用
set JAVA_HOME=C:pathtojdk
set PATH=%JAVA_HOME%bin;%PATH%
スタートバスティリオン
Linux/Unix/OSX用
./startBastillion.sh
Windows用
startBastillion.bat
その他のドキュメント: https://www.bastillion.io/docs/index.html
Maven 3 以降をインストールする
apt-get インストール Maven
http://maven.apache.org
環境変数をエクスポートする
export JAVA_HOME=/path/to/jdk
export M2_HOME=/path/to/maven
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
pom.xml を含むディレクトリで実行します。
mvn package jetty:run
注: mvn clean を実行すると、H2 DB が削除され、すべてのデータが消去されます。
ブラウザを開いて https://<任意の IP>:8443 にアクセスします
でログイン
username:admin
password:changeme
注: AMI インスタンスを使用する場合、パスワードはデフォルトで <インスタンス ID> に設定されます。また、AMI は https://<インスタンス IP>:443 のようにポート 443 を使用します。
デフォルトでは、Bastillion はシステムの指定されたauthorized_keys ファイル内のすべての値を上書きします。 BastillionConfig.properties ファイルを編集することでキー管理を無効にし、Bastillion を要塞ホストとしてのみ使用できます。このファイルは、jetty/bastillion/WEB-INF/classes ディレクトリにあります。 (ソースからビルドする場合は src/main/resources ディレクトリ)
#set to false to disable key management. If false, the Bastillion public key will be appended to the authorized_keys file (instead of it being overwritten completely).
keyManagementEnabled=false
また、authorized_keys ファイルは、アプリケーションで定義された関係に基づいて定期的に更新/リフレッシュされます。キー管理が有効な場合は、BastillionConfig.properties ファイルで更新間隔を指定できます。
#authorized_keys refresh interval in minutes (no refresh for <=0)
authKeysRefreshInterval=120
デフォルトでは、Bastillion は管理者が管理する SSH キーを生成して配布し、生成されたプライベートキーを管理者にダウンロードさせます。これにより、管理者はシステムに設定されているキーに強力なパスフレーズを使用する必要があります。秘密キーは一度だけダウンロードでき、アプリケーション側には保存されません。管理者が公開キーを設定できるようにするには、BastillionConfig.properties を編集します。
#set to true to generate keys when added/managed by users and enforce strong passphrases set to false to allow users to set their own public key
forceUserKeyGeneration=false
Bastillion は、システムの登録時に使用するために、初回起動時に独自の公開/秘密 SSH キーを生成します。 BastillionConfig.properties ファイルでカスタム SSH キー ペアを指定できます。
例えば:
#set to true to regenerate and import SSH keys --set to true
resetApplicationSSHKey=true
#SSH Key Type 'dsa' or 'rsa'
sshKeyType=rsa
#private key --set pvt key
privateKey=/Users/kavanagh/.ssh/id_rsa
#public key --set pub key
publicKey=/Users/kavanagh/.ssh/id_rsa.pub
#default passphrase --leave blank if passphrase is empty
defaultSSHPassphrase=myPa$$w0rd
起動後、キーが登録されると、システムから削除できます。パスフレーズとキーのパスは構成ファイルから削除されます。
データベース設定は構成プロパティで調整できます。
#Database user
dbUser=bastillion
#Database password
dbPassword=p@$$w0rd!!
#Database JDBC driver
dbDriver=org.h2.Driver
#Connection URL to the DB
dbConnectionURL=jdbc:h2:keydb/bastillion;CIPHER=AES;
デフォルトでは、データストアは埋め込みとして設定されていますが、接続 URL を調整することでリモート H2 データベースをサポートできます。
#Connection URL to the DB
dbConnectionURL=jdbc:h2:tcp://<host>:<port>/~/bastillion;CIPHER=AES;
外部認証は、BastillionConfig.properties を通じて有効にすることができます。
例えば:
#specify a external authentication module (ex: ldap-ol, ldap-ad). Edit the jaas.conf to set connection details
jaasModule=ldap-ol
接続の詳細はjaas.confファイルに設定する必要があります
ldap-ol {
com.sun.security.auth.module.LdapLoginModule SUFFICIENT
userProvider="ldap://hostname:389/ou=example,dc=bastillion,dc=com"
userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))"
authzIdentity="{cn}"
useSSL=false
debug=false;
};
管理者は認証されると追加され、完全な権限を持つユーザーがシステムのプロファイルを割り当てることができます。
ユーザーの LDAP ロールは、org.eclipse.jetty.jaas.spi.LdapLoginModule を使用して、Bastillion で定義されたプロファイルにマップできます。
ldap-ol-with-roles {
//openldap auth with roles that can map to profiles
org.eclipse.jetty.jaas.spi.LdapLoginModule required
debug="false"
useLdaps="false"
contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
hostname="<SERVER>"
port="389"
bindDn="<BIND-DN>"
bindPassword="<BIND-DN PASSWORD>"
authenticationMethod="simple"
forceBindingLogin="true"
userBaseDn="ou=users,dc=bastillion,dc=com"
userRdnAttribute="uid"
userIdAttribute="uid"
userPasswordAttribute="userPassword"
userObjectClass="inetOrgPerson"
roleBaseDn="ou=groups,dc=bastillion,dc=com"
roleNameAttribute="cn"
roleMemberAttribute="member"
roleObjectClass="groupOfNames";
};
ユーザーは、ログイン時、およびロール名がプロファイル名と一致する場合に、定義されたプロファイルに追加または削除されます。
監査はデフォルトでは無効になっています。監査ログは、 io.bastillion.manage.util.SystemAuditおよびAudit-appender定義のコメントを解除することで、 log4j2.xmlを通じて有効にできます。
https://github.com/bastillion-io/Bastillion/blob/master/src/main/resources/log4j2.xml#L19-L22
アプリケーションによる監査は単なる概念実証です。 BastillionConfig.properties で有効にできます。
#enable audit --set to true to enable
enableInternalAudit=true
これ (および他の素晴らしいプロジェクト) を可能にしてくれた素晴らしいプロジェクトに特別な感謝を送ります。
サードパーティの依存関係については、 3rdPartyLicenses.mdに記載されています。
Bastillion は Prosperity Public License に基づいて使用できます
Loophole, LLC - ショーン・カバナー