Come usare sia AllowGroups che AllowUsers in sshd_config?


28

Sto cercando di modificare /etc/ssh/sshd_configsul mio server debian7 dedicato con entrambi AllowUserse AllowGroups. Tuttavia, non riesco a convincere entrambi a lavorare insieme.


Il set up

  • C'è un utente chiamato testuser.
  • Quell'utente appartiene a un gruppo chiamato ssh-users:

    $ groups testuser
    testuser : testuser ssh-users
    
  • testusersta provando a connettersi tramite ssh testuser@<server_ip>e inserendo la propria password.

  • Il mio sshd_configpuò essere trovato qui: http://pastebin.com/iZvVDFKL - Penso che fondamentalmente le uniche modifiche che ho fatto dal default siano state:
    • impostare PermitRootLogin no
    • e aggiungi due utenti con AllowUsers(i nomi utente effettivi differiscono sul mio server)
  • service ssh restartviene eseguito ogni volta dopo la modifica sshd_config.

Il problema

  • testuser può connettersi quando impostato conAllowUsers:

    AllowUsers user1 user2 testuser
    
  • testuserNON può connettersi durante l'impostazione AllowGroupsper il suo gruppo:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    che risulta Permission denied, please try again.quando si testuserimmette la password nel prompt della password ssh.


La domanda

  • Non AllowUsersdi esclusione AllowGroups?
  • Qual è il modo migliore per risolvere questo problema senza aggiungere manualmente il nome utente AllowUsers? Idealmente mi piacerebbe poter aggiungere utenti al ssh-usersgruppo in futuro senza dover toccare di sshd_confignuovo.

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.- Allora perché stai usando AllowUsers? Metti tutti nel gruppo / gruppi.
Zoredache,

Risposte:


24

Sì, AllowUsersha la precedenza AllowGroups. Se specificato, solo gli utenti che corrispondono al modello specificato AllowUserspossono connettersi all'istanza SSHD.

Secondo sshd_config manpage :

Il consentire / bloccare direttive vengono elaborati nel seguente ordine: DenyUsers, AllowUsers, DenyGroups, e infine AllowGroups.

Quindi, la soluzione al tuo problema è probabilmente quella di utilizzare l'una o l'altra, possibilmente le direttive di accesso ai gruppi se i gruppi sono il tuo modo preferito di gestire gli utenti.


Quindi avrebbe solo AllowGroups user1 user2 ssh-userslavoro? Preferirei la tua conferma prima di provarla poiché l'ho già successa prima in cui ho rimosso accidentalmente i miei privilegi di SSH e ho dovuto passare attraverso il supporto per risolverlo. Che ne dici del Matchblocco? Sto chiedendo consigli lì poiché, sebbene abbia guardato la pagina man, non ho l'intuizione / esperienza per sapere come funzionerebbe nella pratica. Ad esempio con l'ordine di elaborazione che ho immaginato, poiché AllowGroups viene dopo AllowUsers, lo sovrascriverebbe quando elaborato, ma la mia intuizione era sbagliata lì :)
Johannes

2
Se tutti e 3 questi sono gruppi sul tuo sistema, dovrebbe funzionare. Se user1 e user2 sono solo utenti, puoi aggiungerli a ssh-users e cavartela con AllowGroups ssh-users.
Jeff-Inventor ChromeOS

@Johannes quando provi una cosa del genere, assicurati di avere una shell aperta sulla macchina. Il riavvio di sshd non interromperà la sessione e, se non riesci ad aprirne una nuova, puoi correggere il tuo casino con quello esistente.
Jean-Bernard Jansen,

6

La risposta di Jeff copre i dettagli della domanda come dettagliati, ma ho trovato questa domanda cercando di utilizzare AllowUserse AllowGroupsin uno scenario leggermente diverso. Volevo limitare le connessioni in entrata agli utenti di un gruppo (ssh) proveniente da sottoreti specifiche.

Le regole di connessione in sshd_config sono un filtro: quando viene applicata ogni regola aggiuntiva, è possibile ridurre solo l'insieme di utenti accettabili. PATTERNSin ssh_config (5) spiega la forma di tali regole.

Inoltre, secondo la AllowUserssezione di sshd_config:

Se il modello assume il formato USER @ HOST, USER e HOST vengono controllati separatamente, limitando gli accessi a determinati utenti da determinati host. I criteri HOST possono inoltre contenere indirizzi da abbinare nel formato CIDR address / masklen.

AllowGroups non accetta il modulo USER @ HOST.

Quindi, per accettare gli utenti 1) nel gruppo ssh e 2) da sottoreti / host specifici:

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

AllowGroups doesn't accept the USER@HOST form. Non sono sicuro di cosa intendi con questo, e non è certamente quello che dicono il file di configurazione o i documenti. Consenti ai gruppi sicuramente ti consente di accedere usando ssh username@example.com.
AndrewD,

1
@AndrewD AllowGroups accetta solo nomi di gruppi, ad esempio non è possibile farlo AllowGroups ssh@example.com. HOST è la fonte da cui provieni.
bjacobowski,

3

Ecco una soluzione che abbiamo trovato funzionante:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.