index.html 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924
  1. <!DOCTYPE html>
  2. <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
  3. <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
  4. <head>
  5. <meta charset="utf-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8. <link rel="shortcut icon" href="../../../img/favicon.ico">
  9. <title>Sécurisation SSH - Les Tutoriels du Yojik</title>
  10. <link rel="stylesheet" href="../../../css/theme.css" />
  11. <link rel="stylesheet" href="../../../css/theme_extra.css" />
  12. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
  13. <script>
  14. // Current page data
  15. var mkdocs_page_name = "S\u00e9curisation SSH";
  16. var mkdocs_page_input_path = "Tutoriels/tutoraspi/S\u00e9curisation-SSH.md";
  17. var mkdocs_page_url = null;
  18. </script>
  19. <script src="../../../js/jquery-2.1.1.min.js" defer></script>
  20. <script src="../../../js/modernizr-2.8.3.min.js" defer></script>
  21. <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
  22. <script>hljs.initHighlightingOnLoad();</script>
  23. </head>
  24. <body class="wy-body-for-nav" role="document">
  25. <div class="wy-grid-for-nav">
  26. <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
  27. <div class="wy-side-scroll">
  28. <div class="wy-side-nav-search">
  29. <a href="../../.." class="icon icon-home"> Les Tutoriels du Yojik</a>
  30. <div role="search">
  31. <form id ="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
  32. <input type="text" name="q" placeholder="Search docs" title="Type search term here" />
  33. </form>
  34. </div>
  35. </div>
  36. <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
  37. <p class="caption"><span class="caption-text">Home</span></p>
  38. <ul>
  39. <li class="toctree-l1"><a class="reference internal" href="../../..">Page d'accueil</a>
  40. </li>
  41. </ul>
  42. <p class="caption"><span class="caption-text">Tutoriels</span></p>
  43. <ul class="current">
  44. <li class="toctree-l1"><a class="reference internal" href="../../tutos/">Introduction</a>
  45. </li>
  46. <li class="toctree-l1"><a class="reference internal" href="#">Installation d'un serveur sécurisé, version Debian/Stretch (obsolète)</a>
  47. <ul>
  48. <li class="toctree-l2"><a class="reference internal" href="../../tutostretch/tutostretch/">Présentation</a>
  49. </li>
  50. <li class="toctree-l2"><a class="reference internal" href="#">Installation</a>
  51. <ul>
  52. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Installation-de-base/">Installation du système de base</a>
  53. </li>
  54. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/ovh/">Démarrage sur serveur OVH</a>
  55. </li>
  56. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Premi%C3%A8re-Etape-S%C3%A9curisation/">Première étapes de sécurisation du serveur</a>
  57. </li>
  58. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Configuration-R%C3%A9seau/">Configuration du réseau</a>
  59. </li>
  60. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Installation-Serveur-Temps/">Installation d'un serveur de temps</a>
  61. </li>
  62. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Installation-Parre-Feu/">Installation d'un pare-feu</a>
  63. </li>
  64. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Installation-Fail2ban/">Contrer les attaques de brute-force avec fail2ban</a>
  65. </li>
  66. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Installation-Serveur-Courrier-Basique/">Installation d'un serveur de courrier basique</a>
  67. </li>
  68. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Installation-Serveur-DNS/">Installation du serveur DNS</a>
  69. </li>
  70. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Installation-Serveur-Web/">Installation d'un serveur web</a>
  71. </li>
  72. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Installation-Dovecot-Authentification/">Installation de dovecot et de l'authentification</a>
  73. </li>
  74. <li class="toctree-l3"><a class="" href="../../tutostretch/Installation-Certificats-Letsencrypt.md)">Installation des certificats letsencrypt</a>
  75. </li>
  76. <li class="toctree-l3"><a class="" href="../../tutostretch/courrier-SPF-DKIM-OPENDMARC.md">Ajout des enregistrements **spf**, **DKIM**, **DMARC** au fichier de zone DNS</a>
  77. </li>
  78. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Courrier-Comptes-Virtuels/">Ajout des comptes émail virtuels</a>
  79. </li>
  80. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Surveillance-Serveur/">Installation de programmes de surveillance du serveur</a>
  81. </li>
  82. <li class="toctree-l3"><a class="reference internal" href="../../tutostretch/Installation-Webmail/">Installation d'un webmail (rainloop)</a>
  83. </li>
  84. <li class="toctree-l3"><a class="" href="../../tutostretch/Sécurisation-Serveur-Web">Sécurisation d'un serveur WEB</a>
  85. </li>
  86. </ul>
  87. </li>
  88. </ul>
  89. </li>
  90. <li class="toctree-l1"><a class="reference internal" href="#">Installation d'un serveur sécurisé, version Debian/Buster (en cours d'écriture)</a>
  91. <ul>
  92. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/1-tutobuster/">Présentation</a>
  93. </li>
  94. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/2-Installation-de-base/">Installation de base</a>
  95. </li>
  96. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/3-ovh/">Démarrage sur serveur OVH</a>
  97. </li>
  98. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/4-Plan/">Plan d'ensemble</a>
  99. </li>
  100. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/">Premières étapes de sécurisation du serveur</a>
  101. </li>
  102. </ul>
  103. </li>
  104. <li class="toctree-l1 current"><a class="reference internal current" href="#">Installation d'un serveur sécurisé, version Debian/Buster sur RaspberryPI</a>
  105. <ul class="current">
  106. <li class="toctree-l2"><a class="reference internal" href="../R%C3%A9sum%C3%A9/">Résumé</a>
  107. </li>
  108. <li class="toctree-l2"><a class="reference internal" href="../tutoraspi/">Présentation</a>
  109. </li>
  110. <li class="toctree-l2"><a class="reference internal" href="../Installation-de-base/">Installation de base</a>
  111. </li>
  112. <li class="toctree-l2"><a class="reference internal" href="../Premier-d%C3%A9marrage/">Premier démarrage</a>
  113. </li>
  114. <li class="toctree-l2"><a class="reference internal" href="../Etat-des-lieux/">État des lieux</a>
  115. </li>
  116. <li class="toctree-l2 current"><a class="reference internal current" href="./">Sécurisation SSH</a>
  117. <ul class="current">
  118. <li class="toctree-l3"><a class="reference internal" href="#references">Références</a>
  119. </li>
  120. <li class="toctree-l3"><a class="reference internal" href="#creation-dune-clef-personnalisee">Création d'une clef personnalisée</a>
  121. <ul>
  122. <li class="toctree-l4"><a class="reference internal" href="#test-du-hostname-sur-notre-raspi">Test du hostname (sur notre raspi)</a>
  123. </li>
  124. <li class="toctree-l4"><a class="reference internal" href="#creation-de-notre-clef-personnalisee-sur-le-desktop-pas-sur-le-raspi">Création de notre clef personnalisée (sur le desktop, pas sur le raspi!)</a>
  125. </li>
  126. <li class="toctree-l4"><a class="reference internal" href="#copie-de-la-clef-sur-le-serveur">Copie de la clef sur le serveur</a>
  127. </li>
  128. <li class="toctree-l4"><a class="reference internal" href="#essai-de-connexion-avec-notre-nouvelle-clef">Essai de connexion avec notre nouvelle clef</a>
  129. </li>
  130. <li class="toctree-l4"><a class="reference internal" href="#configuration-de-ssh-sur-la-machine-de-travail">Configuration de ssh sur la machine de travail</a>
  131. </li>
  132. <li class="toctree-l4"><a class="reference internal" href="#test-de-connexion">Test de connexion</a>
  133. </li>
  134. <li class="toctree-l4"><a class="reference internal" href="#amelioration">Amélioration</a>
  135. </li>
  136. <li class="toctree-l4"><a class="reference internal" href="#modification-du-fichier-etcsshsshd_config">Modification du fichier /etc/ssh/sshd_config</a>
  137. </li>
  138. <li class="toctree-l4"><a class="reference internal" href="#test-sur-le-site-ssh-audit">Test sur le site ssh audit</a>
  139. </li>
  140. </ul>
  141. </li>
  142. </ul>
  143. </li>
  144. <li class="toctree-l2"><a class="reference internal" href="../R%C3%A9seau/">Réseau (des IPs fixes)</a>
  145. </li>
  146. <li class="toctree-l2"><a class="reference internal" href="../Knot/">Installation de Knot-resolver</a>
  147. </li>
  148. <li class="toctree-l2"><a class="reference internal" href="../Firewall/">Installation d'un pare-feux</a>
  149. </li>
  150. <li class="toctree-l2"><a class="reference internal" href="../Fail2ban/">Contrer les attaques de force brute</a>
  151. </li>
  152. <li class="toctree-l2"><a class="reference internal" href="../Logwatch/">Surveillance du serveur</a>
  153. </li>
  154. <li class="toctree-l2"><a class="reference internal" href="../Installation-courrier-basique/">Installation d'un serveur de courriers basique</a>
  155. </li>
  156. <li class="toctree-l2"><a class="reference internal" href="../Exemple-d-utilisation-serveur-Web/">Exemple d'utilisation avec un serveur Web</a>
  157. </li>
  158. <li class="toctree-l2"><a class="reference internal" href="../Annexe/">Annexe</a>
  159. </li>
  160. </ul>
  161. </li>
  162. <li class="toctree-l1"><a class="reference internal" href="#">Domotique</a>
  163. <ul>
  164. <li class="toctree-l2"><a class="reference internal" href="../../Domotique/Introduction/">Introduction</a>
  165. </li>
  166. <li class="toctree-l2"><a class="reference internal" href="../../Domotique/Le-mat%C3%A9riel/">Le matériel</a>
  167. </li>
  168. </ul>
  169. </li>
  170. <li class="toctree-l1"><a class="reference internal" href="#">Tutoriel Anki</a>
  171. <ul>
  172. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Introduction/">Introduction</a>
  173. </li>
  174. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Installation/">Installation</a>
  175. </li>
  176. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Les-fiches/">Les fiches</a>
  177. </li>
  178. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Premi%C3%A8re-utilisation/">Premières utilisations et impressions</a>
  179. </li>
  180. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Personnalisation/">Personnalisation</a>
  181. </li>
  182. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Cartes/">Les cartes</a>
  183. </li>
  184. </ul>
  185. </li>
  186. </ul>
  187. </div>
  188. </div>
  189. </nav>
  190. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  191. <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
  192. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  193. <a href="../../..">Les Tutoriels du Yojik</a>
  194. </nav>
  195. <div class="wy-nav-content">
  196. <div class="rst-content">
  197. <div role="navigation" aria-label="breadcrumbs navigation">
  198. <ul class="wy-breadcrumbs">
  199. <li><a href="../../..">Docs</a> &raquo;</li>
  200. <li>Installation d'un serveur sécurisé, version Debian/Buster sur RaspberryPI &raquo;</li>
  201. <li>Tutoriels &raquo;</li>
  202. <li>Sécurisation SSH</li>
  203. <li class="wy-breadcrumbs-aside">
  204. </li>
  205. </ul>
  206. <hr/>
  207. </div>
  208. <div role="main">
  209. <div class="section">
  210. <h1 id="securisation-ssh">Sécurisation SSH</h1>
  211. <p>Je vais baser cette partie sur plusieurs tutoriels auxquels vous voudrez bien vous référer pour avoir des explications plus poussées que celles que je vais donner.</p>
  212. <h2 id="references">Références</h2>
  213. <ul>
  214. <li><a href="https://www.tronyxworld.be/2020/hardening_ssh/">Sécuriser OpenSSH</a></li>
  215. <li><a href="https://blog.syntik.fr/comment-tester-securiser-serveur-ssh/">SSH - Comment tester et sécuriser son serveur ?</a></li>
  216. <li><a href="https://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/">OpenSSH Config File Examples</a></li>
  217. </ul>
  218. <p>Vous pouvez trouver plein d'autres références en français ou anglais en utilisant votre moteur de recherche préféré.</p>
  219. <h2 id="creation-dune-clef-personnalisee">Création d'une clef personnalisée</h2>
  220. <p>Nous allons créer une clef spécifique à notre mini serveur.</p>
  221. <p>Auparavant, nous allons vérifier le <strong>hostname</strong> de notre machine. Si vous l'avez configuré avec <strong>raspi-config</strong>, il y a de grandes chances que le résultat ne soit pas bon.</p>
  222. <p>Sous Debian, le <strong>hostname</strong> est composé de 2 parties situées dans 2 fichiers différents.</p>
  223. <ul>
  224. <li>/etc/hosts (contient le nom complet, FQDN)</li>
  225. <li>/etc/hostname (ne contient que le petit nom de la machine, sans le domaine)</li>
  226. </ul>
  227. <h3 id="test-du-hostname-sur-notre-raspi">Test du hostname (sur notre raspi)</h3>
  228. <pre><code>pi@piras:~ $ hostname -f
  229. piras.yojik.net
  230. pi@piras:~ $ hostname
  231. piras
  232. pi@piras:~ $
  233. </code></pre>
  234. <p>Le fichier /etc/hostname ne doit contenir que le nom de la machine, pas le domaine : ici, piras, et c'est ce que renvoie la commande <strong>hostname</strong>.</p>
  235. <pre><code>pi@piras:~ $ cat /etc/hostname
  236. piras
  237. pi@piras:~ $
  238. </code></pre>
  239. <p><strong>hostname -f</strong> renvoie le "fqdn", ou nom complet de la machine, ici, piras.yojik.net.</p>
  240. <p>La référence complète du nom se trouve dans le fichier /etc/hosts.</p>
  241. <pre><code>pi@piras:~ $ cat /etc/hosts
  242. 127.0.0.1 localhost
  243. ::1 localhost ip6-localhost ip6-loopback
  244. ff02::1 ip6-allnodes
  245. ff02::2 ip6-allrouters
  246. 127.0.1.1 piras.yojik.net piras
  247. pi@piras:~ $
  248. </code></pre>
  249. <p>Pour l'instant, c'est l'adresse 127.0.1.1 qui est utilisée comme référence du nom, mais nous changerons ça dès que nous aurons configuré une adresse IPV4 et IPV6 fixe.</p>
  250. <h3 id="creation-de-notre-clef-personnalisee-sur-le-desktop-pas-sur-le-raspi">Création de notre clef personnalisée (sur le desktop, pas sur le raspi!)</h3>
  251. <p>Nous utiliserons la commande :</p>
  252. <pre><code>sh-keygen -o -a 100 -t ed25519 -f ~/.ssh/piras_ed25519 -C "clef SSH de l'utilisateur pi du Raspi"
  253. </code></pre>
  254. <ul>
  255. <li>-o : Sauvegarde votre clé dans le nouveau format openssh au lieu de l’ancien format PEM</li>
  256. <li>-C : insertion d'un commentaire (ce que vous voulez, votre adresse émail ...).</li>
  257. <li>-f : nom du fichier à produire</li>
  258. <li>-a : le nombre de tours de la clef de dérivation (plus il est élevé, plus il est difficile de la craquer en force brute, mais aussi plus c'est lent) <pre><code>eric@aldebaran:~$ ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/piras_ed25519 -C "eric@yojik.eu"
  259. Generating public/private ed25519 key pair.
  260. Enter passphrase (empty for no passphrase):
  261. Enter same passphrase again:
  262. Your identification has been saved in /home/eric/.ssh/piras_ed25519
  263. Your public key has been saved in /home/eric/.ssh/piras_ed25519.pub
  264. The key fingerprint is:
  265. SHA256:yyDsyczL9W1QTTn9d5o0hwZ5A0bdMnCJgK9cniCeR0c eric@yojik.eu
  266. The key's randomart image is:
  267. +--[ED25519 256]--+
  268. | ..o=O.o |
  269. | . E.B.O .|
  270. | o o + * |
  271. | . . o = . = =|
  272. | o..=SB . o =o|
  273. | = ooo=.o o |
  274. | * ..o. |
  275. | . o . .. |
  276. | o ... |
  277. +----[SHA256]-----+
  278. </code></pre>
  279. </li>
  280. </ul>
  281. <p>Si vous allez dans ./.ssh, vous trouverez ceci :</p>
  282. <pre><code>eric@aldebaran:~/.ssh$ ls -l
  283. total 44
  284. -rw------- 1 eric eric 751 7 avril 2011 id_dsa
  285. -rw-r--r-- 1 eric eric 604 7 avril 2011 id_dsa.pub
  286. -rw------- 1 eric eric 1766 1 avril 2013 id_rsa
  287. -rw-r--r-- 1 eric eric 396 1 avril 2013 id_rsa.pub
  288. -rw-r--r-- 1 eric eric 3728 29 nov. 12:20 known_hosts
  289. -rw------- 1 eric eric 444 11 déc. 18:17 piras_ed25519
  290. -rw-r--r-- 1 eric eric 95 11 déc. 18:17 piras_ed25519.pub
  291. eric@aldebaran:~/.ssh$
  292. </code></pre>
  293. <p>Nous voyons les clefs privées et publiques que nous avons créées. (ainsi que d'anciennes clefs ...) Vérifiez les permissions, mais normalement les commandes ci-dessus les attribuent comme attendu (voir plus bas).</p>
  294. <h3 id="copie-de-la-clef-sur-le-serveur">Copie de la clef sur le serveur</h3>
  295. <p>Nous utiliserons la commande : <strong>ssh-copy-id</strong></p>
  296. <pre><code>eric@aldebaran:~$ ssh-copy-id -i ~/.ssh/piras_ed25519.pub pi@192.168.111.32
  297. /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/eric/.ssh/piras_ed25519.pub"
  298. /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
  299. /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
  300. pi@192.168.111.32's password:
  301. Number of key(s) added: 1
  302. Now try logging into the machine, with: "ssh 'pi@192.168.111.32'"
  303. and check to make sure that only the key(s) you wanted were added.
  304. eric@aldebaran:~$
  305. </code></pre>
  306. <p>Vérifions la présence de notre clef sur notre raspi, dans le fichier authorized_keys :</p>
  307. <pre><code>pi@piras:~/.ssh $ cat authorized_keys
  308. ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAdDDO3ni4DHIxqfRaNZ4SBudrSlRoQjLm/fd2SSjxtM eric@yojik.eu
  309. pi@piras:~/.ssh $
  310. </code></pre>
  311. <p>C'est bon, elle est là !</p>
  312. <h3 id="essai-de-connexion-avec-notre-nouvelle-clef">Essai de connexion avec notre nouvelle clef</h3>
  313. <pre><code>eric@aldebaran:~$ ssh -i ~/.ssh/piras_ed25519 'pi@192.168.111.32'
  314. Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l
  315. The programs included with the Debian GNU/Linux system are free software;
  316. the exact distribution terms for each program are described in the
  317. individual files in /usr/share/doc/*/copyright.
  318. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
  319. permitted by applicable law.
  320. Last login: Fri Dec 11 18:46:55 2020 from 192.168.111.150
  321. pi@piras:~ $
  322. </code></pre>
  323. <p>ça marche ... j'ai précisé la clef <strong>SSH</strong> à utiliser avec l'option <strong>-i nom_de_la_clef</strong>.</p>
  324. <h3 id="configuration-de-ssh-sur-la-machine-de-travail">Configuration de ssh sur la machine de travail</h3>
  325. <p>Je possède plusieurs clefs qui sont spécifiques à certains serveurs (ceux dans ma cave, et ceux sur internet). Nous allons rajouter une configuration pour permettre la sélection automatique de la bonne clef pour chaque serveur.</p>
  326. <p>Cela se fait dans le fichier ~/.ssh/config</p>
  327. <p>Le schéma à utiliser est le suivant :</p>
  328. <pre><code>eric@aldebaran:~$ cat ./.ssh/config
  329. Host piras piras.yojik.net
  330. HostName 192.168.111.32
  331. IdentityFile ~/.ssh/piras_ed25519
  332. User pi
  333. Host adara adara.yojik.eu
  334. HostName adara.yojik.eu
  335. IdentityFile ~/.ssh/id_rsa
  336. User ericadmin
  337. eric@aldebaran:~$
  338. </code></pre>
  339. <p>Cela me permet de me connecter avec la commande :</p>
  340. <pre><code>ssh piras
  341. </code></pre>
  342. <p>Voilà à quoi ressemble mon répertoire <strong>~/.ssh</strong> :</p>
  343. <pre><code>eric@aldebaran:~$ tree .ssh
  344. .ssh
  345. ├── adara
  346. │   ├── adara_ed25519
  347. │   └── adara_ed25519.pub
  348. ├── aijan
  349. │   ├── aijan_ed25519
  350. │   └── aijan_ed25519.pub
  351. ├── alya
  352. │   ├── alya_ed25519
  353. │   └── alya_ed25519.pub
  354. ├── atom
  355. │   ├── atom_ed25519
  356. │   └── atom_ed25519.pub
  357. ├── config
  358. ├── id_dsa
  359. ├── id_dsa.pub
  360. ├── id_ed25519
  361. ├── id_ed25519.pub
  362. ├── id_rsa
  363. ├── id_rsa.pub
  364. ├── known_hosts
  365. ├── mynas2
  366. │   ├── mynas2_ed25519
  367. │   └── mynas2_ed25519.pub
  368. ├── mynas3
  369. │   ├── mynas3_ed25519
  370. │   └── mynas3_ed25519.pub
  371. ├── ns1
  372. │   ├── ns1_ed25519
  373. │   └── ns1_ed25519.pub
  374. ├── ns2
  375. │   ├── ns2_ed25519
  376. │   └── ns2_ed25519.pub
  377. ├── piras
  378. │   ├── piras_ed25519
  379. │   └── piras_ed25519.pub
  380. └── polis
  381. ├── polis_ed25519
  382. └── polis_ed25519.pub
  383. </code></pre>
  384. <p>J'ai mis l'adresse IP ; j'aurai pu mettre le nom FQDN du serveur, mais je le ferai une fois les adresses IP fixées.</p>
  385. <p>Modifions les permissions pour qu'elles soient conformes à ce que demande SSH. (en fait, les bonnes permissions étaient déjà appliquées par la commande ssh-keygen). Si vous organisez votre structure de répertoires comme ci-dessus, ajustez les permissions comme ceci :</p>
  386. <p>Si vous créez un répertoire nommé ~/.ssh/piras ajustez les droits du répertoire comme suit :</p>
  387. <pre><code>chmod 700 ~/.ssh/piras
  388. </code></pre>
  389. <p>Et pour les clefs privées/publiques :</p>
  390. <pre><code>chmod 600 ~/.ssh/config
  391. chmod 600 ~/.ssh/piras/piras_ed25519
  392. chmod 600 ~/.ssh/piras/piras_ed25519.pub
  393. </code></pre>
  394. <h3 id="test-de-connexion">Test de connexion</h3>
  395. <pre><code>eric@aldebaran:~$ ssh piras
  396. Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l
  397. The programs included with the Debian GNU/Linux system are free software;
  398. the exact distribution terms for each program are described in the
  399. individual files in /usr/share/doc/*/copyright.
  400. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
  401. permitted by applicable law.
  402. Last login: Fri Dec 11 18:49:37 2020 from 192.168.111.150
  403. pi@piras:~ $
  404. </code></pre>
  405. <p>Ça marche ;)</p>
  406. <h3 id="amelioration">Amélioration</h3>
  407. <p>Nous allons modifier temporairement (et le re-modifierons une fois les adresses fixées) notre fichier /etc/hosts sur notre machine de travail pour pouvoir utiliser la méthode par nom plutôt que par adresse IP. Ajoutons la référence à notre raspi :</p>
  408. <pre><code>eric@aldebaran:~$ cat /etc/hosts
  409. 127.0.0.1 localhost
  410. 127.0.1.1 aldebaran.yojik.net aldebaran
  411. 192.168.111.32 piras.yojik.net piras
  412. # The following lines are desirable for IPv6 capable hosts
  413. ::1 localhost ip6-localhost ip6-loopback
  414. ff02::1 ip6-allnodes
  415. ff02::2 ip6-allrouters
  416. eric@aldebaran:~$
  417. </code></pre>
  418. <p>Modification de ./.ssh/config :</p>
  419. <pre><code>eric@aldebaran:~$ cat ./.ssh/config
  420. Host piras piras.yojik.net
  421. HostName piras.yojik.net
  422. IdentityFile ~/.ssh/piras_ed25519
  423. User pi
  424. Host adara adara.yojik.eu
  425. HostName adara.yojik.eu
  426. IdentityFile ~/.ssh/id_rsa
  427. User ericadmin
  428. eric@aldebaran:~$
  429. </code></pre>
  430. <p>Test :</p>
  431. <pre><code>eric@aldebaran:~$ ssh piras
  432. The authenticity of host 'piras.yojik.net (192.168.111.32)' can't be established.
  433. ECDSA key fingerprint is SHA256:DjB1teyxsYAZzGBV8BIXiG5+UAb3JU5SHp7vu/xArG8.
  434. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
  435. Warning: Permanently added 'piras.yojik.net' (ECDSA) to the list of known hosts.
  436. Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l
  437. The programs included with the Debian GNU/Linux system are free software;
  438. the exact distribution terms for each program are described in the
  439. individual files in /usr/share/doc/*/copyright.
  440. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
  441. permitted by applicable law.
  442. Last login: Fri Dec 11 19:17:50 2020 from 192.168.111.150
  443. pi@piras:~ $
  444. </code></pre>
  445. <p>L'adresse de notre raspi a été ajoutée au fichier ./.ssh/known_hosts</p>
  446. <h3 id="modification-du-fichier-etcsshsshd_config">Modification du fichier /etc/ssh/sshd_config</h3>
  447. <p>Nous allons modifier ce fichier pour plus de sécurité :</p>
  448. <ul>
  449. <li>pas de connexion de l'utilisateur root</li>
  450. <li>connexion uniquement par clef (pas par login/mot de passe)</li>
  451. <li>suppression du support des protocoles non sûrs</li>
  452. <li>autorisation de connexion sur liste blanche</li>
  453. <li>connexion en IPV4 et IPV6</li>
  454. </ul>
  455. <p>Tout d'abord, sauvegarde du répertoire <strong>/etc/ssh</strong> :</p>
  456. <pre><code>pi@raspberrypi:/etc $ sudo cp -R ssh ssh.orig
  457. pi@raspberrypi:/etc $
  458. </code></pre>
  459. <p>Ensuite, création du nouveau fichier (après installation de vim, mais vous pouvez prendre l'éditeur de votre choix, nano par exemple qui est installé par défaut):</p>
  460. <blockquote>
  461. <p>Pour installer vim, tapez : <strong>sudo apt install vim</strong></p>
  462. </blockquote>
  463. <p>Voilà une copie du fichier de conf du site <strong>troxyworld</strong> dont j'ai déjà donné les références :</p>
  464. <pre><code># Interface &amp; Port
  465. Port 61022
  466. AddressFamily any
  467. ListenAddress 0.0.0.0
  468. ListenAddress ::
  469. HostKey /etc/ssh/ssh_host_ed25519_key
  470. Protocol 2
  471. SyslogFacility AUTHPRIV
  472. LogLevel VERBOSE
  473. # Authentication restriction
  474. LoginGraceTime 30s
  475. PermitRootLogin no
  476. StrictModes yes
  477. MaxAuthTries 3
  478. MaxSessions 5
  479. PubkeyAuthentication yes
  480. AllowUsers hmichael
  481. AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
  482. HostbasedAuthentication no
  483. IgnoreRhosts yes
  484. # To disable tunneled clear text passwords, change to no here!
  485. PermitEmptyPasswords no
  486. PasswordAuthentication no
  487. # Change to no to disable s/key passwords
  488. ChallengeResponseAuthentication no
  489. UsePAM yes
  490. AllowAgentForwarding no
  491. AllowTcpForwarding no
  492. GatewayPorts no
  493. X11Forwarding no
  494. PermitTTY yes
  495. PermitUserEnvironment no
  496. PrintMotd no
  497. PrintLastLog no
  498. #TCPKeepAlive yes
  499. #PermitUserEnvironment no
  500. #Compression delayed
  501. #ClientAliveInterval 0
  502. #ClientAliveCountMax 3
  503. #ShowPatchLevel no
  504. UseDNS yes
  505. PidFile /var/run/sshd.pid
  506. MaxStartups 10:30:100
  507. PermitTunnel no
  508. #ChrootDirectory none
  509. VersionAddendum none
  510. # no default banner path
  511. Banner none
  512. # Accept locale-related environment variables
  513. AcceptEnv LANG LC_*
  514. # override default of no subsystems
  515. Subsystem sftp /usr/libexec/openssh/sftp-server
  516. </code></pre>
  517. <p>Et voici une version par <strong>Synthic</strong>:</p>
  518. <pre><code># Utilisation de la version 2 du protocole SSH
  519. Protocol 2
  520. # Utilisation du port 22. Il est possible de le modifier
  521. Port 22
  522. # Interdit à root de s'identifier
  523. PermitRootLogin no
  524. PermitEmptyPasswords no
  525. # On indique ici la liste des utilisateurs ayant la permission d'utiliser SSH
  526. AllowUsers utilisateur
  527. # Nombre d'essais avant fermeture de la connexion
  528. MaxAuthTries 3
  529. UsePAM no
  530. # Authentification par clés
  531. PubkeyAuthentication yes
  532. # Lieux où sont stockées les clés publiques --&gt; /home/user/.ssh/authorized_keys
  533. AuthorizedKeysFile .ssh/authorized_keys
  534. ChallengeResponseAuthentication yes
  535. # Désactivation de l'authentification par mot de passe
  536. PasswordAuthentication no
  537. IgnoreRhosts yes
  538. HostbasedAuthentication no
  539. AcceptEnv LANG LC_*
  540. Subsystem sftp /usr/lib/openssh/sftp-server
  541. PrintMotd no
  542. Ciphers aes256-ctr,aes192-ctr,aes128-ctr
  543. X11Forwarding no
  544. </code></pre>
  545. <p>Voilà mon fichier de configuration, à adapter suivant vos préférences (surtout n'oubliez pas d'ajuster le <strong>user</strong> dans l'option <strong>AllowUsers</strong> à votre cas particulier)</p>
  546. <p>Pour ma part, je vais garder le port 22 ; je le changerai peut-être plus tard.</p>
  547. <pre><code>Protocol 2
  548. Port 22
  549. </code></pre>
  550. <p>Blocage de root</p>
  551. <pre><code>PermitRootLogin no
  552. </code></pre>
  553. <p>Pas de mot de passe vide</p>
  554. <pre><code>PermitEmptyPasswords no
  555. </code></pre>
  556. <p>Seul l'utilisateur pi est autorisé</p>
  557. <pre><code>AllowUsers pi
  558. </code></pre>
  559. <p>Connexion uniquement pas clef</p>
  560. <pre><code>PubkeyAuthentication yes
  561. </code></pre>
  562. <p>Modification et limite des tentatives de connexion</p>
  563. <pre><code>LoginGraceTime 30s
  564. PermitRootLogin no
  565. StrictModes yes
  566. MaxAuthTries 3
  567. MaxSessions 5
  568. </code></pre>
  569. <p>Les fichiers de clef autorisés</p>
  570. <pre><code>AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
  571. </code></pre>
  572. <p>Voici la copie du fichier complet :</p>
  573. <pre><code>pi@raspberrypi:~ $ cat /etc/ssh/sshd_config
  574. # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
  575. # This is the sshd server system-wide configuration file. See
  576. # sshd_config(5) for more information.
  577. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
  578. # The strategy used for options in the default sshd_config shipped with
  579. # OpenSSH is to specify options with their default value where
  580. # possible, but leave them commented. Uncommented options override the
  581. # default value.
  582. Port 22
  583. #AddressFamily any
  584. # A décommenter après test sur sur site d'audit, car nos réglages ne permettent
  585. # que de se connecter à partir de notre réseau local
  586. # Si vous voulez que votre serveur soit accessible à partir de l'extérieur
  587. # gardez les valeurs par défaut (ou les options commentées)
  588. #ListenAddress 0.0.0.0
  589. #ListenAddress ::
  590. # Nouveaux réglages
  591. # ListenAddress 192.168.111.0
  592. # ListenAddress 2a01:e0a:d0:3c20::0
  593. # On ne permet que la connexion avec une clef forte
  594. #HostKey /etc/ssh/ssh_host_rsa_key
  595. #HostKey /etc/ssh/ssh_host_ecdsa_key
  596. HostKey /etc/ssh/ssh_host_ed25519_key
  597. # Ciphers and keying
  598. #RekeyLimit default none
  599. # Logging
  600. # Modification du niveau de logging pour plus de détails
  601. #SyslogFacility AUTH
  602. SysLogFacility AUTHPRIV
  603. #LogLevel INFO
  604. LogLevel VERBOSE
  605. # Authentication:
  606. # C'est ici que l'on va ne permettre que l'accès par clef partagée
  607. # et interdire l'accès par mot de passe
  608. # De plus on configure le nombre d'essais et le délai de connexion
  609. # à des valeurs plus courtes
  610. LoginGraceTime 30s
  611. PermitRootLogin no
  612. StrictModes yes
  613. MaxAuthTries 3
  614. MaxSessions 5
  615. PubkeyAuthentication yes
  616. # Ajout d'une liste blanche d'utilisateurs autorisés à se connecter
  617. # ici, seulement l'utilisateur pi
  618. AllowUsers pi
  619. # Expect .ssh/authorized_keys2 to be disregarded by default in future.
  620. AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
  621. #AuthorizedPrincipalsFile none
  622. #AuthorizedKeysCommand none
  623. #AuthorizedKeysCommandUser nobody
  624. # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
  625. #HostbasedAuthentication no
  626. # Change to yes if you don't trust ~/.ssh/known_hosts for
  627. # HostbasedAuthentication
  628. #IgnoreUserKnownHosts no
  629. # Don't read the user's ~/.rhosts and ~/.shosts files
  630. #IgnoreRhosts yes
  631. # To disable tunneled clear text passwords, change to no here!
  632. # Interdiction de connexion pas login/mot de passe
  633. PasswordAuthentication no
  634. # Interdiction de mot de passe vides
  635. PermitEmptyPasswords no
  636. # Change to yes to enable challenge-response passwords (beware issues with
  637. # some PAM modules and threads)
  638. ChallengeResponseAuthentication no
  639. # Kerberos options
  640. #KerberosAuthentication no
  641. #KerberosOrLocalPasswd yes
  642. #KerberosTicketCleanup yes
  643. #KerberosGetAFSToken no
  644. # GSSAPI options
  645. #GSSAPIAuthentication no
  646. #GSSAPICleanupCredentials yes
  647. #GSSAPIStrictAcceptorCheck yes
  648. #GSSAPIKeyExchange no
  649. # Set this to 'yes' to enable PAM authentication, account processing,
  650. # and session processing. If this is enabled, PAM authentication will
  651. # be allowed through the ChallengeResponseAuthentication and
  652. # PasswordAuthentication. Depending on your PAM configuration,
  653. # PAM authentication via ChallengeResponseAuthentication may bypass
  654. # the setting of "PermitRootLogin without-password".
  655. # If you just want the PAM account and session checks to run without
  656. # PAM authentication, then enable this but set PasswordAuthentication
  657. # and ChallengeResponseAuthentication to 'no'.
  658. UsePAM yes
  659. # On va interdire le forwarding
  660. AllowAgentForwarding no
  661. AllowTcpForwarding no
  662. GatewayPorts no
  663. X11Forwarding no
  664. #X11DisplayOffset 10
  665. #X11UseLocalhost yes
  666. #PermitTTY yes
  667. # Pas de message d'acceuil de SSHD
  668. PrintMotd no
  669. #PrintLastLog yes
  670. #TCPKeepAlive yes
  671. #PermitUserEnvironment no
  672. #Compression delayed
  673. #ClientAliveInterval 0
  674. #ClientAliveCountMax 3
  675. # Utilisation du DNS
  676. UseDNS yes
  677. #PidFile /var/run/sshd.pid
  678. #MaxStartups 10:30:100
  679. #PermitTunnel no
  680. #ChrootDirectory none
  681. #VersionAddendum none
  682. # no default banner path
  683. Banner none
  684. # Allow client to pass locale environment variables
  685. AcceptEnv LANG LC_*
  686. # override default of no subsystems
  687. Subsystem sftp /usr/lib/openssh/sftp-server
  688. # Example of overriding settings on a per-user basis
  689. #Match User anoncvs
  690. # X11Forwarding no
  691. # AllowTcpForwarding no
  692. # PermitTTY no
  693. # ForceCommand cvs server
  694. pi@raspberrypi:~ $
  695. </code></pre>
  696. <p>On redémarre <strong>sshd</strong></p>
  697. <pre><code>sudo systemctl restart sshd.service
  698. </code></pre>
  699. <p>On teste si le service a bien redémarré sans erreurs :</p>
  700. <pre><code>pi@raspberrypi:~ $ sudo systemctl status sshd.service
  701. ● ssh.service - OpenBSD Secure Shell server
  702. Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
  703. Active: active (running) since Sun 2021-02-14 14:59:47 CET; 7s ago
  704. Docs: man:sshd(8)
  705. man:sshd_config(5)
  706. Process: 523 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
  707. Main PID: 524 (sshd)
  708. Tasks: 1 (limit: 269)
  709. CGroup: /system.slice/ssh.service
  710. └─524 /usr/sbin/sshd -D
  711. févr. 14 14:59:46 raspberrypi systemd[1]: Starting OpenBSD Secure Shell server...
  712. févr. 14 14:59:46 raspberrypi sshd[524]: Server listening on 0.0.0.0 port 22.
  713. févr. 14 14:59:47 raspberrypi sshd[524]: Server listening on :: port 22.
  714. févr. 14 14:59:47 raspberrypi systemd[1]: Started OpenBSD Secure Shell server.
  715. pi@raspberrypi:~ $
  716. </code></pre>
  717. <p>C'est bon.</p>
  718. <p>Essai de connexion :</p>
  719. <pre><code>eric@aldebaran:~$ ssh piras
  720. The authenticity of host 'piras.yojik.net (192.168.111.170)' can't be established.
  721. ED25519 key fingerprint is SHA256:NW70QB3uNQ1cnrTQyfXG1Lu1iTDubEv6Oak4PK+DR1k.
  722. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
  723. Warning: Permanently added 'piras.yojik.net,192.168.111.170' (ED25519) to the list of known hosts.
  724. Enter passphrase for key '/home/eric/.ssh/piras/piras_ed25519':
  725. Linux raspberrypi 5.10.11+ #1399 Thu Jan 28 12:02:28 GMT 2021 armv6l
  726. The programs included with the Debian GNU/Linux system are free software;
  727. the exact distribution terms for each program are described in the
  728. individual files in /usr/share/doc/*/copyright.
  729. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
  730. permitted by applicable law.
  731. Last login: Sun Feb 14 15:02:55 2021 from 192.168.111.150
  732. pi@raspberrypi:~ $
  733. </code></pre>
  734. <p>C'est bon.</p>
  735. <p>Test sur le site d'audit :</p>
  736. <p>Bien, après avoir effacé toutes les données personnelles de mon navigateur (données qui entraînent une erreur «The csrf token is invalid »), le test revient toujours avec une mauvaise note. D'où la suite. Les instructions pour améliorer sont également sur le site <a href="https://www.ssh-audit.com/hardening_guides.html#ubuntu_20_04_lts">SSH-Audit.com recommendations</a></p>
  737. <p>On va sécuriser les échanges en jouant sur 3 options supplémentaires :</p>
  738. <ul>
  739. <li>Ciphers : Le chiffrement utilisé.</li>
  740. <li>KexAlgorithms : Les algorithmes utilisés pour l’échange de clés.</li>
  741. <li>MACs : Message Authentication code, c’est le code qui accompagnent les données échangées dans le but d’assurer leur intégrité pour être certain qu’elles n’ont subies aucune altération pendant/après la transmission.</li>
  742. </ul>
  743. <p>Voilà les étapes à suivre (reprises quasi texto des sites déjà cités) :</p>
  744. <ul>
  745. <li>
  746. <p>Régénération de la clé ED25519 du serveur :</p>
  747. <pre><code>sudo rm -f /etc/ssh/ssh_host_*
  748. sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
  749. </code></pre>
  750. </li>
  751. <li>
  752. <p>Retrait des moduli Diffie-Hellman faible :</p>
  753. <pre><code>sudo awk '$5 &gt;= 3071' /etc/ssh/moduli &gt; /home/pi/moduli.safe
  754. sudo mv -f /home/pi/moduli.safe /etc/ssh/moduli
  755. </code></pre>
  756. </li>
  757. <li>
  758. <p>Désactivation des clés DSA/ECDSA &amp; RSA si ce n’est pas déjà fait :</p>
  759. <pre><code>sudo sed -i 's/^HostKey \/etc\/ssh\/ssh_host_\(dsa\|ecdsa\|rsa\)_key$/\#HostKey \/etc\/ssh\/ssh_host_\1_key/g' /etc/ssh/sshd_config
  760. </code></pre>
  761. </li>
  762. <li>
  763. <p>Restriction des ciphers, clés d’échange et des codes d’authentification :</p>
  764. <p>Ajoutez ceci à la fin du fichier /etc/sshd_config:</p>
  765. <pre><code>KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
  766. Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
  767. MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com
  768. </code></pre>
  769. </li>
  770. <li>
  771. <p>Redémarrage de <strong>sshd</strong></p>
  772. <p>sudo systemctl restart sshd.service</p>
  773. </li>
  774. </ul>
  775. <h3 id="test-sur-le-site-ssh-audit">Test sur le site <a href="https://www.ssh-audit.com/">ssh audit</a></h3>
  776. <p>Tout est OK ... nous sommes passés d'une note <strong>F</strong> à <strong>A+</strong>.</p>
  777. <p><img alt="résultat" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202020-12-12%2009-00-03.png" /></p>
  778. <p><img alt="résultat" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202020-12-12%2009-00-17.png" /></p>
  779. <p><img alt="résultat" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202020-12-11%2014-37-34.png" /></p>
  780. <p><img alt="résultat" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202020-12-12%2009-00-24.png" /></p>
  781. <p><img alt="résultat" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202020-12-12%2009-00-33.png" /></p>
  782. <p><img alt="résultat" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202020-12-12%2009-00-42.png" /></p>
  783. <p><img alt="résultat" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202020-12-12%2009-00-49.png" /></p>
  784. </div>
  785. </div>
  786. <footer>
  787. <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
  788. <a href="../R%C3%A9seau/" class="btn btn-neutral float-right" title="Réseau (des IPs fixes)">Next <span class="icon icon-circle-arrow-right"></span></a>
  789. <a href="../Etat-des-lieux/" class="btn btn-neutral" title="État des lieux"><span class="icon icon-circle-arrow-left"></span> Previous</a>
  790. </div>
  791. <hr/>
  792. <div role="contentinfo">
  793. <!-- Copyright etc -->
  794. </div>
  795. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
  796. </footer>
  797. </div>
  798. </div>
  799. </section>
  800. </div>
  801. <div class="rst-versions" role="note" aria-label="versions">
  802. <span class="rst-current-version" data-toggle="rst-current-version">
  803. <span><a href="../Etat-des-lieux/" style="color: #fcfcfc;">&laquo; Previous</a></span>
  804. <span style="margin-left: 15px"><a href="../R%C3%A9seau/" style="color: #fcfcfc">Next &raquo;</a></span>
  805. </span>
  806. </div>
  807. <script>var base_url = '../../..';</script>
  808. <script src="../../../js/theme.js" defer></script>
  809. <script src="../../../search/main.js" defer></script>
  810. <script defer>
  811. window.onload = function () {
  812. SphinxRtdTheme.Navigation.enable(true);
  813. };
  814. </script>
  815. </body>
  816. </html>