Bastillion ist eine webbasierte SSH-Konsole, die den administrativen Zugriff auf Systeme zentral verwaltet. Die webbasierte Verwaltung wird mit der Verwaltung und Verteilung der öffentlichen SSH-Schlüssel der Benutzer kombiniert. Die Schlüsselverwaltung und -verwaltung basiert auf Profilen, die definierten Benutzern zugewiesen sind.
Administratoren können sich mithilfe der Zwei-Faktor-Authentifizierung mit Authy oder Google Authenticator anmelden. Von dort aus können sie ihre öffentlichen SSH-Schlüssel verwalten oder sich über eine Web-Shell mit ihren Systemen verbinden. Befehle können von mehreren Shells gemeinsam genutzt werden, um das Patchen zu vereinfachen und die redundante Befehlsausführung zu vermeiden.
Bastillion legt TLS/SSL über SSH auf und fungiert als Bastion-Host für die Verwaltung. Die Protokolle sind gestapelt (TLS/SSL + SSH), sodass die Infrastruktur nicht durch Tunneling/Portweiterleitung offengelegt werden kann. Weitere Details finden Sie im folgenden Whitepaper: Implementing a Trusted Third-Party System for Secure Shell. Außerdem ist die SSH-Schlüsselverwaltung standardmäßig aktiviert, um nicht verwaltete öffentliche Schlüssel zu verhindern und Best Practices durchzusetzen.
Bastillion steht unter der Prosperity Public License zur kostenlosen Nutzung zur Verfügung
https://github.com/bastillion-io/Bastillion/releases
oder kaufen Sie es auf dem AWS-Marktplatz
https://aws.amazon.com/marketplace/pp/Loophole-LLC-Bastillion/B076PNFPCL
Außerdem kann Bastillion über das FreeBSD-Ports-System auf FreeBSD installiert werden. Um über das Binärpaket zu installieren, führen Sie einfach Folgendes aus:
pkg install security/bastillion
Open-JDK / Oracle-JDK – 1.9 oder höher
apt-get install openjdk-9-jdk
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Installieren Sie Authy oder Google Authenticator, um die Zwei-Faktor-Authentifizierung mit Android oder iOS zu ermöglichen
Anwendung | Android | iOS |
---|---|---|
Authy | Google Play | iTunes |
Google Authenticator | Google Play | iTunes |
Laden Sie bastillion-jetty-vXX.XX.tar.gz herunter
https://github.com/bastillion-io/Bastillion/releases
Umgebungsvariablen exportieren
für Linux/Unix/OSX
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
für Windows
set JAVA_HOME=C:pathtojdk
set PATH=%JAVA_HOME%bin;%PATH%
Starten Sie Bastillion
für Linux/Unix/OSX
./startBastillion.sh
für Windows
startBastillion.bat
Weitere Dokumentation unter: https://www.bastillion.io/docs/index.html
Installieren Sie Maven 3 oder höher
apt-get install maven
http://maven.apache.org
Umgebungsvariablen exportieren
export JAVA_HOME=/path/to/jdk
export M2_HOME=/path/to/maven
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
In dem Verzeichnis, das pom.xml enthält, führen Sie es aus
mvn package jetty:run
Hinweis: Durch eine MVN-Bereinigung wird die H2-Datenbank gelöscht und alle Daten gelöscht.
Öffnen Sie den Browser zu https://<welche IP>:8443
Melden Sie sich an mit
username:admin
password:changeme
Hinweis: Bei Verwendung der AMI-Instanz wird als Passwort standardmäßig die <Instanz-ID> verwendet. Außerdem verwendet das AMI Port 443 wie in https://<Instance IP>:443
Standardmäßig überschreibt Bastillion alle Werte in der angegebenen Datei „authorized_keys“ für ein System. Sie können die Schlüsselverwaltung deaktivieren, indem Sie die Datei BastillionConfig.properties bearbeiten und Bastillion nur als Bastion-Host verwenden. Diese Datei befindet sich im Verzeichnis jetty/bastillion/WEB-INF/classes. (oder das Verzeichnis src/main/resources, wenn aus dem Quellcode erstellt wird)
#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
Außerdem wird die Datei „authorized_keys“ regelmäßig basierend auf den in der Anwendung definierten Beziehungen aktualisiert/aktualisiert. Wenn die Schlüsselverwaltung aktiviert ist, kann das Aktualisierungsintervall in der Datei BastillionConfig.properties angegeben werden.
#authorized_keys refresh interval in minutes (no refresh for <=0)
authKeysRefreshInterval=120
Standardmäßig generiert und verteilt Bastillion die von Administratoren verwalteten SSH-Schlüssel, während sie die generierten privaten Schlüssel herunterladen. Dies zwingt Administratoren dazu, starke Passphrasen für Schlüssel zu verwenden, die auf Systemen festgelegt werden. Der private Schlüssel steht nur einmal zum Download zur Verfügung und wird nicht auf der Anwendungsseite gespeichert. Um zu deaktivieren und Administratoren das Festlegen öffentlicher Schlüssel zu ermöglichen, bearbeiten Sie 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 generiert beim ersten Start einen eigenen öffentlichen/privaten SSH-Schlüssel, der bei der Registrierung von Systemen verwendet wird. Sie können ein benutzerdefiniertes SSH-Schlüsselpaar in der Datei BastillionConfig.properties angeben.
Zum Beispiel:
#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
Nach dem Start und der Registrierung des Schlüssels kann dieser aus dem System entfernt werden. Die Passphrase und die Schlüsselpfade werden aus der Konfigurationsdatei entfernt.
Datenbankeinstellungen können in den Konfigurationseigenschaften angepasst werden.
#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;
Standardmäßig ist der Datenspeicher als eingebettet eingestellt, aber eine Remote-H2-Datenbank kann durch Anpassen der Verbindungs-URL unterstützt werden.
#Connection URL to the DB
dbConnectionURL=jdbc:h2:tcp://<host>:<port>/~/bastillion;CIPHER=AES;
Die externe Authentifizierung kann über BastillionConfig.properties aktiviert werden.
Zum Beispiel:
#specify a external authentication module (ex: ldap-ol, ldap-ad). Edit the jaas.conf to set connection details
jaasModule=ldap-ol
Verbindungsdetails müssen in der Datei jaas.conf festgelegt werden
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;
};
Administratoren werden hinzugefügt, wenn sie authentifiziert werden, und Profile von Systemen können von Benutzern mit vollständigen Berechtigungen zugewiesen werden.
Benutzer-LDAP-Rollen können mithilfe des org.eclipse.jetty.jaas.spi.LdapLoginModule in Bastillion definierten Profilen zugeordnet werden.
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";
};
Benutzer werden definierten Profilen hinzugefügt bzw. daraus entfernt, wenn sie sich anmelden und wenn der Rollenname mit dem Profilnamen übereinstimmt.
Die Überwachung ist standardmäßig deaktiviert. Überwachungsprotokolle können über log4j2.xml aktiviert werden, indem die io.bastillion.manage.util.SystemAudit- und die Audit-Appender -Definitionen auskommentiert werden.
https://github.com/bastillion-io/Bastillion/blob/master/src/main/resources/log4j2.xml#L19-L22
Die Prüfung durch die Anwendung ist nur ein Proof of Concept. Es kann in den BastillionConfig.properties aktiviert werden.
#enable audit --set to true to enable
enableInternalAudit=true
Besonderer Dank geht an diese tollen Projekte, die dieses (und andere tolle Projekte) möglich machen.
Abhängigkeiten von Drittanbietern werden in 3rdPartyLicenses.md erwähnt
Bastillion steht unter der Prosperity Public License zur Nutzung zur Verfügung
Loophole, LLC – Sean Kavanagh