Saltar al contenido

¿Cómo obtener la lista de todos los usuarios que pueden acceder a un servidor a través de ssh?

Si te encuentras con algún detalle que te causa duda puedes dejarlo en los comentarios y trataremos de ayudarte tan rápido como podamos.

Solución:

Mi respuesta se basa en las respuestas a esta pregunta de stackoverflow.

Listado de todos los “usuarios”

Esperaba que hubiera una manera de decir, mostrarme todos los usuarios que pueden acceder a mi servidor.
Lo que no me di cuenta es que no hay una distinción entre personas-usuarios y sistema-“usuarios”, por lo que, si bien puede enumerar a todos los usuarios con este comando, es probable que sea mucho más largo de lo que esperaba:

cat /etc/passwd

Mostrando todos los usuarios con un shell válido

Si el shell de los usuarios está configurado para /etc/false entonces no pueden iniciar sesión, por lo que esto reduce la lista de posibles usuarios de ssh:

cat /etc/passwd | grep -v /bin/false

Pero esa sigue siendo una lista bastante grande.


Usuarios que realmente tienen acceso

Si un usuario no tiene una contraseña válida, podría ser una indicación de que no puede iniciar sesión.
los /etc/shadow El archivo contiene las contraseñas cifradas, un “!” o un “*” en la segunda columna de este archivo significa que no se estableció ninguna contraseña. Podemos filtrarlos para obtener una lista nueva (probablemente más corta) de usuarios que tienen una contraseña válida:

cat /etc/shadow | grep '^[^:]*:[^*!]'

Detalles sobre la expresión regular:

  1. ^ – El patrón tiene que estar al principio de la línea.
  2. [^:]* – Coincide con cualquier personaje que no sea : entre 0 y tiempo ilimitado
  3. : – Coincidir con el personaje : literalmente
  4. [^*!] – Coincide con cualquier personaje que no sea *,! una vez.

Tenga en cuenta que la expresión regular está envuelta con comillas simples, esto es importante porque muchos caracteres especiales para expresiones regulares también son especiales para bash (consulte la parte 2 de esta respuesta)

Las únicas otras cuentas que no están cubiertas por eso serían donde tienen un ssh key en su cuenta de usuario, por lo que también debe mirar a los usuarios que tienen una carpeta de inicio:

ls -l /home

Restricción de acceso

Bien, ahora tengo una lista un tanto limitada y quiero quitar el acceso a un par de cuentas.
La respuesta de @Yaron describe esto con más detalle (al igual que esto), pero brevemente; la /etc/ssh/sshd_config archivo dice qué cuentas pueden ssh, y si establece AllowUsers allí, los otros usuarios estarán restringidos, por lo que puede editar ese archivo para que sea explícito sobre a quién desea permitir que inicie sesión:

vi /etc/ssh/sshd_config

Y agrega una línea que diga

AllowUsers user1 user2

Finalmente reinicie el servicio ssh

service ssh restart

(dependiendo de su sistema – vea esto para el reinicio del servicio en otros sistemas)

De forma predeterminada, todos los usuarios de una máquina específica pueden iniciar sesión en esta máquina mediante ssh.

Puedes configurar sshd para permitir el acceso a sólo una parte de los usuarios de la máquina.

Página man de Ubuntu ssh Especifique que puede permitir/denegar usuarios/grupos específicos en sshd_config — OpenSSH SSH daemon configuration file/etc/ssh/sshd_config

  • Permitir usuarios Esta palabra clave puede ir seguida de una lista de patrones de nombre de usuario, separados por espacios.
  • Si se especifica, el inicio de sesión solo se permite para los nombres de usuario que coincidan con uno de los patrones.
  • Solo los nombres de usuario son válidos; no se reconoce un ID de usuario numérico.
  • De forma predeterminada, el inicio de sesión está permitido para todos los usuarios.
  • Si el patrón toma la forma [email protected] luego, el USUARIO y el HOST se verifican por separado, lo que restringe los inicios de sesión a usuarios particulares de hosts particulares.
  • Las directivas allow/deny se procesan en el siguiente orden: Denegar Usuarios, Permitir Usuarios, Denegar Grupos, y finalmente Permitir grupos

La lista de todos los usuarios en la máquina del servidor se puede encontrar ejecutando el siguiente comando en la máquina del servidor:

cat /etc/passwd

De acuerdo con la pregunta actualizada, el /etc/passwd no tiene varios nombres de usuario. Esto podría ser el resultado de que el servidor sea parte del Servicio de información de red, LDAP o SAMBA.

Para revisar todos los usuarios y grupos conocidos por su servidor, de cualquier fuente que provengan, preferiría usar el getent dominio :

getent passwd

Resumen de la discusión:

Parece que tiene LDAP en el servidor y se definió para deshabilitar el acceso a la lista de usuarios de LDAP.
De lo contrario getent passwd te mostraría el passwd expediente

Sección de Reseñas y Valoraciones

Al final de todo puedes encontrar las crónicas de otros sys admins, tú de igual manera tienes la opción de insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *