All pastes #204949 Raw Edit

Quelqu'un

public text v1 · immutable
#204949 ·published 2006-10-16 11:49 UTC
rendered paste body
#!/bin/sh -norc

# Paramètrage du réseau local (LAN = Local Area Network)
LAN_INTERFACE=eth1           ; # Interface réseau interne
LAN_IP=192.168.0.1            ; # Adresse réseau interne
LAN_NETWORK=192.168.0.0/24    ; # Réseau interne
LAN_BROADCAST=192.168.0.255   ; # Adresse de broadcast interne

# Paramètrage de la connexion Internet (WAN = Wild Area Network = Réseau Large)
#WAN_INTERFACE=eth1           ; # Interface réseau externe (Internet)
#WAN_IP=10.0.0.1               ; # Adresse réseau externe (Internet)
#WAN_NETWORK=10.0.0.0/8        ; # Réseau 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 détecter
# automatiquement votre adresse IP Internet
WAN_INTERFACE=eth0            ; # Interface modem
WAN_IP=192.168.1.173
#WAN_IP=`/sbin/ifconfig | grep "P-t-P" | sed "s/^[: a-z]*\([.0-9]*\).*/\1/g"`  ; # Récupère l'adresse réseau externe (Internet)
WAN_NETWORK=0.0.0.0/0

# Paramètrage de l'IP masquerading
#   NAT=0   <=> Le NAT N'est PAS autorisé 
#   NAT=1   <=> Le NAT est autorisé 
NAT=0

# Paramètrage du port forwarding
#   PF=0   <=> Le port forwarding N'est PAS autorisé 
#   PF=1   <=> Le port forwarding est autorisé 
PF=0
PF_PROTO=tcp         ; # Type de frame


FTP_2QUARANTE=60647 	; #port ftp sur 2quarante
VNC_2QUARANTE=5900      ; #port vnc sur 2quarante
SSH_2QUARANTE=666	; #port ssh sur 2quarante
WEB_2QUARANTE=80	; #port web sur 2quarante

PF_IP=192.168.1.173    ; # Adresse IP du serveur sur le LAN



# Paramétrage du LOG
#   LOG=LOG_IN      <=> On log toutes les tentatives d'intrusions non autorisées
#   LOG=LOG_OUT     <=> On log toutes les tentatives de sortie non autorisées
#   LOG=LOG_IN-OUT  <=> On log toutes les tentatives d'entrées et sorties non autorisées
#   LOG=ULOG_IN     <=> On log (avec ULOG) toutes les tentatives d'intrusions non autorisée
#   LOG=ULOG_OUT    <=> On log (avec ULOG) toutes les tentatives de sorties non autorisées
#   LOG=ULOG_IN-OUT <=> On log (avec ULOG) toutes les tentatives d'entrées et sorties non autorisées
#   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 défaut tout les échanges sont refusés)
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 défaut tout les échanges sont activés)
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 défaut tout les échanges sont activés)
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 "+ Desactivation du NAT"
echo 0 > /proc/sys/net/ipv4/ip_forward

###############################################################################
# Règles du localhost
# On NE fait PAS de restriction aux adresses IP source / destination 127.0.0.0
###############################################################################

echo "+ Règles du localhost"
iptables -t filter -A OUTPUT -o lo -p all -j ACCEPT
iptables -t filter -A INPUT  -i lo -p all -j ACCEPT


###############################################################################
# Règles de conexion au reseau local
# Tout est autorisé
###############################################################################

echo "+ Règles du réseau local ($LAN_INTERFACE - $LAN_IP - $LAN_NETWORK)"
# Connexions firewall <-> réseau
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 réseau
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


###############################################################################
# Règles de connexion à Internet
# Seul les connexions initialisés par la machine sont autorisées
# C'est le suivit de connexion
###############################################################################

# Chargement des modules pour le suivit de connexion
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc



echo "+ Règles 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 -s $WAN_NETWORK -d $WAN_IP -p all -m state --state RELATED,ESTABLISHED -j ACCEPT



###############################################################################
# Règles pour le port forwarding
# Pour que le port forwarding soit activé, il faut la variable "$PF" soit à "1"
###############################################################################

if [ "$PF" == "1" ]; then
  # Chargement des modules pour le port forwarding
  modprobe iptable_nat

  echo "+ Autorise le port forwardong de $WAN_IP:$VNC_2QUARANTE -> $PF_IP:$VNC_2QUARANTE"
  iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p $PF_PROTO --dport $VNC_2QUARANTE -m state --state ! INVALID           -j ACCEPT
  iptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p $PF_PROTO --sport $VNC_2QUARANTE -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -t nat    -A PREROUTING                -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP      -p $PF_PROTO --dport $VNC_2QUARANTE -j DNAT --to-destination $PF_IP
  iptables -t nat    -A POSTROUTING               -o $LAN_INTERFACE -s $WAN_NETWORK -d $PF_IP       -p $PF_PROTO --dport $VNC_2QUARANTE -j SNAT --to-source $LAN_IP


  echo "+ Autorise le port forwardong de $WAN_IP:$SSH_2QUARANTE -> $PF_IP:$SSH_2QUARANTE"
  iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p $PF_PROTO --dport $SSH_2QUARANTE -m state --state ! INVALID           -j ACCEPT
  iptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p $PF_PROTO --sport $SSH_2QUARANTE -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -t nat    -A PREROUTING                -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP      -p $PF_PROTO --dport $SSH_2QUARANTE -j DNAT --to-destination $PF_IP
  iptables -t nat    -A POSTROUTING               -o $LAN_INTERFACE -s $WAN_NETWORK -d $PF_IP       -p $PF_PROTO --dport $SSH_2QUARANTE -j SNAT --to-source $LAN_IP


  echo "+ Autorise le port forwardong de $WAN_IP:$FTP_2QUARANTE -> $PF_IP:$FTP_2QUARANTE"
  iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p $PF_PROTO --dport $FTP_2QUARANTE -m state --state ! INVALID           -j ACCEPT
  iptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p $PF_PROTO --sport $FTP_2QUARANTE -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -t nat    -A PREROUTING                -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP      -p $PF_PROTO --dport $FTP_2QUARANTE -j DNAT --to-destination $PF_IP
  iptables -t nat    -A POSTROUTING               -o $LAN_INTERFACE -s $WAN_NETWORK -d $PF_IP       -p $PF_PROTO --dport $FTP_2QUARANTE -j SNAT --to-source $LAN_IP


  echo "+ Autorise le port forwardong de $WAN_IP:$WEB_2QUARANTE -> $PF_IP:$WEB_2QUARANTE"
  iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p $PF_PROTO --dport $WEB_2QUARANTE -m state --state ! INVALID           -j ACCEPT
  iptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p $PF_PROTO --sport $WEB_2QUARANTE -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -t nat    -A PREROUTING                -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP      -p $PF_PROTO --dport $WEB_2QUARANTE -j DNAT --to-destination $PF_IP
  iptables -t nat    -A POSTROUTING               -o $LAN_INTERFACE -s $WAN_NETWORK -d $PF_IP       -p $PF_PROTO --dport $WEB_2QUARANTE -j SNAT --to-source $LAN_IP




  echo 1 > /proc/sys/net/ipv4/ip_forward

else
  echo "+ Le port forwarding N'est PAS autorisé"
  if [ "$NAT" == "0" ]; then
    echo 0 > /proc/sys/net/ipv4/ip_forward
  fi
fi


###############################################################################
# Règles pour l'IP masquerading
# Pour que le IP masquerading soit activé, il faut la variable "$NAT" soit à "1"
###############################################################################

if [ "$NAT" == "1" ]; then
  # Chargement des modules pour l'IP masquerading
  modprobe iptable_nat
  modprobe ip_nat_ftp
  modprobe ip_nat_irc

  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

  echo 1 > /proc/sys/net/ipv4/ip_forward

else
  echo "+ L'IP masquerading N'est PAS autorisé"
  echo 0 > /proc/sys/net/ipv4/ip_forward
fi





###############################################################################
# Règles diverses choppés ici ou là sans que je les comprenne
###############################################################################

# pas d'ip spoofing 
#for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

# Disable Source Routed Packets
#for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do
 #  echo 0 > $i
#done

#permettre le ftp
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc



# ssh depusi l'exterieur
iptables -A INPUT -p tcp --dport 1698 -j ACCEPT

#pour le transfert irc 
iptables -A INPUT -p tcp --dport    6881:6886     -j ACCEPT

#pour le transfert msn 
iptables -A INPUT -p tcp --dport 6891:6901 -j ACCEPT
#video sur msn 
#iptables -A INPUT -p tcp --dport 6901 -j ACCEPT

#serveur web accessible de l'exterieur 
iptables -A INPUT -p tcp --dport 3698 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 3698 -j ACCEPT

#iptables -A INPUT -p tcp --dport 7963 -j ACCEPT
#iptables -A INPUT -p tcp --dport 3698 -m state --state NEW -j ACCEPT
#iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A INPUT -p tcp --dport 7963 -j ACCEPT
#iptables -A INPUT -p tcp --dport 7963 -m state --state NEW -j ACCEPT
#iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

###############################################################################
# Règles 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'"














#(Eliminer les paquets destinés aux ports privilégiés)
 #iptables -A INPUT -p TCP -i ! $LAN_INTERFACE -d 0/0 --dport 0:1023 -j DROP
 #iptables -A INPUT -p UDP -i ! $LAN_INTERFACE -d 0/0 --dport 0:1023 -j DROP
#iptables -A INPUT -p TCP -i $WAN_INTERFACE -d 0/0 --dport 0:19 -j DROP
#iptables -A INPUT -p UDP -i $WAN_INTERFACE -d 0/0 --dport 0:19 -j DROP
#iptables -A INPUT -p TCP -i $WAN_INTERFACE -d 0/0 --dport 22:1023 -j DROP
#iptables -A INPUT -p UDP -i $WAN_INTERFACE -d 0/0 --dport 22:1023 -j DROP
# Deny ICMP echo-requests
#iptables -t filter -A INPUT -i $WAN_INTERFACE -p icmp --icmp-type echo-request -j DROP
# Deny TCP connection attempts
#iptables -A INPUT -i $EXT -p tcp --syn -j LOG
#iptables -A INPUT -i  $WAN_INTERFACE -p tcp --syn -j DROP
# edonkey depuis l'exterieur
# torrent  depuis l'exterieur
#iptables -A INPUT -p tcp --dport 8793 -j ACCEPT
# edonkey depuis l'exterieur
# soulseek depusi l'exterieur
#iptables -A INPUT -p tcp --dport 2240 -j ACCEPT