From 863e7a47d15414cdc041cbe68ac37bfb4b54a85b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Felipe=20Marulanda=20Hern=C3=A1ndez?= Date: Tue, 25 Feb 2025 15:54:45 +0000 Subject: [PATCH] Update ssh_key_checks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Obtiene la configuración de authorized_keys Revisa el archivo /etc/ssh/sshd_config para encontrar la ruta configurada de authorized_keys. Si no está definida en sshd_config, usa la ruta por defecto: .ssh/authorized_keys dentro del home de cada usuario. Muestra una tabla con información clave Para cada usuario del sistema, muestra: Nombre de usuario Ruta del archivo authorized_keys (si existe) Permisos del archivo (por ejemplo, 600) Si el usuario tiene permitido conectarse por SSH (según AllowUsers, DenyUsers, AllowGroups, DenyGroups) Número de llaves SSH almacenadas en el archivo authorized_keys Guarda los usuarios que tienen llaves SSH Si un usuario tiene llaves en su authorized_keys, se almacena en una lista para procesarlas después. Muestra las llaves SSH de cada usuario Para cada usuario con llaves SSH, imprime el contenido de su archivo authorized_keys. --- ssh_key_checks | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/ssh_key_checks b/ssh_key_checks index 0734e4f..10c474c 100644 --- a/ssh_key_checks +++ b/ssh_key_checks @@ -1,5 +1,5 @@ #!/bin/bash -# se debe ejecutar con usuario root por el tema de persmisos del archivo authorized_keys +# Se debe ejecutar con usuario root por el tema de permisos del archivo authorized_keys # Obtener configuración de authorized_keys desde sshd_config AUTH_KEYS_PATH=$(grep -E "^\s*AuthorizedKeysFile" /etc/ssh/sshd_config | awk '{print $2}') @@ -14,6 +14,9 @@ echo "------------------------------------------------------------" printf "%-20s %-40s %-10s %-15s %-10s\n" "Usuario" "Ruta authorized_keys" "Permisos" "SSH Habilitado" "Llaves" echo "------------------------------------------------------------" +# Variables para almacenar usuarios con llaves +USERS_WITH_KEYS=() + # Obtener usuarios permitidos y denegados en sshd_config ALLOW_USERS=$(grep -E "^\s*AllowUsers" /etc/ssh/sshd_config | awk '{$1=""; print $0}') DENY_USERS=$(grep -E "^\s*DenyUsers" /etc/ssh/sshd_config | awk '{$1=""; print $0}') @@ -34,6 +37,11 @@ while IFS=: read -r username _ _ _ _ homedir _; do if [[ -f "$user_keys_path" ]]; then permisos=$(stat -c "%a" "$user_keys_path") num_llaves=$(grep -c "ssh-" "$user_keys_path") + + # Guardar usuario en lista si tiene llaves + if [[ $num_llaves -gt 0 ]]; then + USERS_WITH_KEYS+=("$username:$user_keys_path") + fi else permisos="No existe" num_llaves=0 @@ -41,7 +49,7 @@ while IFS=: read -r username _ _ _ _ homedir _; do # Determinar si el usuario puede hacer SSH ssh_habilitado="Sí" - + if [[ -n "$ALLOW_USERS" && ! "$ALLOW_USERS" =~ "$username" ]]; then ssh_habilitado="No" fi @@ -73,4 +81,24 @@ while IFS=: read -r username _ _ _ _ homedir _; do done < /etc/passwd -echo "------------------------------------------------------------" \ No newline at end of file +echo "------------------------------------------------------------" + +# Mostrar las llaves de cada usuario que tenga llaves autorizadas +if [[ ${#USERS_WITH_KEYS[@]} -gt 0 ]]; then + echo "" + echo "🔑 Claves SSH autorizadas por usuario:" + echo "============================================================" + + for user_data in "${USERS_WITH_KEYS[@]}"; do + username="${user_data%%:*}" + key_path="${user_data##*:}" + + echo "👤 Usuario: $username" + echo "📁 Archivo: $key_path" + echo "------------------------------------------------------------" + cat "$key_path" + echo "" + done +else + echo "❌ No se encontraron usuarios con llaves SSH autorizadas." +fi \ No newline at end of file