134 votes

Comment durcir un serveur SSH ?

Quelles mesures puis-je/doit-je prendre pour m'assurer que la sécurité autour de mon serveur SSH est absolument imperméable ?

Ce sera un wiki communautaire dès le départ, alors voyons ce que les gens font pour sécuriser leurs serveurs.

111voto

Asa Ayers Points 271

Utilisez des paires de clés publiques/privées pour l'authentification au lieu de mots de passe.

  1. Générez une clé SSH protégée par une phrase de passe pour chaque ordinateur qui doit accéder au serveur :

    ssh-keygen

  2. Autoriser l'accès SSH à clé publique depuis les ordinateurs autorisés :

    Copiez le contenu de ~/.ssh/id_rsa.pub de chaque ordinateur en lignes individuelles de ~/.ssh/authorized_keys sur le serveur, ou exécutez ssh-copy-id [server IP address] sur chaque ordinateur auquel vous accordez l'accès (vous devrez entrer le mot de passe du serveur à l'invite).

  3. Désactiver l'accès SSH par mot de passe :

    Ouvrir /etc/ssh/sshd_config trouvez la ligne qui dit #PasswordAuthentication yes et le changer en PasswordAuthentication no . Redémarrez le démon du serveur SSH pour appliquer la modification ( sudo service ssh restart ).

Maintenant, le seul moyen possible de se connecter au serveur par SSH est d'utiliser une clé qui correspond à une ligne dans le fichier ~/.ssh/authorized_keys . En utilisant cette méthode, I Je ne me soucie pas des attaques par force brute, car même s'ils devinent mon mot de passe, celui-ci sera rejeté. Il est impossible de forcer une paire de clés publiques/privées. avec la technologie d'aujourd'hui.

74voto

Rex M Points 80372

Je le suggère :

  • Utilisation de fail2ban pour empêcher les tentatives de connexion par force brute.

  • Désactiver la connexion en tant que root via SSH. Cela signifie qu'un attaquant devait connaître à la fois le nom d'utilisateur et le mot de passe, ce qui rendait l'attaque plus difficile.

    Ajouter PermitRootLogin no à votre /etc/ssh/sshd_config .

  • Limiter les utilisateurs qui peuvent se connecter en SSH au serveur. Soit par groupe, soit par utilisateur spécifique.

    Ajouter AllowGroups group1 group2 o AllowUsers user1 user2 pour limiter les personnes qui peuvent accéder au serveur par SSH.

26voto

Will Points 1002

D'autres réponses assurent la sécurité, mais il y a une chose que vous pouvez faire qui rendra vos journaux plus silencieux, et rendra moins probable le blocage de votre compte :

Déplacez le serveur du port 22 à un autre. Soit au niveau de votre passerelle, soit sur le serveur.

Cela ne renforce pas la sécurité, mais permet aux scanners Internet aléatoires de ne pas encombrer vos fichiers journaux.

23voto

Robie Basak Points 14936

Activez l'authentification à deux facteurs avec HOTP o TOTP . Ceci est disponible à partir de la version 13.10.

Cela inclut l'utilisation de l'authentification par clé publique plutôt que par mot de passe, comme dans une autre réponse ici, mais exige également que l'utilisateur prouve qu'il détient son dispositif de second facteur en plus de sa clé privée.

Résumé :

  1. sudo apt-get install libpam-google-authenticator

  2. Demandez à chaque utilisateur d'exécuter le programme google-authenticator qui génère ~/.google-authenticator et les aide à configurer leurs dispositifs à deux facteurs (par exemple, l'application Android Google Authenticator).

  3. Modifier /etc/ssh/sshd_config et régler :

    ChallengeResponseAuthentication yes
    PasswordAuthentication no
    AuthenticationMethods publickey,keyboard-interactive
  4. Exécuter sudo service ssh reload pour récupérer les modifications apportées à /etc/ssh/sshd_config .

  5. Modifier /etc/pam.d/sshd et remplacer la ligne :

    @include common-auth

    avec :

    auth required pam_google_authenticator.so

Vous trouverez plus de détails sur les différentes options de configuration dans mon article de blog de l'année dernière : Meilleure authentification ssh à deux facteurs sur Ubuntu .

21voto

NickNameNick Points 91

Faire en sorte que le sshd bloque les IP des clients qui n'ont pas fourni d'informations de connexion correctes ". DenyHØsts " peut faire ce travail de manière très efficace. Je l'ai installé sur toutes mes boîtes Linux qui sont d'une manière ou d'une autre accessibles depuis l'extérieur.

Cela permet de s'assurer que les attaques de force sur le SSHD ne seront pas efficaces, mais n'oubliez pas ( !) que de cette façon, vous pouvez finir par vous bloquer si vous oubliez votre mot de passe. Cela peut être un problème sur un serveur distant auquel vous n'avez pas accès.

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