===== 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: [[https://github.com/skavanagh/KeyBox/blob/5f1f2ab8424759bccb8ee012ff41d32e5acac2a8/src/main/java/com/keybox/manage/util/SS/HUtil.java|Util.java]] * Linea 69: [[https://github.com/skavanagh/KeyBox/blob/96dc472497308eb12597416ef187ea0634337d84/src/main/java/com/keybox/common/db/DB/InitServlet.java|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.