All pastes #753590 Raw Edit

Unnamed

public shellscript v1 · immutable
#753590 ·published 2007-10-29 11:19 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=eth1           ; # 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/0#PF_IP=192.168.1.0    ; # Adresse IP du serveur sur le LANPORT_TCP_SIMPSON=5900,5901,5902,5222,1863#PORT_UDP_SIMPSON=27990,34912EMULEPORT=34909EMULEUDP=27990EMULEUDP2=`expr $EMULEPORT + 3`EMULEHOST=192.168.1.10# 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################################################################################ 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 INPUT -i $WAN_INTERFACE -p icmp -j DROPiptables -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 -d $WAN_IP -p tcp -m multiport --dports 80,22,25 -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###############################################################################echo "+ 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 --dports $PORT_TCP_SIMPSON -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 --sports $PORT_TCP_SIMPSON -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport $EMULEPORT -d $EMULEHOST -j ACCEPTiptables -A FORWARD -i $EXTIF -o $INTIF -p udp --dport $EMULEUDP -d $EMULEHOST -j ACCEPTiptables -A FORWARD -i $EXTIF -o $INTIF -p udp --dport $EMULEUDP2 -d $EMULEHOST -j ACCEPT#iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p udp -m multiport --dports $PORT_UDP_SIMPSON -m state --state ! INVALID -j ACCEPT#iptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p udp -m multiport --sports $PORT_UDP_SIMPSON -m state --state ESTABLISHED,RELATED -j ACCEPT#Port TCP iptables -t nat -A PREROUTING -i $WAN_INTERFACE -p tcp --destination-port $EMULEPORT -j DNAT --to-destination $EMULEHOST:$EMULEPORTiptables -t nat -A PREROUTING -i $WAN_INTERFACE -p udp --destination-port $EMULEUDP -j DNAT --to-destination $EMULEHOST:$EMULEUDPiptables -t nat -A PREROUTING -i $WAN_INTERFACE -p udp --destination-port $EMULEUDP2 -j DNAT --to-destination $EMULEHOST:$EMULEUDP2iptables -t nat -A PREROUTING -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp -m multiport --dports $PORT_TCP_SIMPSON -j DNAT --to-destination 192.168.1.10iptables -t nat -A POSTROUTING -o $LAN_INTERFACE -s $WAN_NETWORK -d 192.168.1.10 -p tcp -m multiport --dports $PORT_TCP_SIMPSON -j SNAT --to-source $LAN_IPiptables -t nat -A PREROUTING -i $LAN_INTERFACE -s $LAN_NETWORK -p tcp --dport 80 -j REDIRECT --to-port 3128#Port UDP#iptables -t nat -A PREROUTING -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p udp -m multiport --dport $PORT_UDP_SIMPSON -j DNAT --to-destination 192.168.1.10#iptables -t nat -A POSTROUTING -o $LAN_INTERFACE -s $WAN_NETWORK -d 192.168.1.10 -p udp -m multiport --dport $PORT_UDP_SIMPSON -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 SNAT --to $WAN_IPiptables -t nat -A POSTROUTING -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p all -j MASQUERADEecho "+ On optimise la taille des paquets"iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o $WAN_INTERFACE --clamp-mss-to-pmtu################################################################################ 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}-filter-inp    iptables -t filter -A FORWARD -p all -j LOG --log-prefix ${LOG_PREFIX}-filter-for    iptables -t filter -A OUTPUT  -p all -j LOG --log-prefix ${LOG_PREFIX}-filter-out#    iptables -t nat -A PREROUTING   -p all -j LOG --log-prefix ${LOG_PREFIX}-nat-pre#    iptables -t nat -A OUTPUT       -p all -j LOG --log-prefix ${LOG_PREFIX}-nat-out#    iptables -t nat -A POSTROUTING  -p all -j LOG --log-prefix ${LOG_PREFIX}-nat-post    ;;  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}-filter-inp    iptables -t filter -A FORWARD -p all -j ULOG --ulog-prefix ${LOG_PREFIX}-filter-for    iptables -t filter -A OUTPUT  -p all -j ULOG --ulog-prefix ${LOG_PREFIX}-filter-out#    iptables -t nat -A PREROUTING   -p all -j ULOG --ulog-prefix ${LOG_PREFIX}-nat-pre#    iptables -t nat -A OUTPUT       -p all -j ULOG --ulog-prefix ${LOG_PREFIX}-nat-out#    iptables -t nat -A POSTROUTING  -p all -j ULOG --ulog-prefix ${LOG_PREFIX}-nat-pos    ;;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'"