{"id":275,"date":"2015-02-04T17:07:02","date_gmt":"2015-02-04T16:07:02","guid":{"rendered":"http:\/\/www.fragnol.net\/?p=275"},"modified":"2015-02-04T17:23:30","modified_gmt":"2015-02-04T16:23:30","slug":"securisation-du-service-ssh","status":"publish","type":"post","link":"https:\/\/www.fragnol.net\/?p=275","title":{"rendered":"S\u00e9curisation du service SSH"},"content":{"rendered":"<p>En ces temps de crises on cherche un peu partout o\u00f9 il est possible de faire des \u00e9conomies (c&rsquo;est la mode !). J&rsquo;ai remarqu\u00e9 que chez Online.net mon serveur d\u00e9di\u00e9 Dedibox\u00ae SC gen2 \u00e9tait pass\u00e9 de 9,99\u20acHT \u00e0 5,99\u20acHT !!! Or pour en b\u00e9n\u00e9ficier il faut r\u00e9silier son contrat et en prendre un autre, et donc se taper toute une migration&#8230; J&rsquo;en ai profit\u00e9 pour regarder ce qu&rsquo;il se passait chez la concurrence et j&rsquo;ai d\u00e9cid\u00e9 de prendre pour le m\u00eame prix un serveur plus robuste chez Kimsufi (OVH), un <span class=\"blue fw800\">KS-2<\/span> ! Je vais donc r\u00e9diger une s\u00e9rie d&rsquo;articles pour parler de ma migration en g\u00e9n\u00e9ral, et dans l&rsquo;imm\u00e9diat de ce bon vieux service SSH&#8230;<\/p>\n<p><a href=\"http:\/\/www.fragnol.net\/?p=275\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-281 size-medium\" src=\"http:\/\/www.fragnol.net\/wp-content\/uploads\/2015\/01\/ssh_logo-300x143.png\" alt=\"ssh_logo\" width=\"300\" height=\"143\" srcset=\"https:\/\/www.fragnol.net\/wp-content\/uploads\/2015\/01\/ssh_logo-300x143.png 300w, https:\/\/www.fragnol.net\/wp-content\/uploads\/2015\/01\/ssh_logo-500x239.png 500w, https:\/\/www.fragnol.net\/wp-content\/uploads\/2015\/01\/ssh_logo.png 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><!--more--><\/p>\n<p>La premier chose est de cr\u00e9er un nouvel utilisateur qui nous servira a nous connecter en SSH \u00e0 notre serveur (en effet se connecter en root en ssh est \u00e0 proscrire) :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">adduser florent<\/pre>\n<p>Nous allons ensuite cr\u00e9er un groupe dans lequel nous renseignerons tous les utilisateurs ayant le droit de se connecter en ssh :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">addgroup sshusers<\/pre>\n<p>Puis nous ajoutons notre utilisateur florent \u00e0 ce groupe :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">adduser florent sshusers<\/pre>\n<p>Nous allons passer a la configuration du fichier de config du service SSH afin de s\u00e9curiser notre serveur. Commen\u00e7ons part changer le port par d\u00e9faut . Pour cela il faut \u00e9diter le fichier <em>\/etc\/ssh\/ssh<strong>d<\/strong>_config<\/em> et changer la ligne port avec le num\u00e9ro de port qui vous convient\u00a0:<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">Port 2552 #par exemple<\/pre>\n<p>Nous allons ensuite rajouter la directive autorisant le groupe sshusers :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">AllowGroups sshuers<\/pre>\n<p>Puis nous empechons le compte root de se connecter :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">PermitRootLogin no<\/pre>\n<p>Il est maintenant possible de se connecter avec l&rsquo;utilisateur \u00ab\u00a0florent\u00a0\u00bb en utilisant le port 2522 sur notre client ssh (Putty par exemple).<\/p>\n<p>Cependant je pr\u00e9f\u00e8re m&rsquo;identifier via non plus un mot de passe mais un certificat . Cette m\u00e9thode est beaucoup plus s\u00e9curis\u00e9 que la premi\u00e8re. La premi\u00e8re \u00e9tape consiste \u00e0 cr\u00e9er nos cl\u00e9s, pour cela rien de plus simple. Sur votre serveur linux tapez cette commande :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">ssh-keygen -t rsa<\/pre>\n<p>Personnellement je ne choisis pas de \u00ab\u00a0passphrase\u00a0\u00bb, cela me permet d\u2019avoir une connexion a mon serveur sans interaction. Cela dit, le risque est qu\u2019une personne r\u00e9cup\u00e8re notre cl\u00e9 priv\u00e9 et l\u2019utilise, c&rsquo;est \u00e0 vous de voir !<\/p>\n<p>En fonction de l&rsquo;utilisateur avec lequel vous \u00eates connect\u00e9 vos cl\u00e9s iront soit dans <em>\/root\/.ssh\/<\/em> ou ~\/.ssh\/. Vous devriez avoir deux cl\u00e9s avec vous :<\/p>\n<p>&#8211; Un fichier<strong> id_rsa<\/strong> qui corresponds \u00e0 la cl\u00e9 priv\u00e9e. Cette cl\u00e9 est confidentiel et sera utilis\u00e9 par notre client ssh.<\/p>\n<p>&#8211; Un fichier <strong>id_rsa.pub<\/strong> qui corresponds \u00e0 la cl\u00e9 publique. C&rsquo;est cette cl\u00e9 qui transite sur internet vers les machines que nous voulons controler.<\/p>\n<p>A ce stade vous allez peut-\u00eatre tiquer : \u00ab\u00a0Mais pourquoi on cr\u00e9e ces cl\u00e9s sur le serveur Linux alors qu&rsquo;on veut justement le contr\u00f4ler ???\u00a0\u00bb et vous aurez raison ! A vrai dire notre serveur Linux sait nativement cr\u00e9er des certificats (ou presque) alors que sur notre machine windows c&rsquo;est&#8230; moins \u00e9vident !<\/p>\n<p><span style=\"text-decoration: underline;\">Sur notre machine cliente :<\/span><\/p>\n<p>Bref nous allons maintenant rapatrier notre cl\u00e9 id_rsa sur notre machine cliente (en occurrence un Windows 7 avec Putty). Pour le moyen de rapatriement je vous laisse le choix (sFTP, copier\/coller, mail&#8230;). Afin d&rsquo;utiliser cette cl\u00e9 avec Putty nous allons devoir la convertir avec <a href=\"http:\/\/the.earth.li\/~sgtatham\/putty\/latest\/x86\/puttygen.exe\" target=\"_blank\">Puttygen.exe<\/a>.<\/p>\n<p>Ouvez cet EXE puis cliquez dans le menu \u00ab\u00a0<em>Conversions -&gt; Import Key\u00a0\u00bb<\/em> et choisissez votre cl\u00e9 <em>id_rsa<\/em>. Ensuite cliquez dans le menu \u00ab\u00a0<em>Conversions -&gt; Export OpenSSH Key\u00a0\u00bb<\/em> afin de g\u00e9n\u00e9rer votre <em>fichier.ppk<\/em> que Putty saura exploiter.<\/p>\n<p>Ensuite ouvrez votre client ssh Putty.exe puis saisissez les diff\u00e9rentes informations n\u00e9cessaires \u00e0 la connexion SSH (adresseip:port) puis allez dans le menu de gauche \u00ab\u00a0<em>Connection -&gt; Data\u00a0\u00bb<\/em> et remplissez dans le bandeau \u00ab\u00a0<em>Auto-Login username\u00a0\u00bb<\/em> l&rsquo;utilisateur ayant le droit de se connecter en ssh, ici florent. Cette \u00e9tape dispensable \u00e9vite de saisir l&rsquo;identifiant lorsque l&rsquo;on se connecte.<\/p>\n<p>Puis dans le menu \u00ab\u00a0Connection -&gt; SSH -&gt; Auth\u00a0\u00bb , indiquez le chemin ou se trouve votre cl\u00e9 priv\u00e9 fichier.ppk. Nous avons fini du cot\u00e9 client.<\/p>\n<p><span style=\"text-decoration: underline;\">Sur notre serveur SSH :<\/span><\/p>\n<p>Il convient maintenant d&rsquo;ajouter la cl\u00e9 id_rsa.pub aux cl\u00e9s autoris\u00e9s \u00e0 se connecter sur ce serveur. Pour cela rien de plus simple ! Dirigez dans le dossier de l&rsquo;utilisateur ayant le droit d&rsquo;utiliser SSH :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">cd \/home\/florent\/.ssh\/<\/pre>\n<p>Puis cr\u00e9ez le fichier authorized_keys et injectez le contenu de la cl\u00e9 publique pr\u00e9alablement g\u00e9n\u00e9r\u00e9e :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">touch \/home\/florent\/.ssh\/authorized_keys\r\ncat id_rsa.pub &gt; \/home\/florent\/.ssh\/authorized_keys<\/pre>\n<p>Il ne vous reste plus qu&rsquo;a tester la connexion SSH avec authentification par certificat !<\/p>\n<p>Un dernier mot cependant, vous pouvez si vous le d\u00e9sirez (sous r\u00e9serve de la r\u00e9ussite du dernier test) d\u00e9sactiver l&rsquo;authentification par mot de passe au service SSH. Pour cela \u00e9ditez le fichier <em>\/etc\/ssh\/ssh<strong>d<\/strong>_config<\/em> et modifiez cette directive :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">PasswordAuthentication no<\/pre>\n<p>Enfin red\u00e9marrez votre service ssh :<\/p>\n<pre class=\"lang:default decode:true\" title=\"SSH\">\/etc\/init.d\/ssh restart<\/pre>\n<p>Vous voil\u00e0 avec <span style=\"text-decoration: underline;\">un service SSH s\u00e9-cu-ri-s\u00e9<\/span> !<\/p>\n<p><em>\u00a0<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En ces temps de crises on cherche un peu partout o\u00f9 il est possible de faire des \u00e9conomies (c&rsquo;est la mode !). J&rsquo;ai remarqu\u00e9 que chez Online.net mon serveur d\u00e9di\u00e9 Dedibox\u00ae SC gen2 \u00e9tait pass\u00e9 de 9,99\u20acHT \u00e0 5,99\u20acHT !!! &hellip; <a href=\"https:\/\/www.fragnol.net\/?p=275\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,8],"tags":[],"class_list":["post-275","post","type-post","status-publish","format-standard","hentry","category-reseau","category-systeme"],"_links":{"self":[{"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/posts\/275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=275"}],"version-history":[{"count":10,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/posts\/275\/revisions"}],"predecessor-version":[{"id":280,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/posts\/275\/revisions\/280"}],"wp:attachment":[{"href":"https:\/\/www.fragnol.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}