Î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 prinssh [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)
- să seteze
service ssh restart
se execută de fiecare dată după modificareasshd_config
.
Problema
-
testuser
poate să se conecteze atunci când este setat cuAllowUsers
:AllowUsers user1 user2 testuser
-
testuser
poate NOT să se conecteze atunci când este setat cuAllowGroups
pentru grupul său:AllowUsers user1 user2 AllowGroups ssh-users
ceea ce duce la
Permission denied, please try again.
cândtestuser
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 lassh-users
grup în viitor, fără a fi nevoie să atingăsshd_config
din nou.
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 finalAllowGroups
.
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.
- 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 deMatch
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 🙂 – > . - 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. – > .
- @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ă. – > .
- 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. – > .
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
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] – > .- @AndrewD AllowGroups acceptă doar nume de grupuri – de exemplu, nu puteți face
AllowGroups [email protected]
. HOST este sursa, de unde faceți sshing. – > .
Iată o soluție pe care am găsit-o de lucru:
AllowUsers user1 user2
Match group ssh-users
AllowUsers *
- … și pentru grupuri multiple, trebuie doar să adăugați mai multe blocuri cu
Match group XXX AllowUsers *
– > .
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
- utilizatorul1 sau utilizatorul2 NU se poate conecta prin ssh.
- 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.
Î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
- 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. – > .
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.