GNU/Linux >> Tutoriels Linux >  >> Linux

3 façons de configurer SSH pour la confidentialité

SSH (Secure Shell) est un protocole qui permet de créer une connexion vérifiée et privée, en sécurisant le canal à l'aide de clés cryptographiques, pour lancer un shell distant sur une autre machine. Grâce à cette connexion, vous pouvez exécuter des commandes à distance, initier des transferts de fichiers sécurisés, transférer des sockets, des affichages et des services, et bien plus encore.

Avant l'apparition de SSH, la plupart des administrations à distance se faisaient via telnet, et pour être honnête, une fois que vous pouviez établir une session à distance, vous pouviez faire pratiquement tout ce dont vous aviez besoin. Le problème avec ce protocole était que le trafic voyageait non crypté en tant que texte en clair pur. Il n'a pas fallu beaucoup d'efforts pour utiliser un renifleur de trafic pour voir tous les paquets d'une session, y compris ceux contenant un nom d'utilisateur et un mot de passe.

Avec SSH, grâce à l'utilisation de clés asymétriques, les sessions entre les appareils impliqués dans la communication sont cryptées. Et de nos jours, cela est plus pertinent que jamais, avec tous les serveurs cloud administrés du monde entier.

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

3 conseils pour la configuration SSH

L'implémentation la plus courante du protocole SSH est OpenSSH, développée par le projet OpenBSD et disponible pour la plupart des systèmes d'exploitation de type Linux et Unix. Une fois que vous avez installé ce package, vous avez un fichier nommé sshd_config qui contrôle la plupart du comportement du service. Les paramètres par défaut sont généralement très conservateurs, mais j'ai tendance à faire quelques ajustements pour optimiser mon expérience SSH et protéger mes serveurs contre les accès non autorisés.

1. Modifier le port par défaut 

C'est celui dont tous les administrateurs ne se souviennent pas. N'importe qui avec un scanner de port peut découvrir un port SSH même après l'avoir déplacé, donc vous vous éloignez à peine du danger, mais vous évitez commodément des centaines de scripts non sophistiqués lancés contre votre serveur. C'est une faveur que vous pouvez vous rendre pour éliminer une bonne quantité de bruit de vos bûches.

Pour cet article, j'avais un port TCP 22 par défaut du serveur SSH sur un fournisseur de cloud, et les attaques moyennes par minute étaient de 24. Après avoir changé le port en un nombre beaucoup plus élevé, TCP 45678, la moyenne des personnes se connectant et devinant n'importe quel nom d'utilisateur ou mot de passe était de deux par jour.

Pour changer le port par défaut pour SSH, ouvrez /etc/ssh/sshd_config dans votre éditeur de texte préféré et modifiez la valeur du Port   de 22 à un nombre supérieur à 1 024. La ligne peut être commentée, car 22 est la valeur par défaut (elle n'a donc pas besoin d'être explicitement déclarée dans la configuration), donc décommentez la ligne avant d'enregistrer.

#Port 22122
#AddressFamily any 
#ListenAddress 0.0.0.0 
#ListenAddress ::

Une fois que vous avez modifié le port et enregistré le fichier, redémarrez le serveur SSH :

$ sudo systemctl restart sshd

2. Plus de mots de passe

Il y a un mouvement général pour cesser d'utiliser les mots de passe comme moyen d'authentification, avec des méthodes telles que l'authentification à deux facteurs qui gagnent en popularité. OpenSSH peut s'authentifier à l'aide de clés asymétriques, il n'est donc pas nécessaire de se souvenir de mots de passe complexes, encore moins de les faire pivoter tous les quelques mois, ou de craindre que quelqu'un "surfe sur l'épaule" pendant que vous établissez votre session à distance. L'utilisation de clés SSH vous permet de vous connecter rapidement et en toute sécurité à votre équipement distant. Cela signifie souvent moins de temps pour traiter les noms d'utilisateur et les mots de passe incorrects pour le serveur lui-même. La connexion est agréablement simple. Lorsqu'il n'y a pas de clé, il n'y a pas d'entrée, pas même une invite.

Pour utiliser cette fonctionnalité, vous devez configurer à la fois le client (l'ordinateur physiquement devant vous) et le serveur (la machine distante).

Sur la machine cliente, vous devez générer une paire de clés SSH. Celui-ci se compose d'une clé publique et d'une clé privée. Comme leurs noms l'indiquent, une clé est à distribuer aux serveurs auxquels vous souhaitez vous connecter, et l'autre est privée et ne doit être partagée avec personne. Créez une nouvelle clé avec le ssh-keygen et utilisez la commande -t option pour spécifier une bonne bibliothèque de cryptographie récente comme ed25519 :

$ ssh-keygen -t ed25519    
 Generating public/private ed25519 key pair. 
 Enter file in which to save the key (~/.ssh/id_ed25519):

Lors de la création de la clé, vous êtes invité à nommer le fichier. Vous pouvez appuyer sur Retour pour accepter la valeur par défaut. Si vous créez plus de clés à l'avenir, vous pouvez donner à chacune un nom personnalisé, mais avoir plusieurs clés signifie spécifier la clé que vous souhaitez utiliser pour chaque interaction, donc pour l'instant, acceptez simplement la valeur par défaut.

Vous pouvez également attribuer une phrase secrète à votre clé. Cela garantit que même si quelqu'un d'autre parvient à obtenir votre clé privée (ce qui ne devrait jamais arriver), il ne pourra pas l'utiliser sans votre phrase de passe. C'est une protection utile pour certaines clés, alors qu'elle n'est pas appropriée pour d'autres (en particulier celles utilisées dans les scripts). Appuyez sur Retour pour laisser votre clé sans phrase secrète ou créer une phrase secrète si vous le souhaitez.

Pour copier votre clé sur un serveur, utilisez le ssh-copy-id commande. Par exemple, si je possède un serveur nommé example.com , alors je peux y copier ma clé publique avec cette commande :

$ ssh-copy-id [email protected]

Cela crée ou modifie le fichier authorized_keys dans le .ssh du serveur répertoire avec votre clé publique.

Une fois le ssh-copy-id commande a confirmé ce qu'elle a fait, essayez de vous connecter depuis votre ordinateur pour vérifier que vous pouvez vous connecter sans mot de passe (ou avec la phrase secrète de votre clé si vous choisissez d'en utiliser une).

Une fois que vous êtes sur votre serveur sans utiliser le mot de passe de votre compte serveur, modifiez le sshd_config du serveur et définissez PasswordAuthentication à no .

PasswordAuthentication no

Redémarrez le ssh service pour charger la nouvelle configuration :

$ sudo systemctl restart sshd

3. Décidez qui peut se connecter

La plupart des distributions ne permettent pas à l'utilisateur root de se connecter via SSH, ce qui garantit que seuls les comptes non privilégiés sont actifs, en utilisant le sudo commande pour élever les privilèges selon les besoins. Cela empêche une cible notable et douloureusement évidente (racine) d'attaques scriptées simples mais trop courantes.

De même, une fonctionnalité simple et puissante d'OpenSSH est la possibilité de décider quels utilisateurs peuvent se connecter à une machine. Pour définir quels utilisateurs obtiennent un accès SSH, ouvrez le sshd_config fichier dans votre éditeur de texte préféré et ajoutez une ligne comme celle-ci :

AllowUsers jgarrido jane tux

Redémarrez le service SSH pour charger les nouvelles options de configuration.

Cela permet uniquement aux trois utilisateurs (jgarrido, jane et tux) de se connecter ou d'exécuter une opération sur la machine distante.

Réflexions finales

Vous pouvez utiliser OpenSSH pour implémenter un serveur SSH solide et robuste. Ce ne sont là que trois options utiles pour durcir votre installation. Pourtant, il existe des tonnes de fonctionnalités et d'options que vous pouvez activer ou désactiver dans le sshd_config fichier, et il existe de nombreuses applications géniales comme Fail2ban que vous pouvez utiliser pour protéger davantage votre service SSH.


Linux
  1. Gérer les paires de clés SSH pour les serveurs cloud avec python-novaclient

  2. Comment utiliser la commande ssh-keygen pour configurer ssh sans mot de passe

  3. Comment éviter que ssh ne demande la phrase secrète de la clé pour les connexions sans mot de passe

  4. outil de type teamviewer pour ssh?

  5. comment créer une clé ssh pour un autre utilisateur ?

Configurer la clé RNDC pour le serveur DNS Bind sur CentOS 7

11 meilleures façons de sécuriser votre serveur SSH

Comment configurer l'authentification basée sur la clé Ssh pour Github en utilisant le fichier ~/.ssh/config ?

Accès SSH pour cPanel

Générer des clés SSH pour une connexion sans mot de passe dans Ubuntu

Comment ajouter une clé SSH pour l'accès cPanel SSH