#!/bin/sh
# /etc/network/if-pre-up.d/iptables-start
# Script qui démarre les règles de filtrage "iptables"
# Formation Debian GNU/Linux par Alexis de Lattre
# http://www.via.ecp.fr/~alexis/formation-linux/
EXT=ppp0
LAN=eth1
LO=lo
#(Effacez les règles en cours)
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -X
iptables -t nat -X
iptables -t mangle -X
# DEBUT des "politiques par défaut"
# Je veux que les connexions entrantes soient bloquées par défaut
#iptables -P INPUT ACCEPT
iptables -P INPUT DROP
# Je veux que les connexions destinées à être forwardées soient acceptées par défaut
iptables -P FORWARD ACCEPT
# Je veux que les connexions sortantes soient acceptées par défaut
iptables -P OUTPUT ACCEPT
# FIN des "politiques par défaut"
# DEBUT des règles de filtrage
# Pas de filtrage sur l'interface de "loopback"
#iptables -A INPUT -i 127.0.0.1 -j ACCEPT
iptables -t filter -A OUTPUT -o lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
iptables -t filter -A INPUT -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
# J'accepte le protocole ICMP (i.e. le "ping")
iptables -A INPUT -p icmp -j ACCEPT
# J'accepte le protocole IGMP (pour le multicast)
iptables -A INPUT -p igmp -j ACCEPT
# J'accepte les packets entrants relatifs à des connexions déjà établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#(Eliminer les paquets destinés aux ports privilégiés)
iptables -A INPUT -p TCP -i ! $LAN -d 0/0 --dport 0:1023 -j DROP
iptables -A INPUT -p UDP -i ! $LAN -d 0/0 --dport 0:1023 -j DROP
#ftp depuis l'exterieur
#iptables -A INPUT -p tcp --dport 60648 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# ssh depusi l'exterieur
iptables -A INPUT -p tcp --dport 60666 -j ACCEPT
#pour le transfert irc
iptables -A INPUT -p tcp --dport 6881:6883 -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 60687 -j ACCEPT
# Décommentez la ligne suivante pour que le serveur de mail éventuel
# soit joignable de l'extérieur
#iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# Décommentez les deux lignes suivantes pour que le serveur de DNS éventuel
# soit joignable de l'extérieur
#iptables -A INPUT -p tcp --dport 53 -j ACCEPT
#iptables -A INPUT -p udp --dport 53 -j ACCEPT
# Décommentez la ligne suivante pour que le serveur CUPS éventuel
# soit joignable de l'extérieur
#iptables -A INPUT -p tcp --dport 631 -j ACCEPT
# Décommentez les deux lignes suivantes pour que le serveur Samba éventuel
# soit joignable de l'extérieur
#iptables -A INPUT -p tcp --dport 139 -j ACCEPT
#iptables -A INPUT -p udp --dport 139 -j ACCEPT
# Décommentez la ligne suivante pour que des clients puissent se connecter
# à l'ordinateur par XDMCP)
#iptables -A INPUT -p udp --dport 177 -j ACCEPT
# Décommentez la ligne suivante pour que l'odinateur puisse se connecter
# par XDMCP à une machine distante)
#iptables -A INPUT -p tcp --dport 6001 -j ACCEPT
# Décommentez la ligne suivante pour que le serveur CVS éventuel
# soit joignable de l'extérieur via le mécanisme de "pserver"
# (si les utilisateurs accèdent au serveur CVS exclusivement via SSH,
# seule la ligne concernant le serveur SSH doit être décommentée)
#iptables -A INPUT -p tcp --dport 2401 -j ACCEPT
# Décommentez la ligne suivante pour pouvoir reçevoir des flux VideoLAN
# (ce sont des flux UDP entrants sur le port 1234)
#iptables -A INPUT -p udp --dport 1234 -j ACCEPT
# Décommentez la ligne suivante pour pouvoir reçevoir des annonces SAP
# (ce sont des annonces de session multicast)
#iptables -A INPUT -p udp -d 224.2.127.254 --dport 9875 -j ACCEPT
# Décommentez les 3 lignes suivantes pour pouvoir utiliser GnomeMeeting
#iptables -A INPUT -p tcp --dport 30000:33000 -j ACCEPT
#iptables -A INPUT -p tcp --dport 1720 -j ACCEPT
#iptables -A INPUT -p udp --dport 5000:5006 -j ACCEPT
# La règle par défaut pour la chaine INPUT devient "REJECT"
# (il n'est pas possible de mettre REJECT comme politique par défaut)
iptables -A INPUT -j REJECT
# Deny ICMP echo-requests
iptables -t filter -A INPUT -i $EXT -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 $EXT -p tcp --syn -j DROP
#(Ajoutez les règles pour le NAT)
iptables -I FORWARD -i $LAN -d 192.168.0.0/255.255.0.0 -j DROP
iptables -A FORWARD -i $LAN -s 192.168.0.0/255.255.0.0 -j ACCEPT
iptables -A FORWARD -i $EXT -d 192.168.0.0/255.255.0.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE
#(Indiquez au noyau d'effectuer le transfert IP)
echo 1 > /proc/sys/net/ipv4/ip_forward
# 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
#pour rediriger le ssh dde husss vers 2quarante
iptables -t nat -A PREROUTING -p tcp --dport 666 -i $EXT -j DNAT --to 192.168.0.175:666
#idem mais ftp
iptables -t nat -A PREROUTING -p tcp --dport 60647 -i $EXT -j DNAT --to 192.168.0.175:60648
#idem pour apache
iptables -t nat -A PREROUTING -p tcp --dport 7824 -i $EXT -j DNAT --to 192.168.0.175:80
#pour vnc
iptables -t nat -A PREROUTING -p tcp --dport 5900 -i $EXT -j DNAT --to 192.168.0.175:5900
echo "husss: ssh --> 60666 ftp --> 21 http --> 60687"
echo "2quarante: ssh --> 666 ftp --> 60647 http --> 7824 vnc --> 5900"
# Si la connexion que vous partagez est une connexion ADSL, vous
# serez probablement confronté au fameux problème du MTU. En résumé,
# le problème vient du fait que le MTU de la liaison entre votre
# fournisseur d'accès et le serveur NAT est un petit peu inférieur au
# MTU de la liaison Ethernet qui relie le serveur NAT aux machines qui
# sont derrière le NAT. Pour résoudre ce problème, décommentez la ligne
# suivante et remplaçez "eth0" par le nom de l'interface connectée à
# Internet.
#iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o eth0 --clamp-mss-to-pmtu