# Gestion du pare-feu Edit: on fera de même avec la commande ip6tables pour gérer les connexions IPv6 Le pare-feu permet de gérer les connexion au serveur, c'est à dire le réseau sur la machine. Pour cela j'utilise la commande `iptables` pour gérer les connexions IPv4 sur mon infrastructure. On commencera par créer un fichier `firewall.sh` que l'on complètera au fur et à mesure. On peut commencer par regarder les règles existantes grâce à la commande `iptables -L`. On remarquera que la chaîne `policy ACCEPT` revient souvent, cela veut dire que par défaut toutes les connexions sont acceptées sans restriction. C'est un comportement que nous voudrons changer. On va commencer par ajouter dans notre fichier `firewall.sh` la commande `iptables -F` qui va effacer toutes les règles existentes pour partir sur des bases propres. Puis `iptables -X` pour effacer toutes les règles non prédéfinies. Ensuite on renseigne les politiques par défaut, nous souhaitons rejeter pour l'entrée, la sortie, et la transmission : ``` iptables -P OUTPUT DROP iptables -P INPUT DROP iptables -P FORWARD DROP ``` Si on veut continuer à autoriser les connexions déjà établies on peut ajouter : ``` iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT ``` On peut aussi vouloir autoriser toutes les connexions entre les programmes s'exécutant sur la même machine : ``` iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT ``` ensuite il faut autoriser les connexions pour chaque service en entrée : `iptables -A INPUT -p tcp --dport -j ACCEPT`, et en sortie : `iptables -A OUTPUT -p tcp --dport -j ACCEPT`. ## Exemple de configuration ``` #!/bin/sh ######## # IPv4 # ######## # Flush iptables -F iptables -X # Politics iptables -P OUTPUT DROP iptables -P INPUT DROP iptables -P FORWARD DROP # Established connexions iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT # Authorize loopback iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT # HTTP(S) iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT ######## # IPv6 # ######## # Flush ip6tables -F ip6tables -X # Politics ip6tables -P OUTPUT DROP ip6tables -P INPUT DROP ip6tables -P FORWARD DROP # Established connexions ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT ip6tables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT # Authorize loopback ip6tables -A INPUT -i lo -j ACCEPT ip6tables -A OUTPUT -o lo -j ACCEPT # SSH ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT # HTTP(S) ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT ip6tables -A OUTPUT -p tcp --dport 80 -j ACCEPT ip6tables -A OUTPUT -p tcp --dport 443 -j ACCEPT ```