Add ssh_key_checks
This commit is contained in:
commit
de13437b47
76
ssh_key_checks
Normal file
76
ssh_key_checks
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# se debe ejecutar con usuario root por el tema de persmisos 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}')
|
||||||
|
|
||||||
|
# Si no está definido, usar el valor por defecto
|
||||||
|
if [[ -z "$AUTH_KEYS_PATH" ]]; then
|
||||||
|
AUTH_KEYS_PATH=".ssh/authorized_keys"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Ruta configurada para authorized_keys: $AUTH_KEYS_PATH"
|
||||||
|
echo "------------------------------------------------------------"
|
||||||
|
printf "%-20s %-40s %-10s %-15s %-10s\n" "Usuario" "Ruta authorized_keys" "Permisos" "SSH Habilitado" "Llaves"
|
||||||
|
echo "------------------------------------------------------------"
|
||||||
|
|
||||||
|
# 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}')
|
||||||
|
ALLOW_GROUPS=$(grep -E "^\s*AllowGroups" /etc/ssh/sshd_config | awk '{$1=""; print $0}')
|
||||||
|
DENY_GROUPS=$(grep -E "^\s*DenyGroups" /etc/ssh/sshd_config | awk '{$1=""; print $0}')
|
||||||
|
|
||||||
|
# Leer usuarios del sistema
|
||||||
|
while IFS=: read -r username _ _ _ _ homedir _; do
|
||||||
|
# Omitir usuarios sin home válido o con home en lugares extraños
|
||||||
|
if [[ ! -d "$homedir" || "$homedir" =~ ^(/bin|/sbin|/usr|/var|/proc|/sys|/dev|/run|/nonexistent) ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determinar la ruta real de authorized_keys
|
||||||
|
user_keys_path="$homedir/$AUTH_KEYS_PATH"
|
||||||
|
|
||||||
|
# Verificar si el archivo existe
|
||||||
|
if [[ -f "$user_keys_path" ]]; then
|
||||||
|
permisos=$(stat -c "%a" "$user_keys_path")
|
||||||
|
num_llaves=$(grep -c "ssh-" "$user_keys_path")
|
||||||
|
else
|
||||||
|
permisos="No existe"
|
||||||
|
num_llaves=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determinar si el usuario puede hacer SSH
|
||||||
|
ssh_habilitado="Sí"
|
||||||
|
|
||||||
|
if [[ -n "$ALLOW_USERS" && ! "$ALLOW_USERS" =~ "$username" ]]; then
|
||||||
|
ssh_habilitado="No"
|
||||||
|
fi
|
||||||
|
if [[ -n "$DENY_USERS" && "$DENY_USERS" =~ "$username" ]]; then
|
||||||
|
ssh_habilitado="No"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Si hay restricciones por grupo
|
||||||
|
user_groups=$(id -Gn "$username")
|
||||||
|
if [[ -n "$ALLOW_GROUPS" ]]; then
|
||||||
|
ssh_habilitado="No"
|
||||||
|
for group in $user_groups; do
|
||||||
|
if [[ "$ALLOW_GROUPS" =~ "$group" ]]; then
|
||||||
|
ssh_habilitado="Sí"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ -n "$DENY_GROUPS" ]]; then
|
||||||
|
for group in $user_groups; do
|
||||||
|
if [[ "$DENY_GROUPS" =~ "$group" ]]; then
|
||||||
|
ssh_habilitado="No"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Mostrar en pantalla
|
||||||
|
printf "%-20s %-40s %-10s %-15s %-10s\n" "$username" "$user_keys_path" "$permisos" "$ssh_habilitado" "$num_llaves"
|
||||||
|
|
||||||
|
done < /etc/passwd
|
||||||
|
|
||||||
|
echo "------------------------------------------------------------"
|
||||||
Loading…
Reference in New Issue
Block a user