From e4c5b7e9ff494f499d38b8d5c4a08f3433301610 Mon Sep 17 00:00:00 2001 From: Gregory Colpart Date: Wed, 30 May 2018 01:59:49 +0200 Subject: [PATCH] =?UTF-8?q?compl=C3=A9ment=20d'informations=20pour=20la=20?= =?UTF-8?q?config=20de=20minfirewall?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoNetfilter.md | 52 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/HowtoNetfilter.md b/HowtoNetfilter.md index e63e5db7..4f58706d 100644 --- a/HowtoNetfilter.md +++ b/HowtoNetfilter.md @@ -83,19 +83,54 @@ Sauvegarder les règles courantes dans un fichier, reinitialiser les règles à ~~~ # [ -e /etc/default/minifirewall ] && cp /etc/default/minifirewall /etc/default/minifirewall.old -# cd /etc/default && wget "https://forge.evolix.org/projects/minifirewall/repository/revisions/master/raw/minifirewall.conf" -O minifirewall -# cd /etc/init.d && wget "https://forge.evolix.org/projects/minifirewall/repository/revisions/master/raw/minifirewall" -O minifirewall +# wget "https://forge.evolix.org/projects/minifirewall/repository/revisions/master/raw/minifirewall.conf" -O /etc/default/minifirewall +# wget "https://forge.evolix.org/projects/minifirewall/repository/revisions/master/raw/minifirewall" -O /etc/init.d/minifirewall # chmod 700 /etc/init.d/minifirewall # chmod 600 /etc/default/minifirewall +# insserv /etc/init.d/minifirewall ~~~ -On peut ensuite gérer les règles via le fichier `/etc/default/minifirewall` et on peut ainsi : +### Configuration minifirewall + +On peut ensuite gérer la configuration via le fichier `/etc/default/minifirewall`. + +* Il faut adapter la variable **INT** avec l'interface réseau principale +* Si l'IPv6 n'est pas actif, il faut préciser **IPv6=off** + +Pour les règles en entrée, tout est coupé et il faut définir : + +* les variables **SERVICESTCP1** et **SERVICESUDP1** pour les ports publics en IPv4 et IPv6 +* 2 catégories d'adresses IPv4 : les adresses de confiance **TRUSTEDIPS** et les adresses privilégiées **PRIVILEGIEDIPS** +* pour les ports semi-publics, on utilise **SERVICESTCP2** et **SERVICESUDP2** ouverts aux adresses **PRIVILEGIEDIPS** +* pour les ports privés, on utilise **SERVICESTCP3** et **SERVICESUDP3** ouverts aux adresses **TRUSTEDIPS** +* les variables **SERVICESTCP1p** et **SERVICESUDP1p** ne servent pas, sauf si on a créé une chaîne IPTables spécifique **NEEDRESTRICT** + +Pour les règles en sortie, tout est coupé et on peut autoriser facilement les ports les plus classiques : + +* `DNSSERVEURS='0.0.0.0/0'` pour autoriser toutes les requêtes DNS (en IPv4) +* `HTTPSITES='0.0.0.0/0'`pour autoriser toutes les requêtes en sortie vers le port 80 (en IPv4) +* etc. + +Pour tout le reste (règles en IPv6, sortie sur sur des ports spécifiques), cela s'ajoute via des règles spécifiques en fin de fichier : + +* Pour autoriser toutes les requêtes en sortie vers le port 80 en IPv6 : `ip6tables -A INPUT -i $INT -p tcp --sport 80 --match state --state ESTABLISHED,RELATED -j ACCEPT` +* Pour autoriser en sortie vers le port 636 d'un serveur extérieur : `iptables -A INPUT -p tcp --sport 636 --dport 1024:65535 -s ssl.evolix.net -m state --state ESTABLISHED,RELATED -j ACCEPT` + +> *Note* : pour autoriser un port en entrée, on n'utilisera pas de règle spécifique mais les variables dédiées en début de fichier + +> *Note* : pour autoriser un port en sortie, la règle à ajouter paraît contre-intuitive car les paquets en sortie sont déjà tous autorisés (sauf en UDP) : on autorise en fait les paquets de retour (`INPUT`) qui correspondent à des paquets déjà émis en sortie (`--state ESTABLISHED,RELATED`) + + +Pour redémarrer ou stopper le firewall : ~~~ # /etc/init.d/minifirewall restart # /etc/init.d/minifirewall stop ~~~ +Pour plus d'informations, voir + + ## FAQ ### Bannir une adresse IP @@ -128,3 +163,14 @@ Exemple si on a un serveur Munin centralisé, il a besoin de joindre les _munin- ~~~ # iptables -A INPUT -p tcp --sport 4949 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT ~~~ + +### Redirection du port 80 en sortie vers un proxy local + +~~~ +# iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner proxy -j ACCEPT +# iptables -t nat -A OUTPUT -p tcp --dport 80 -d 192.0.2.42 -j ACCEPT +# iptables -t nat -A OUTPUT -p tcp --dport 80 -d 127.0.0.1 -j ACCEPT +# iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128 +~~~ + +