{"id":50,"date":"2020-08-24T17:27:00","date_gmt":"2020-08-24T16:27:00","guid":{"rendered":"https:\/\/ligfy.net\/wordpress\/?p=50"},"modified":"2025-09-02T13:06:03","modified_gmt":"2025-09-02T12:06:03","slug":"securiser-debian-9-avec-iptables","status":"publish","type":"post","link":"https:\/\/ligfy.net\/wordpress\/securiser-debian-9-avec-iptables\/","title":{"rendered":"S\u00e9curiser Debian 9 avec Iptables"},"content":{"rendered":"\n<ul><li><a href=\"https:\/\/ligfy.net\/wordpress\/securiser-debian-9-avec-iptables#G\u00e9n\u00e9ralit\u00e9s\">G\u00e9n\u00e9ralit\u00e9s<\/a><\/li><li><a href=\"https:\/\/ligfy.net\/wordpress\/securiser-debian-9-avec-iptables#Installation\">Installation<\/a><\/li><li><a href=\"https:\/\/ligfy.net\/wordpress\/securiser-debian-9-avec-iptables#D\u00e9claration-des-r\u00e8gles\">D\u00e9claration des r\u00e8gles<\/a><\/li><li><a href=\"https:\/\/ligfy.net\/wordpress\/securiser-debian-9-avec-iptables#Allez-un-peu-plus-loin\">Allez un peu plus loin<\/a><\/li><li><a href=\"https:\/\/ligfy.net\/wordpress\/securiser-debian-9-avec-iptables#Exemple-de-script\">Exemple de script<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"G\u00e9n\u00e9ralit\u00e9s\">G\u00e9n\u00e9ralit\u00e9s<\/h2>\n\n\n\n<p><strong>Iptables&nbsp;<\/strong>est un utilitaire avec une interface en ligne de commande permettant de configurer&nbsp;le <strong>firewall <\/strong>(pare-feu)<strong> Netfilter<\/strong> int\u00e9gr\u00e9 dans le noyau Linux.<\/p>\n\n\n\n<p>Il permet de <strong>filtrer, rediriger et contr\u00f4ler<\/strong> le trafic r\u00e9seau (entrant, sortant, local).<\/p>\n\n\n\n<h2 id=\"Installation\">Installation<\/h2>\n\n\n\n<p>Il suffit d&rsquo;installer le paquet.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><code>apt install&nbsp;iptables<\/code><\/p><\/blockquote>\n\n\n\n<h2 id=\"D\u00e9claration-des-r\u00e8gles\">D\u00e9claration des r\u00e8gles<\/h2>\n\n\n\n<h3 id=\"Fonctionnement\">Fonctionnement<\/h3>\n\n\n\n<p>Le trafic est trait\u00e9 selon des <strong>tables<\/strong> (filter, nat, mangle, raw).<br>Chaque table contient des <strong>cha\u00eenes<\/strong> (chains).<br>Une cha\u00eene est compos\u00e9e de <strong>r\u00e8gles<\/strong>, qui sont \u00e9valu\u00e9es s\u00e9quentiellement.<br>Chaque r\u00e8gle applique une <strong>action (target)<\/strong> : ACCEPT, DROP, REJECT, LOG, DNAT, SNAT, etc.<\/p>\n\n\n\n<p>Exemple de sch\u00e9ma :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Paquet r\u00e9seau \u2192 Cha\u00eene \u2192 Liste de r\u00e8gles \u2192 Action finale<\/pre>\n\n\n\n<h3>Tables principales<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Table<\/th><th>Usage principal<\/th><th>Cha\u00eenes principales<\/th><\/tr><\/thead><tbody><tr><td><strong>filter<\/strong><\/td><td>Filtrage classique des paquets<\/td><td>INPUT, OUTPUT, FORWARD<\/td><\/tr><tr><td><strong>nat<\/strong><\/td><td>Traduction d\u2019adresses<\/td><td>PREROUTING, POSTROUTING, OUTPUT, CHAIN<\/td><\/tr><tr><td><strong>mangle<\/strong><\/td><td>Modification des paquets<\/td><td>PREROUTING, OUTPUT, FORWARD, INPUT<\/td><\/tr><tr><td><strong>raw<\/strong><\/td><td>Configuration avanc\u00e9e<\/td><td>PREROUTING, OUTPUT<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Notes :<\/p>\n\n\n\n<p><strong>filter<\/strong> : utilis\u00e9e pour accepter ou bloquer les paquets.<br><strong>nat<\/strong> : utilis\u00e9e surtout pour les serveurs qui font du routage\/NAT.<br><strong>mangle<\/strong> : permet de marquer ou modifier certains champs des paquets avant routage.<br><strong>raw<\/strong> : permet de configurer certains paquets pour qu\u2019ils ne passent pas par le suivi de connexion<\/p>\n\n\n\n<p><strong>INPUT<\/strong> \u2192 paquets <strong>entrants<\/strong> destin\u00e9s au serveur local.<br><strong>OUTPUT<\/strong> \u2192 paquets <strong>sortants<\/strong> g\u00e9n\u00e9r\u00e9s par le serveur local.<br><strong>FORWARD<\/strong> \u2192 paquets qui <strong>transitent<\/strong> par le serveur (routeur\/NAT).<br><strong>PREROUTING<\/strong> \u2192 r\u00e8gles appliqu\u00e9es <strong>avant le routage<\/strong>, utile pour NAT et marquage.<br><strong>POSTROUTING<\/strong> \u2192 r\u00e8gles appliqu\u00e9es <strong>apr\u00e8s le routage<\/strong>, souvent pour SNAT\/MASQUERADE.<\/p>\n\n\n\n<h3>Actions principales<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action \/ Target<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><strong>ACCEPT<\/strong><\/td><td>Accepter le paquet et le laisser passer.<\/td><\/tr><tr><td><strong>DROP<\/strong><\/td><td>Bloquer le paquet silencieusement (pas de r\u00e9ponse).<\/td><\/tr><tr><td><strong>REJECT<\/strong><\/td><td>Bloquer le paquet et envoyer un message d\u2019erreur au client.<\/td><\/tr><tr><td><strong>LOG<\/strong><\/td><td>Journaliser le paquet dans syslog (ne le bloque pas).<\/td><\/tr><tr><td><strong>RETURN<\/strong><\/td><td>Arr\u00eater de traiter la cha\u00eene courante et revenir \u00e0 la cha\u00eene pr\u00e9c\u00e9dente.<\/td><\/tr><tr><td><strong>SNAT<\/strong><\/td><td>(dans <strong>nat<\/strong>) Modifier l\u2019adresse source (Source NAT).<\/td><\/tr><tr><td><strong>DNAT<\/strong><\/td><td>(dans <strong>nat<\/strong>) Modifier l\u2019adresse de destination (Destination NAT).<\/td><\/tr><tr><td><strong>MASQUERADE<\/strong><\/td><td>(dans <strong>nat<\/strong>) Variante de SNAT pour IP dynamique (ex. Internet partag\u00e9).<\/td><\/tr><tr><td><strong>MARK<\/strong><\/td><td>(dans <strong>mangle<\/strong>) Marquer le paquet pour traitement ult\u00e9rieur (QoS, routage).<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3>Exemple simple de pare-feu<\/h3>\n\n\n\n<p>Pour plus de souplesse, nous allons \u00e9crire nos r\u00e8gles sous forme de <strong>script&nbsp;bash<\/strong>.<\/p>\n\n\n\n<p>Cr\u00e9ons le script.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><code>nano \/etc\/init.d\/firewall<\/code><\/p><\/blockquote>\n\n\n\n<p>Et on y \u00e9crit.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>#!\/bin\/bash<\/code><\/code><\/pre>\n\n\n\n<p>On efface toutes les r\u00e8gles pr\u00e9c\u00e9dentes pour partir sur de bonnes bases.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code># Vider les r\u00e8gles existantes : Table filter (r\u00e8gles classiques)<br>iptables -t filter -F<br>iptables -t filter -X<\/code><\/code><\/pre>\n\n\n\n<p>On bloque par d\u00e9faut tout le trafic.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code># Politique par d\u00e9faut : tout bloquer (entrant, sortant, transit\u00e9)<br>iptables -t filter -P INPUT DROP<br>iptables -t filter -P OUTPUT DROP<br>iptables -t filter -P FORWARD DROP<\/code><\/code><\/pre>\n\n\n\n<p>On ne ferme pas les connexions d\u00e9j\u00e0 \u00e9tablies ou li\u00e9es.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code># Autoriser les connexions \u00e9tablies ou li\u00e9es (entrant, sortant)<br>iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT <br>iptables -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT <\/code><\/code><\/pre>\n\n\n\n<p>On autorise les connexions locales&nbsp;(on ne va pas se bloquer nous-m\u00eames !).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code># Autoriser les connexions locales (loopback)<br>iptables -t filter -A INPUT -i lo -j ACCEPT<br>iptables -t filter -A OUTPUT -o lo -j ACCEPT<\/code><\/code><\/pre>\n\n\n\n<p>Note :&nbsp;<strong>lo<\/strong>&nbsp;signifie&nbsp;<strong>localhost&nbsp;<\/strong>(le serveur lui-m\u00eame).<\/p>\n\n\n\n<p>Tout est bloqu\u00e9, il ne nous reste plus qu\u2019\u00e0 ouvrir les ports utilis\u00e9s.<\/p>\n\n\n\n<h3>Ouvrir des ports<\/h3>\n\n\n\n<p>\u00c0 partir de maintenant, observons plus en d\u00e9tail les param\u00e8tres de <strong>iptables<\/strong>.<\/p>\n\n\n\n<p><strong>-t<\/strong> : sert \u00e0 s\u00e9lectionner la table (par d\u00e9faut : filter)<br><strong>-A<\/strong> : sert \u00e0 indiquer le sens du trafic (INPUT (entrant) ou OUTPUT (sortant))<br><strong>-p<\/strong> : sert \u00e0 sp\u00e9cifier le protocole (TCP ou UDP en principe)<br><strong>&#8211;sport<\/strong> et <strong>&#8211;dport<\/strong> : servent \u00e0 sp\u00e9cifier les ports source ou destination (nous utiliserons principalement &#8211;dport)<br><strong>-j<\/strong> : sert \u00e0 indiquer l\u2019action \u00e0 appliquer (nous nous servirons de ACCEPT et de DROP pour respectivement accepter et refuser le paquet).<\/p>\n\n\n\n<p>Plus nous serons pr\u00e9cis, plus nous serons s\u00e9curis\u00e9s. Renseigner ces quelques r\u00e8gles est donc le minimum.<\/p>\n\n\n\n<p>Ainsi, une r\u00e8gle simple aura la forme suivante.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">iptables <strong>-t<\/strong> filter <strong>-A<\/strong> INPUT\/OUTPUT <strong>-p<\/strong> protocole <strong>--dport<\/strong> port_a_ouvrir <strong>-j<\/strong> ACCEPT<\/pre>\n\n\n\n<p>Notez que si vous voulez un \u00e9change, il faut toujours ouvrir le port dans les deux sens (INPUT et OUTPUT), logique.<\/p>\n\n\n\n<p>Exemple si l\u2019on a un serveur web (port 80).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT<br>iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT<\/code><\/code><\/pre>\n\n\n\n<p>ou (sans -t filter)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT<br>iptables -A INPUT -p tcp --dport 80 -j ACCEPT<\/code><\/code><\/pre>\n\n\n\n<p>Les deux commandes fonctionnent <strong>exactement de la m\u00eame mani\u00e8re<\/strong>, car par d\u00e9faut, si tu ne pr\u00e9cises pas de table, <strong>iptables <\/strong>utilise la table <strong>filter<\/strong>, qui est la table principale.<\/p>\n\n\n\n<p>Il ne vous reste qu\u2019\u00e0 sp\u00e9cifier toutes les r\u00e8gles n\u00e9cessaires.<\/p>\n\n\n\n<p>Voici un petit tableau pour vous aider (il s\u2019agit de donn\u00e9es par d\u00e9faut).<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>service<\/strong><\/td><td><strong>port d\u2019\u00e9coute<\/strong><\/td><td><strong>protocole<\/strong><\/td><\/tr><tr><td>SSH<\/td><td>22<\/td><td>tcp<\/td><\/tr><tr><td>HTTP<\/td><td>80<\/td><td>tcp<\/td><\/tr><tr><td>FTP<\/td><td>20 et 21<\/td><td>tcp<\/td><\/tr><tr><td>SMTP<\/td><td>25<\/td><td>tcp<\/td><\/tr><tr><td>POP3<\/td><td>110<\/td><td>tcp<\/td><\/tr><tr><td>IMAP<\/td><td>143<\/td><td>tcp<\/td><\/tr><tr><td>DNS<\/td><td>53<\/td><td>tcp et udp<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Cas particulier du ping<\/p>\n\n\n\n<p>Le ping est bas\u00e9 sur un protocole particulier (ICMP) qui n\u2019a pas de port pr\u00e9d\u00e9fini. Mais il faut absolument autoriser le ping car c\u2019est la m\u00e9thode la plus couramment utilis\u00e9e pour savoir si votre serveur est en vie. Voici donc les r\u00e8gles.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>iptables -A INPUT -p icmp -j ACCEPT<br>iptables -A OUTPUT -p icmp -j ACCEPT<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"Allez-un-peu-plus-loin\">Allez un peu plus loin<\/h2>\n\n\n\n<p>Outre que c\u2019est l\u2019outil de base de tout syst\u00e8me de s\u00e9curit\u00e9, <strong>Iptables <\/strong>permet des manipulations plus pouss\u00e9es que filtrer des ports. Je vais vous montrer quelques exemples.<\/p>\n\n\n\n<h3>Flood ou d\u00e9ni de service<\/h3>\n\n\n\n<p>Ce genre d\u2019attaque vise \u00e0 surcharger la machine de requ\u00eate. Il est possible de s\u2019en pr\u00e9munir directement au niveau du firewall.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>iptables -A INPUT -p tcp --syn -m limit --limit 15\/second -j ACCEPT<\/code><\/code><\/pre>\n\n\n\n<p>Le flags <strong>TCP &#8211;syn<\/strong> engendre des demandes de connexions, et le but de cette r\u00e8gle est donc de les limiter \u00e0 10 par seconde (champs limit).<\/p>\n\n\n\n<p>Il est cependant d\u00e9conseill\u00e9 de descendre en dessous de certaines limites (sous peine de bloquer des utilisateurs l\u00e9gitimes).<br>Il est aussi d\u00e9conseill\u00e9 de monter au dessus de certaines limites (sous peine de r\u00e9duire la protection contre les SYN flood).<\/p>\n\n\n\n<p>On peut faire de m\u00eame avec les protocoles UDP et ICMP.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>iptables -A INPUT -p udp -m limit --limit 30\/second -j ACCEPT<br>iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5\/second -j ACCEPT<\/code><\/code><\/pre>\n\n\n\n<p>Notez cependant que ce type d\u2019attaque permet de faire tomber le serveur, mais pas d\u2019en prendre l\u2019acc\u00e8s.<\/p>\n\n\n\n<h3>Scan de ports<\/h3>\n\n\n\n<p>On peut aussi limiter un tant soit peu le scan de ports (qui consiste \u00e0 tester tous vos ports afin de d\u00e9tecter ceux qui sont ouverts). Pour cela, une r\u00e8gle de ce genre irait.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 5\/s -j ACCEPT<\/code><\/code><\/pre>\n\n\n\n<p>C\u2019est un peu le m\u00eame principe que ci-dessus. Sachant qu\u2019une connexion TCP en bon et due forme requiert trois paquets avec trois flags diff\u00e9rents, on voit tout de suite la finesse de cette r\u00e8gle qui peut travailler paquet par paquet.<\/p>\n\n\n\n<p>Notez que cette r\u00e8gle basique n\u2019est pas tr\u00e8s efficace, c\u2019est une protection de base.<\/p>\n\n\n\n<h3>Bannir une IP<\/h3>\n\n\n\n<p>Si vous rep\u00e9rez dans les logs ou autre une adresse IP suspecte, vous pouvez la bannir ais\u00e9ment au niveau du firewall via la commande :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>iptables -A INPUT -s adresse_ip -j DROP<\/code><\/code><\/pre>\n\n\n\n<p>Notez cependant qu\u2019il n\u2019est pas conseill\u00e9 de bannir les IP \u00e0 tour de bras.<\/p>\n\n\n\n<h2 id=\"Exemple-de-script\">Exemple de script<\/h2>\n\n\n\n<p>Ci-dessous, je vous montre un exemple de script basique autorisant le minimum pour un serveur HTTP, FTP, SSH, MAIL et r\u00e9solution de DNS. Je vous encourage \u00e0 lire des docs et des tutos plus complets si vous voulez aller plus loin dans le param\u00e9trage de votre&nbsp;firewall.<\/p>\n\n\n\n<p>Cr\u00e9er un nouveau fichier nomm\u00e9 <strong>\/etc\/init.d\/firewall<\/strong>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><code>nano \/etc\/init.d\/firewall<\/code><\/p><\/blockquote>\n\n\n\n<p>Et ajouter le script ci-dessous dedans.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\n\n### BEGIN INIT INFO\n# Provides: firewall\n# Required-Start: $network $syslog\n# Required-Stop: $network $syslog\n# Default-Start: 2 3 4 5\n# Default-Stop: 0 1 6\n# Short-Description: firewall iptables\n# Description: Script firewall de configuration des regles iptables\n### END INIT INFO\n\nRETVAL=0\n\ncase \"$1\" in\n\n  'start')\n\n    echo -e \"\\nChargement des regles du firewall\u2026\\n\"\n\n    # Vider toutes les r\u00e8gles actuelles de la table filter\n    iptables -t filter -F\n    iptables -t filter -X\n    echo \"Vidage des regles de la table filter : &#91;OK]\"\n\n    # Vider toutes les r\u00e8gles actuelles de la table nat\n    iptables -t nat -F\n    iptables -t nat -X\n    echo \"Vidage des regles de la table nat : &#91;OK]\"\n\n    # Vider toutes les r\u00e8gles actuelles de la table mangle\n    iptables -t mangle -F\n    iptables -t mangle -X\n    echo \"Vidage des regles de la table mangle : &#91;OK]\"\n\n    # Vider toutes les r\u00e8gles actuelles de la table raw\n    iptables -t raw -F\n    iptables -t raw -X\n    echo \"Vidage des regles de la table raw : &#91;OK]\"\n\n    # Interdire toutes les connexions entrantes et transitants\n    iptables -P INPUT DROP\n    iptables -P FORWARD DROP\n    echo \"Interdire toutes les connexions entrantes et transitants : &#91;OK]\"\n\n    # Interdire toutes les connexions sortantes\n    iptables -P OUTPUT DROP\n    echo \"Interdire toutes les connexions sortantes : &#91;OK]\"\n\n    # Chargement du module ip_conntrack_ftp pour g\u00e9rer correctement les connexions FTP\n    modprobe ip_conntrack_ftp\n    echo \"Chargement du module : &#91;OK]\"\n\n    # Autoriser les connexions \u00e9tablies ou li\u00e9es\n    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT\n    iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT\n    echo \"Autoriser les connexions etablies ou liees : &#91;OK]\"\n\n    # Autoriser les connexions localhost (loopback)\n    iptables -A INPUT -i lo -j ACCEPT\n    iptables -A OUTPUT -i lo -j ACCEPT\n    echo \"Autoriser loopback : &#91;OK]\"\n\n    # Autoriser ICMP (Ping)\n    iptables -A INPUT -p icmp -j ACCEPT\n    iptables -A OUTPUT -p icmp -j ACCEPT\n    echo \"Autoriser ping : &#91;OK]\"\n\n    # IP a blacklister\n    # iptables -A INPUT -s ADRESSE_IP -j DROP\n    echo \"Mise a jour des IP blacklistees : &#91;OK]\"\n\n    # Limiter le Syn-Flood (TCP, UDP et ICMP)\n    iptables -A INPUT -p tcp --syn -m limit --limit 15\/second -j ACCEPT\n    iptables -A INPUT -p udp -m limit --limit 30\/second -j ACCEPT\n    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5\/second -j ACCEPT\n    echo \"Limiter le Syn-Flood : &#91;OK]\"\n\n    # Limiter le scan de ports\n    iptables -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 5\/s -j ACCEPT\n    echo \"Limiter le scan de ports : &#91;OK]\"\n\n    # Bloquer le Spoofing\n    iptables -N SPOOFED\n    iptables -A SPOOFED -s 127.0.0.0\/8 -j DROP\n    iptables -A SPOOFED -s 169.254.0.0\/12 -j DROP\n    iptables -A SPOOFED -s 172.16.0.0\/12 -j DROP\n    iptables -A SPOOFED -s 192.168.0.0\/16 -j DROP\n    iptables -A SPOOFED -s 10.0.0.0\/8 -j DROP\n    iptables -A INPUT -j SPOOFED\n    iptables -A FORWARD -j SPOOFED\n    echo \"Bloquer le Spoofing : &#91;OK]\"\n\n    # Forcer la v\u00e9rification des paquets SYN\n    iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP\n    echo \"Bloquer les paquets non SYN : &#91;OK]\"\n\n    # Forcer la v\u00e9rification des paquets fragment\u00e9s\n    iptables -A INPUT -f -j DROP\n    echo \"Bloquer les paquets fragmentes : &#91;OK]\"\n\n    # Supprimer les paquets mal form\u00e9s XMAS\n    iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP\n    echo \"Bloquer les paquets XMAS : &#91;OK]\"\n\n    # Supprimer les paquets mal form\u00e9s NULL\n    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP\n    echo \"Bloquer les paquets NULL : &#91;OK]\"\n\n    # Supprimer les paquets non valides\n    iptables -A INPUT -m state --state INVALID -j DROP\n    echo \"Bloquer les paquets non valides : &#91;OK]\"\n\n    # Autoriser SSH\n    iptables -A INPUT -p tcp --dport 22 -j ACCEPT\n    iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT\n    echo \"Autoriser SSH : &#91;OK]\"\n\n    # Autoriser HTTP\n    iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT\n    iptables -A INPUT -p tcp --dport 80 -j ACCEPT\n    echo \"Autoriser HTTP : &#91;OK]\"\n\n    # Autoriser HTTPS\n    iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT\n    iptables -A INPUT -p tcp --dport 443 -j ACCEPT\n    echo \"Autoriser HTTPS : &#91;OK]\"\n\n    # Autoriser FTP\n    iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp\n    iptables -A OUTPUT -p tcp --dport 20:21 -j ACCEPT\n    iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT\n    echo \"Autoriser FTP : &#91;OK]\"\n\n    # Autoriser DNS\n    iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT\n    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT\n    echo \"Autoriser DNS : &#91;OK]\"\n\n    # Autoriser NTP\n    iptables -A OUTPUT -p udp --dport 123 -j ACCEPT\n    echo \"Autoriser NTP : &#91;OK]\"\n\n    # Autoriser SMTP\n    iptables -A INPUT -p tcp --dport 25 -j ACCEPT\n    iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT\n    echo \"Autoriser SMTP : &#91;OK]\"\n\n    # Autoriser POP3\n    iptables -A INPUT -p tcp --dport 110 -j ACCEPT\n    iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT\n    echo \"Autoriser POP3 : &#91;OK]\"\n\n    # Autoriser IMAP\n    iptables -A INPUT -p tcp --dport 143 -j ACCEPT\n    iptables -A OUTPUT -p tcp --dport 143 -j ACCEPT\n    echo \"Autoriser IMAP : &#91;OK]\"\n\n    echo -e \"\\nConfiguration iptables terminee\\n\"\n\n    RETVAL=$?\n    ;;\n\n  'stop')\n\n    echo -e \"\\nRegles par defaut du firewall..\\n\"\n\n    # Vider toutes les r\u00e8gles\n    iptables -t filter -F\n    iptables -t filter -X\n    echo \"Vidage des regles de la table filter : &#91;OK]\"\n\n    iptables -t nat -F\n    iptables -t nat -X\n    echo \"Vidage des regles de la table nat : &#91;OK]\"\n\n    iptables -t mangle -F\n    iptables -t mangle -X\n    echo \"Vidage des regles de la table mangle : &#91;OK]\"\n\n    iptables -t raw -F\n    iptables -t raw -X\n    echo \"Vidage des regles de la table raw : &#91;OK]\"\n\n    # Politique par d\u00e9faut ACCEPT\n    iptables -P INPUT ACCEPT\n    iptables -P FORWARD ACCEPT\n    iptables -P OUTPUT ACCEPT\n    echo \"Autoriser toutes les connexions : &#91;OK]\"\n\n    echo -e \"\\nConfiguration iptables terminee\\n\"\n\n    RETVAL=$?\n    ;;\n\n  'status')\n\n    echo \"\"\n    iptables -L -n --line-numbers\n    echo \"\"\n\n    RETVAL=$?\n    ;;\n\n  *)\n\n    echo -e \"\\nUsage: $0 { start | stop | status }\\n\"\n\n    RETVAL=1\n    ;;\n\nesac\nexit $RETVAL<\/code><\/pre>\n\n\n\n<p>Rendez le script ex\u00e9cutable.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><code>chmod +x \/etc\/init.d\/firewall<\/code><\/p><\/blockquote>\n\n\n\n<p>Puis executez le avec la commande suivante.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><code>\/etc\/init.d\/firewall start<\/code><\/p><\/blockquote>\n\n\n\n<h3>Cr\u00e9er un nouveau service<\/h3>\n\n\n\n<p>Pour finir nous allons cr\u00e9er un service pour executer le script&nbsp;<strong>firewall<\/strong>&nbsp;au d\u00e9marrage du syst\u00e8me.<\/p>\n\n\n\n<p>Cr\u00e9er un nouveau fichier nomm\u00e9&nbsp;<strong>\/etc\/systemd\/system\/firewall.service<\/strong>.&nbsp;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><code>nano \/etc\/systemd\/system\/firewall.service<\/code><\/p><\/blockquote>\n\n\n\n<p>Et ajouter le script ci-dessous&nbsp;dedans.<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Firewall\nRequires=network-online.target\nAfter=network-online.target\n \n&#91;Service]\nUser=root\nType=oneshot\nRemainAfterExit=yes\nExecStart=\/etc\/init.d\/firewall.sh start\nExecStop=\/etc\/init.d\/firewall.sh stop\n \n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<\/div><\/div>\n\n\n\n<p>Notifier&nbsp;<strong>systemd&nbsp;<\/strong>qu&rsquo;un nouveau fichier&nbsp;<strong>firewall.service<\/strong>&nbsp;existe en ex\u00e9cutant la commande suivante.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><code>systemctl daemon-reload<\/code><\/p><\/blockquote>\n\n\n\n<p>Pour que le service soit lanc\u00e9 au d\u00e9marrage du syst\u00e8me.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><code>systemctl enable firewall.service<\/code><\/p><\/blockquote>\n\n\n\n<p>Et pour d\u00e9marrer le service.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><code>systemctl start firewall.service<\/code><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Iptables est un utilitaire avec une interface en ligne de commande permettant de configurer le firewall (pare-feu) Netfilter int\u00e9gr\u00e9 dans le noyau Linux.<\/p>\n<p>Il permet de filtrer, rediriger et contr\u00f4ler le trafic r\u00e9seau (entrant, sortant, local).<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[10,8],"_links":{"self":[{"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/posts\/50"}],"collection":[{"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/comments?post=50"}],"version-history":[{"count":35,"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/posts\/50\/revisions"}],"predecessor-version":[{"id":205,"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/posts\/50\/revisions\/205"}],"wp:attachment":[{"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/media?parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/categories?post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ligfy.net\/wordpress\/wp-json\/wp\/v2\/tags?post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}