index.html 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  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>Installation d'un pare-feux - 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 = "Installation d'un pare-feux";
  16. var mkdocs_page_input_path = "Tutoriels/tutoraspi/Firewall.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 current"><a class="reference internal current" href="./">Installation d'un pare-feux</a>
  123. <ul class="current">
  124. <li class="toctree-l3"><a class="reference internal" href="#installation-de-iptables-et-de-firewalld">Installation de IPtables et de Firewalld</a>
  125. </li>
  126. <li class="toctree-l3"><a class="reference internal" href="#test">Test</a>
  127. <ul>
  128. <li class="toctree-l4"><a class="reference internal" href="#la-notion-de-zones">La notion de zones</a>
  129. </li>
  130. <li class="toctree-l4"><a class="reference internal" href="#les-differentes-zones">Les différentes zones</a>
  131. </li>
  132. <li class="toctree-l4"><a class="reference internal" href="#les-fichiers-de-configuration">Les fichiers de configuration</a>
  133. </li>
  134. <li class="toctree-l4"><a class="reference internal" href="#quelques-commandes">Quelques commandes</a>
  135. </li>
  136. <li class="toctree-l4"><a class="reference internal" href="#premiere-etape-de-configuration">Première étape de configuration</a>
  137. </li>
  138. <li class="toctree-l4"><a class="reference internal" href="#les-services">Les services</a>
  139. </li>
  140. <li class="toctree-l4"><a class="reference internal" href="#etat-des-lieux">État des lieux</a>
  141. </li>
  142. </ul>
  143. </li>
  144. </ul>
  145. </li>
  146. <li class="toctree-l2"><a class="reference internal" href="../Fail2ban/">Contrer les attaques de force brute</a>
  147. </li>
  148. <li class="toctree-l2"><a class="reference internal" href="../Logwatch/">Surveillance du serveur</a>
  149. </li>
  150. <li class="toctree-l2"><a class="reference internal" href="../Installation-courrier-basique/">Installation d'un serveur de courriers basique</a>
  151. </li>
  152. <li class="toctree-l2"><a class="reference internal" href="../Exemple-d-utilisation-serveur-Web/">Exemple d'utilisation avec un serveur Web</a>
  153. </li>
  154. <li class="toctree-l2"><a class="reference internal" href="../Annexe/">Annexe</a>
  155. </li>
  156. </ul>
  157. </li>
  158. <li class="toctree-l1"><a class="reference internal" href="#">Domotique</a>
  159. <ul>
  160. <li class="toctree-l2"><a class="reference internal" href="../../Domotique/Introduction/">Introduction</a>
  161. </li>
  162. <li class="toctree-l2"><a class="reference internal" href="../../Domotique/Le-mat%C3%A9riel/">Le matériel</a>
  163. </li>
  164. </ul>
  165. </li>
  166. <li class="toctree-l1"><a class="reference internal" href="#">Tutoriel Anki</a>
  167. <ul>
  168. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Introduction/">Introduction</a>
  169. </li>
  170. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Installation/">Installation</a>
  171. </li>
  172. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Les-fiches/">Les fiches</a>
  173. </li>
  174. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Premi%C3%A8re-utilisation/">Premières utilisations et impressions</a>
  175. </li>
  176. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Personnalisation/">Personnalisation</a>
  177. </li>
  178. <li class="toctree-l2"><a class="reference internal" href="../../tutoanki/Cartes/">Les cartes</a>
  179. </li>
  180. </ul>
  181. </li>
  182. </ul>
  183. </div>
  184. </div>
  185. </nav>
  186. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  187. <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
  188. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  189. <a href="../../..">Les Tutoriels du Yojik</a>
  190. </nav>
  191. <div class="wy-nav-content">
  192. <div class="rst-content">
  193. <div role="navigation" aria-label="breadcrumbs navigation">
  194. <ul class="wy-breadcrumbs">
  195. <li><a href="../../..">Docs</a> &raquo;</li>
  196. <li>Installation d'un serveur sécurisé, version Debian/Buster sur RaspberryPI &raquo;</li>
  197. <li>Tutoriels &raquo;</li>
  198. <li>Installation d'un pare-feux</li>
  199. <li class="wy-breadcrumbs-aside">
  200. </li>
  201. </ul>
  202. <hr/>
  203. </div>
  204. <div role="main">
  205. <div class="section">
  206. <h1 id="le-pare-feu">Le pare-feu</h1>
  207. <p>Il nous faut installer un pare-feu sur notre raspi pour éviter les intrusions.</p>
  208. <p>Nous allons limiter les machines susceptibles de se connecter à celles de notre réseau local, et également limiter les ports accessibles sur notre réseau.</p>
  209. <p>Nous allons utiliser IPtables et Firewalld.</p>
  210. <p>J'aurai préféré utiliser <strong>nftables</strong> qui est le successeur de <strong>iptables</strong>, mais j'ai eu quelques soucis à l'utilisation. Peut-être est-ce pour ça que la distribution RaspiOS a configuré <strong>firewalld</strong> avec <strong>IPtables</strong>...</p>
  211. <h2 id="installation-de-iptables-et-de-firewalld">Installation de IPtables et de Firewalld</h2>
  212. <pre><code>pi@raspi:~ $ sudo apt install firewalld
  213. </code></pre>
  214. <p>IPtables est installé par défaut : rien à faire ici.</p>
  215. <h2 id="test">Test</h2>
  216. <p>Si on tape : </p>
  217. <pre><code>pi@raspberrypi:~ $ sudo iptables -L
  218. Chain INPUT (policy ACCEPT)
  219. target prot opt source destination
  220. Chain FORWARD (policy ACCEPT)
  221. target prot opt source destination
  222. Chain OUTPUT (policy ACCEPT)
  223. target prot opt source destination
  224. pi@raspberrypi:~ $
  225. </code></pre>
  226. <p>On voit que c'est iptables qui a été chosi par RaspiOS.</p>
  227. <p>D'abord, il faut comprendre comment fonctionne Firewalld. Je me suis basé sur les sites suivant :</p>
  228. <ul>
  229. <li><a href="https://lwn.net/Articles/484506/">lw.net</a></li>
  230. <li><a href="https://www.certdepot.net/rhel7-get-started-firewalld/">How to get started with Firewalld</a></li>
  231. <li><a href="https://www.tutorialspoint.com/network_security/network_security_firewalls.htm">tutorial points</a></li>
  232. <li><a href="https://firewalld.org/documentation/zone/predefined-zones.html">la documentation officielle</a></li>
  233. <li><a href="https://linuxconfig.org/introduction-to-firewalld-and-firewall-cmd-command-on-linux">introduction-to-firewalld</a></li>
  234. <li><a href="https://doc.fedora-fr.org/wiki/Parefeu_-_firewall_-_FirewallD">La documentation de Fedora</a></li>
  235. <li><a href="https://www.it-connect.fr/centos-7-utilisation-et-configuration-de-firewalld/">it connect</a></li>
  236. </ul>
  237. <p>La documentation de Fedora est la plus compréhensible.</p>
  238. <h3 id="la-notion-de-zones">La notion de zones</h3>
  239. <p>Firewalld définit 9 zones qui sont en fait des règles de pare-feux par défaut. Une zone va par exemple bloquer toute entrée sauf SSH, une autre permettre l'accès en HTTP et HTTPS. Ces zones correspondent à des utilisations types, comme un serveur dans une DMZ, ou un serveur <strong>chez soi</strong>, un serveur public, etc.</p>
  240. <p>On peut imaginer une zone <strong>émail</strong> qui ne laisserait passer que les ports spécifiques à l'émail et DNS bien sûr.</p>
  241. <p>Il est possible de créer des zones personnelles.</p>
  242. <p>Un certain nombre de zones sont prédéfinies. Voyons leur contenu.</p>
  243. <h3 id="les-differentes-zones">Les différentes zones</h3>
  244. <p>Les différentes zones sont :</p>
  245. <ul>
  246. <li>trusted: non modifiable</li>
  247. <li>home: modifiable</li>
  248. <li>work: modifiable</li>
  249. <li>internal: modifiable</li>
  250. <li>dmz: modifiable</li>
  251. <li>public: modifiable</li>
  252. <li>external: modifiable</li>
  253. <li>block: non modifiable</li>
  254. <li>drop: non modifiable</li>
  255. </ul>
  256. <p>Une très bonne présentation des zones est ici : <a href="https://www.it-connect.fr/centos-7-utilisation-et-configuration-de-firewalld/">it connect</a></p>
  257. <h3 id="les-fichiers-de-configuration">Les fichiers de configuration</h3>
  258. <p>Ils sont situés à 2 endroits :</p>
  259. <ul>
  260. <li>/usr/lib/firewalld/ : il ne faut pas toucher au contenu de ce répertoire</li>
  261. <li>/etc/firewalld/ : c'est là que nous mettrons notre configuration, en copiant les fichiers de /usr/lib/firewalld si besoin est.</li>
  262. </ul>
  263. <p>Dans le répertoire /etc/firewalld, le fichier firewalld.conf permet de configurer la zone par défaut, ainsi que le backend (iptables, nftables et autre).</p>
  264. <p>La zone par défaut est <strong>public</strong> : pas de confiance, mais possibilité d'ajuster au cas par cas les règles. Le seul accès autorisé est l'accès <strong>ssh</strong> et <strong>dhcp</strong>.</p>
  265. <h3 id="quelques-commandes">Quelques commandes</h3>
  266. <ul>
  267. <li>Démarrer Firewalld:<strong>$ sudo systemctl start firewalld</strong></li>
  268. <li>Stopper Fireawalld:<strong>$ sudo systemctl stop firewalld</strong></li>
  269. <li>Tester le fonctionnement de Firewalld:<strong>$ sudo firewall-cmd --state</strong></li>
  270. <li>Connaître les zones prédéfinies : <strong>$ sudo firewall-cmd --get-zones</strong></li>
  271. <li>Connaître la zone par défaut :<strong>$ sudo firewall-cmd --get-default-zone</strong></li>
  272. <li>Connaître la zone active :<strong>$ sudo firewall-cmd --get-active-zones</strong></li>
  273. </ul>
  274. <p>Exemples :</p>
  275. <pre><code>pi@piras:~ $ sudo firewall-cmd --state
  276. running
  277. pi@piras:~ $
  278. </code></pre>
  279. <p>Le service tourne.</p>
  280. <pre><code>pi@piras:~ $ sudo firewall-cmd --get-default-zone
  281. public
  282. pi@piras:~ $
  283. </code></pre>
  284. <p>La zone par défaut est : public</p>
  285. <pre><code>pi@piras:~ $ sudo firewall-cmd --get-zones
  286. block dmz drop external home internal public trusted work
  287. pi@piras:~ $
  288. </code></pre>
  289. <p>Les zones prédéfinies sont : <strong>block dmz drop external home internal public trusted work</strong></p>
  290. <p>Quelle est la zone active : aucune !</p>
  291. <pre><code>pi@piras:~ $ sudo firewall-cmd --get-active-zones
  292. pi@piras:~ $
  293. </code></pre>
  294. <p>Nous pouvons vérifier la zone en fonctionnement et l'interface réseau qui y est attachée :</p>
  295. <pre><code>pi@piras:~ $ sudo firewall-cmd --list-all
  296. public
  297. target: default
  298. icmp-block-inversion: no
  299. interfaces:
  300. sources:
  301. services: dhcpv6-client ssh
  302. ports:
  303. protocols:
  304. masquerade: no
  305. forward-ports:
  306. source-ports:
  307. icmp-blocks:
  308. rich rules:
  309. pi@piras:~ $
  310. </code></pre>
  311. <p>Aucune interface n'est attachée. Les seuls services autorisé sont : dhcp et ssh.</p>
  312. <h3 id="premiere-etape-de-configuration">Première étape de configuration</h3>
  313. <p>Nous allons utiliser les commandes en ligne de commande pour configurer Firewalld, mais il existe une GUI pour le faire graphiquement. Référez-vous aux liens que j'ai indiqués au-dessus.</p>
  314. <ul>
  315. <li>
  316. <p>Définition de la zone par défaut : (public)</p>
  317. <pre><code>pi@piras:~ $ sudo firewall-cmd --set-default-zone=public
  318. Warning: ZONE_ALREADY_SET: public
  319. success
  320. pi@piras:~ $
  321. </code></pre>
  322. </li>
  323. <li>
  324. <p>Attribution de l'interface réseau à cette zone :</p>
  325. <pre><code>pi@piras:~ $ sudo firewall-cmd --zone=public --change-interface=eth0
  326. success
  327. pi@piras:~ $
  328. </code></pre>
  329. <p>Attention, ce changement n'est pas permanent ! (voir ci-dessous)</p>
  330. </li>
  331. <li>
  332. <p>Test :</p>
  333. <pre><code>pi@piras:~ $ sudo firewall-cmd --list-all
  334. public (active)
  335. target: default
  336. icmp-block-inversion: no
  337. interfaces: eth0
  338. sources:
  339. services: dhcpv6-client ssh
  340. ports:
  341. protocols:
  342. masquerade: no
  343. forward-ports:
  344. source-ports:
  345. icmp-blocks:
  346. rich rules:
  347. pi@piras:~ $
  348. </code></pre>
  349. </li>
  350. </ul>
  351. <p>Nous voyons que l'interface <strong>eth0</strong> a bien été attribuée à la zone <strong>public</strong>.</p>
  352. <h3 id="les-services">Les services</h3>
  353. <p>Il est possible de configurer les services accessibles (ou pas) attribués à la zone active.</p>
  354. <p>Pour connaître les différents services disponibles, tapez la commande suivante :</p>
  355. <pre><code>pi@piras:~ $ sudo firewall-cmd --get-services
  356. RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph
  357. ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client
  358. etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps
  359. ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network
  360. llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn
  361. ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio
  362. puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps
  363. snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client
  364. tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local
  365. xmpp-server zabbix-agent zabbix-server
  366. pi@piras:~ $
  367. </code></pre>
  368. <p>Chaque détail des services est détaillé dans un fichier xml dans /usr/lib/firewalld.</p>
  369. <p>Voyons quels services sont actuellement activés sur notre raspi :</p>
  370. <pre><code>pi@piras:~ $ ss -t -u -l -a
  371. Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
  372. udp UNCONN 0 0 0.0.0.0:55853 0.0.0.0:*
  373. udp UNCONN 0 0 127.0.0.1:domain 0.0.0.0:*
  374. udp UNCONN 0 0 0.0.0.0:bootpc 0.0.0.0:*
  375. udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:*
  376. udp UNCONN 0 0 [::1]:domain *:*
  377. udp UNCONN 0 0 *:59578 *:*
  378. udp UNCONN 0 0 *:mdns *:*
  379. tcp LISTEN 0 511 127.0.0.1:domain-s 0.0.0.0:*
  380. tcp LISTEN 0 511 127.0.0.1:domain 0.0.0.0:*
  381. tcp LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
  382. tcp ESTAB 0 0 192.168.111.170:ssh 192.168.111.150:59092
  383. tcp LISTEN 0 511 [::1]:domain-s [::]:*
  384. tcp LISTEN 0 511 [::1]:domain [::]:*
  385. tcp LISTEN 0 128 [::]:ssh [::]:*
  386. pi@piras:~ $
  387. </code></pre>
  388. <p>Nous voyons notre connexion <strong>ssh</strong> établie entre ma machine de travail en ip 192.168.111.150 et piras 192.168.111.170.</p>
  389. <p>Notre raspi écoute également le port 22 sur toutes les interfaces présentes.</p>
  390. <p>Liste des ports en écoute (TCP) :</p>
  391. <pre><code>pi@piras:~ $ ss -ltn
  392. State Recv-Q Send-Q Local Address:Port Peer Address:Port
  393. LISTEN 0 511 127.0.0.1:853 0.0.0.0:*
  394. LISTEN 0 511 127.0.0.1:53 0.0.0.0:*
  395. LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
  396. LISTEN 0 511 [::1]:853 [::]:*
  397. LISTEN 0 511 [::1]:53 [::]:*
  398. LISTEN 0 128 [::]:22 [::]:*
  399. pi@piras:~ $
  400. </code></pre>
  401. <p>Les ports 22 (ssh), 53 (dns), 853 (dns) sont à l'écoute en IPV4 et IPV6.</p>
  402. <p>Liste des ports en écoute (UDP) :</p>
  403. <pre><code>pi@piras:~ $ ss -lun
  404. State Recv-Q Send-Q Local Address:Port Peer Address:Port
  405. UNCONN 0 0 127.0.0.1:53 0.0.0.0:*
  406. UNCONN 0 0 0.0.0.0:68 0.0.0.0:*
  407. UNCONN 0 0 0.0.0.0:5353 0.0.0.0:*
  408. UNCONN 0 0 [::1]:53 *:*
  409. UNCONN 0 0 *:59578 *:*
  410. UNCONN 0 0 *:5353 *:*
  411. pi@piras:~ $
  412. </code></pre>
  413. <h3 id="etat-des-lieux">État des lieux</h3>
  414. <p>Vérifions le fonctionnement de Firewalld. Souvenez-vous qu'il était configuré pour fonctionner avec Iptables.</p>
  415. <p>Vérifions les règles établies :</p>
  416. <pre><code>pi@piras:~ $ sudo iptables -L
  417. Chain INPUT (policy ACCEPT)
  418. target prot opt source destination
  419. ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
  420. ACCEPT all -- anywhere anywhere
  421. INPUT_direct all -- anywhere anywhere
  422. INPUT_ZONES_SOURCE all -- anywhere anywhere
  423. INPUT_ZONES all -- anywhere anywhere
  424. DROP all -- anywhere anywhere ctstate INVALID
  425. REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
  426. Chain FORWARD (policy ACCEPT)
  427. target prot opt source destination
  428. ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
  429. ACCEPT all -- anywhere anywhere
  430. FORWARD_direct all -- anywhere anywhere
  431. FORWARD_IN_ZONES_SOURCE all -- anywhere anywhere
  432. FORWARD_IN_ZONES all -- anywhere anywhere
  433. FORWARD_OUT_ZONES_SOURCE all -- anywhere anywhere
  434. FORWARD_OUT_ZONES all -- anywhere anywhere
  435. DROP all -- anywhere anywhere ctstate INVALID
  436. REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
  437. Chain OUTPUT (policy ACCEPT)
  438. target prot opt source destination
  439. OUTPUT_direct all -- anywhere anywhere
  440. Chain INPUT_direct (1 references)
  441. target prot opt source destination
  442. Chain INPUT_ZONES_SOURCE (1 references)
  443. target prot opt source destination
  444. Chain INPUT_ZONES (1 references)
  445. target prot opt source destination
  446. IN_public all -- anywhere anywhere [goto]
  447. IN_public all -- anywhere anywhere [goto]
  448. Chain FORWARD_direct (1 references)
  449. target prot opt source destination
  450. Chain FORWARD_IN_ZONES_SOURCE (1 references)
  451. target prot opt source destination
  452. Chain FORWARD_IN_ZONES (1 references)
  453. target prot opt source destination
  454. FWDI_public all -- anywhere anywhere [goto]
  455. FWDI_public all -- anywhere anywhere [goto]
  456. Chain FORWARD_OUT_ZONES_SOURCE (1 references)
  457. target prot opt source destination
  458. Chain FORWARD_OUT_ZONES (1 references)
  459. target prot opt source destination
  460. FWDO_public all -- anywhere anywhere [goto]
  461. FWDO_public all -- anywhere anywhere [goto]
  462. Chain OUTPUT_direct (1 references)
  463. target prot opt source destination
  464. Chain IN_public (2 references)
  465. target prot opt source destination
  466. IN_public_log all -- anywhere anywhere
  467. IN_public_deny all -- anywhere anywhere
  468. IN_public_allow all -- anywhere anywhere
  469. ACCEPT icmp -- anywhere anywhere
  470. Chain IN_public_log (1 references)
  471. target prot opt source destination
  472. Chain IN_public_deny (1 references)
  473. target prot opt source destination
  474. Chain IN_public_allow (1 references)
  475. target prot opt source destination
  476. ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW,UNTRACKED
  477. Chain FWDI_public (2 references)
  478. target prot opt source destination
  479. FWDI_public_log all -- anywhere anywhere
  480. FWDI_public_deny all -- anywhere anywhere
  481. FWDI_public_allow all -- anywhere anywhere
  482. ACCEPT icmp -- anywhere anywhere
  483. Chain FWDI_public_log (1 references)
  484. target prot opt source destination
  485. Chain FWDI_public_deny (1 references)
  486. target prot opt source destination
  487. Chain FWDI_public_allow (1 references)
  488. target prot opt source destination
  489. Chain FWDO_public (2 references)
  490. target prot opt source destination
  491. FWDO_public_log all -- anywhere anywhere
  492. FWDO_public_deny all -- anywhere anywhere
  493. FWDO_public_allow all -- anywhere anywhere
  494. Chain FWDO_public_log (1 references)
  495. target prot opt source destination
  496. Chain FWDO_public_deny (1 references)
  497. target prot opt source destination
  498. Chain FWDO_public_allow (1 references)
  499. target prot opt source destination
  500. pi@piras:~ $
  501. </code></pre>
  502. <p>Les règles Iptables ont bien été configurées par Firewalld.</p>
  503. <p>Après reboot, nous voyons que rien n'a été conservé !</p>
  504. <p>Il va falloir investiguer ...</p>
  505. <p>Bien : voilà la procédure à suivre :</p>
  506. <p>sudo firewall-cmd <strong>--permanent</strong> --zone=public --change-interface=eth0</p>
  507. <p>Permet de changer de façon <strong>permanente</strong> l'interface associée à la zone <strong>public</strong>.</p>
  508. <pre><code>Test :
  509. pi@piras:~ $ sudo firewall-cmd --permanent --zone=public --change-interface=eth0
  510. success
  511. pi@piras:~ $ sudo cat /etc/firewalld/zones/public.xml
  512. &lt;?xml version="1.0" encoding="utf-8"?&gt;
  513. &lt;zone&gt;
  514. &lt;short&gt;Public&lt;/short&gt;
  515. &lt;description&gt;For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.&lt;/description&gt;
  516. &lt;interface name="eth0"/&gt;
  517. &lt;service name="ssh"/&gt;
  518. &lt;service name="dhcpv6-client"/&gt;
  519. &lt;/zone&gt;
  520. pi@piras:~ $
  521. Nous voyons que firewalld a créé des répertoires et un fichier dans le répertoire **zones** dont le contenu correspond à ce que nous avons demandé.
  522. pi@piras:~ $ sudo firewall-cmd --list-all
  523. public (active)
  524. target: default
  525. icmp-block-inversion: no
  526. interfaces: eth0
  527. sources:
  528. services: dhcpv6-client ssh
  529. ports:
  530. protocols:
  531. masquerade: no
  532. forward-ports:
  533. source-ports:
  534. icmp-blocks:
  535. rich rules:
  536. pi@piras:~ $
  537. </code></pre>
  538. <p>Test après redémarrage :</p>
  539. <p>Cette fois-ci, ça marche ! (Yes !)</p>
  540. <pre><code>pi@piras:~ $ sudo firewall-cmd --list-all
  541. public (active)
  542. target: default
  543. icmp-block-inversion: no
  544. interfaces: eth0
  545. sources:
  546. services: dhcpv6-client ssh
  547. ports:
  548. protocols:
  549. masquerade: no
  550. forward-ports:
  551. source-ports:
  552. icmp-blocks:
  553. rich rules:
  554. pi@piras:~ $
  555. </code></pre>
  556. <p>Nous verrons ensuite comment ajouter des règles suivant les services que nous voudrons déployer.</p>
  557. </div>
  558. </div>
  559. <footer>
  560. <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
  561. <a href="../Fail2ban/" class="btn btn-neutral float-right" title="Contrer les attaques de force brute">Next <span class="icon icon-circle-arrow-right"></span></a>
  562. <a href="../Knot/" class="btn btn-neutral" title="Installation de Knot-resolver"><span class="icon icon-circle-arrow-left"></span> Previous</a>
  563. </div>
  564. <hr/>
  565. <div role="contentinfo">
  566. <!-- Copyright etc -->
  567. </div>
  568. 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>.
  569. </footer>
  570. </div>
  571. </div>
  572. </section>
  573. </div>
  574. <div class="rst-versions" role="note" aria-label="versions">
  575. <span class="rst-current-version" data-toggle="rst-current-version">
  576. <span><a href="../Knot/" style="color: #fcfcfc;">&laquo; Previous</a></span>
  577. <span style="margin-left: 15px"><a href="../Fail2ban/" style="color: #fcfcfc">Next &raquo;</a></span>
  578. </span>
  579. </div>
  580. <script>var base_url = '../../..';</script>
  581. <script src="../../../js/theme.js" defer></script>
  582. <script src="../../../search/main.js" defer></script>
  583. <script defer>
  584. window.onload = function () {
  585. SphinxRtdTheme.Navigation.enable(true);
  586. };
  587. </script>
  588. </body>
  589. </html>