#!/bin/sh ### --- Explications # # Par défaut cette configuration s'applique à toutes les interfaces réseau. # Si vous souhaitez restreindre cela à une interface donnée, dé-commentez la ligne #IFACE="eth0" # (dans la section variables) # # Par défaut, le script autorise tout en sortie. Pour changer ce comportement veuillez indiquer quels sont les ports # autorisés en sortie dans les 2 variables suivantes (Tout sera bloqué sauf les ports inscrits) # $REMOTE_TCP_SERVICES # et/ou $REMOTE_UDP_SERVICES # # - Pour configurer une machine qui fasse office de routeur, changez la valeur de la # variable ISROUTERNAT à true, ET configurez les interfaces ethx et ethy selon votre configuration. # => ethx correspond à l'interface du LAN (reliée à votre Intranet) # => ethy correspond à l'interface WAN (reliée à Internet ou à la truc-box) # ### --- VARIABLES # . /lib/lsb/init-functions IPTABLES=/sbin/iptables # # Services que le système offrira au réseau, à séparer avec des espaces # Par défaut RIEN n'est autorisé à part le Ping. TCP_SERVICES="80" UDP_SERVICES="" # Services que le système utilisera du réseau # (défaut : autorise TOUT en sortie si aucun port n'est précisé) REMOTE_TCP_SERVICES="" REMOTE_UDP_SERVICES="" # Pour une machine faisant office de routeur avec NAT, changez la valeur de la variable ISROUTERNAT à "true". ISROUTERNAT=false # ethx correspond à l'interface du LAN # ethy correspond à l'interface reliée à la truc-box (à compléter seulement si vous activez la fonction routeur) ethx="eth1" ethy="eth0" # Ajustez le nom de l'interface pour restreindre le trafic entrant à cette interface particulière. # Par exemple : IFACE="eth0" IFACE="eth0" ####### if [ -n "${IFACE}" ] ; then IFACE="-i ${IFACE}" fi $IPTABLES -t filter -F $IPTABLES -t nat -F $IPTABLES -t mangle -F $IPTABLES -t raw -F $IPTABLES -t filter -P INPUT ACCEPT $IPTABLES -t filter -P OUTPUT ACCEPT $IPTABLES -t filter -P FORWARD ACCEPT $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT $IPTABLES -t nat -P OUTPUT ACCEPT $IPTABLES -t nat -P INPUT ACCEPT $IPTABLES -t mangle -P PREROUTING ACCEPT $IPTABLES -t mangle -P OUTPUT ACCEPT $IPTABLES -t mangle -P POSTROUTING ACCEPT $IPTABLES -t mangle -P FORWARD ACCEPT $IPTABLES -t mangle -P INPUT ACCEPT $IPTABLES -t raw -P OUTPUT ACCEPT $IPTABLES -t raw -P PREROUTING ACCEPT echo "\nPare-feu - Remise à zéro" echo "Parefeu - Suppression des règles" # Interdictions : on commence par appliquer la politique DROP pour les trois chaînes $IPTABLES -t filter -P INPUT DROP $IPTABLES -t filter -P FORWARD DROP $IPTABLES -t filter -P OUTPUT DROP echo "Pare-feu - interdictions générales établies" # Loopback $IPTABLES -t filter -A INPUT -i lo -j ACCEPT # on accepte tout le trafic entrant de l'interface de loopback (lo) # Pings (ICMP) $IPTABLES -A INPUT ${IFACE} -p icmp -j ACCEPT # on accepte en entrée sur la chaîne INPUT (interface d'entrée) tous les paquets ICMP $IPTABLES -A FORWARD -p icmp -j ACCEPT # de même sur la chaîne FORWARD (toutes interfaces) # Sortie autorisée $IPTABLES -t filter -A OUTPUT -j ACCEPT # on accepte tout en sortie, sur la chaîne OUTPUT (table filter) # Services à autoriser en entrée for PORT in $TCP_SERVICES; do # pour chaque port TCP spécifié en début de script : $IPTABLES -A INPUT ${IFACE} -p tcp --dport ${PORT} -j ACCEPT # on autorise le trafic entrant sur la chaîne INPUT (interface d'entrée) $IPTABLES -A FORWARD -p tcp --dport ${PORT} -j ACCEPT # de même sur la chaîne FORWARD (toutes interfaces) done for PORT in $UDP_SERVICES; do # de même pour chaque port UDP spécifié en début de script $IPTABLES -A INPUT ${IFACE} -p udp --dport ${PORT} -j ACCEPT $IPTABLES -A FORWARD -p udp --dport ${PORT} -j ACCEPT done echo "Pare-feu - Mise en place des règles" # NAT if $ISROUTERNAT ; then $IPTABLES -A INPUT -i $ethx -j ACCEPT $IPTABLES -A FORWARD -i $ethy -o $ethx -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A FORWARD -i $ethx -o $ethy -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $ethy -j MASQUERADE echo "Pare-feu - Routeur avec NAT : [OK]" fi # Affiche les règles IPTABLES $IPTABLES -L --line-numbers exit 0