#!/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