Recherche de site Web

5 meilleures pratiques de sécurité du serveur OpenSSH


SSH (Secure Shell) est un protocole réseau open source utilisé pour connecter des serveurs Linux locaux ou distants afin de transférer des fichiers, effectuer des sauvegardes à distance, exécuter des commandes à distance et d'autres tâches liées au réseau via la commande scp ou la commande sftp entre deux serveurs qui se connectent sur un canal sécurisé sur le réseau.

Dans cet article, je vais vous montrer quelques outils et astuces simples qui vous aideront à renforcer la sécurité de votre serveur ssh. Vous trouverez ici des informations utiles sur la façon de sécuriser et d'empêcher les serveurs SSH de la force brute et des attaques par dictionnaire.

1. Refuser les hôtes

DenyHosts est un script de sécurité de prévention des intrusions basé sur des journaux open source pour les serveurs SSH. Il a été écrit dans un langage de programmation Python destiné à être exécuté par les administrateurs système et les utilisateurs Linux pour surveiller et analyser l'accès au serveur SSH. Les journaux des tentatives de connexion infructueuses sont appelés attaques basées sur un dictionnaire et attaques par force brute.

Le script fonctionne en interdisant les adresses IP après un nombre défini de tentatives de connexion infructueuses et empêche également de telles attaques d'accéder au serveur.

Fonctionnalités de DenyHosts
  • Assure le suivi de /var/log/secure pour trouver toutes les tentatives de connexion réussies et échouées et les filtre.
  • Surveille toutes les tentatives de connexion infructueuses de l’utilisateur et de l’hôte incriminé.
  • Continue de surveiller chaque utilisateur existant et inexistant (par exemple xyz) en cas d'échec d'une tentative de connexion.
  • Assure le suivi de chaque utilisateur, hôte et tentatives de connexion suspectes (en cas d'échec de connexion) et bannit l'adresse IP de cet hôte en ajoutant une entrée dans /etc/hosts.deny fichier.
  • Envoie éventuellement une notification par e-mail des hôtes nouvellement bloqués et des connexions suspectes.
  • Conserve également toutes les tentatives de connexion d'utilisateurs valides et invalides dans des fichiers séparés afin de faciliter l'identification de l'utilisateur valide ou invalide qui est attaqué. Ainsi, nous pouvons supprimer ce compte ou modifier le mot de passe, ou désactiver le shell pour cet utilisateur.

2. Échec2Ban

Fail2ban est l'un des frameworks open source de détection/prévention des intrusions les plus populaires, écrit dans un langage de programmation python. Il fonctionne en analysant les fichiers journaux tels que /var/log/secure, /var/log/auth.log, /var/log/pwdfail etc. pour trop de tentatives de connexion infructueuses.

Fail2ban est utilisé pour mettre à jour le fichier Netfilter/iptables ou hosts.deny de TCP Wrapper, afin de rejeter l'adresse IP d'un attaquant pendant une durée définie. Il a également la capacité de débloquer une adresse IP bloquée pendant une certaine période définie par les administrateurs. Cependant, une certaine minute de levée du bannissement est plus que suffisante pour arrêter de telles attaques malveillantes.

Fonctionnalités Fail2Ban
  • Multi-thread et Hautement configurable.
  • Prise en charge de la rotation des fichiers journaux et peut gérer plusieurs services tels que (sshd, vsftpd, apache, etc.).
  • Surveille les fichiers journaux et recherche des modèles connus et inconnus.
  • Utilise la table Netfilter/Iptables et TCP Wrapper (/etc/hosts.deny) pour interdire l'adresse IP des attaquants.
  • Exécute des scripts lorsqu'un modèle donné a été identifié pour la même adresse IP plus de X fois.

3. Désactivez la connexion root

Par défaut, les systèmes Linux sont préconfigurés pour autoriser les connexions à distance SSH pour tout le monde, y compris l'utilisateur root lui-même, ce qui permet à chacun de se connecter directement au système et d'obtenir un accès root. Malgré le fait que le serveur SSH offre un moyen plus sécurisé de désactiver ou d'activer les connexions root, c'est toujours une bonne idée de désactiver l'accès root, ce qui permet de garder les serveurs un peu plus sécurisés.

Il y a tellement de gens qui tentent de forcer brutalement les comptes root via des attaques SSH en fournissant simplement différents noms de compte et mots de passe, l'un après l'autre. Si vous êtes un administrateur système, vous pouvez consulter les journaux du serveur SSH, où vous trouverez un certain nombre de tentatives de connexion infructueuses. La principale raison derrière un certain nombre de tentatives de connexion infructueuses est le fait d'avoir des mots de passe suffisamment faibles, ce qui est logique pour les pirates/attaquants d'essayer.

Si vous avez des mots de passe forts, alors vous êtes probablement en sécurité, cependant, il est préférable de désactiver la connexion root et d'avoir un compte séparé régulier auquel vous connecter, puis d'utiliser sudo ou su pour obtenir un accès root chaque fois que nécessaire.

4. Afficher la bannière SSH

C'est l'une des fonctionnalités les plus anciennes disponibles depuis le début du projet ssh, mais je l'ai rarement vue utilisée par qui que ce soit. Quoi qu'il en soit, je pense que c'est une fonctionnalité importante et très utile que j'ai utilisée pour tous mes serveurs Linux.

Ce n'est pas pour des raisons de sécurité, mais le plus grand avantage de cette bannière est qu'elle est utilisée pour afficher des messages d'avertissement ssh aux accès autorisés par l'ONU et des messages de bienvenue aux utilisateurs autorisés. avant l'invite du mot de passe et après la connexion de l'utilisateur.

5. Connexion sans mot de passe SSH

Une connexion SSH sans mot de passe avec keygen SSH établira une relation de confiance entre deux serveurs Linux qui effectue le transfert de fichiers et la synchronisation beaucoup plus facile.

Ceci est très utile si vous avez affaire à des sauvegardes automatisées à distance, à l'exécution de scripts à distance, au transfert de fichiers, à la gestion de scripts à distance, etc. sans saisir le mot de passe à chaque fois.

Pour sécuriser davantage votre serveur SSH, lisez notre article sur Comment sécuriser et renforcer le serveur OpenSSH