Las directivas mencionadas, controlan los usuarios y grupos de usuarios Linux que pueden acceder al servidor SSH.
El uso de estas directivas nos permite un mayor control granular de acceso.
El orden de aplicación de estas directivas es: DenyUsers, AllowUsers, DenyGroups y finalmente AllowGroups.
Como todas las directivas de SSH, podemos modificarlas en el archivo /etc/ssh/sshd_config
En este caso solo nos centraremos en las directivas que controlan los permisos de usuarios y grupos en ssh.
Para más info sobre un servidor Open SSH, no olvides consultar la entrada sobre Open SSH Server Linux.
En este artículo:
Modificamos el archivo sshd_config para permitir el acceso ssh a ciertos grupos de usuarios Linux.
Concretamente deseamos permitir el acceso por ssh a grupo1.
Lo hacemos añadiendo :
AllowGroups grupo1
Para actualizar la configuración del server SSH, reiniciamos el servicio del servidor open ssh, con:
service ssh restart
A continuación creamos un nuevo usuario, en el grupo con permisos para acceder por SSH.
Creamos el usuario4, y a la vez que lo creamos, como grupo secundario le introducimos en el grupo anterior (grupo1) con permisos para acceso ssh:
useradd -G grupo1 -d /home/usuario4 -m -s /bin/bash usuario4
Ahora para ver los datos del usuario (UID, y GID de grupos a los que pertenece) ejecutamos :
id usuario4
Vemos que el UID del usuario es 1021
Y sus grupos son el grupo usuario4 (GID 1021) y el grupo1 (GID 1004). Este último, es el grupo que habíamos configurado que pudiera acceder por ssh.
Ahora ejecutamos cat /etc/passwd para ver el UID y el grupo(s) del usuario:
cat /etc/passwd
Vemos que el usuario4 muestra el UID y el GID de los grupos (en este caso el grupo creado para el usuario4, con GID 1021)
Ahora vemos los grupos con
cat /etc/group
y vemos los grupos del usuario4 (GID 1021) y los usuarios introducidos en el grupo1 (GID 1004) con permiso para utilizar el acceso por ssh:
Ahora testearemos si el usuario (usuario4) del grupo permitido (grupo1) puede realmente acceder por ssh.
Y accediendo con Putty desde un equipo Windows, comprobamos que puede acceder por SSH ya que se encuentra correctamente configurado en el grupo con permiso para acceder por SSH:
Pero si modificamos el usuario y lo asignamos al grupo denegarssh, no podrá acceder por ssh:
Otra opción es modificar el archivo sshd_config y en lugar de cambiar el grupo al usuario, introducir el grupo al que pertenece actualmente, en la directiva DenyGroups (quitando previamente ese grupo de la directiva AllowGroups).
Lo que tenemos que tener en cuenta que de esta forma estamos denegando el acceso a los otros miembros del grupo si los hubiera:
DenyGroups grupo1
Volvemos a dejar el archivo sshd_config como antes, permitiendo el acceso ssh a todos los usuarios del grupo1 (AllowGroups), pero añadiendo al usuario4 a la directiva DenyUsers. Así:
DenyUsers usuario4
Ahora comprobamos que con cualquiera de las opciones anteriores (punto 4, punto 4.1 y punto 4.2) el usuario no puede acceder por ssh, ya que el sistema nos muestra el mensaje “Access denied“, con lo cual hemos configurado correctamente el server SSH con lo que queríamos conseguir.
De esta forma acabamos de ver las 4 directivas básicas para controlar el acceso ssh de usuarios y grupos Linux:
AllowUsers, DenyUsers, AllowGroups, DenyGroups.