#!/bin/sh PATH=/usr/eth0cal/sbin:/usr/eth0cal/bin:/sbin:/bin:/usr/sbin:/usr/bin:/sbin/iptables DAEMON=/etc/init.d/fw NAME=fw ID=$$ DESC="Par Feux 1.13" FAMOPTS="-T 0" set -e case "$1" in start) #variable MAC="-m mac --mac-source 00:0A:E4:5E:21:8F" MACROUTEUR="-m mac --mac-source 00:18:39:1E:D3:E1" RL="192.168.0.0/16" id="1000" echo "Démarage de $DESC Pour l'user $id" #Mise a zero des regle (par précaution) # # On remet la police par défaut à ACCEPT # iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT # # On remet les polices par défaut pour la table NAT # iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT # # On vide (flush) toutes les règles existantes # iptables -F iptables -t nat -F # # Et enfin, on efface toutes les chaînes qui ne # sont pas à defaut dans la table filter et nat iptables -X iptables -t nat -X #============================================================================================ # policy defaut iptables -P INPUT DROP #============================================================================================ #règle de filtrage #Pour émettre un service Cupsys #iptables -A INPUT -m state --state NEW -p TCP --dport 631 -j ACCEPT #Service DNS #Contacter un DNS, surtout si le réseau local en comporte un, est important, #même pour les services DNS sur Internet, #entres autres avec votre FAI ; il faut donc ouvrir les protocoles (TCP) et UDP iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 53 -j ACCEPT iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 53 -j ACCEPT iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --dport 53 -j ACCEPT iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p UDP --dport 53 -j ACCEPT #Service SaMBa # EPMAP => définit toutes les RPC ! iptables -A INPUT -p tcp -m multiport --source-port 135,137,138,445 $MACROUTEUR -s $RL -d $RL -j ACCEPT iptables -A INPUT -p udp -m multiport --source-port 135,137,138,445 $MACROUTEUR -s $RL -d $RL -j ACCEPT iptables -A INPUT -p tcp -m multiport --source-port 135,137,138,445 $MAC -s $RL -d $RL -j ACCEPT iptables -A INPUT -p udp -m multiport --source-port 135,137,138,445 $MAC -s $RL -d $RL -j ACCEPT #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 135 -j ACCEPT #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 135 -j ACCEPT # NetBios-NS #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 137 -j ACCEPT #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 137 -j ACCEPT # NetBios-DGM => exploration du réseau (basé sur SMB browser service) #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 138 -j ACCEPT # NetBios-SSN => partage fichiers, imprimantes par Microsoft #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 139 -j ACCEPT # SMB/IP => partage fichiers, imprimantes par SaMBa #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 445 -j ACCEPT #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 445 -j ACCEPT #Service SSH iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 22 -j ACCEPT #Service FTP iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 21 -j ACCEPT #Ce proteger contre les ping , mai en permettre quelque un iptables -A INPUT -p icmp -m limit --limit 16/d -j ACCEPT #de cette manière, une erreur ICMP passera, mais votre passerelle ne répondra pas aux reste ICMP. iptables -A INPUT -p icmp -m state --state RELATED -j ACCEPT #Ouverture des port pour les navigateurs iptables -A INPUT -p tcp -m multiport --source-ports 21,80,81,82,83,84,8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #laisser msn sortire fichier compris iptables -A INPUT -p tcp -m multiport --source-port 1863,6891 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #laisser sortire IRC iptables -A INPUT -p tcp --sport 6667 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #Les e-mail iptables -A INPUT -p tcp -m multiport --source-port 25,110 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 110 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #on autorise le transfere dans le reseau local ceci est a éviter ! #iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j ACCEPT # Le service xvnc4viewer (mode graphique de pc a pc) iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 5900 -j ACCEPT #loopack iptables -A INPUT -i lo -j ACCEPT #on autorise le multicast DNS sur IP (pas d'adress mac en OUTPUT) et le port 5353 sinon gnome plente a l'arret! #iptables -A INPUT -i eth0 -s 192.168.1.0/24 -d 224.0.0.0/24 -j ACCEPT #iptables -A INPUT -i eth0 -d 192.168.1.0/24 -s 224.0.0.0/24 -j ACCEPT # on log ce qui est stopper #iptables -A INPUT -i eth0 -j LOG -m limit --limit 1/d --log-prefix="USER INPUT Final: " --log-level debug iptables -A INPUT -i eth0 -j LOG -m limit --limit 24/h --limit-burst 1 --log-prefix="USER INPUT Final: " --log-level debug #=================================SECTION OUTPUT============================================================= # policy defaut iptables -P OUTPUT DROP #=========================================================================================================== #règle de filtrage #Pour émettre un service Cupsys iptables -A OUTPUT -m state --state NEW -p TCP --dport 631 -j ACCEPT #Service DNS #Contacter un DNS, surtout si le réseau local en comporte un, est important, #même pour les services DNS sur Internet, #entres autres avec votre FAI ; il faut donc ouvrir les protocoles TCP et UDP iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --dport 53 -m owner --uid-owner $id -j ACCEPT iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p UDP --dport 53 -m owner --uid-owner $id -j ACCEPT #Service SaMBa # EPMAP => définit toutes les RPC ! iptables -A OUTPUT -p tcp -m multiport --destination-port 135,137,138,445,5900 -s $RL -d $RL -m owner --uid-owner $id -j ACCEPT iptables -A OUTPUT -p udp -m multiport --destination-port 135,137,138,445,5900 -s $RL -d $RL -m owner --uid-owner $id -j ACCEPT #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 135 -j ACCEPT #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 135 -j ACCEPT # NetBios-NS #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 137 -j ACCEPT #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 137 -j ACCEPT # NetBios-DGM => exploration du réseau (basé sur SMB browser service) #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 138 -j ACCEPT # NetBios-SSN => partage fichiers, imprimantes par Microsoft #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 139 -j ACCEPT # SMB/IP => partage fichiers, imprimantes par SaMBa #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 445 -j ACCEPT #iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 445 -j ACCEPT #Service SSH iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --dport 22 -m owner --uid-owner $id -j ACCEPT #Service FTP iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --dport 21 -m owner --uid-owner $id -j ACCEPT #Ce proteger contre les ping , mai en permettre quelque un iptables -A OUTPUT -p icmp -m limit --limit 16/d -j ACCEPT #de cette manière, une erreur ICMP passera, mais votre passerelle ne répondra pas aux reste ICMP. iptables -A OUTPUT -p icmp -m state --state RELATED -j ACCEPT #Ouverture des port pour les navigateurs iptables -A OUTPUT -p tcp -m multiport --destination-port 21,80,81,82,83,84,8080 -m owner --uid-owner $id -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #laisser msn sortire fichier compris iptables -A OUTPUT -p tcp -m multiport --destination-port 1863,6891 -m owner --uid-owner $id -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --dport 443 -m owner --uid-owner $id -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #laisser sortire IRC iptables -A OUTPUT -p tcp --dport 6667 -m owner --uid-owner $id -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #Les e-mail iptables -A OUTPUT -p tcp -m multiport --destination-port 25,110 -m owner --uid-owner $id -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #on autorise le transfere dans le reseau local ceci est a éviter ! #iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j ACCEPT #on autorise le loopack iptables -A OUTPUT -o lo -j ACCEPT #on autorise le multicast DNS sur IP (pas d'adress mac en OUTPUT) et le port 5353 sinon gnome plente a l'arret! #iptables -A OUTPUT -o eth0 -s 192.168.1.0/24 -d 224.0.0.0/24 -j ACCEPT #iptables -A OUTPUT -o eth0 -d 192.168.1.0/24 -s 224.0.0.0/24 -j ACCEPT #iptables -A OUTPUT -o eth0 -j ACCEPT #iptables -A OUTPUT -o eth0 -s 192.168.1.0/24 -j ACCEPT # Le service xvnc4viewer (mode graphique de pc a pc) #iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --dport 5900 -j ACCEPT # on log ce qui est stopper iptables -A OUTPUT -o eth0 -j LOG -m limit --limit 24/h --limit-burst 1 --log-prefix="USER OUTPUT Final: " --log-level debug echo "!! Chargement terminer !!" ;; root) #==================================================================================================================== #==================================================================================================================== # ROOT ID 0 #==================================================================================================================== #==================================================================================================================== MAC="-m mac --mac-source 00:0A:E4:5E:21:8F" MACROUTEUR="-m mac --mac-source 00:18:39:1E:D3:E1" RL="192.168.0.0/16" idroot="0" echo "!! PASSAGE EN MODE ROOT !!" echo "!! Effacement !!" #On efface les regles pour root # # On remet la police par défaut à ACCEPT # iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT # # On remet les polices par défaut pour la table NAT # iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT # # On vide (flush) toutes les règles existantes # iptables -F iptables -t nat -F # # Et enfin, on efface toutes les chaînes qui ne # sont pas à defaut dans la table filter et nat iptables -X iptables -t nat -X echo "!! Chargement un moment s'il vou plaît !!" #============================================================================================ # policy defaut iptables -P INPUT DROP #============================================================================================ iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 53 -j ACCEPT iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport 53 -j ACCEPT iptables -A INPUT -p tcp -m multiport --source-port 135,137,138,445 $MACROUTEUR -s $RL -d $RL -j ACCEPT iptables -A INPUT -p udp -m multiport --source-port 135,137,138,445 $MACROUTEUR -s $RL -d $RL -j ACCEPT iptables -A INPUT -p tcp -m multiport --source-port 135,137,138,445 $MAC -s $RL -d $RL -j ACCEPT iptables -A INPUT -p udp -m multiport --source-port 135,137,138,445 $MAC -s $RL -d $RL -j ACCEPT iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 22 -j ACCEPT iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 21 -j ACCEPT iptables -A INPUT -p icmp -m limit --limit 16/d -j ACCEPT iptables -A INPUT -p icmp -m state --state RELATED -j ACCEPT iptables -A INPUT -p tcp -m multiport --source-ports 21,80,81,82,83,84,8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp -m multiport --source-port 1863,6891 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --sport 6667 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp -m multiport --source-port 119,110,25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT $MAC -m state --state NEW,ESTABLISHED,RELATED -p TCP --sport 5900 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT #=================================SECTION OUTPUT============================================================= # policy defaut iptables -P OUTPUT DROP #=========================================================================================================== iptables -A OUTPUT -m state --state NEW -p TCP --dport 631 -j ACCEPT iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --dport 53 -m owner --uid-owner $idroot -j ACCEPT iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p UDP --dport 53 -m owner --uid-owner $idroot -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --destination-port 135,137,138,445,5900 -s $RL -d $RL -m owner --uid-owner $idroot -j ACCEPT iptables -A OUTPUT -p udp -m multiport --destination-port 135,137,138,445,5900 -s $RL -d $RL -m owner --uid-owner $idroot -j ACCEPT iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --dport 22 -m owner --uid-owner $idroot -j ACCEPT iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --dport 21 -m owner --uid-owner $idroot -j ACCEPT iptables -A OUTPUT -p icmp -m limit --limit 16/d -j ACCEPT iptables -A OUTPUT -p icmp -m state --state RELATED -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --destination-port 21,80,81,82,83,84,8080 -m owner --uid-owner $idroot -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --destination-port 1863,6891 -m owner --uid-owner $idroot -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --dport 443 -m owner --uid-owner $idroot -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --dport 6667 -m owner --uid-owner $idroot -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --destination-port 119,110,25 -m owner --uid-owner $idroot -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT echo "!! Chargement terminer !!" ;; stop) echo -n "Stopping $DESC: " # # On remet la police par défaut à ACCEPT # iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT # # On remet les polices par défaut pour la table NAT # iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT # # On vide (flush) toutes les règles existantes # iptables -F iptables -t nat -F # # Et enfin, on efface toutes les chaînes qui ne # sont pas à defaut dans la table filter et nat iptables -X iptables -t nat -X echo "$NAME." ;; *) N=/etc/init.d/$NAME echo "Usage: /etc/init.d/fw {start|stop|root} " $DAEMON >&2 exit 1 ;; esac exit 0