Como usar AllowGroups e AllowUsers no sshd_config?

28

Estou tentando modificar /etc/ssh/sshd_configno meu servidor debian7 dedicado com AllowUserse AllowGroups. No entanto, parece que não consigo trabalhar com os dois.


A configuração

  • Há um usuário chamado testuser.
  • Esse usuário está em um grupo chamado ssh-users:

    $ groups testuser
    testuser : testuser ssh-users
    
  • testuserestá tentando se conectar via ssh testuser@<server_ip>e digitando sua senha.

  • Meu sshd_configpode ser encontrado aqui: http://pastebin.com/iZvVDFKL - Acho que basicamente as únicas alterações que fiz do padrão foram:
    • pôr PermitRootLogin no
    • e adicione dois usuários com AllowUsers(nomes de usuário reais diferem no meu servidor)
  • service ssh restarté executado toda vez após a modificação sshd_config.

O problema

  • testuser pode conectar-se quando definido comAllowUsers:

    AllowUsers user1 user2 testuser
    
  • testuserNÃO pode se conectar ao definir AllowGroupspara seu grupo:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    que resulta em Permission denied, please try again.quando testuserdigita sua senha no prompt de senha ssh.


A questão

  • Does AllowUserssubstituição AllowGroups?
  • Qual é a melhor maneira de corrigir isso sem adicionar manualmente o nome de usuário AllowUsers? Idealmente, gostaria de poder adicionar usuários ao ssh-usersgrupo no futuro sem precisar tocar sshd_confignovamente.
Johannes
fonte
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.- Então, por que você está usando AllowUsers? Basta colocar todos no grupo / grupos.
Zoredache

Respostas:

24

Sim, AllowUsersassume precedente AllowGroups. Se especificado, apenas os usuários que correspondem ao padrão especificado AllowUserspodem se conectar à instância SSHD.

De acordo com a página de sshd_config manual :

A permitir / negar directivas são processados na seguinte ordem: DenyUsers, AllowUsers, DenyGroups, e, finalmente, AllowGroups.

Portanto, a solução para o seu problema é provavelmente usar uma ou outra, possivelmente as diretivas de acesso ao grupo se os grupos forem a sua maneira preferida de gerenciar usuários.

Jeff-Inventor ChromeOS
fonte
Então, apenas ter AllowGroups user1 user2 ssh-userstrabalho? Prefiro a sua confirmação antes de testá-la, já que isso aconteceu antes, onde removi acidentalmente meus próprios privilégios ssh e tive que passar pelo suporte para corrigi-lo. E o Matchbloco? Estou pedindo conselhos lá, pois, embora tenha consultado a página de manual, não tenho a intuição / experiência para saber como funcionaria na prática. Por exemplo, com a ordem de processamento eu percebi, já que AllowGroups vem depois AllowUsers, seria substituí-lo quando processados, mas minha intuição estava errado lá :)
Johannes
2
Se todos os três forem grupos no seu sistema, ele deverá funcionar. Se user1 e user2 forem apenas usuários, você poderá adicioná-los ao ssh-users e conviver com o AllowGroups ssh-users.
Jeff-Inventor ChromeOS
@ Johannes quando você testar isso, apenas certifique-se de ter um shell aberto na máquina. Reiniciar o sshd não interromperá sua sessão e, se você não conseguir abrir uma nova, poderá consertar sua bagunça com a existente.
Jean-Bernard Jansen
6

A resposta de Jeff cobre os detalhes da pergunta como detalhados, mas eu achei essa pergunta procurando AllowUserse AllowGroupsem um cenário um pouco diferente. Eu queria restringir as conexões recebidas aos usuários em um grupo (ssh) proveniente de sub-redes específicas.

As regras de conexão no sshd_config são um filtro - conforme cada regra adicional é aplicada, o conjunto de usuários aceitáveis ​​pode ser reduzido apenas. PATTERNSem ssh_config (5), explique a forma dessas regras.

Além disso, de acordo com a AllowUsersseção de sshd_config:

Se o padrão assumir o formato USER @ HOST, USER e HOST serão verificados separadamente, restringindo logins a usuários específicos de hosts específicos. Os critérios HOST também podem conter endereços para corresponder no formato de endereço / máscara CIDR.

AllowGroups não aceita o formulário USER @ HOST.

Portanto, para aceitar usuários 1) no grupo ssh e 2) de sub-redes / hosts específicos:

AllowUsers *@192.168.1.0/24 *@*.example.com *@1.2.3.4
AllowGroups ssh
bjacobowski
fonte
AllowGroups doesn't accept the USER@HOST form. Não sei o que você quer dizer com isso e certamente não é o que dizem os arquivos ou documentos de configuração. Permitir grupos definitivamente permite que você faça login usando ssh [email protected].
Andrewd
11
@AndrewD AllowGroups aceita apenas nomes de grupos - por exemplo, você não pode fazer AllowGroups [email protected]. HOST é a fonte de onde você está exibindo.
precisa saber é o seguinte
3

Aqui está uma solução que encontramos funcionando:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *
vimja
fonte