web-dev-qa-db-fra.com

Faire correspondre plusieurs utilisateurs dans 'sshd_config'

J'essaie d'appliquer les mêmes paramètres sshd à plusieurs utilisateurs.

Selon le manuel, il semble Match User agit comme un AND:

Introduit un bloc conditionnel. Si tous les critères de la ligne Match sont satisfaits, les mots clés des lignes suivantes remplacent ceux définis dans la section globale du fichier de configuration

Comment puis-je indiquer "pour l'un de ces utilisateurs ...", donc dans cet exemple, bob, joe et phil sont autorisés à utiliser SSH comme proxy, mais pas autorisé à se connecter:

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'ayant pas fait cela moi-même, je ne peux que reprendre ce que disent les manuels:

Dans le manuel sshd_config:

Les modèles de correspondance peuvent consister en des entrées uniques ou des listes séparées par des virgules et peuvent utiliser les opérateurs génériques et de négation décrits dans la section PATTERNS de ssh_config(5).

Cela signifie que vous devez pouvoir dire

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

Voir également cette réponse sur le forum de la sécurité de l'information: https://security.stackexchange.com/a/18038

20
Kusalananda

Utilisez la directive Match sur un groupe au lieu d'un utilisateur. Ajoutez ensuite les utilisateurs à ce groupe

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

Je ne suis pas sûr que ForceCommand fonctionnerait bien avec SFTP. En outre, il est peut-être préférable de voir le mot "DenyUsers" dans les journaux. Quoi qu'il en soit, j'utilise ceci (enfin, il serait peut-être préférable d'utiliser Group):

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

Tester la configuration

# 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

Test du monde réel

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

Fondamentalement, votre syntaxe est erronée, vous avez:

Match User bob, User joe, User phil

Mais ça devrait être

Match User bob,joe,phil
0
m4rinos