index.html 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  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>Exemple d'utilisation avec un serveur Web - 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 = "Exemple d'utilisation avec un serveur Web";
  16. var mkdocs_page_input_path = "Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web.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"><a class="reference internal" href="../S%C3%A9curisation-SSH/">Sécurisation SSH</a>
  117. </li>
  118. <li class="toctree-l2"><a class="reference internal" href="../R%C3%A9seau/">Réseau (des IPs fixes)</a>
  119. </li>
  120. <li class="toctree-l2"><a class="reference internal" href="../Knot/">Installation de Knot-resolver</a>
  121. </li>
  122. <li class="toctree-l2"><a class="reference internal" href="../Firewall/">Installation d'un pare-feux</a>
  123. </li>
  124. <li class="toctree-l2"><a class="reference internal" href="../Fail2ban/">Contrer les attaques de force brute</a>
  125. </li>
  126. <li class="toctree-l2"><a class="reference internal" href="../Logwatch/">Surveillance du serveur</a>
  127. </li>
  128. <li class="toctree-l2"><a class="reference internal" href="../Installation-courrier-basique/">Installation d'un serveur de courriers basique</a>
  129. </li>
  130. <li class="toctree-l2 current"><a class="reference internal current" href="./">Exemple d'utilisation avec un serveur Web</a>
  131. <ul class="current">
  132. <li class="toctree-l3"><a class="reference internal" href="#installation-du-programme">Installation du programme</a>
  133. <ul>
  134. <li class="toctree-l4"><a class="reference internal" href="#installation">Installation</a>
  135. </li>
  136. <li class="toctree-l4"><a class="reference internal" href="#ouverture-des-ports">Ouverture des ports</a>
  137. </li>
  138. <li class="toctree-l4"><a class="reference internal" href="#test">Test</a>
  139. </li>
  140. </ul>
  141. </li>
  142. <li class="toctree-l3"><a class="reference internal" href="#creation-de-la-page-daccueil">Création de la page d'accueil</a>
  143. <ul>
  144. <li class="toctree-l4"><a class="reference internal" href="#la-page-daccueil">La page d'accueil</a>
  145. </li>
  146. <li class="toctree-l4"><a class="reference internal" href="#creation-du-virtualhost-correspondant">Création du virtualhost correspondant</a>
  147. </li>
  148. <li class="toctree-l4"><a class="reference internal" href="#test-de-notre-page-daccueil">Test de notre page d'accueil</a>
  149. </li>
  150. </ul>
  151. </li>
  152. <li class="toctree-l3"><a class="reference internal" href="#securisation-de-notre-serveur">Sécurisation de notre serveur</a>
  153. <ul>
  154. <li class="toctree-l4"><a class="reference internal" href="#etat-des-lieux">État des lieux</a>
  155. </li>
  156. <li class="toctree-l4"><a class="reference internal" href="#test-de-notre-nouvelle-configuration">Test de notre nouvelle configuration</a>
  157. </li>
  158. <li class="toctree-l4"><a class="reference internal" href="#petites-ameliorations-supplementaires">Petites améliorations supplémentaires</a>
  159. </li>
  160. </ul>
  161. </li>
  162. </ul>
  163. </li>
  164. <li class="toctree-l2"><a class="reference internal" href="../Annexe/">Annexe</a>
  165. </li>
  166. </ul>
  167. </li>
  168. <li class="toctree-l1"><a class="reference internal" href="#">Domotique</a>
  169. <ul>
  170. <li class="toctree-l2"><a class="reference internal" href="../../Domotique/Introduction/">Introduction</a>
  171. </li>
  172. <li class="toctree-l2"><a class="reference internal" href="../../Domotique/Le-mat%C3%A9riel/">Le matériel</a>
  173. </li>
  174. </ul>
  175. </li>
  176. <li class="toctree-l1"><a class="reference internal" href="#">Tutoriel Anki</a>
  177. <ul>
  178. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Introduction/">Introduction</a>
  179. </li>
  180. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Installation/">Installation</a>
  181. </li>
  182. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Les-fiches/">Les fiches</a>
  183. </li>
  184. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Premi%C3%A8re-utilisation/">Premières utilisations et impressions</a>
  185. </li>
  186. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Personnalisation/">Personnalisation</a>
  187. </li>
  188. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Cartes/">Les cartes</a>
  189. </li>
  190. </ul>
  191. </li>
  192. </ul>
  193. </div>
  194. </div>
  195. </nav>
  196. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  197. <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
  198. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  199. <a href="../../..">Les Tutoriels du Yojik</a>
  200. </nav>
  201. <div class="wy-nav-content">
  202. <div class="rst-content">
  203. <div role="navigation" aria-label="breadcrumbs navigation">
  204. <ul class="wy-breadcrumbs">
  205. <li><a href="../../..">Docs</a> &raquo;</li>
  206. <li>Installation d'un serveur sécurisé, version Debian/Buster sur RaspberryPI &raquo;</li>
  207. <li>Tutoriels &raquo;</li>
  208. <li>Exemple d'utilisation avec un serveur Web</li>
  209. <li class="wy-breadcrumbs-aside">
  210. </li>
  211. </ul>
  212. <hr/>
  213. </div>
  214. <div role="main">
  215. <div class="section">
  216. <h1 id="exemple-dutilisation-de-notre-tout-nouveau-raspi">Exemple d'utilisation de notre tout nouveau Raspi</h1>
  217. <p>Nous allons installer un serveur Web, <strong>apache</strong>.</p>
  218. <p>Ce n'est qu'un exemple : choisissez le logiciel que vous voulez, mais gardez à l'esprit la sécurisation.</p>
  219. <h2 id="installation-du-programme">Installation du programme</h2>
  220. <h3 id="installation">Installation</h3>
  221. <pre><code>pi@piras:~ $ sudo apt install apache2
  222. Lecture des listes de paquets... Fait
  223. Construction de l'arbre des dépendances
  224. Lecture des informations d'état... Fait
  225. Les paquets supplémentaires suivants seront installés :
  226. apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 liblua5.2-0
  227. Paquets suggérés :
  228. apache2-doc apache2-suexec-pristine | apache2-suexec-custom
  229. Les NOUVEAUX paquets suivants seront installés :
  230. apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1
  231. liblua5.2-0
  232. 0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
  233. Il est nécessaire de prendre 2 309 ko dans les archives.
  234. Après cette opération, 7 253 ko d'espace disque supplémentaires seront utilisés.
  235. Souhaitez-vous continuer ? [O/n] o
  236. ...
  237. Enabling site 000-default.
  238. Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.
  239. Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service → /lib/systemd/system/apache-htcacheclean.
  240. service.
  241. Traitement des actions différées (« triggers ») pour systemd (241-7~deb10u6+rpi1) ...
  242. Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) ...
  243. Traitement des actions différées (« triggers ») pour libc-bin (2.28-10+rpi1) ...
  244. pi@piras:~ $
  245. </code></pre>
  246. <h3 id="ouverture-des-ports">Ouverture des ports</h3>
  247. <p>Il nous faut ajouter les services <strong>http</strong> et <strong>https</strong>.</p>
  248. <ol>
  249. <li>
  250. <p>Règles en cours</p>
  251. <pre><code>pi@piras:~ $ sudo firewall-cmd --state
  252. running
  253. pi@piras:~ $ sudo firewall-cmd --get-default-zone
  254. public
  255. pi@piras:~ $ sudo firewall-cmd --get-active-zones
  256. public
  257. interfaces: eth0
  258. pi@piras:~ $ sudo firewall-cmd --list-all
  259. public (active)
  260. target: default
  261. icmp-block-inversion: no
  262. interfaces: eth0
  263. sources:
  264. services: dhcpv6-client smtp ssh
  265. ports:
  266. protocols:
  267. masquerade: no
  268. forward-ports:
  269. source-ports:
  270. icmp-blocks:
  271. rich rules:
  272. </code></pre>
  273. </li>
  274. <li>
  275. <p>Ajout des services</p>
  276. <pre><code>pi@piras:~ $ sudo firewall-cmd --permanent --zone=public --add-service={http,https}
  277. success
  278. pi@piras:~ $
  279. </code></pre>
  280. </li>
  281. <li>
  282. <p>Test de nos services actifs</p>
  283. <p>J'ai relancé le raspi car j'avais des erreurs de <strong>zones</strong>.</p>
  284. <p>Après redémarrage, tout est bon :</p>
  285. <pre><code>pi@piras:~ $ sudo firewall-cmd --list-all
  286. public (active)
  287. target: default
  288. icmp-block-inversion: no
  289. interfaces: eth0
  290. sources:
  291. services: dhcpv6-client http https smtp ssh
  292. ports:
  293. protocols:
  294. masquerade: no
  295. forward-ports:
  296. source-ports:
  297. icmp-blocks:
  298. rich rules:
  299. pi@piras:~ $
  300. </code></pre>
  301. <p>Nos services <strong>http</strong> et <strong>https</strong> ont bien été pris en compte.</p>
  302. </li>
  303. </ol>
  304. <h3 id="test">Test</h3>
  305. <p>Nous allons faire un test de connexion :</p>
  306. <p><img alt="Page d'accueil de Debian" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-07%2008-34-27.png" /></p>
  307. <p>Tout fonctionne comme il faut.</p>
  308. <h2 id="creation-de-la-page-daccueil">Création de la page d'accueil</h2>
  309. <h3 id="la-page-daccueil">La page d'accueil</h3>
  310. <p>Nous allons créer un petit fichier <strong>.html</strong> pour personnaliser notre page d'acceuil. Le fichier s'appellera <strong>index.html</strong> et est situé dans <strong>/var/www/html/</strong>.</p>
  311. <pre><code>pi@piras:~ $ cd /var/www/html/
  312. pi@piras:/var/www/html $ ls
  313. index.html
  314. pi@piras:/var/www/html $
  315. </code></pre>
  316. <p>Avec votre éditeur favori, supprimez le fichier :</p>
  317. <pre><code>pi@piras:/var/www/html $ sudo rm index.html
  318. pi@piras:/var/www/html $
  319. </code></pre>
  320. <p>et créez un nouveau fichier dont le contenu est le suivant :</p>
  321. <pre><code>&lt;!DOCTYPE html&gt;
  322. &lt;html&gt;
  323. &lt;head&gt;
  324. &lt;title&gt;Page d'accueil du Piras&lt;/title&gt;
  325. &lt;meta charset="UTF-8"&gt;
  326. &lt;/head&gt;
  327. &lt;body&gt;
  328. &lt;h1&gt;Page d'acceuil du Piras&lt;/h1&gt;
  329. &lt;p&gt;Vous voilà sur la page principale de notre tout nouveau serveur Web.&lt;/p&gt;
  330. &lt;p&gt;Merci de votre visite!&lt;/p&gt;
  331. &lt;/body&gt;
  332. &lt;/html&gt;
  333. pi@piras:/var/www/html $ sudo vim index.html
  334. pi@piras:/var/www/html $
  335. </code></pre>
  336. <p>Changez le propriétaire du fichier :</p>
  337. <pre><code>pi@piras:/var/www/html $ sudo chown www-data: index.html
  338. pi@piras:/var/www/html $
  339. </code></pre>
  340. <h3 id="creation-du-virtualhost-correspondant">Création du <strong>virtualhost</strong> correspondant</h3>
  341. <pre><code>pi@piras:/etc/apache2/sites-available $ cat piras.conf
  342. &lt;VirtualHost *:80&gt;
  343. ServerName piras.yojik.net
  344. ServerAdmin webmaster@localhost
  345. DocumentRoot /var/www/html
  346. ErrorLog ${APACHE_LOG_DIR}/error.log
  347. CustomLog ${APACHE_LOG_DIR}/access.log combined
  348. &lt;/VirtualHost&gt;
  349. pi@piras:/etc/apache2/sites-available $
  350. </code></pre>
  351. <p>On désactive les anciens sites par défaut, et on active le nouveau :</p>
  352. <pre><code>pi@piras:/etc/apache2/sites-available $ sudo a2dissite default-ssl
  353. Site default-ssl disabled.
  354. To activate the new configuration, you need to run:
  355. systemctl reload apache2
  356. pi@piras:/etc/apache2/sites-available $ sudo a2dissite 000-default
  357. Site 000-default disabled.
  358. To activate the new configuration, you need to run:
  359. systemctl reload apache2
  360. pi@piras:/etc/apache2/sites-available $
  361. pi@piras:/etc/apache2/sites-available $ sudo a2ensite piras
  362. Enabling site piras.
  363. To activate the new configuration, you need to run:
  364. systemctl reload apache2
  365. pi@piras:/etc/apache2/sites-available $
  366. </code></pre>
  367. <p>On recharge apache2 pour qu'il prenne en compte nos modifications :</p>
  368. <pre><code>pi@piras:/etc/apache2/sites-available $ sudo systemctl reload apache2
  369. pi@piras:/etc/apache2/sites-available $
  370. </code></pre>
  371. <h3 id="test-de-notre-page-daccueil">Test de notre page d'accueil</h3>
  372. <p><img alt="Page d'accueil du Piras" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-07%2009-04-24.png" /></p>
  373. <p>Et voilà! :D</p>
  374. <h2 id="securisation-de-notre-serveur">Sécurisation de notre serveur</h2>
  375. <h3 id="etat-des-lieux">État des lieux</h3>
  376. <p>Rendez-vous sur la page suivante : <a href="https://observatory.mozilla.org/">Test Mozilla</a>. Nos résultats ne sont pas terribles ...</p>
  377. <p><img alt="Résultat 1" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-07%2009-15-59.png" /></p>
  378. <p><img alt="Résultat 2" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-07%2009-16-17.png" /></p>
  379. <p><img alt="Résultat 3" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-07%2009-16-52.png" /></p>
  380. <p>Nous allons suivre les recommandations de la fondation <strong>Mozilla</strong> en ce qui concerne les algorithmes utilisés pour le chiffrement.</p>
  381. <p>Page de configuration d'un serveur Apache par la fondation <strong>Mozilla</strong> : <a href="https://ssl-config.mozilla.org/#server=apache&amp;version=2.4.41&amp;config=intermediate&amp;openssl=1.1.1d&amp;guideline=5.6">Configurateur</a></p>
  382. <p>Nous alons donc éditer notre fichier <strong>piras.conf</strong> situé dans <strong>/etc/apache2/sites-available/</strong> ainsi que le fichier général de configuration d'apache, situé dans pi@piras:/etc/apache2, <strong>apache2.conf</strong> :</p>
  383. <ol>
  384. <li>
  385. <p>Sauvegarde des fichiers existants</p>
  386. <p>pi@piras:/etc/apache2 $ sudo cp apache2.conf apache2.conf.orig
  387. pi@piras:/etc/apache2 $</p>
  388. </li>
  389. <li>
  390. <p>Création de certificats let'encrypt</p>
  391. <p>Il existe plusieurs clients <strong>letsencrypt</strong> pour la gestion des certificats. Nous utiliserons <strong>certbot</strong>, le client officiel de <strong>letsencrypt</strong>.</p>
  392. <pre><code>pi@piras:~ $ sudo apt install certbot python-certbot-apache
  393. ...
  394. pi@piras:~ $
  395. </code></pre>
  396. <p>Nous stoppons le service <strong>apache</strong></p>
  397. <pre><code>pi@piras:~ $ sudo systemctl stop apache2
  398. pi@piras:~ $
  399. </code></pre>
  400. <p>Lançons <strong>certbot</strong></p>
  401. <pre><code>pi@piras:~ $ sudo certbot
  402. Saving debug log to /var/log/letsencrypt/letsencrypt.log
  403. Plugins selected: Authenticator apache, Installer apache
  404. Enter email address (used for urgent renewal and security notices) (Enter 'c' to
  405. cancel): eric@yojik.eu
  406. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  407. Please read the Terms of Service at
  408. https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
  409. agree in order to register with the ACME server at
  410. https://acme-v02.api.letsencrypt.org/directory
  411. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  412. (A)gree/(C)ancel: A
  413. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  414. Would you be willing to share your email address with the Electronic Frontier
  415. Foundation, a founding partner of the Let's Encrypt project and the non-profit
  416. organization that develops Certbot? We'd like to send you email about our work
  417. encrypting the web, EFF news, campaigns, and ways to support digital freedom.
  418. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  419. (Y)es/(N)o: Y
  420. Which names would you like to activate HTTPS for?
  421. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  422. 1: piras.yojik.net
  423. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  424. Select the appropriate numbers separated by commas and/or spaces, or leave input
  425. blank to select all options shown (Enter 'c' to cancel): 1
  426. Obtaining a new certificate
  427. Performing the following challenges:
  428. http-01 challenge for piras.yojik.net
  429. Waiting for verification...
  430. Cleaning up challenges
  431. Created an SSL vhost at /etc/apache2/sites-available/piras-le-ssl.conf
  432. Deploying Certificate to VirtualHost /etc/apache2/sites-available/piras-le-ssl.conf
  433. Enabling available site: /etc/apache2/sites-available/piras-le-ssl.conf
  434. Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
  435. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  436. 1: No redirect - Make no further changes to the webserver configuration.
  437. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
  438. new sites, or if you're confident your site works on HTTPS. You can undo this
  439. change by editing your web server's configuration.
  440. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  441. Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
  442. Redirecting vhost in /etc/apache2/sites-enabled/piras.conf to ssl vhost in /etc/apache2/sites-available/piras-le-ssl.conf
  443. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  444. Congratulations! You have successfully enabled https://piras.yojik.net
  445. You should test your configuration at:
  446. https://www.ssllabs.com/ssltest/analyze.html?d=piras.yojik.net
  447. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  448. IMPORTANT NOTES:
  449. - Congratulations! Your certificate and chain have been saved at:
  450. /etc/letsencrypt/live/piras.yojik.net/fullchain.pem
  451. Your key file has been saved at:
  452. /etc/letsencrypt/live/piras.yojik.net/privkey.pem
  453. Your cert will expire on 2021-06-05. To obtain a new or tweaked
  454. version of this certificate in the future, simply run certbot again
  455. with the "certonly" option. To non-interactively renew *all* of
  456. your certificates, run "certbot renew"
  457. - Your account credentials have been saved in your Certbot
  458. configuration directory at /etc/letsencrypt. You should make a
  459. secure backup of this folder now. This configuration directory will
  460. also contain certificates and private keys obtained by Certbot so
  461. making regular backups of this folder is ideal.
  462. - If you like Certbot, please consider supporting our work by:
  463. Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
  464. Donating to EFF: https://eff.org/donate-le
  465. pi@piras:~ $
  466. </code></pre>
  467. <p>Relançons <strong>apache</strong></p>
  468. <pre><code>pi@piras:~ $ sudo systemctl start apache2
  469. pi@piras:~ $
  470. </code></pre>
  471. </li>
  472. <li>
  473. <p>Premier test</p>
  474. <p><img alt="Test avec SSL" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-07%2015-24-01.png" /></p>
  475. <p>C'est bon.</p>
  476. </li>
  477. <li>
  478. <p>Sécurisation du serveur <strong>apache</strong></p>
  479. <ul>
  480. <li>
  481. <p>Strict-Transport-Security</p>
  482. <p>Ajouter la ligne suivante à piras.conf :</p>
  483. <pre><code>Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
  484. </code></pre>
  485. </li>
  486. <li>
  487. <p>Content-Security-Policy</p>
  488. <p>Ajouter la ligne suivante à piras.conf :</p>
  489. <pre><code>Header set Content-Security-Policy "default-src 'self';"
  490. </code></pre>
  491. </li>
  492. <li>
  493. <p>X-Content-Type-Options</p>
  494. <p>Ajouter la ligne suivante à piras.conf :</p>
  495. <pre><code>&lt;IfModule mod_headers.c&gt;
  496. Header set X-Content-Type-Options "nosniff"
  497. &lt;/IfModule&gt;
  498. </code></pre>
  499. <p>Il faut activer aussi le module headers (déjà activé chez moi) :</p>
  500. <pre><code>pi@piras:~ $ sudo a2enmod headers
  501. Module headers already enabled
  502. pi@piras:~ $
  503. </code></pre>
  504. </li>
  505. <li>
  506. <p>X-Frame-Options</p>
  507. <p>Ajouter la ligne suivante à piras.conf :</p>
  508. <pre><code>&lt;IfModule mod_headers.c&gt;
  509. Header set X-Content-Type-Options "nosniff"
  510. &lt;/IfModule&gt;
  511. </code></pre>
  512. </li>
  513. <li>
  514. <p>X-XSS-Protection</p>
  515. <p>Ajouter la ligne suivante à piras.conf :</p>
  516. <pre><code>Header set X-Frame-Options: "SAMEORIGIN"
  517. </code></pre>
  518. </li>
  519. </ul>
  520. <p>Voilà le contenu du fichier après modifications :</p>
  521. <pre><code>pi@piras:~ $ cat /etc/apache2/sites-available/piras-le-ssl.conf
  522. &lt;IfModule mod_ssl.c&gt;
  523. &lt;VirtualHost *:443&gt;
  524. Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
  525. Header set Content-Security-Policy "default-src 'self';"
  526. &lt;IfModule mod_headers.c&gt;
  527. Header set X-Content-Type-Options "nosniff"
  528. &lt;/IfModule&gt;
  529. Header set X-Frame-Options: "SAMEORIGIN"
  530. ServerName piras.yojik.net
  531. ServerAdmin webmaster@localhost
  532. DocumentRoot /var/www/html
  533. ErrorLog ${APACHE_LOG_DIR}/error.log
  534. CustomLog ${APACHE_LOG_DIR}/access.log combined
  535. SSLCertificateFile /etc/letsencrypt/live/piras.yojik.net/fullchain.pem
  536. SSLCertificateKeyFile /etc/letsencrypt/live/piras.yojik.net/privkey.pem
  537. Include /etc/letsencrypt/options-ssl-apache.conf
  538. &lt;/VirtualHost&gt;
  539. &lt;/IfModule&gt;
  540. pi@piras:~ $
  541. </code></pre>
  542. </li>
  543. </ol>
  544. <h3 id="test-de-notre-nouvelle-configuration">Test de notre nouvelle configuration</h3>
  545. <p>Cette fois-ci, nous obtenons la note maximale A+ :</p>
  546. <p><img alt="Test avec SSL" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-07%2018-13-31.png" /></p>
  547. <p><img alt="Test avec SSL" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-07%2018-13-51.png" /></p>
  548. <p><img alt="Test avec SSL" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-07%2018-14-43.png" /></p>
  549. <p>Nous sommes passés d'une note <strong>F</strong> à <strong>A+</strong>!</p>
  550. <h3 id="petites-ameliorations-supplementaires">Petites améliorations supplémentaires</h3>
  551. <ul>
  552. <li>
  553. <p>cacher les données du serveur</p>
  554. <p>Cela se configure dans le fichier <strong>/etc/apache2/conf-available/security.conf</strong></p>
  555. <p>J'ai modifié les lignes suivantes : </p>
  556. <pre><code>ServerSignature Off
  557. ServerTokens Prod
  558. </code></pre>
  559. <p>Sauvegarde du fichier et relance du serveur apache.</p>
  560. <p><img alt="Avant" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-08%2009-18-18.png" /></p>
  561. <p><img alt="Après" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-08%2009-18-28.png" /></p>
  562. <p>On peut constater que notre serveur ne divulgue plus d'informations sur son type, ni sur l'OS utilisé.</p>
  563. </li>
  564. <li>
  565. <p>le parcours des répertoires</p>
  566. <p>Nous allons interdire le parcours des répertoires/sous-répertoires, de telle façon que le visiteur ne puisse plus voir les fichiers/répertoires.</p>
  567. <p>Procédure de test : </p>
  568. <p>Nous allons créer un répertoire <strong>test</strong> avec 2 fichiers (vides) dans l'arboresence de notre site Web.</p>
  569. <pre><code>pi@piras:/etc/apache2/conf-available $ cd /var/www/html/
  570. pi@piras:/var/www/html $ sudo mkdir test
  571. pi@piras:/var/www/html $ cd test
  572. pi@piras:/var/www/html/test $ sudo touch fichier1 fichier2
  573. pi@piras:/var/www/html/test $
  574. </code></pre>
  575. <p>Le résultat est le suivant :</p>
  576. <p><img alt="Avant" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-08%2009-25-25.png" /></p>
  577. <p>Retournons dans notre fichier précédent et modifions-le pour avoir ceci :</p>
  578. <pre><code>&lt;Directory /var/www/html&gt;
  579. # AllowOverride None
  580. # Require all denied
  581. Options None
  582. &lt;/Directory&gt;
  583. </code></pre>
  584. <p>Relançons apache et voyons le résultat :</p>
  585. <p><img alt="Après" src="../../../Images/tutoraspi/Capture%20d%E2%80%99%C3%A9cran%20de%202021-03-08%2009-31-20.png" /></p>
  586. <p>Le visiteur n'a plus accès au listage des répertoires.</p>
  587. </li>
  588. <li>
  589. <p>protection contre les informations données par l'entête (header) <strong>Etag</strong></p>
  590. <p>Il nous faut rajouter la directive suivante au fichier de configuration :</p>
  591. <pre><code>FileEtag None
  592. </code></pre>
  593. </li>
  594. <li>
  595. <p>limitation des requêtes possibles : </p>
  596. <p>les méthodes supportées sont nombreuses et peuvent être configurées site par site. Mais en général, pour un site statique comme celui-là, seules les méthodes <strong>GET</strong>, <strong>Head</strong>, et <strong>POST</strong> sont nécessaires.</p>
  597. <p>Modification du fichier précédent</p>
  598. <pre><code>&lt;Directory /var/www/html&gt;
  599. # AllowOverride None
  600. # Require all denied
  601. Options None
  602. &lt;LimitExcept GET POST OPTIONS&gt;
  603. Require all denied
  604. &lt;/LimitExcept&gt;
  605. &lt;/Directory&gt;S
  606. </code></pre>
  607. </li>
  608. <li>
  609. <p>interdire la requête Trace</p>
  610. <p>C'est déjà mis en place par défaut dans la configuration Debian.</p>
  611. </li>
  612. </ul>
  613. <p>Voilà pour quelques améliorations de la sécurité de notre serveur Web.</p>
  614. </div>
  615. </div>
  616. <footer>
  617. <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
  618. <a href="../Annexe/" class="btn btn-neutral float-right" title="Annexe">Next <span class="icon icon-circle-arrow-right"></span></a>
  619. <a href="../Installation-courrier-basique/" class="btn btn-neutral" title="Installation d'un serveur de courriers basique"><span class="icon icon-circle-arrow-left"></span> Previous</a>
  620. </div>
  621. <hr/>
  622. <div role="contentinfo">
  623. <!-- Copyright etc -->
  624. </div>
  625. 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>.
  626. </footer>
  627. </div>
  628. </div>
  629. </section>
  630. </div>
  631. <div class="rst-versions" role="note" aria-label="versions">
  632. <span class="rst-current-version" data-toggle="rst-current-version">
  633. <span><a href="../Installation-courrier-basique/" style="color: #fcfcfc;">&laquo; Previous</a></span>
  634. <span style="margin-left: 15px"><a href="../Annexe/" style="color: #fcfcfc">Next &raquo;</a></span>
  635. </span>
  636. </div>
  637. <script>var base_url = '../../..';</script>
  638. <script src="../../../js/theme.js" defer></script>
  639. <script src="../../../search/main.js" defer></script>
  640. <script defer>
  641. window.onload = function () {
  642. SphinxRtdTheme.Navigation.enable(true);
  643. };
  644. </script>
  645. </body>
  646. </html>