J'ai un serveur de surveillance qui requiert les détails de connexion SSH d'un compte d'utilisateur non-Sudo de chaque boîte qu'il surveille. Est-il possible de configurer un compte utilisateur spécifique tel qu'il ne puisse être connecté qu'à partir d'une adresse IP spécifique (ou mieux encore du nom d'hôte)? Je ne veux pas limiter la capacité des autres utilisateurs du serveur à pouvoir se connecter à partir d'autres adresses (sinon, je n'utiliserais qu'un pare-feu), ou tilisez l'authentification par mot de passe pour le service de surveillance uniquement .
Voir man sshd_config
. Il est possible d'ajouter un bloc AllowUsers
où vous pouvez spécifier à la fois l'utilisateur et l'hôte de la manière suivante:
AllowUsers user@Host # or IP
Bien sûr, vous devez également spécifier les autres utilisateurs auxquels vous souhaitez autoriser la connexion, si vous en avez.
En y repensant, il est possible de modifier votre sshd_config
comme ceci:
Match Host !hostname
DenyUsers user
Match Host hostname
AllowUsers user
Cela bloquerait facilement tous les utilisateurs à l'exception de user
de hostname
et de partout ailleurs il bloquerait user
.
MAIS ça ne marche pas, à cause de quelques bugs rapportés en amont [1] [2]. Mais nous l’avons promis que cela sera corrigé dans la prochaine version.
Vous pouvez utiliser des caractères génériques pour la ligne AllowUsers dans le fichier /etc/ssh/sshd_config
. Donc, il serait possible d'ajouter la ligne:
AllowUsers *@192.168.1.100
Ou:
AllowUsers *@hostname
Autoriser tout le monde à partir de cette adresse IP ou de cet accès.
Se souvenir de:
service ssh restart
Une fois que vous avez apporté les modifications, tant que vous utilisez une version antérieure à 15.04. 15.04 utilise maintenant systemd, il existe donc un mécanisme différent pour contrôler les services.
Selon pages de manuel , cela devrait fonctionner:
DenyUsers user@"!Host,*"
J'ai testé cela sur Debian et cela semblait fonctionner correctement.
Comme il s’agit du premier résultat de recherche dans Google, je pense que les gens devraient également savoir comment définir des autorisations dans le fichier /etc/hosts.allow
(avec la permission de Cameron Oltmann's article de blog à ce sujet):
Pour limiter l'accès ssh à une boîte Linux en fonction de l'adresse IP d'origine, modifiez /etc/hosts.allow:
sshd : localhost : allow sshd : 192.168.0. : allow sshd : 99.151.250.7 : allow sshd : mydomain.net : allow sshd : ALL : deny
L'entrée ci-dessus permettra l'accès ssh à partir de localhost, du sous-réseau 192.168.0.x, de l'adresse IP unique 99.151.250.7 et de mydomain.net (en supposant que mydomain.net dispose d'un enregistrement ptr pour faciliter la recherche inversée). L'accès à sshd sera refusé à toutes les autres adresses IP.
Remarques: Vous pouvez autoriser ou refuser en fonction de l'adresse IP, du sous-réseau ou du nom d'hôte. Énumérer les règles dans l'ordre du plus au moins spécifique. Le fichier n'est lu que jusqu'à ce qu'une ligne correspondante soit trouvée. Par conséquent, si vous commencez par ssdh: ALL: deny, aucune connexion SSH ne sera autorisée.
Et vous devriez pouvoir utiliser user@address
dans ce fichier, comme ceci lien lifewire.com :
Les démons de formulaires plus complexes @ Host et user @ Host sont expliqués dans les sections sur les modèles de noeud final de serveur et sur les recherches de nom d'utilisateur du client, respectivement.