Keybox: administrar llaves SSH en datacenters + ejecución simultanea de comandos
Keybox permite mediante una interfaz web la gestión centralizada de accesos SSH en granjas de servidores. EL acceso SSH se realiza por medio de llaves y basando su administración en perfiles de usuario o hosts.
Los administradores pueden iniciar sesión en Keybox mediante autenticación de dos factores (FreeOTP o Google Authenticator) y acceder a terminales SSH desde la web.
- Página Web de Keybox: https://github.com/skavanagh/KeyBox
- Vídeo del uso de Keybox: https://www.youtube.com/watch?v=uSodV4EJ5MU
Qué permite hacer Keybox desde su interfaz web.
- Multiplataforma, escrito en Java, Software libre y mus simple de usar e instalar (descargar y ejecutar).
- Crear llaves (privada y pública) / Usar llaves públicas existentes de usuarios y administrarlas.
- Ejecutar comandos (scripts) en múltiples servidores de forma a la vez.
- Hacer conexiones ssh desde un entorno web.
- HTTPS por defecto y permite utilizar autenticación de doble factor para entrar a la interfaz web.
- Utilizar Keyhost como equipo bastión para el uso de SSH.
- Desplegar claves SSH mediante perfiles de usuarios / hosts en múltiples servidores, inhabilitarlas y habilitarlas.
Ficheros importantes.
- Llave SSH pública de Keybox: KeyBox-jetty/jetty/keybox/WEB-INF/classes/keydb/id_rsa.pub
- Llave privada + Configuración en ddbb H2: KeyBox-jetty/jetty/keybox/WEB-INF/classes/keydb/keybox.h2.db
Actualizar o migrar Keybox. Solo es necesario conservar los ficheros (Keybox ssh keys + Configuración): /media/keybox/KeyBox-jetty/jetty/keybox/WEB-INF/classes/keydb
NOTA: Keybox genera la clave privada y la guarda en la base de datos la cual se encuentra a su vez cifrada.
- Linea 127: Util.java
- Linea 69: InitServlet.java
Instalar Java 1.8 como dependencia. (Ejemplo de RPM)
rpm -ihv jre-8u45-linux-x64.rpm# java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Instalación y configuración de Keybox (Simplemente descomprimir, configurar y ejecutar) Descargar Keybox: https://github.com/skavanagh/KeyBox/releases
tar -zxvf keybox-jetty-v2.83_00.tar.gz cd KeyBox-jetty ./startKeyBox.sh
Navegador web: https://dominio:8443 (Usuario: admin / Contraseña: changeme)
Por defecto, no permite agregar llave públicas ya existentes y solo permite crearlas obligando a utilizar passphrase. Para utilizar llaves públicas existentes se debe adaptar la siguiente opción a falso.
forceUserKeyGeneration=false
Fichero de configuración de Keybox: KeyBox-jetty/jetty/keybox/WEB-INF/classes/KeyBoxConfig.properties
# # KeyBox - Version: 2.83.00 # # #set to true to regenerate and import SSH keys resetApplicationSSHKey=false #SSH Key Type 'dsa' or 'rsa' sshKeyType=rsa #private ssh key, leave blank to generate key pair privateKey= #public ssh key, leave blank to generate key pair publicKey= #default passphrase, leave blank for key without passphrase defaultSSHPassphrase=${randomPassphrase} #enable audit enableAudit=false #keep audit logs for in days deleteAuditLogAfter=90 #default timeout in minutes for websocket connection (no timeout for <=0) websocketTimeout=0 #enable SSH agent forwarding agentForwarding=false #enable two-factor authentication enableOTP=true #enable key management keyManagementEnabled=true #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 #authorized_keys refresh interval in minutes (no refresh for <=0) authKeysRefreshInterval=120 #Regular expression to enforce password policy passwordComplexityRegEx=((?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*()+=]).{8\,20}) #Password complexity error message passwordComplexityMsg=Passwords must be 8 to 20 characters\, contain one digit\, one lowercase\, one uppercase\, and one special character #specify a external authentication module (ex: ldap-ol, ldap-ad). Edit the jaas.conf to set connection details jaasModule=
Los servidores que se quieran tener administrados con Keybox deben tener la clave pública de Keybox en el fichero “authorized_keys” del usuario a administrar. Si no se tiene la llave pública, preguntará por la password y agregará la clave pública al fichero authorized_keys una vez haya accedido al sistema.