Jak korzystać z AllowGroups i AllowUsers w sshd_config?

28

Próbuję zmodyfikować /etc/ssh/sshd_configna moim dedykowanym serwerze debian7 zarówno z, jak AllowUsersi AllowGroups. Wydaje mi się jednak, że nie mogę obu współpracować.


Ustawić

  • Jest użytkownik o nazwie testuser.
  • Ten użytkownik należy do grupy o nazwie ssh-users:

    $ groups testuser
    testuser : testuser ssh-users
    
  • testuserpróbuje się połączyć ssh testuser@<server_ip>i wprowadzić swoje hasło.

  • Mój sshd_configmożna znaleźć tutaj: http://pastebin.com/iZvVDFKL - Myślę, że w zasadzie jedyne zmiany, które wprowadziłem domyślnie to:
    • ustawić PermitRootLogin no
    • i dodaj dwóch użytkowników AllowUsers(rzeczywiste nazwy użytkowników różnią się na moim serwerze)
  • service ssh restartjest uruchamiany za każdym razem po modyfikacji sshd_config.

Problem

  • testuser można połączyć po ustawieniu za pomocąAllowUsers:

    AllowUsers user1 user2 testuser
    
  • testuserNIE można się połączyć podczas ustawiania AllowGroupsjego grupy:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    co skutkuje Permission denied, please try again.kiedy testuserwejdzie swoje hasło w wierszu hasło ssh.


Pytanie

  • Czy AllowUserszastępuje AllowGroups?
  • Jak najlepiej to naprawić bez ręcznego dodawania nazwy użytkownika AllowUsers? Idealnie chciałbym móc dodawać użytkowników do ssh-usersgrupy w przyszłości bez konieczności sshd_configponownego dotykania .
Johannes
źródło
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.- Więc dlaczego w ogóle używasz AllowUsers? Po prostu umieść wszystkich w grupie / grupach.
Zoredache

Odpowiedzi:

24

Tak, AllowUsersma pierwszeństwo AllowGroups. Jeśli jest określony, tylko użytkownicy pasujący do wzorca określonego w AllowUsersmogą łączyć się z instancją SSHD.

Według sshd_config strony :

Allow / deny Dyrektywy są przetwarzane w następującej kolejności: DenyUsers, AllowUsers, DenyGroups, i wreszcie AllowGroups.

Rozwiązaniem tego problemu jest prawdopodobnie skorzystanie z jednej lub drugiej, być może z dyrektyw dostępu do grupy, jeśli grupy są preferowanym sposobem zarządzania użytkownikami.

Jeff-Inventor ChromeOS
źródło
Więc po prostu miałbym AllowGroups user1 user2 ssh-userspracę? Wolę twoje potwierdzenie przed przetestowaniem, ponieważ zdarzyło mi się to wcześniej, gdy przypadkowo usunąłem własne uprawnienia ssh i musiałem skorzystać z pomocy technicznej, aby to naprawić. Co powiesz na Matchblok? Proszę o radę, ponieważ chociaż przeglądałem stronę podręcznika, nie mam intuicji / doświadczenia, aby wiedzieć, jak to działa w praktyce. Na przykład z kolejnością przetwarzania, którą wymyśliłem, ponieważ AllowGroups występuje po AllowUsers, zastąpiłoby to podczas przetwarzania, ale moja intuicja była w tym przypadku błędna :)
Johannes
2
Jeśli wszystkie 3 z nich są grupami w twoim systemie, powinno działać. Jeśli użytkownik 1 i użytkownik 2 są tylko użytkownikami, możesz dodać ich do użytkowników ssh i poradzić sobie z AllowGroups ssh-users.
Jeff-Inventor ChromeOS
@Johannes podczas testowania takich rzeczy, po prostu upewnij się, że masz otwartą powłokę na maszynie. Ponowne uruchomienie sshd nie spowoduje przerwania sesji, a jeśli nie możesz otworzyć nowej, możesz naprawić bałagan za pomocą istniejącej.
Jean-Bernard Jansen
6

Odpowiedź Jeffa obejmuje specyfikę pytanie jak szczegółowe, ale znalazłem na to pytanie, patrząc do użytku AllowUsersi AllowGroupsw nieco inny scenariusz. Chciałem ograniczyć połączenia przychodzące do użytkowników w grupie (ssh) pochodzących z określonych podsieci.

Reguły połączeń w sshd_config są filtrem - ponieważ każda dodatkowa reguła jest stosowana, zestaw dopuszczalnych użytkowników może zostać zmniejszony. PATTERNSw ssh_config (5) wyjaśnij formę tych reguł.

Dodatkowo zgodnie z AllowUserssekcją sshd_config:

Jeśli wzorzec ma postać USER @ HOST, wówczas USER i HOST są osobno sprawdzane, co ogranicza logowanie do konkretnych użytkowników z określonych hostów. Kryteria HOST mogą dodatkowo zawierać adresy w celu dopasowania w formacie adresu CIDR / masklen.

AllowGroups nie akceptuje formularza USER @ HOST.

Tak więc, aby zaakceptować użytkowników 1) w grupie ssh i 2) z określonych podsieci / hostów:

AllowUsers *@192.168.1.0/24 *@*.example.com *@1.2.3.4
AllowGroups ssh
bjacobowski
źródło
AllowGroups doesn't accept the USER@HOST form. Nie jestem pewien, co przez to rozumiesz, a na pewno nie to, co mówią pliki konfiguracyjne lub dokumenty. Zezwalaj na grupy zdecydowanie pozwala na logowanie przy użyciu ssh nazwa_uż[email protected].
AndrewD,
1
@AndrewD AllowGroups akceptuje tylko nazwy grup - np. Nie możesz tego zrobić AllowGroups [email protected]. HOST to źródło, z którego sshingujesz.
bjacobowski
3

Oto rozwiązanie, które według nas działa:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *
vimja
źródło