Iptables-masq.sh
Un article de Page Personnelle de Cédric Blancher, l'encyclopéde libre.
Source: iptables.masq.sh (http://sid.rstack.org/code/scripts/iptables.masq.sh)
############################################################################### # # script iptables pour Filtre avec support masquage d'adresses. # # eth0 : 172.16.0.1 vers 172.16.0.0/16 # eth1 : 192.168.11.1 vers 192.168.11.0/24 # Serveur DNS : 192.168.11.2 # Serveur SMTP/POP : 172.16.0.2 # Administration en SSH depuis 192.168.11.0/24 # # Ce script est a lancer _avant_ la levee des interfaces reseau # # Note 1 : # Les regles du firewall peuvent etre sauvegardees dans un fichier arbitraire # par la commande : # iptables-save > mon_fichier # puis restaurees par la commande : # iptables-restore < mon_fichier # # Note 2 : # Pour plus de lisibilite, les numeros de port peuvent etre remplace par le # nom du service tel qu'il est donne dans /etc/services. # # Pour plus d'informations : # http://www.netfilter.org/ # http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html # # (c) 2005, Cedric Blancher (blancher at cartel-securite dot fr) # ############################################################################### #!/bin/sh # Localisation de l'executable IPTABLES=/sbin/iptables # Variables du script IP1=172.16.0.1 IP2=192.168.11.1 NET=192.168.11.0/24 MAIL=172.16.0.2 DNS=192.168.11.2 DNS_FAI=X.X.X.X # On vide les chaines et on supprime les les chaines utilisateur $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F $IPTABLES -X $IPTABLES -t nat -X $IPTABLES -t mangle -X # On ferme l'acces completement $IPTABLES -A INPUT -j DROP $IPTABLES -A FORWARD -j DROP $IPTABLES -A OUTPUT -j DROP # On s'assure que le FORWARD est desactive echo 0 > /proc/sys/net/ipv4/ipFORWARD # On active les rp_filters du noyau contre le spoofing if [ -e /proc/sys/net/ipv4/conf/all/rp_filter]; then for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done fi # Politique par defaut : les paquets sont refuses # Note : les chaines utilisateur n'ont pas de politique ; si on veut en mettre # une , c'est la derniere regle de la chaine qui la definie. $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP # Antispoofing de base $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A INPUT -s ! $NET/24 -i eth1 -j DROP $IPTABLES -A INPUT -s $NET/24 -i ! eth1 -j DROP # On accepte les paquets reconnus par le moteur d'état $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Ports a usage local #SSH $IPTABLES -A INPUT -m state --state NEW -p tcp -s $NET/24 --sport 1024: --dport 22 -i eth1 -j ACCEPT #DNS $IPTABLES -A OUTPUT -m state --state NEW -p udp --sport 1024: -d $DNS --dport 53 -o eth1 -j ACCEPT $IPTABLES -A OUTPUT -m state --state NEW -p tcp --sport 1024: -d $DNS --dport 53 -o eth1 -j ACCEPT # Filtrage des protocoles routes #DNS a destination du serveur DNS $IPTABLES -A FORWARD -m state --state NEW -p udp -s $DNS --sport 1024: -d $DNS_FAI --dport 53 -i eth1 -o eth0 -j ACCEPT $IPTABLES -A FORWARD -m state --state NEW -p tcp -s $DNS --sport 1024: -d $DNS_FAI --dport 53 -i eth1 -o eth0 -j ACCEPT #FTP $IPTABLES -A FORWARD -m state --state NEW -p tcp -s $NET/24 --sport 1024: --dport 21 -i eth1 -o eth0 -j ACCEPT #SMTP $IPTABLES -A FORWARD -m state --state NEW -p tcp -s $NET/24 --sport 1024: -d $MAIL --dport 25 -i eth1 -o eth0 -j ACCEPT #POP3 $IPTABLES -A FORWARD -m state --state NEW -p tcp -s $NET/24 --sport 1024: -d $MAIL --dport 110 -i eth1 -o eth0 -j ACCEPT #NNTP $IPTABLES -A FORWARD -m state --state NEW -p tcp -s $NET/24 --sport 1024: --dport 119 -i eth1 -o eth0 -j ACCEPT #HTTP $IPTABLES -A FORWARD -m state --state NEW -p tcp -s $NET/24 --sport 1024: --dport 80 -i eth1 -o eth0 -j ACCEPT #HTTPS $IPTABLES -A FORWARD -m state --state NEW -p tcp -s $NET/24 --sport 1024: --dport 443 -i eth1 -o eth0 -j ACCEPT #RealAudio $IPTABLES -A FORWARD -m state --state NEW -p tcp -s $NET/24 --sport 1024: --dport 554 -i eth1 -o eth0 -j ACCEPT $IPTABLES -A FORWARD -m state --state NEW -p tcp -s $NET/24 --sport 1024: --dport 7070 -i eth1 -o eth0 -j ACCEPT # Traduction d'adresse en sortie $IPTABLES -t nat -A POSTROUTING -s $NET/24 -o eth0 -j SNAT --to $IP1 # Tout est en place, on peut activer le FORWARD echo 1 > /proc/sys/net/ipv4/ip_FORWARD # On ouvre la boite :) $IPTABLES -D INPUT 1 $IPTABLES -D FORWARD 1 $IPTABLES -D OUTPUT 1 ############################################################################### # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You can obtain a copy of the GNU General Public License at this # URL : # http://www.fsf.org/copyleft/gpl.html # If not, write to the Free Software Foundation, Inc., 59 Temple # Place - Suite 330, Boston, MA 02111-1307, USA. # ###############################################################################




