date: 08 Oct 2009 title: Home serveur : OpenSSH tags: auto-hébergement, planet-libre, openssh xrefs: home-serveur-tri-du-courrier-avec-sieve.txt, home-serveur-installation-du-serveur-web.txt, home-serveur-configuration-du-serveur-imap-dovecot.txt, home-serveur-premiers-reglages.txt, home-serveur-proteger-son-serveur-configuration-du-pare-feu.txt, home-serveur-proteger-son-serveur-configuration-de-fail2ban.txt, home-serveur-recuperer-ses-mail-avec-fetchmail.txt, home-serveur-installation.txt, home-serveur-quelques-astuces-bien-utiles.txt, home-serveur-configuration-du-serveur-de-mail-postfix.txt, home-serveur-utilisation-de-cles-pour-ssh.txt, home-serveur-sauvegarde-des-maildirs.txt Aujourd'hui, nous allons configurer OpenBSD Secure Shell Server. OpenSSH permet d'accéder à une console du serveur de manière sécurisé et authentifié. Commencez par installer le service sudo apt-get install openssh-server Toute la configuration du serveur ssh se fait dans /etc/ssh/sshd_config. Quand vous modifiez un fichier assez important (comme un fichier de configuration d'un service) il est prudent d'en faire une copie avant modification, pour pouvoir facilement revenir dessus en cas de problème. sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig Ouvrez ensuite le fichier en question, nous allons modifier plusieurs paramètres sudo vim /etc/ssh/sshd_config * Le port d'écoute : par défaut le port 22 est réservé au protocole ssh. Le problème, c'est que tous les scripts kiddies et autres bots qui traînent sur Internet vont tenter de se connecter sur ce port (vous pouvez tester, laissez tourner votre serveur quelques jours et allez voir les logs de connections, c'est assez impressionnant...). Il faut donc le changer. Prenez en un supérieur à 1024 et qui n'est pas attribué un autre service de préférence. Vous pouvez savoir les ports réservés sur [ce magnifique pdf](http://univers-libre.net/atelecharger/common-ports.pdf) par exemple. Port 3030 * Le temps donné à l'utilisateur pour se connecter. Quand ce temps est écoulé, le serveur se déconnecte du client. Mettre un temps court permet de ne pas laisser trop de connections inactives trop longtemps qui surchargent le serveur. C'est le principe des attaques DoS (Déni de Service). 1 minute me parait raisonnable. LoginGraceTime 60 * Désactiver la connection root. Autoriser les connections sur le compte root est très dangereux, d'un part parce que si un hackeur s'y connecte il aura tous les droits, mais aussi parce que tous le monde sait qu'il existe forcement un compte root sur la machine (il n'y a plus qu'à trouver le mot de passe). PermitRootLogin no * Affichage du fichier /etc/motd à la connexion. C'est ce fameux fichier qui contient un texte assez long qui dit que vous utilisez un logiciel libre et qu'il n'y a ABSOLUMENT aucune garantie etc..., celui qui s'affiche également quand vous vous connectez en local. Vous pouvez l'activer, le désactiver ou en changer son contenu. PrintMotd yes * Nombre d'erreurs de connection autorisées. Le service fermera la connection si vous vous plantez plus de x fois de suite. Ça permet de limiter les attaques par brute force, ou utilisant des dictionnaires de mots de passe. MaxAuthTries 3 * Nombre maximum de connections. Vous pouvez définir combien de connections simultanées sont possibles au service ssh. C'est utile contre les attaques DoS. Cette valeur dépend bien évidement de votre utilisation : combien vous aurez d'utilisateurs sur la machine (n'oubliez pas que vous pouvez très bien avoir besoin d'ouvrir plusieurs session en même temps). Dans mon cas je serai seul, occasionnellement 2 voir 3. MaxStartups 6:30:10 SSH permet d'affiner encore plus votre choix. Dans l'exemple ci dessus, SSH autorise toutes les connections tant qu'elles restent inférieures ou égales à 6. Si SSH reçoit une 7ème demande de connection, il y aura 30% de chance quelle soit rejettée. Il continuera à rejeter 30% des connections jusqu'à ce qu'il arrive à 10 connections établies. À partir de là, plus aucune connection est acceptée. Encore une fois, ça permet de luter contre les attaques DoS. Si vous trouvez ça trop compliqué, vous pouvez bien sûr définir un maximum uniquement. MaxStartups 8 * Affichage d'une bannière à la connection. C'est le même principe que pour PrintMotd, mais le contenu du fichier sera affiché AVANT que l'utilisateur se soit authentifié. Ne mettez donc pas des informations sensibles dedans ! Banner /etc/ssh/banner Les valeurs par défauts des autres options conviennent. On peut maintenant redémarrer le service ssh : sudo /etc/init.d/ssh restart Et ouvrir le port en question sur votre box/routeur. En général, vous devez chercher dans le menu NAT, redirections de ports, ... Redirigez alors le port TCP 3030 (dans le cas de ce tuto) vers le même port TCP de l'adresse IP que vous avez donné a votre serveur. Et voila, maintenant vous pouvez remettre au placard votre écran/clavier qui vous a servit à installer le serveur et ranger celui ci au fond d'une étagère :) . Quel bonheur, enfin un peu de place sur votre bureau :) Le prochain article sera normalement assez court et sera consacré à l'utilisation d'un jeu de clé publique/privé à la place d'un mot de passe pour se connecter au serveur (plus sûr).