Bastillion est une console SSH basée sur le Web qui gère de manière centralisée l'accès administratif aux systèmes. L'administration basée sur le Web est combinée à la gestion et à la distribution des clés SSH publiques des utilisateurs. La gestion et l'administration des clés sont basées sur des profils attribués à des utilisateurs définis.
Les administrateurs peuvent se connecter en utilisant une authentification à deux facteurs avec Authy ou Google Authenticator. De là, ils peuvent gérer leurs clés SSH publiques ou se connecter à leurs systèmes via un shell Web. Les commandes peuvent être partagées entre les shells pour faciliter l’application des correctifs et éliminer l’exécution de commandes redondantes.
Bastillion superpose TLS/SSL à SSH et agit comme un hôte bastion pour l'administration. Les protocoles sont empilés (TLS/SSL + SSH) afin que l'infrastructure ne puisse pas être exposée via le tunneling/la redirection de port. Plus de détails peuvent être trouvés dans le livre blanc suivant : Implémentation d'un système tiers de confiance pour Secure Shell. De plus, la gestion des clés SSH est activée par défaut pour empêcher les clés publiques non gérées et appliquer les meilleures pratiques.
Bastillion est disponible pour une utilisation gratuite sous la licence publique Prosperity.
https://github.com/bastillion-io/Bastillion/releases
ou achetez sur le marché AWS
https://aws.amazon.com/marketplace/pp/Loophole-LLC-Bastillion/B076PNFPCL
De plus, Bastillion peut être installé sur FreeBSD via le système de ports FreeBSD. Pour installer via le package binaire, exécutez simplement :
pkg install security/bastillion
Open-JDK / Oracle-JDK - 1.9 ou supérieur
apt-get installer openjdk-9-jdk
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Installez Authy ou Google Authenticator pour activer l'authentification à deux facteurs avec Android ou iOS
Application | Androïde | IOS |
---|---|---|
Authentifié | Google Play | iTunes |
Authentificateur Google | Google Play | iTunes |
Télécharger bastillion-jetty-vXX.XX.tar.gz
https://github.com/bastillion-io/Bastillion/releases
Exporter les variables d'environnement
pour Linux/Unix/OSX
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
pour Windows
set JAVA_HOME=C:pathtojdk
set PATH=%JAVA_HOME%bin;%PATH%
Démarrer Basillion
pour Linux/Unix/OSX
./startBastillion.sh
pour Windows
startBastillion.bat
Plus de documentation sur : https://www.bastillion.io/docs/index.html
Installez Maven 3 ou supérieur
apt-get installer maven
http://maven.apache.org
Exporter les variables d'environnement
export JAVA_HOME=/path/to/jdk
export M2_HOME=/path/to/maven
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
Dans le répertoire qui contient l'exécution de pom.xml
mvn package jetty:run
Remarque : effectuer un nettoyage mvn supprimera la base de données H2 et effacera toutes les données.
Ouvrez le navigateur sur https://<quelle que soit l'adresse IP>:8443
Connectez-vous avec
username:admin
password:changeme
Remarque : Lors de l'utilisation de l'instance AMI, le mot de passe est par défaut <Instance ID>. De plus, l'AMI utilise le port 443 comme dans https://<Instance IP>:443
Par défaut, Bastillion écrasera toutes les valeurs du fichier approved_keys spécifié pour un système. Vous pouvez désactiver la gestion des clés en modifiant le fichier BastillionConfig.properties et utiliser Bastillion uniquement comme hôte bastion. Ce fichier se trouve dans le répertoire jetty/bastillion/WEB-INF/classes. (ou le répertoire src/main/resources si vous construisez à partir des sources)
#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
De plus, le fichierauthorized_keys est mis à jour/actualisé périodiquement en fonction des relations définies dans l'application. Si la gestion des clés est activée, l'intervalle d'actualisation peut être spécifié dans le fichier BastillionConfig.properties.
#authorized_keys refresh interval in minutes (no refresh for <=0)
authKeysRefreshInterval=120
Par défaut, Bastillion générera et distribuera les clés SSH gérées par les administrateurs tout en leur faisant télécharger le privé généré. Cela oblige les administrateurs à utiliser des phrases secrètes fortes pour les clés définies sur les systèmes. La clé privée n'est disponible en téléchargement qu'une seule fois et n'est pas stockée côté application. Pour désactiver et autoriser les administrateurs à définir n'importe quelle clé publique, modifiez 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 génère sa propre clé SSH publique/privée lors du démarrage initial à utiliser lors de l'enregistrement des systèmes. Vous pouvez spécifier une paire de clés SSH personnalisée dans le fichier BastillionConfig.properties.
Par exemple:
#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
Après le démarrage et une fois la clé enregistrée, elle peut ensuite être supprimée du système. La phrase secrète et les chemins de clé seront supprimés du fichier de configuration.
Les paramètres de la base de données peuvent être ajustés dans les propriétés de configuration.
#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;
Par défaut, la banque de données est définie comme intégrée, mais une base de données H2 distante peut être prise en charge en ajustant l'URL de connexion.
#Connection URL to the DB
dbConnectionURL=jdbc:h2:tcp://<host>:<port>/~/bastillion;CIPHER=AES;
L'authentification externe peut être activée via BastillionConfig.properties.
Par exemple:
#specify a external authentication module (ex: ldap-ol, ldap-ad). Edit the jaas.conf to set connection details
jaasModule=ldap-ol
Les détails de connexion doivent être définis dans le fichier 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;
};
Les administrateurs seront ajoutés au fur et à mesure de leur authentification et les profils des systèmes pourront être attribués par des utilisateurs disposant de tous les privilèges.
Les rôles LDAP des utilisateurs peuvent être mappés aux profils définis dans Bastillion via l'utilisation de org.eclipse.jetty.jaas.spi.LdapLoginModule.
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";
};
Les utilisateurs seront ajoutés/supprimés des profils définis lors de leur connexion et lorsque le nom du rôle correspond au nom du profil.
L'audit est désactivé par défaut. Les journaux d'audit peuvent être activés via log4j2.xml en supprimant les commentaires de io.bastillion.manage.util.SystemAudit et des définitions d'audit-appender .
https://github.com/bastillion-io/Bastillion/blob/master/src/main/resources/log4j2.xml#L19-L22
L'audit via l'application n'est qu'une preuve de concept. Il peut être activé dans BastillionConfig.properties.
#enable audit --set to true to enable
enableInternalAudit=true
Un merci spécial va à ces projets incroyables qui rendent cela (et d’autres grands projets) possible.
Les dépendances tierces sont mentionnées dans le fichier 3rdPartyLicenses.md
Bastillion est disponible pour une utilisation sous la licence publique Prosperity.
Loophole, LLC - Sean Kavanagh