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!'
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
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!'
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]
Fondamentalement, votre syntaxe est erronée, vous avez:
Match User bob, User joe, User phil
Mais ça devrait être
Match User bob,joe,phil