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.
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.
Utilisez des paires de clés publiques/privées pour l'authentification au lieu de mots de passe.
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
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).
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.
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.
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.
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é :
sudo apt-get install libpam-google-authenticator
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).
Modifier /etc/ssh/sshd_config
et régler :
ChallengeResponseAuthentication yes
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive
Exécuter sudo service ssh reload
pour récupérer les modifications apportées à /etc/ssh/sshd_config
.
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 .
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.
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.