4 votes

Comment puis-je autoriser des ordinateurs spécifiques à se connecter à une machine dont l'authentification par mot de passe est désactivée ?

Les instructions dans help.ubuntu.com/community/SSH/OpenSSH/Configuration recommandent de désactiver l'authentification par mot de passe afin qu'"il ne soit possible de se connecter qu'à partir d'ordinateurs que vous avez spécifiquement approuvés". Mais ils ne disent pas comment approuver spécifiquement un ordinateur. Comment dois-je m'y prendre ?

8voto

Azendale Points 11431

Sur chaque utilisateur que vous voulez avoir accès au serveur, exécutez dans un terminal :

ssh-keygen
ssh-copy-id <username>@<serverIPorDNSname>

Il vous demandera où le sauvegarder, la valeur par défaut est parfaite. Il vous demandera d'entrer une phrase de passe. Cela permet de crypter la clé au cas où l'ordinateur serait volé ou compromis. Si vous ne voulez pas de phrase de passe, laissez les deux invites de phrase de passe vides.

La première commande crée une clé ssh pour l'utilisateur actuel sur lequel elle est exécutée. La seconde commande se connecte au serveur et ajoute la clé de l'utilisateur actuel à la liste des personnes autorisées à se connecter. Comme ssh-copy-id utilise ssh, vous devrez effectuer cette opération avant de désactiver les connexions par mot de passe.

Les clés SSH sont constituées de deux moitiés correspondantes. Une moitié est connue de tous, l'autre est gardée secrète. À l'aide d'un algorithme mathématique, la moitié publique peut être utilisée pour déchiffrer les données cryptées avec la clé privée. Si les données sont décryptées avec succès avec la clé publique, vous savez sans aucun doute que c'est la moitié privée de la clé qui les a cryptées. Ainsi, lorsque vous vous connectez avec une clé ssh, le client envoie un message (crypté à l'aide de la clé privée) qui dit essentiellement "laissez-moi entrer". Le serveur vérifie en utilisant la clé publique et si celle-ci figure dans la liste des ordinateurs autorisés, la connexion est réussie.

ssh-copy-id consiste (en utilisant ssh) à copier la moitié publique dans la liste des serveurs des clés autorisées à se connecter (cette liste est stockée dans /home/<username>/.ssh/authorized_keys2, ou dans le cas de root dans /root/.ssh/authorized_keys2). Si vous avez déjà désactivé l'authentification par mot de passe, vous pouvez toujours ajouter un ordinateur. Il vous suffit de copier la clé publique (dans /home/nomd'utilisateur/.ssh/id_rsa.pub sur un ordinateur client) sur quelque chose comme une clé USB, puis d'ajouter le contenu de id_rsa.pub à la fin du fichier /home/<nomd'utilisateur>/.ssh/authorized_keys2 sur le serveur. (Vous pouvez le faire en exécutant une commande comme cat /media/USB/stick/path/to/id_rsa.pub >>/home/<username>/.ssh/authorized_keys2 sur le serveur).

0voto

con-f-use Points 17925

Iptables

Si les ordinateurs ont une certaine plage d'adresses IP, vous pouvez utiliser iptables pour contrôler l'accès. Les Iptables font partie du noyau. Vous pouvez les contrôler dans le fichier /etc/iptables

# from /etc/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
#
# loopback device
#
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
#
# all connections already established (started outgoing from my machine)
#
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# but SSH - restricted
#
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source 138.232.0.0/255.255.0.0 -j ACCEPT
#
# block all others (without answering - thus nobody is able to scan the network)
#
-A INPUT -p icmp --icmp-type echo-request -j DROP
-A RH-Firewall-1-INPUT -j DROP
COMMIT

La ligne intéressante est celle-ci :

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source 111.111.0.0/255.255.0.0 -j ACCEPT

Prot 22 est le port ssh par défaut. S'il est différent sur votre machine, changez-le. 111.111.0.0/255.255.0.0 -j ACCEPT signifie qu'il accepte toutes les connexions provenant de '111.111.foo.bar' avec 'foo' et 'bar' étant n'importe quels 3 chiffres.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X