Bastillion es una consola SSH basada en web que gestiona de forma centralizada el acceso administrativo a los sistemas. La administración basada en web se combina con la gestión y distribución de las claves SSH públicas del usuario. La gestión y administración de claves se basa en perfiles asignados a usuarios definidos.
Los administradores pueden iniciar sesión utilizando la autenticación de dos factores con Authy o Google Authenticator. Desde allí pueden administrar sus claves SSH públicas o conectarse a sus sistemas a través de un shell web. Los comandos se pueden compartir entre shells para facilitar la aplicación de parches y eliminar la ejecución de comandos redundantes.
Bastillion coloca TLS/SSL encima de SSH y actúa como un host bastión para la administración. Los protocolos están apilados (TLS/SSL + SSH), por lo que la infraestructura no puede quedar expuesta a través de túneles/reenvío de puertos. Se pueden encontrar más detalles en el siguiente documento técnico: Implementación de un sistema de terceros confiable para Secure Shell. Además, la administración de claves SSH está habilitada de forma predeterminada para evitar claves públicas no administradas y aplicar las mejores prácticas.
Bastillion está disponible para uso gratuito bajo la Licencia Pública de Prosperidad
https://github.com/bastillion-io/Bastillion/releases
o compre en el mercado de AWS
https://aws.amazon.com/marketplace/pp/Loophole-LLC-Bastillion/B076PNFPCL
Además, Bastillion se puede instalar en FreeBSD a través del sistema de ports de FreeBSD. Para instalar a través del paquete binario, simplemente ejecute:
pkg install security/bastillion
Open-JDK / Oracle-JDK - 1.9 o superior
apt-get instalar openjdk-9-jdk
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Instale Authy o Google Authenticator para habilitar la autenticación de dos factores con Android o iOS
Solicitud | Androide | iOS |
---|---|---|
autía | GooglePlay | itunes |
Autenticador de Google | GooglePlay | itunes |
Descargar bastillion-jetty-vXX.XX.tar.gz
https://github.com/bastillion-io/Bastillion/releases
Exportar variables de entorno
para Linux/Unix/OSX
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
para Windows
set JAVA_HOME=C:pathtojdk
set PATH=%JAVA_HOME%bin;%PATH%
Iniciar Bastillón
para Linux/Unix/OSX
./startBastillion.sh
para Windows
startBastillion.bat
Más documentación en: https://www.bastillion.io/docs/index.html
Instale Maven 3 o superior
apt-get instalar maven
http://maven.apache.org
Exportar variables de entorno
export JAVA_HOME=/path/to/jdk
export M2_HOME=/path/to/maven
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
En el directorio que contiene pom.xml ejecute
mvn package jetty:run
Nota: Al realizar una limpieza de mvn, se eliminará la base de datos H2 y se borrarán todos los datos.
Abra el navegador en https://<cualquier ip>:8443
Inicia sesión con
username:admin
password:changeme
Nota: Cuando se utiliza la instancia AMI, la contraseña predeterminada es <ID de instancia>. Además, la AMI utiliza el puerto 443 como en https://<IP de instancia>:443
De forma predeterminada, Bastillion sobrescribirá todos los valores en el archivo de claves_autorizadas especificadas para un sistema. Puede deshabilitar la administración de claves editando el archivo BastillionConfig.properties y usar Bastillion solo como host bastión. Este archivo se encuentra en el directorio jetty/bastillion/WEB-INF/classes. (o el directorio src/main/resources si se construye desde la fuente)
#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
Además, el archivo Authorized_keys se actualiza periódicamente según las relaciones definidas en la aplicación. Si la administración de claves está habilitada, el intervalo de actualización se puede especificar en el archivo BastillionConfig.properties.
#authorized_keys refresh interval in minutes (no refresh for <=0)
authKeysRefreshInterval=120
De forma predeterminada, Bastillion generará y distribuirá las claves SSH administradas por los administradores mientras les pide que descarguen las privadas generadas. Esto obliga a los administradores a utilizar frases de contraseña seguras para las claves configuradas en los sistemas. La clave privada solo está disponible para descargar una vez y no se almacena en la aplicación. Para deshabilitar y permitir que los administradores establezcan cualquier clave pública, edite 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 genera su propia clave SSH pública/privada durante el inicio inicial para usarla al registrar sistemas. Puede especificar un par de claves SSH personalizado en el archivo BastillionConfig.properties.
Por ejemplo:
#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
Después del inicio y una vez registrada la clave, se puede eliminar del sistema. La frase de contraseña y las rutas clave se eliminarán del archivo de configuración.
La configuración de la base de datos se puede ajustar en las propiedades de configuración.
#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;
De forma predeterminada, el almacén de datos está configurado como integrado, pero se puede admitir una base de datos H2 remota ajustando la URL de conexión.
#Connection URL to the DB
dbConnectionURL=jdbc:h2:tcp://<host>:<port>/~/bastillion;CIPHER=AES;
La autenticación externa se puede habilitar a través de BastillionConfig.properties.
Por ejemplo:
#specify a external authentication module (ex: ldap-ol, ldap-ad). Edit the jaas.conf to set connection details
jaasModule=ldap-ol
Los detalles de la conexión deben configurarse en el archivo 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;
};
Los administradores se agregarán a medida que se autentiquen y los usuarios con privilegios completos podrán asignar perfiles de sistemas.
Los roles LDAP de usuario se pueden asignar a perfiles definidos en Bastillion mediante el uso 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";
};
Los usuarios serán agregados/eliminados de perfiles definidos cuando inicien sesión y cuando el nombre del rol coincida con el nombre del perfil.
La auditoría está deshabilitada de forma predeterminada. Los registros de auditoría se pueden habilitar a través de log4j2.xml descomentando las definiciones io.bastillion.manage.util.SystemAudit y audit-appender .
https://github.com/bastillion-io/Bastillion/blob/master/src/main/resources/log4j2.xml#L19-L22
La auditoría a través de la aplicación es sólo una prueba de concepto. Se puede habilitar en BastillionConfig.properties.
#enable audit --set to true to enable
enableInternalAudit=true
Un agradecimiento especial a estos increíbles proyectos que hacen posible este (y otros grandes proyectos).
Las dependencias de terceros se mencionan en 3rdPartyLicenses.md
Bastillion está disponible para su uso bajo la Licencia Pública de Prosperidad
Loophole, LLC - Sean Kavanagh