Cum se utilizează atât AllowGroups, cât și AllowUsers în sshd_config? (Administrarea sistemului, Ssh, Debian)

Johannes a intrebat.

Încerc să modific /etc/ssh/sshd_config pe serverul meu dedicat debian7 cu ambele AllowUsers și AllowGroups. Cu toate acestea, se pare că nu reușesc să le fac pe amândouă să lucreze împreună.


Configurația

  • Există un utilizator numit testuser.
  • Acest utilizator este într-un grup numit ssh-users:

    $ groups testuser
    testuser : testuser ssh-users
    
  • testuser încearcă să se conecteze prin ssh [email protected]<server_ip> și își introduce parola.

  • Site-ul meu sshd_config poate fi găsit aici: http://pastebin.com/iZvVDFKL – Cred că, practic, singurele modificări pe care le-am făcut față de cele implicite au fost:
    • să seteze PermitRootLogin no
    • și să adaug doi utilizatori cu AllowUsers (numele de utilizator real diferă pe serverul meu)
  • service ssh restart se execută de fiecare dată după modificarea sshd_config.

Problema

  • testuser poate să se conecteze atunci când este setat cu AllowUsers:

    AllowUsers user1 user2 testuser
    
  • testuser poate NOT să se conecteze atunci când este setat cu AllowGroups pentru grupul său:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    ceea ce duce la Permission denied, please try again. când testuser introduce parola lor în solicitarea de parolă ssh.


Întrebarea

  • Are AllowUsers anulează AllowGroups?
  • Care este cea mai bună modalitate de a rezolva acest lucru fără a adăuga manual numele de utilizator la AllowUsers? În mod ideal, aș dori să pot adăuga utilizatori la ssh-users grup în viitor, fără a fi nevoie să atingă sshd_config din nou.

Comentarii

  • 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. – Deci, de ce folosești AllowUsers? Doar puneți pe toată lumea în grup/grupuri. –  > Por Zoredache.
5 răspunsuri
Jeff-Inventator ChromeOS

Da, AllowUsers are prioritate față de AllowGroups. Dacă este specificat, numai utilizatorii care se potrivesc cu modelul specificat în AllowUsers se pot conecta la instanța SSHD.

În conformitate cu sshd_config pagina de manual:

Directivele allow/deny sunt procesate în următoarea ordine: DenyUsers, AllowUsers, DenyGroups, și în final AllowGroups.

Prin urmare, soluția la problema dumneavoastră este probabil să utilizați una sau cealaltă, eventual directivele de acces la grupuri, dacă grupurile sunt modalitatea preferată de gestionare a utilizatorilor.

Comentarii

  • Deci, ar fi mai bine să aveți doar AllowGroups user1 user2 ssh-users să funcționeze? Aș prefera confirmarea dvs. înainte de a o testa, deoarece am mai pățit-o înainte, când mi-am eliminat din greșeală propriile mele privilegii ssh și a trebuit să trec prin asistență pentru a rezolva problema. Ce zici de Match bloc? Cer sfaturi acolo, deoarece deși m-am uitat pe pagina de manual, nu am intuiția/experiența necesară pentru a ști cum ar funcționa în practică. De exemplu, cu ordinea de procesare m-am gândit că, din moment ce AllowGroups vine după AllowUsers, ar trebui să îl anuleze atunci când este procesat, dar intuiția mea a fost greșită acolo 🙂 –  > Por Johannes.
  • Dacă toate cele 3 sunt grupuri pe sistemul tău, ar trebui să funcționeze. Dacă user1 și user2 sunt doar utilizatori, puteți să-i adăugați la ssh-users și să vă descurcați cu AllowGroups ssh-users. –  > Por Jeff-Inventator ChromeOS.
  • @Johannes atunci când testezi așa ceva, asigură-te că ai un shell deschis pe mașină. Repornirea sshd nu vă va întrerupe sesiunea, iar dacă nu puteți deschide una nouă, puteți repara mizeria cu cea existentă. –  > Por Jean-Bernard Jansen.
  • Este amuzant faptul că doar EL {7,8}’s man 5 sshd_config conțin ordinea completă de procesare. Toate celelalte distribuții (pe care le folosesc eu): Fedora 32, Arch și Ubuntu 20.04 LTS urmează documentația OpenSSH upstream în care este explicat doar Deny before Allow, dar nu și Users matches sunt procesate înainte de Groups. FYI. –  > Por Terry Wang.
bjacobowski

Răspunsul lui Jeff acoperă specificul întrebării în detaliu, dar am găsit această întrebare căutând să folosesc AllowUsers și AllowGroups într-un scenariu ușor diferit. Am vrut să restricționez conexiunile de intrare pentru utilizatorii dintr-un grup (ssh) care provin din anumite subrețele.

Regulile de conectare din sshd_config sunt un filtru – pe măsură ce se aplică fiecare regulă suplimentară, setul de utilizatori acceptați nu poate fi decât redus. PATTERNS în ssh_config(5) se explică forma acestor reguli.

În plus, în conformitate cu AllowUsers secțiunea din sshd_config:

Dacă modelul are forma [email protected], atunci USER și HOST sunt verificate separat, restricționând autentificarea anumitor utilizatori de la anumite gazde. Criteriile HOST pot conține, în plus, adrese care trebuie să corespundă în formatul de adresă CIDR/masklen.

AllowGroups nu acceptă forma [email protected]

Deci, pentru a accepta utilizatorii 1) din grupul ssh și 2) din anumite subrețele/hosturi:

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

Comentarii

  • AllowGroups doesn't accept the [email protected] form. Nu sunt sigur ce vreți să spuneți prin aceasta și, cu siguranță, nu este ceea ce spune fișierul de configurare sau documentația. Allow Groups (Permiteți grupuri) vă permite cu siguranță să vă conectați folosind ssh [email protected] –  > Por AndrewD.
  • @AndrewD AllowGroups acceptă doar nume de grupuri – de exemplu, nu puteți face AllowGroups [email protected]. HOST este sursa, de unde faceți sshing. –  > Por bjacobowski.
vimja

Iată o soluție pe care am găsit-o de lucru:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *

Comentarii

  • … și pentru grupuri multiple, trebuie doar să adăugați mai multe blocuri cu Match group XXX AllowUsers * –  > Por Gwyneth Llewelyn.
hajimuz

Am făcut un test pe RedHat 8.1. Se pare că este mai complicat.

AllowUsers user1 user2
AllowGroups ssh-users

Dacă user1 și user2 nu se află în grupul ssh-users, atunci

  1. utilizatorul1 sau utilizatorul2 NU se poate conecta prin ssh.
  2. nici utilizatorii din grupul ssh-users NU se pot conecta prin ssh!

Problema este că dacă ambii AllowUsers și AllowGroups sunt utilizate, atunci numai intersecție dintre ele este capabilă să se conecteze prin ssh. Este un pic ciudat, dar are sens.

Cristian Solervicens

Într-un Firewall regulile sunt verificate în ordine până când găsești o potrivire pozitivă, și atunci conexiunea este permisă, în alt caz este refuzată.

În sshd_config se verifică toate regulile, dacă originea se potrivește cu două sau trei condiții și în una dintre ele NU este permisă, nu are acces.

În acest exemplu eu sunt admin:

My sshd_config:

AllowUsers  admin
Match Address IP1, IP2, IP3, MyIP
 AllowUsers user1
 ChrootDirectory %h

MyIP se află în a doua secțiune, deci nu mă pot conecta.

Trebuie să șterg MyIp din a doua secțiune.

Dacă îmi adaug utilizatorul meu în a doua secțiune, voi fi restricționat de ChrootDirectory

Comentarii

  • Ați putea vă rog să înfășurați sshd_config într-un bloc de cod? formatarea face ca acesta să fie greu de citit. –  > Por Johannes.

Tags:,