20 actions pour sécuriser un serveur SSH
Bien qu’utilisant le protocole crypté SSH, OpenSSH reste tout de même faillible si sa configuration n’est pas à niveau. Donc, voici 20 points pour améliorer la sécurité d’un serveur au travers d’openSSH.
- Désactiver le daemon sshd :
rc-update del sshd
- N’autoriser que l’utilisation du protocole 2 :
fichier /etc/ssh/sshd_configProtocol 2
- Limiter les utilisateurs ayant accès au serveur :
fichier /etc/ssh/sshd_config# Autorise les utilsateurs root vivek et jerry AllowUsers root vivek jerry # Accès interdit pour saroj anjali et foo DenyUsers saroj anjali foo
- Configurer le délai de déconnexion pour inactivité et attente de connexion :
fichier /etc/ssh/sshd_config#L'utilisateur sera déconnecté après 5 minutes d'inactivités ClientAliveInterval 300 #Nombre de message à envoyer au client pour savoir s'il est toujours connecté ClientAliveCountMax 0
- Désactiver l’utilisation des fichiers .rhosts :
Les fichiers ~/.rhosts et ~/.shosts servent pour la connexion avec l’utiliraire rsh que ssh est capable d’émuler bien qu’étant obsolète.
fichier /etc/ssh/sshd_configIgnoreRhosts yes
- Désactiver l’authentification par nom d’hôte :
fichier /etc/ssh/sshd_configHostbasedAuthentication no
- Désactiver la connexion avec le user root :
Il est préférable de ce connecter avec un user lambda sur le serveur puis de faire un su -
fichier /etc/ssh/sshd_configPermitRootLogin no
- Activer une bannière d’avertissement :
Cette bannière s’affichera à chaque connexion (consulter la source pour un exemple et des conseils pour la mise en place)
fichier /etc/ssh/sshd_configBanner /etc/issue
- Sécuriser le port 22 à l’aide d’un parfeu :
Utiliser netfilter (iptables) afin de limiter les IP autorisées à accèder au port 22 - changer le port d’écoute du daemon SSH et limiter l’adresse d’écoute :
Par défaut, SSH écoute sur le port 22 de toutes les adresses IP du serveur.
fichier /etc/ssh/sshd_config#SSH écoutera désormais le port 3000 Port 300 # Il écoutera sur les adresses 192.168.1.5 et 202.54.1.5 ListenAddress 192.168.1.5 ListenAddress 202.54.1.5
- Utiliser des mots de passe ou des passphrases compliquées :
rc-update del sshd
- Utiliser une authentification par clé public :
Utiliser les tuto RSA et DSA pour la création, la mise en place et la gestion des clés - Utiliser l’authentification basée sur le keychain :
Le keychain est un script shell rendant la connexion et l’authentification plus pratique et flaxible. Cliquer ici pour la mise en place et l’utilisation. - Chrooter les users dans leur répertoire home :
2 méthodes disponible en fonction de votre version de SSH.
Si vous avez une version récente (4.8p1 ou plus), voyer ce blog pour la configuration de SSH.
Pour les autre, il vous faudrat installer un outils complémentaire tel que rssh - Utiliser TCP Wrappers :
TCP Wrappers permet de filtrer les accès réseaux au serveur en fonction des services
fichier /etc/hosts.allow#Autorisera l'accès au service SSH que pour les adresses 192.168.1.2 et 172.16.23.12 sshd : 192.168.1.2 172.16.23.12
- Désactiver les mots de passe vides :
fichier /etc/ssh/sshd_configPermitEmptyPasswords no
- Contrecarrer les attaques par Brute Force :
Utiliser des outils tels que denyhost ou fail2ban afin de blacklister les ip provoquant trop d’erreurs de connexion - Limiter le nombre de connexion au port 22 :
Mettez en place des rêgles iptables afin d’empecher un nombre trop important de connexion au port 22 (voir la source pour des exemples) - Utiliser le Port Knocking :
Le Port Knocking permet d’autoriser un hôte à ce connecter à un service à condition qu’il est essayer d’ouvrir d’autre ports selon une rêgle définie à l’avance - Utiliser des analyseurs de log :
Installer les outils logwatch et logcheck qui vous aiderons à parcourir vos logs et à vous envoyer des rapports aussi détaillé que vous le souhaité.
fichier /etc/ssh/sshd_config#Pour permettre à logcheck d'avoir de quoi ce mettre sous la dent LogLevel INFO
- Maintenez le système à jour :
utilisez l’outils fournis avec votre distribution pour maintenir à jour votre système et les applications installées
Pour Gentooemerge --sync emerge -avuND world
En cas de mise à jour d’un daemon actif, n’oubliez pas de faire un arrêt/relance de celui ci
/etc/init.d/sshd restart
Pour plus de détails, de liens et d’exemple, voici la source : Top 20 OpenSSH Server Best Security Practices.
Related posts:
Hi, don’t know if this file is present by defaut, but i would add « ensure that /etc/hosts.deny exists and contains the following line
ALL: ALL
«
Votre solution n’est pas mauvaise. Mais elle interdit à tout le monde d’accéder à tout les services qui utilisent ce fichier.
Donc par la suite il faudra soit modifier le fichier /etc/host.deny ou host.allow, en fonction des adresses ip authorisées a accéder à tel ou tel service.
Ce qui complique la tâche surtout lorsqu’on administre un serveur à partir d’une ip dynamique
translated by google :
Your solution is not bad. But it forbids everyone access to all services that use this file.
So in the future you must either edit /etc/host.deny or host.allow, based on IP addresses authorized to access a particular service.
What complicates the task especially when administering a server from a dynamic ip