Iptables-masq.sh

De Page Personnelle de Cédric Blancher.

Source: 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.
#
###############################################################################
Navigation
autres
Locations of visitors to this page

No software patents !

Valid XHTML 1.0 Transitional

Valid CSS 2.1