Accueil > Linux, Tutoriel > 20 actions pour sécuriser un serveur SSH

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.

  1. Désactiver le daemon sshd :
    rc-update del sshd
  2. N’autoriser que l’utilisation du protocole 2 :
    fichier /etc/ssh/sshd_config

    Protocol 2
  3. 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
  4. 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
  5. 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_config

    IgnoreRhosts yes
  6. Désactiver l’authentification par nom d’hôte :
    fichier /etc/ssh/sshd_config

    HostbasedAuthentication no
  7. 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_config

    PermitRootLogin no
  8. 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_config

    Banner /etc/issue
  9. 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
  10. 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
  11. Utiliser des mots de passe ou des passphrases compliquées :
    rc-update del sshd
  12. 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
  13. Utiliser l’authentification basée sur le keychain :
    Le keychain est un rendant la connexion et l’authentification plus pratique et flaxible. Cliquer ici pour la mise en place et l’utilisation.
  14. 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
  15. 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
  16. Désactiver les mots de passe vides :
    fichier /etc/ssh/sshd_config

    PermitEmptyPasswords no
  17. 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
  18. 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)
  19. 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
  20. 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
  21. Maintenez le à jour :
    utilisez l’outils fournis avec votre pour maintenir à jour votre et les applications installées
    Pour

    emerge --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:

  1. Vérifier la syntaxe du fichier de configuration de MySQL
  2. benchmark de serveur web avec l’outil Apache : ab
  3. 20 bonnes habitudes à prendre sous Unix
  4. 10 Feuilles de triches essentielles pour Linux
  5. Guake un terminal gnome à la sauce Quake
  1. solaris
    19/08/2009 à 13:07 | #1

    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
    « 

  2. 19/08/2009 à 14:17 | #2

    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

  1. Pas encore de trackbacks