desenv-web-rp.com

Corresponder vários usuários em 'sshd_config'

Estou tentando aplicar as mesmas configurações sshd a vários usuários.

De acordo com o manual, parece Match User age como um AND:

Introduz um bloco condicional. Se todos os critérios na linha Match forem atendidos, as palavras-chave nas linhas a seguir substituem as definidas na seção global do arquivo de configuração

Como afirmo "para qualquer um desses usuários ...", portanto, neste exemplo, bob, joe e phil têm permissão para usar o SSH como proxy, mas não é permitido fazer login:

Match User bob, User joe, User phil
    PasswordAuthentication yes
    AllowTCPForwarding yes
    ForceCommand /bin/echo 'We talked about this guys. No SSH for you!'
11
IQAndreas

Não tendo feito isso sozinho, só posso seguir o que os manuais dizem:

No manual sshd_config:

Os padrões de correspondência podem consistir em entradas únicas ou listas separadas por vírgula e podem usar os operadores curinga e negação descritos na seção PATTERNS de ssh_config(5).

Isso significa que você deve poder dizer

Match User bob,joe,phil
  PasswordAuthentication yes
  AllowTCPForwarding yes
  ForceCommand /bin/echo 'We talked about this guys. No SSH for you!'

Consulte também esta resposta no fórum de Segurança da informação: https://security.stackexchange.com/a/18038

20
Kusalananda

Use a diretiva Match em um grupo em vez de em um usuário. Em seguida, adicione os usuários a esse grupo

Match Group users_with_no_ssh
    PasswordAuthentication yes
    AllowTCPForwarding yes
    ForceCommand /bin/echo 'We talked about this guys. No SSH for you!'
3
tomodachi

Não tenho certeza se o ForceCommand funcionaria bem com o SFTP. Além disso, talvez seja melhor ver a palavra 'DenyUsers' nos logs. De qualquer forma, eu uso isso (bem, talvez seja melhor usar o Grupo):

sshd_config

# support, ansible & backup only from specific IP                                                                    
Match User ansible,backup,support Address *,!176.x.x.x                                                          
      DenyUsers ansible,backup,support

Match User backup
        AllowTcpForwarding yes
        AllowAgentForwarding yes
        PermitListen 127.0.0.1:2223
        AcceptEnv RESTIC_REPOSITORY RESTIC_PASSWORD

Testando a configuração

# sshd -T -C addr=176.x.x.x,user=backup | egrep '^((deny|allow)users|permitlisten|acceptenv)'
denyusers root
acceptenv RESTIC_REPOSITORY
acceptenv RESTIC_PASSWORD
permitlisten 127.0.0.1:2223

# sshd -T -C addr=8.8.4.4,user=backup | egrep '^((deny|allow)users|permitlisten|acceptenv)' 
denyusers ansible,backup,support
acceptenv RESTIC_REPOSITORY
acceptenv RESTIC_PASSWORD
permitlisten 127.0.0.1:2223

Teste do mundo real

Jan 29 16:50:12 mx1 sshd[71309]: Connection from 199.x.x.x port 21042 on 199.x.x.x port 2222 rdomain "0"   
Jan 29 16:50:13 mx1 sshd[71309]: User support from 199.x.x.x not allowed because listed in DenyUsers
Jan 29 16:50:13 mx1 sshd[71309]: Connection closed by invalid user support 199.x.x.x port 21042 [preauth]
0
Jiri B

Basicamente, sua sintaxe está errada, você tem:

Match User bob, User joe, User phil

Mas deveria ser

Match User bob,joe,phil
0
m4rinos