All pastes #280059 Raw Edit

Trucs

public text v1 · immutable
·published 2006-12-15 16:40 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 interne
LAN_IP=192.168.1.2            ; # Adresse rseau interne
LAN_NETWORK=192.168.1.0/24    ; # Rseau interne
LAN_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 LAN
PORT_TCP_SIMPSON=34909,5900:5902
PORT_TCP_HOMER=34000,40529
PORT_UDP_SIMPSON=27990
PORT_UDP_HOMER=27000

# 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 tout
LOG=ULOG_IN-OUT
LOG_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 -F
iptables -t filter -X 
iptables -t filter -P INPUT   DROP
iptables -t filter -P FORWARD DROP
iptables -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 -F
iptables -t nat -X 
iptables -t nat -P PREROUTING  ACCEPT
iptables -t nat -P OUTPUT      ACCEPT
iptables -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 -F
iptables -t mangle -X 
iptables -t mangle -P PREROUTING  ACCEPT
iptables -t mangle -P INPUT       ACCEPT
iptables -t mangle -P FORWARD     ACCEPT
iptables -t mangle -P OUTPUT      ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT

echo "+ 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 ACCEPT

iptables -t filter -A INPUT  -i lo -p all -j ACCEPT

# Ces deux rgles 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 <-> rseau

iptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $LAN_IP -d $LAN_NETWORK -p all -j ACCEPT

iptables -t filter -A INPUT -i $LAN_INTERFACE -s $LAN_NETWORK -d $LAN_IP -p all -j ACCEPT
    
# Connexions firewall <-> broadcast rseau

iptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $LAN_IP -d $LAN_BROADCAST -p all -j ACCEPT

iptables -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 ACCEPT

iptables -t filter -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p tcp -m multiport --dports 80,22 -j ACCEPT

iptables -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 --dports $PORT_TCP_HOMER,$PORT_TCP_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 tcp -m multiport --sports $PORT_TCP_HOMER,$PORT_TCP_SIMPSON -m state --state ESTABLISHED,RELATED -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,$PORT_UDP_HOMER -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,$PORT_UDP_HOMER -m state --state ESTABLISHED,RELATED -j ACCEPT

#Port TCP 

iptables -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.10

iptables -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_IP

iptables -t nat -A PREROUTING -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp -m multiport --dports $PORT_TCP_HOMER -j DNAT --to-destination 192.168.1.9

iptables -t nat -A POSTROUTING -o $LAN_INTERFACE -s $WAN_NETWORK -d 192.168.1.9 -p tcp -m multiport --dports $PORT_TCP_HOMER -j SNAT --to-source $LAN_IP

#Port UDP

iptables -t nat -A PREROUTING -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p udp --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 --dport $PORT_UDP_SIMSPON -j SNAT --to-source $LAN_IP

iptables -t nat -A PREROUTING -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p udp --dport $PORT_UDP_HOMER -j DNAT --to-destination 192.168.1.9

iptables -t nat -A POSTROUTING -o $LAN_INTERFACE -s $WAN_NETWORK -d 192.168.1.9 -p udp --dport $PORT_UDP_HOMER -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 ACCEPT

iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -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'"