Comment utiliser à la fois AllowGroups et AllowUsers dans sshd_config?


28

J'essaie de modifier /etc/ssh/sshd_configsur mon serveur debian7 dédié avec les deux AllowUserset AllowGroups. Cependant, je n'arrive pas à faire travailler les deux ensemble.


La mise en place

  • Il y a un utilisateur appelé testuser.
  • Cet utilisateur fait partie d'un groupe appelé ssh-users:

    $ groups testuser
    testuser : testuser ssh-users
    
  • testusertente de se connecter via ssh testuser@<server_ip>et de saisir son mot de passe.

  • Mon sshd_configpeut être trouvé ici: http://pastebin.com/iZvVDFKL - Je pense que les seules modifications que j'ai apportées par défaut étaient:
    • mettre en place PermitRootLogin no
    • et ajouter deux utilisateurs avec AllowUsers(les noms d'utilisateur réels diffèrent sur mon serveur)
  • service ssh restartest exécuté à chaque fois après modification sshd_config.

Le problème

  • testuser peut se connecter avecAllowUsers:

    AllowUsers user1 user2 testuser
    
  • testuserne peut PAS se connecter lors de la définition AllowGroupsde son groupe:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    ce qui entraîne Permission denied, please try again.quand testuserentre son mot de passe dans l'invite de mot de passe ssh.


La question

  • AllowUsersRemplace- t-il AllowGroups?
  • Quelle est la meilleure façon de résoudre ce problème sans ajouter manuellement le nom d'utilisateur à AllowUsers? Idéalement, j'aimerais pouvoir simplement ajouter des utilisateurs au ssh-usersgroupe à l'avenir sans avoir à toucher à sshd_confignouveau.

5
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.- Alors pourquoi utilisez-vous AllowUsers? Mettez tout le monde dans le groupe / les groupes.
Zoredache

Réponses:


24

Oui, AllowUsersprend le pas sur AllowGroups. Si spécifié, seuls les utilisateurs qui correspondent au modèle spécifié dans AllowUserspeuvent se connecter à l'instance SSHD.

Selon la sshd_config page de manuel :

La Allow / Deny sont traitées dans l'ordre suivant: DenyUsers, AllowUsers, DenyGroups, et enfin AllowGroups.

Ainsi, la solution à votre problème est probablement d'utiliser l'une ou l'autre, éventuellement les directives d'accès aux groupes si les groupes sont votre façon préférée de gérer les utilisateurs.


Alors, aurait-il juste du AllowGroups user1 user2 ssh-userstravail? Je préférerais votre confirmation avant de la tester car je l'ai eue avant où j'ai accidentellement supprimé mes propres privilèges ssh et j'ai dû passer par le support pour le réparer. Et le Matchbloc? J'y demande des conseils car bien que j'aie regardé la page de manuel, je n'ai pas l'intuition / l'expérience pour savoir comment cela fonctionnerait dans la pratique. Par exemple, avec l'ordre de traitement que je pensais, puisque AllowGroups vient après AllowUsers, il le remplacerait lors du traitement, mais mon intuition était mauvaise là-bas :)
Johannes

2
Si les 3 sont des groupes sur votre système, cela devrait fonctionner. Si utilisateur1 et utilisateur2 ne sont que des utilisateurs, vous pouvez les ajouter à ssh-users et vous débrouiller avec AllowGroups ssh-users.
Jeff-Inventor ChromeOS

@Johannes lorsque vous testez une telle chose, assurez-vous d'avoir un shell ouvert sur la machine. Le redémarrage de sshd n'interrompra pas votre session, et si vous ne pouvez pas en ouvrir une nouvelle, vous pouvez corriger votre désordre avec l'existant.
Jean-Bernard Jansen

6

La réponse de Jeff couvre les détails de la question tels que détaillés, mais j'ai trouvé cette question cherchant à utiliser AllowUserset AllowGroupsdans un scénario légèrement différent. Je voulais restreindre les connexions entrantes aux utilisateurs d'un groupe (ssh) provenant de sous-réseaux spécifiques.

Les règles de connexion dans sshd_config sont un filtre - à mesure que chaque règle supplémentaire est appliquée, l'ensemble d'utilisateurs acceptables ne peut être réduit. PATTERNSdans ssh_config (5) expliquer la forme de ces règles.

De plus, selon la AllowUserssection de sshd_config:

Si le modèle prend la forme USER @ HOST, alors USER et HOST sont vérifiés séparément, limitant les connexions à des utilisateurs particuliers à partir d'hôtes particuliers. Les critères HOST peuvent en outre contenir des adresses à faire correspondre au format d'adresse / masquelen CIDR.

AllowGroups n'accepte pas le formulaire USER @ HOST.

Donc, pour accepter les utilisateurs 1) dans le groupe ssh et 2) à partir de sous-réseaux / hôtes spécifiques:

AllowUsers *@192.168.1.0/24 *@*.example.com *@1.2.3.4
AllowGroups ssh

AllowGroups doesn't accept the USER@HOST form. Je ne sais pas ce que vous entendez par là, et ce n'est certainement pas ce que le fichier de configuration ou les documents disent. Autoriser les groupes vous permet certainement de vous connecter en utilisant ssh username@example.com.
AndrewD

1
@AndrewD AllowGroups accepte uniquement les noms de groupe - par exemple, vous ne pouvez pas le faire AllowGroups ssh@example.com. HOST est la source d'où vous pêchez.
bjacobowski

3

Voici une solution que nous avons trouvée efficace:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.