¿Cómo usar AllowGroups y AllowUsers en sshd_config?

28

Estoy tratando de modificar /etc/ssh/sshd_configmi servidor dedicado de debian7 con ambos AllowUsersy AllowGroups. Sin embargo, no puedo lograr que ambos trabajen juntos.


La puesta en marcha

  • Hay un usuario llamado testuser.
  • Ese usuario está en un grupo llamado ssh-users:

    $ groups testuser
    testuser : testuser ssh-users
    
  • testuserestá intentando conectarse ssh testuser@<server_ip>e ingresando su contraseña.

  • Mi sshd_configse puede encontrar aquí: http://pastebin.com/iZvVDFKL - Creo que básicamente los únicos cambios que hice por defecto fueron:
    • para establecer PermitRootLogin no
    • y agregue dos usuarios con AllowUsers(los nombres de usuario reales difieren en mi servidor)
  • service ssh restartse ejecuta cada vez después de modificar sshd_config.

El problema

  • testuser se puede conectar cuando se configura conAllowUsers:

    AllowUsers user1 user2 testuser
    
  • testuserNO se puede conectar cuando se configura AllowGroupspara su grupo:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    lo que resulta Permission denied, please try again.cuando testuseringresa su contraseña en el indicador de contraseña ssh.


La pregunta

  • ¿ AllowUsersAnular AllowGroups?
  • ¿Cuál es la mejor manera de solucionar esto sin agregar manualmente el nombre de usuario AllowUsers? Idealmente, me gustaría poder agregar usuarios al ssh-usersgrupo en el futuro sin tener que tocar sshd_confignuevamente.
Johannes
fuente
55
Ideally I'd like to be able to just add users to the ssh-users group in the future without having to touch sshd_config again.- Entonces, ¿por qué estás usando AllowUsers? Simplemente ponga a todos en el grupo / grupos.
Zoredache

Respuestas:

24

Sí, AllowUserstoma el precedente AllowGroups. Si se especifica, solo los usuarios que coinciden con el patrón especificado AllowUserspueden conectarse a la instancia SSHD.

Según la página de sshd_config manual :

El permitir / denegar directivas son procesadas en el siguiente orden: DenyUsers, AllowUsers, DenyGroups, y finalmente AllowGroups.

Por lo tanto, la solución a su problema es probablemente usar una u otra, posiblemente las directivas de acceso grupal si los grupos son su forma preferida de administrar usuarios.

Jeff-Inventor ChromeOS
fuente
¿Entonces solo tendría AllowGroups user1 user2 ssh-userstrabajo? Prefiero su confirmación antes de probarlo, ya que he tenido lugar antes, donde accidentalmente eliminé mis propios privilegios de ssh y tuve que pasar por el soporte para solucionarlo. ¿Qué tal el Matchbloque? Estoy pidiendo consejo allí ya que aunque he visto la página de manual, no tengo la intuición / experiencia para saber cómo funcionaría en la práctica. Por ejemplo, con el orden de procesamiento que pensé, ya que AllowGroups viene después de AllowUsers, lo anularía cuando se procesara, pero mi intuición estaba equivocada allí :)
Johannes
2
Si los 3 son grupos en su sistema, debería funcionar. Si user1 y user2 son solo usuarios, puede agregarlos a ssh-users y sobrevivir con AllowGroups ssh-users.
Jeff-Inventor ChromeOS
@Johannes cuando pruebes tal cosa, solo asegúrate de tener una carcasa abierta en la máquina. Reiniciar sshd no interrumpirá su sesión, y si no puede abrir una nueva, puede arreglar su desorden con la existente.
Jean-Bernard Jansen
6

La respuesta de Jeff cubre los detalles específicos de la pregunta como se detalla, pero encontré esta pregunta buscando usar AllowUsersy AllowGroupsen un escenario ligeramente diferente. Quería restringir las conexiones entrantes a los usuarios en un grupo (ssh) proveniente de subredes específicas.

Las reglas de conexión en sshd_config son un filtro: a medida que se aplica cada regla adicional, el conjunto de usuarios aceptables solo se puede reducir. PATTERNSen ssh_config (5) explica la forma de esas reglas.

Además, de acuerdo con la AllowUserssección de sshd_config:

Si el patrón toma la forma USER @ HOST, USER y HOST se verifican por separado, restringiendo los inicios de sesión a usuarios particulares de hosts particulares. Los criterios HOST también pueden contener direcciones para que coincidan en el formato de dirección / máscara CIDR.

AllowGroups no acepta el formulario USER @ HOST.

Entonces, para aceptar usuarios 1) en el grupo ssh y 2) de subredes / hosts específicos:

AllowUsers *@192.168.1.0/24 *@*.example.com *@1.2.3.4
AllowGroups ssh
bjacobowski
fuente
AllowGroups doesn't accept the USER@HOST form. No estoy seguro de lo que quiere decir con esto, y ciertamente no es lo que dicen el archivo de configuración o los documentos. Permitir grupos definitivamente te permite iniciar sesión usando ssh [email protected].
AndrewD
1
@AndrewD AllowGroups solo acepta nombres de grupos, por ejemplo, no puede hacerlo AllowGroups [email protected]. HOST es la fuente, desde donde te sshshing.
bjacobowski
3

Aquí hay una solución que hemos encontrado que funciona:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *
vimja
fuente