Bonjour,
J’ai étudié (en freelance) récemment iptables/ip6tables et me suis mis à écrire un script pour me faire un parefeu pour PC de maison derrière une box. Pas de réseau privé donc, je me sers des fonctionnalités de la box pour ça, le PC est relié via câble et si besoin d’autres appareils via wifi. Mes besoins sont de pouvoir surfer (et je ne me borne à essayer de faire fonctionner que ça pour l’instant :p). Le script ne démarre pas encore tout seul, ce sera pour plus tard quand le schmilblick fonctionnera, là on est en version pré-alpha lamentablement expérimentale et tout le tralala
.
J’ai suivi pas mal de doc sur le net, ici aussi (exemple type de parefeu de Ricardo avec plein d’autres participants) et j’ai écrit un truc que je qualifierais de parano et qui selon mes maigres et fraîches connaissances devrait fonctionner pour surfer, eh ben comme dirait-on: “çaaaa maaaarche paaaaaaaass…”
Pas de surf, on dirait que rien ne passe. Iceweasel cherche désespérément dans son cache pour charger une page qui n’y figure pas et puis c’est tout, message d’erreur type “pas de connexion” ou encore “le serveur met trop de temps à répondre”.
Je poste donc à la suite mon script, si vous pouviez m’aider à comprendre ce qui cloche ce serait super sympa, merci beaucoup d’avance 
[code]#!/bin/sh
BEGIN INIT INFO
Provides: MFFW
Required-Start: $remote_fs
Should-Start:
Required-Stop: $remote_fs
Should-Stop:
X-Start-Before: $network
X-Stop-After: $network
Default-Start: 2 3 4 5
Default-Stop: 0 1 6
Short-description: Configure le parefeu.
Description: Un script de pare-feu sécuritaire iptables/netfilter pour PC personnel.
END INIT INFO
Fichier: mffw
Auteur: DarkGagan (voir profil sur debian-fr.org pour contact)
License: GNU GPL (version 3 ou supérieure)
Spécifications (sans ordre particulier):
- 3 modes d’utilisation: start, stop, status
- pas de log (on n’est pas sur un serveur)
- pas de NAT (on n’est pas sur un routeur)
- pas de forward (idem)
- pas d’IPv6 (possibilités de filtrage plus limitées que sur IPv4)
- protection contre certaines attaques (SYNflood, Ping of Death, DoS, Smurf et d’autres…)
- sécurisation générale (configuration du noyau en plus des règles iptables)
Note: travail continuellement en cours, tout commentaire ou suggestion sont les bienvenus!
Ce script s’appuie sur bon nombre de documentation trouvées ça et là sur le net, dont en voici une liste non-exhaustive et sans ordre particulier:
- fw_laptop de Uwe Hermann (http://www.hermann-uwe.de/files/fw_laptop)
- la manpage d’iptables (man iptables)
- la documentation sur netfilter (http://netfilter.org/documentation/HOWTO/fr/packet-filtering-HOWTO-7.html)
- Iptables Tutorial 1.2.2 (http://www.inetdoc.net/guides/iptables-tutorial/)
- Formation Debian Chapitre 38. Pare-feu et partage de connexion Internet (http://formation-debian.via.ecp.fr/firewall.html)
- plein de documents revus et corrigés par Pascal Hambourg en général
- un projet de pare-feu personnel sur debian-fr.org (http://paste.isalo.org/62)
- le manuel traitant de la sécurité sous Debian (https://www.debian.org/doc/manuals/securing-debian-howto/)
- des exemples de script (http://www.plouf.fr.eu.org/bazar/netfilter/firewall/)
- (…)
- tous ceux dont j’ai scruté des bouts de code plus ou moins valables pour ce que je veux créer (ou non…) et dont j’ai oublié les noms, désolé…
rajouter " -x" à #!/bin/sh pour aider au débuggage du script (test ligne par ligne)
DÉBUT AIDE-MÉMOIRE------------------------------------------
iptables: écrire les noms des tables en minuscule uniquement
FIN AIDE-MÉMOIRE--------------------------------------------
mffwversion=date --reference="/etc/init.d/mffw" +%y.%m.%d-%H%M
echo -n "MFFW version"
printf “%-1s$mffwversion par DarkGagan.\n”
#début du traitement des arguments donnés en option du lancement en ligne de commande
echo ""
case “$1” in
#début argument ‘–start’
–start)
echo "±----------------------------------------------------------------------------+"
echo "| Démarrage du firewall |"
echo “±----------------------------------------------------------------------------+”
#ÉTAPE 01: on nettoie le pare-feu
echo -n “Suppression du paramétrage personnalisé…”
##iptables
###on efface toutes les règles
/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t security -F
###on efface toutes les chaînes personnalisées de toutes les tables
/sbin/iptables -t filter -X
/sbin/iptables -t nat -X
/sbin/iptables -t mangle -X
/sbin/iptables -t raw -X
/sbin/iptables -t security -X
###on remet les compteurs à zéro
/sbin/iptables -t filter -Z
/sbin/iptables -t nat -Z
/sbin/iptables -t mangle -Z
/sbin/iptables -t raw -Z
/sbin/iptables -t security -Z
##ip6tables
###on efface toutes les règles
/sbin/ip6tables -t filter -F
#/sbin/ip6tables -t nat -F <–NON IMPLÉMENTÉ DANS IP6TABLES
/sbin/ip6tables -t mangle -F
/sbin/ip6tables -t raw -F
/sbin/ip6tables -t security -F
###on efface toutes les chaînes personnalisées de toutes les tables
/sbin/ip6tables -t filter -X
#/sbin/ip6tables -t nat -X <–NON IMPLÉMENTÉ DANS IP6TABLES
/sbin/ip6tables -t mangle -X
/sbin/ip6tables -t raw -X
/sbin/ip6tables -t security -X
###on remet les compteurs à zéro
/sbin/ip6tables -t filter -Z
#/sbin/ip6tables -t nat -Z <–NON IMPLÉMENTÉ DANS IP6TABLES
/sbin/ip6tables -t mangle -Z
/sbin/ip6tables -t raw -Z
/sbin/ip6tables -t security -Z
printf “%-2s[OK]\n”
#ÉTAPE 02: on paramètre la politique par défaut
echo -n “Application de la politique par défaut…”
##iptables
#/sbin/iptables -t filter -P PREROUTING DROP <-- INEXISTANT
/sbin/iptables -t filter -P INPUT DROP
/sbin/iptables -t filter -P FORWARD DROP
/sbin/iptables -t filter -P OUTPUT DROP
#/sbin/iptables -t filter -P POSTROUTING DROP <-- INEXISTANT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P INPUT ACCEPT
#/sbin/iptables -t nat -P FORWARD ACCEPT <-- INEXISTANT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t mangle -P FORWARD DROP
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
#/sbin/iptables -t raw -P INPUT DROP <-- INEXISTANT
#/sbin/iptables -t raw -P FORWARD DROP <-- INEXISTANT
/sbin/iptables -t raw -P OUTPUT ACCEPT
#/sbin/iptables -t raw -P POSTROUTING DROP <-- INEXISTANT
#/sbin/iptables -t security -P PREROUTING DROP <-- INEXISTANT
/sbin/iptables -t security -P INPUT ACCEPT
/sbin/iptables -t security -P FORWARD DROP
/sbin/iptables -t security -P OUTPUT ACCEPT
#/sbin/iptables -t security -P POSTROUTING DROP <-- INEXISTANT
##ip6tables
#/sbin/ip6tables -t filter -P PREROUTING DROP <-- INEXISTANT
/sbin/ip6tables -t filter -P INPUT DROP
/sbin/ip6tables -t filter -P FORWARD DROP
/sbin/ip6tables -t filter -P OUTPUT DROP
#/sbin/ip6tables -t filter -P POSTROUTING DROP <-- INEXISTANT
#/sbin/ip6tables -t nat -P PREROUTING DROP <–NON IMPLÉMENTÉ DANS IP6TABLES
#/sbin/ip6tables -t nat -P INPUT DROP <–NON IMPLÉMENTÉ DANS IP6TABLES
#/sbin/ip6tables -t nat -P FORWARD DROP <–NON IMPLÉMENTÉ DANS IP6TABLES
#/sbin/ip6tables -t nat -P OUTPUT DROP <–NON IMPLÉMENTÉ DANS IP6TABLES
#/sbin/ip6tables -t nat -P POSTROUTING DROP <–NON IMPLÉMENTÉ DANS IP6TABLES
/sbin/ip6tables -t mangle -P PREROUTING DROP
/sbin/ip6tables -t mangle -P INPUT DROP
/sbin/ip6tables -t mangle -P FORWARD DROP
/sbin/ip6tables -t mangle -P OUTPUT DROP
/sbin/ip6tables -t mangle -P POSTROUTING DROP
/sbin/ip6tables -t raw -P PREROUTING DROP
#/sbin/ip6tables -t raw -P INPUT DROP <-- INEXISTANT
#/sbin/ip6tables -t raw -P FORWARD DROP <-- INEXISTANT
/sbin/ip6tables -t raw -P OUTPUT DROP
#/sbin/ip6tables -t raw -P POSTROUTING DROP <-- INEXISTANT
#/sbin/ip6tables -t security -P PREROUTING DROP <-- INEXISTANT
/sbin/ip6tables -t security -P INPUT DROP
/sbin/ip6tables -t security -P FORWARD DROP
/sbin/ip6tables -t security -P OUTPUT DROP
#/sbin/ip6tables -t security -P POSTROUTING DROP <-- INEXISTANT
printf “%-2s[OK]\n”
#ÉTAPE 03: on gère les interfaces réseau
echo -n “Application des règles de gestion des interfaces réseau…”
##on accepte loopback
/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -o lo -j ACCEPT
##on ignore toute autre interface réseau que le réseau câble
/sbin/iptables -t filter -A INPUT ! -i eth0 -j DROP
/sbin/iptables -t filter -A OUTPUT ! -o eth0 -j DROP
printf “%-2s[OK]\n”
#ÉTAPE 04: on bloque les connexions non désirées
echo -n “Application des règles amont de connexion…”
##configuration du noyau
###blocage de l’IP spoofing
for reversepathfilteringenable in /proc/sys/net/ipv4/conf//rp_filter;do echo 1 > $reversepathfilteringenable;done
for icmpacceptredirectdisable in /proc/sys/net/ipv4/conf//accept_redirects;do echo 0 > $icmpacceptredirectdisable;done
for icmpsecureredirectdisable in /proc/sys/net/ipv4/conf/*/secure_redirects;do echo 0 > $icmpsecureredirectdisable;done #les activer aide à contrer les attaques ManInTheMiddle
for icmpsendredirectdisable in /proc/sys/net/ipv4/conf//send_redirects;do echo 0 > $icmpsendredirectdisable;done
###blocage du source routing
for sourceroutingdisable in /proc/sys/net/ipv4/conf//accept_source_route;do echo 0 > $sourceroutingdisable;done
###blocage des connexions NEW non-SYN (SYNflood)
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
###blocage d’IPv6
for IPv6disable in /proc/sys/net/ipv6/conf/*/disable_ipv6;do echo 1 > $IPv6disable;done
###blocage du ping (Ping of Death,…)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
###blocage du forward
echo 0 > /proc/sys/net/ipv4/ip_forward
##configuration d’iptables
###blocage du ping
/sbin/iptables -t filter -A INPUT -p icmp --icmp-type any -j DROP
/sbin/iptables -t filter -A OUTPUT -p icmp --icmp-type any -j DROP
###limitation du nombre de connexion par IP
/sbin/iptables -t filter -A INPUT -m connlimit --connlimit-above 16 --connlimit-mask 32 --connlimit-saddr -j DROP
/sbin/iptables -t filter -A OUTPUT -m connlimit --connlimit-above 8 --connlimit-mask 16 --connlimit-daddr -j DROP
###blocage des connexions NEW non-SYN (SYNflood)
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP
###blocage des connexions non valides
/sbin/iptables -t filter -A INPUT -m state --state INVALID -j DROP
/sbin/iptables -t filter -A OUTPUT -m state --state INVALID -j DROP
###blocage des connexions non traçables
/sbin/iptables -t filter -A INPUT -m state --state UNTRACKED -j DROP
/sbin/iptables -t filter -A OUTPUT -m state --state UNTRACKED -j DROP
###blocage des paquets fragmentés
/sbin/iptables -t filter -A INPUT -f -j DROP
/sbin/iptables -t filter -A OUTPUT -f -j DROP
-m addrtype --src-type UNICAST -m pkttype --pkt-type UNICAST
printf “%-2s[OK]\n”
#ÉTAPE 05: on accepte certaines connexions
echo -n “Application des règles aval de connexion…”
##DHCP
/sbin/iptables -t filter -A INPUT -p udp --sport 67:68 --dport 67:68 -m state --state NEW -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -p udp --sport 67:68 --dport 67:68 -m state --state NEW -j ACCEPT
##DNS
/sbin/iptables -t filter -A INPUT -p tcp --sport 53 -m state --state NEW -j ACCEPT
/sbin/iptables -t filter -A INPUT -p udp --sport 53 -m state --state NEW -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
##HTTP
/sbin/iptables -t filter -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
##HTTPS
/sbin/iptables -t filter -A INPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
printf “%-2s[OK]\n”
#ÉTAPE 06: on limite le scan de ports
echo -n “Application des règles contre les scans de ports…”
##scan inconnu
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags SYN,ACK,ACK SYN,FIN,RST -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags SYN,ACK,ACK SYN,FIN,RST -j DROP
##scan inconnu
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP
##scan inconnu
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
##scan NMAP-XMAS
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
##scan XMAS-PSH
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
##scan XMAS
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags ALL ALL -j DROP
##scan NULL_SCAN
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags ALL NONE -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
##scan SYN/FIN
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
##scan FIN
/sbin/iptables -t filter -A INPUT -p tcp --tcp-flags FIN,ACK FIN -j DROP
/sbin/iptables -t filter -A OUTPUT -p tcp --tcp-flags FIN,ACK FIN -j DROP
printf “%-2s[OK]\n”
#ÉTAPE 07: on bloque tout le reste
echo -n “Application des règles de blocage génériques…”
/sbin/iptables -t filter -A INPUT -j DROP
/sbin/iptables -t filter -A OUTPUT -j DROP
printf “%-2s[OK]\n”
echo "±----------------------------------------------------------------------------+"
echo "| Firewall ACTIVÉ |"
echo “±----------------------------------------------------------------------------+”
#on sort avec l’erreur 0
exit 0
#fin argument ‘–start’
;;
#début argument ‘–stop’
–stop)
echo "±----------------------------------------------------------------------------+"
echo "| Arrêt du firewall |"
echo “±----------------------------------------------------------------------------+”
#ÉTAPE 1: on nettoie le pare-feu
echo -n “Suppression du paramétrage personnalisé…”
##iptables
###on efface toutes les règles
/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t security -F
###on efface toutes les chaînes personnalisées de toutes les tables
/sbin/iptables -t filter -X
/sbin/iptables -t nat -X
/sbin/iptables -t mangle -X
/sbin/iptables -t raw -X
/sbin/iptables -t security -X
###on remet les compteurs à zéro
/sbin/iptables -t filter -Z
/sbin/iptables -t nat -Z
/sbin/iptables -t mangle -Z
/sbin/iptables -t raw -Z
/sbin/iptables -t security -Z
##ip6tables
###on efface toutes les règles
/sbin/ip6tables -t filter -F
#/sbin/ip6tables -t nat -F <–NON IMPLÉMENTÉ DANS IP6TABLES
/sbin/ip6tables -t mangle -F
/sbin/ip6tables -t raw -F
/sbin/ip6tables -t security -F
###on efface toutes les chaînes personnalisées de toutes les tables
/sbin/ip6tables -t filter -X
#/sbin/ip6tables -t nat -X <–NON IMPLÉMENTÉ DANS IP6TABLES
/sbin/ip6tables -t mangle -X
/sbin/ip6tables -t raw -X
/sbin/ip6tables -t security -X
###on remet les compteurs à zéro
/sbin/ip6tables -t filter -Z
#/sbin/ip6tables -t nat -Z <–NON IMPLÉMENTÉ DANS IP6TABLES
/sbin/ip6tables -t mangle -Z
/sbin/ip6tables -t raw -Z
/sbin/ip6tables -t security -Z
printf “%-2s[OK]\n”
#ÉTAPE 2: on paramètre la politique par défaut
echo -n “Application de la politique par défaut…”
##iptables
#/sbin/iptables -t filter -P PREROUTING ACCEPT <-- INEXISTANT
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
#/sbin/iptables -t filter -P POSTROUTING ACCEPT <-- INEXISTANT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P INPUT ACCEPT
#/sbin/iptables -t nat -P FORWARD ACCEPT <-- iptables: Bad built-in chain name
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
#/sbin/iptables -t raw -P INPUT ACCEPT <-- INEXISTANT
#/sbin/iptables -t raw -P FORWARD ACCEPT <-- INEXISTANT
/sbin/iptables -t raw -P OUTPUT ACCEPT
#/sbin/iptables -t raw -P POSTROUTING ACCEPT <-- INEXISTANT
#/sbin/iptables -t security -P PREROUTING ACCEPT <-- INEXISTANT
/sbin/iptables -t security -P INPUT ACCEPT
/sbin/iptables -t security -P FORWARD ACCEPT
/sbin/iptables -t security -P OUTPUT ACCEPT
#/sbin/iptables -t security -P POSTROUTING ACCEPT <-- INEXISTANT
##ip6tables
#/sbin/ip6tables -t filter -P PREROUTING ACCEPT <-- INEXISTANT
/sbin/ip6tables -t filter -P INPUT ACCEPT
/sbin/ip6tables -t filter -P FORWARD ACCEPT
/sbin/ip6tables -t filter -P OUTPUT ACCEPT
#/sbin/ip6tables -t filter -P POSTROUTING ACCEPT <-- INEXISTANT
#/sbin/ip6tables -t nat -P PREROUTING ACCEPT <–NON IMPLÉMENTÉ DANS IP6TABLES
#/sbin/ip6tables -t nat -P INPUT ACCEPT <–NON IMPLÉMENTÉ DANS IP6TABLES
#/sbin/ip6tables -t nat -P FORWARD ACCEPT <–NON IMPLÉMENTÉ DANS IP6TABLES
#/sbin/ip6tables -t nat -P OUTPUT ACCEPT <–NON IMPLÉMENTÉ DANS IP6TABLES
#/sbin/ip6tables -t nat -P POSTROUTING ACCEPT <–NON IMPLÉMENTÉ DANS IP6TABLES
/sbin/ip6tables -t mangle -P PREROUTING ACCEPT
/sbin/ip6tables -t mangle -P INPUT ACCEPT
/sbin/ip6tables -t mangle -P FORWARD ACCEPT
/sbin/ip6tables -t mangle -P OUTPUT ACCEPT
/sbin/ip6tables -t mangle -P POSTROUTING ACCEPT
/sbin/ip6tables -t raw -P PREROUTING ACCEPT
#/sbin/ip6tables -t raw -P INPUT ACCEPT <-- INEXISTANT
#/sbin/ip6tables -t raw -P FORWARD ACCEPT <-- INEXISTANT
/sbin/ip6tables -t raw -P OUTPUT ACCEPT
#/sbin/ip6tables -t raw -P POSTROUTING ACCEPT <-- INEXISTANT
#/sbin/ip6tables -t security -P PREROUTING ACCEPT <-- INEXISTANT
/sbin/ip6tables -t security -P INPUT ACCEPT
/sbin/ip6tables -t security -P FORWARD ACCEPT
/sbin/ip6tables -t security -P OUTPUT ACCEPT
#/sbin/ip6tables -t security -P POSTROUTING ACCEPT <-- INEXISTANT
printf “%-2s[OK]\n”
#on désactive les options de sécurité du noyau
echo -n “Désactivation des options de sécurité du noyau…”
for IPv6restore in /proc/sys/net/ipv6/conf/*/disable_ipv6;do echo 0 > $IPv6restore;done
echo 1 > /proc/sys/net/ipv4/ip_forward
for reversepathfilteringdisable in /proc/sys/net/ipv4/conf/*/rp_filter;do echo 0 > $reversepathfilteringdisable;done
for icmpacceptredirectenable in /proc/sys/net/ipv4/conf/*/accept_redirects;do echo 1 > $icmpacceptredirectenable;done
for icmpsecureredirectenable in /proc/sys/net/ipv4/conf/*/secure_redirects;do echo 1 > $icmpsecureredirectenable;done #les activer aide à contrer les attaques ManInTheMiddle
for icmpsendredirectenable in /proc/sys/net/ipv4/conf/*/send_redirects;do echo 1 > $icmpsendredirectenable;done
for sourceroutingenable in /proc/sys/net/ipv4/conf/*/accept_source_route;do echo 1 > $sourceroutingenable;done
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
printf “%-2s[OK]\n”
echo "±----------------------------------------------------------------------------+"
echo "| Firewall DÉSACTIVÉ |"
echo “±----------------------------------------------------------------------------+”
#on sort avec l’erreur 0
exit 0
#fin argument ‘–stop’
;;
#début argument ‘–status’
–status)
#liste numérique (-n) détaillée (-v) des règles en fonction des chaînes (-L)
echo ""
echo ""
echo "±----------------------------------------------------------------------------+"
echo "| Rapport d’état d’iptables et ip6tables |"
echo "±----------------------------------------------------------------------------+"
echo ""
echo ""
echo "I. iptables:"
echo ""
echo "I.1. table ‘filter’:"
echo “”
/sbin/iptables -t filter -n -L -v
echo ""
echo ""
echo "I.2. table ‘nat’:"
echo “”
/sbin/iptables -t nat -n -L -v
echo ""
echo ""
echo "I.3. table ‘mangle’:"
echo “”
/sbin/iptables -t mangle -n -L -v
echo ""
echo ""
echo "I.4. table ‘raw’:"
echo “”
/sbin/iptables -t raw -n -L -v
echo ""
echo ""
echo "I.5. table ‘security’:"
echo “”
/sbin/iptables -t security -n -L -v
echo ""
echo ""
echo ""
echo "II. ip6tables:"
echo ""
echo "II.1. table ‘filter’:"
echo “”
/sbin/ip6tables -t filter -n -L -v
echo ""
echo ""
echo "II.2. table ‘nat’:"
echo ""
echo “Table nat non implémentée dans ip6tables.”
#/sbin/ip6tables -t nat -n -L -v <–NON IMPLÉMENTÉ DANS IP6TABLES
echo ""
echo ""
echo "II.3. table ‘mangle’:"
echo “”
/sbin/ip6tables -t mangle -n -L -v
echo ""
echo ""
echo "II.4. table ‘raw’:"
echo “”
/sbin/ip6tables -t raw -n -L -v
echo ""
echo ""
echo "II.5. table ‘security’:"
echo “”
/sbin/ip6tables -t security -n -L -v
echo ""
echo ""
echo ""
echo "Fin du rapport."
echo “”
#on sort avec l’erreur 0
exit 0
#fin argument ‘–status’
;;
#début tout autre argument
*)
#message d’aide
echo “Utilisation: mffw --{start|stop|status}”
#on sort avec l’erreur 1
exit 1
#fin tout autre argument
;;
#fin du traitement des arguments donnés en option du lancement en ligne de commande
esac
[/code]
Bref, ça donne ça: