All pastes #263722 Raw Edit

Divers

public shellscript v1 · immutable
·published 2006-12-01 19:30 UTC
rendered paste body
#!/bin/sh ################################################################################ NOM: iptable-final-1.sh## COMMENTAIRE : Synthse d'utilisation de ce qui a t vu dans le document#               (chapitre III-10-3)# # Ce script fait partie du document :#        "Firewall et scurit d'un rseau personnel sous Linux"#        http://olivieraj.free.fr/fr/linux/information/firewall/## Auteur: Olivier ALLARD-JACQUIN (http://olivieraj.free.fr/)# Cr le : 2003/07/09                    Dernire modification le : 2003/07/09############################################################################################################################################################### Variables globales################################################################################ Paramtrage du rseau local (LAN = Local Area Network)LAN_INTERFACE=ath0           ; # Interface rseau interneLAN_IP=192.168.1.2            ; # Adresse rseau interneLAN_NETWORK=192.168.1.0/24    ; # Rseau interneLAN_BROADCAST=192.168.1.255   ; # Adresse de broadcast interne# Paramtrage de la connexion Internet (WAN = Wild Area Network = Rseau Large)WAN_INTERFACE=eth0            ; # Interface rseau externe (Internet)WAN_IP=81.56.144.163               ; # Adresse rseau externe (Internet)WAN_NETWORK=0.0.0.0/0        ; # Rseau externe (Internet)# REMARQUE:# Si vous utiliser une connexion par modem (RTC/RNIS/ADSL) pour vous connecter  Internet# utilisez les variables ci-dessous. Elle permettrons  ce script de dtecter# automatiquement votre adresse IP Internet#WAN_INTERFACE=ppp0            ; # Interface modem#WAN_IP=`/sbin/ifconfig | grep "P-t-P" | sed "s/^[: a-z]*\([.0-9]*\).*/\1/g"`  ; # Rcupre l'adresse rseau externe (Internet)#WAN_NETWORK=0.0.0.0/0PF_IP=192.168.1.10    ; # Adresse IP du serveur sur le LANPORT_TCP=34909,80PORT_UDP=27990# Paramtrage du LOG#   LOG=LOG_IN      <=> On log toutes les tentatives d'intrusions non autorises#   LOG=LOG_OUT     <=> On log toutes les tentatives de sortie non autorises#   LOG=LOG_IN-OUT  <=> On log toutes les tentatives d'entres et sorties non autorises#   LOG=ULOG_IN     <=> On log (avec ULOG) toutes les tentatives d'intrusions non autorise#   LOG=ULOG_OUT    <=> On log (avec ULOG) toutes les tentatives de sorties non autorises#   LOG=ULOG_IN-OUT <=> On log (avec ULOG) toutes les tentatives d'entres et sorties non autorises#   LOG=NONE        <=> On ne log RIEN du toutLOG=ULOG_IN-OUTLOG_PREFIX=Netfilter############################################################################################################################################################### A PARTIR DE CE POINT, VOUS N'AVEZ PLUS BESOIN DE CONFIGURER CE SCRIPT!!!############################################################################################################################################################################################################################################## Initialisation de Netfilter################################################################################ Initialise la table Filter (par dfaut tout les changes sont refuss)echo "+ Initialisation de la table Filter"iptables -t filter -Fiptables -t filter -X iptables -t filter -P INPUT   DROPiptables -t filter -P FORWARD DROPiptables -t filter -P OUTPUT  DROP# Initialise la table NAT (par dfaut tout les changes sont activs)echo "+ Initialisation de la table NAT"iptables -t nat -Fiptables -t nat -X iptables -t nat -P PREROUTING  ACCEPTiptables -t nat -P OUTPUT      ACCEPTiptables -t nat -P POSTROUTING ACCEPT# Initialise la table Mangle (par dfaut tout les changes sont activs)echo "+ Initialisation de la table Mangle"iptables -t mangle -Fiptables -t mangle -X iptables -t mangle -P PREROUTING  ACCEPTiptables -t mangle -P INPUT       ACCEPTiptables -t mangle -P FORWARD     ACCEPTiptables -t mangle -P OUTPUT      ACCEPTiptables -t mangle -P POSTROUTING ACCEPTecho "+ Activation du NAT"echo 1 > /proc/sys/net/ipv4/ip_forward################################################################################ Rgles du localhost# On NE fait PAS de restriction aux adresses IP source / destination 127.0.0.0###############################################################################echo "+ Rgles du localhost"iptables -t filter -A OUTPUT -o lo -p all -j ACCEPTiptables -t filter -A INPUT  -i lo -p all -j ACCEPT# Ces deux rglres sont l'criture simplifie de :# iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT# iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT################################################################################ Rgles de connexion au reseau local# Tout est autoris###############################################################################echo "+ Rgles du rseau local ($LAN_INTERFACE - $LAN_IP - $LAN_NETWORK)"# Connexions firewall <-> rseauiptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $LAN_IP -d $LAN_NETWORK -p all -j ACCEPTiptables -t filter -A INPUT -i $LAN_INTERFACE -s $LAN_NETWORK -d $LAN_IP -p all -j ACCEPT    # Connexions firewall <-> broadcast rseauiptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $LAN_IP -d $LAN_BROADCAST -p all -j ACCEPTiptables -t filter -A INPUT  -i $LAN_INTERFACE -s $LAN_BROADCAST -d $LAN_IP -p all -j ACCEPT################################################################################ Rgles de connexion  Internet# Seul les connexions initialiss par la machine sont autorises# C'est le suivit de connexion###############################################################################echo "+ Rgles pour Internet ($WAN_INTERFACE - $WAN_IP - $WAN_NETWORK)"iptables -t filter -A OUTPUT -o $WAN_INTERFACE -s $WAN_IP -d $WAN_NETWORK -p all -m state --state ! INVALID -j ACCEPTiptables -t filter -A INPUT  -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p all -m state --state RELATED,ESTABLISHED -j ACCEPT################################################################################ Rgles pour le port forwarding###############################################################################iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p tcp -m multiport --dport $PORT_TCP -m state --state ! INVALID -j ACCEPTiptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p tcp -m multiport --sport $PORT_TCP -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p udp --dport $PORT_UDP -m state --state ! INVALID -j ACCEPTiptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p udp --sport $PORT_UDP -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -t nat -A PREROUTING -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp -m multiport --dport $PORT_TCP -j DNAT --to-destination $PF_IPiptables -t nat -A POSTROUTING -o $LAN_INTERFACE -s $WAN_NETWORK -d $PF_IP -p tcp -m multiport --dport $PORT_TCP -j SNAT --to-source $LAN_IPiptables -t nat -A PREROUTING -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p udp --dport $PORT_UDP -j DNAT --to-destination $PF_IPiptables -t nat -A POSTROUTING -o $LAN_INTERFACE -s $WAN_NETWORK -d $PF_IP -p udp --dport $PORT_UDP -j SNAT --to-source $LAN_IP################################################################################ Rgles pour l'IP masquerading###############################################################################echo "+ Autorise l'IP masquerading de $LAN_NETWORK -> $WAN_NETWORK"iptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p all -m state --state ! INVALID -j ACCEPTiptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p all -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -t nat -A POSTROUTING -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p all -j MASQUERADE################################################################################ Rgles pour le log###############################################################################echo "+ Definition des logs ($LOG)"case "$LOG" in  LOG_IN)    iptables -t filter -A INPUT  -p all -j LOG --log-prefix $LOG_PREFIX    ;;  LOG_OUT)    iptables -t filter -A OUTPUT -p all -j LOG --log-prefix $LOG_PREFIX    ;;  LOG_IN-OUT)    iptables -t filter -A INPUT  -p all -j LOG --log-prefix $LOG_PREFIX    iptables -t filter -A OUTPUT -p all -j LOG --log-prefix $LOG_PREFIX    ;;  ULOG_IN)    iptables -t filter -A INPUT  -p all -j ULOG --ulog-prefix $LOG_PREFIX    ;;  ULOG_OUT)    iptables -t filter -A OUTPUT -p all -j ULOG --ulog-prefix $LOG_PREFIX    ;;  ULOG_IN-OUT)    iptables -t filter -A INPUT  -p all -j ULOG --ulog-prefix $LOG_PREFIX    iptables -t filter -A OUTPUT -p all -j ULOG --ulog-prefix $LOG_PREFIX    ;;esac  echo "+ ------====== SCRIPT TERMINE! ======------"echo "+ Pour afficher votre configuration Netfilter, lancez:"echo " - 'iptables -L -n -v'           pour la table 'Filter'"echo " - 'iptables -L -n -v -t nat'    pour la table 'NAT'"echo " - 'iptables -L -n -v -t mangle' pour la table 'Mangle'"