#!/bin/sh # mettez ici l'emplacement d'iptables : IPTABLES=/sbin/iptables # mettez ici le nom de l'interface réseau vers internet : EXTERNAL_IF="ppp0" # mettez ici le nom de l'interface réseau vers votre lan : INTERNAL_IF="eth0" #charge les modules modprobe ip_nat_ftp modprobe ip_nat_irc modprobe iptable_filter modprobe iptable_mangle modprobe iptable_nat modprobe ip_masq_ftp modprobe ip_masq_user echo "Module Chargé" #partage de connexion echo 1 > /proc/sys/net/ipv4/ip_forward #autorise le reseau a envoye des donnees sur internet iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE echo "Partage de connexion actif" #masque les machines local $IPTABLES -A POSTROUTING -t nat -o $EXTERNAL_IF -j MASQUERADE #liste des modules possible #ls /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ #refus de tout $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP echo "Refus de toutes les connexions" # DROP des paquets NETBIOS iptables -A INPUT -i $EXTERNAL_IF -p udp --dport 137:139 -j DROP iptables -A INPUT -i $EXTERNAL_IF -p tcp --dport 137:139 -j DROP echo "Netbios actif"$IPTABLES -A tcp_inbound -p TCP -s 0/0 --destination-port 6891:6900 -j ACCEPT #regles reseau local on accepte tous # "On accepte le traffic sur 'lo'" $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT $IPTABLES -A FORWARD -i lo -j ACCEPT $IPTABLES -A FORWARD -o lo -j ACCEPT echo "Toutes les connexions internes sont actives" # "On accepte le traffic sur le réseau local" # Vous pouvez personaliser cette règle en s'appuyant sur les regles du traffic vers internet $IPTABLES -A INPUT -i $INTERNAL_IF -j ACCEPT $IPTABLES -A OUTPUT -o $INTERNAL_IF -j ACCEPT $IPTABLES -A FORWARD -i $INTERNAL_IF -j ACCEPT $IPTABLES -A FORWARD -o $INTERNAL_IF -j ACCEPT echo "Réseau local actif" #Logguer les packets DROPés #Logguer les packets au début afin de vérifier que tous fonctionne #Apres commentez ces lignes car cela prend beaucoup de place $IPTABLES -N LOG_DROP $IPTABLES -A LOG_DROP -j LOG --log-prefix "[FIREWALL refus] " $IPTABLES -A LOG_DROP -j DROP echo "Prépare les log" #pour la resolution des dns $IPTABLES -A INPUT -i $EXTERNAL_IF --protocol udp --source-port 53 -j ACCEPT $IPTABLES -A OUTPUT -o $EXTERNAL_IF --protocol udp --destination-port 53 -j ACCEPT $IPTABLES -A INPUT -i $EXTERNAL_IF --protocol tcp --source-port 53 -j ACCEPT $IPTABLES -A OUTPUT -o $EXTERNAL_IF --protocol tcp --destination-port 53 -j ACCEPT echo "DNS accordé" #pour accepter de sufer sur le web $IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport www -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --dport www -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT echo "Surf possible" #pour le serveur web sur le routeur $IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport www -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --dport www -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT echo "Serveur WEB accordé" #Pour serveur pop3 $IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --dport pop-3 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT echo "Réception de mail" #pour seveur smtp #$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport smtp -m state --state ESTABLISHED,RELATED -j ACCEPT #pour l'envoi de mail $IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --dport smtp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT echo "Envoi de mail" #on accepte les requete ftp entrantes $IPTABLES -t filter -A INPUT -p tcp --source-port ftp -j ACCEPT $IPTABLES -t filter -A INPUT -p tcp --destination-port ftp -j ACCEPT echo "Ftp entrant ok" #msn transfert de fichier $IPTABLES -A INPUT -p TCP --sport 6891:6900 -j ACCEPT $IPTABLES -A OUTPUT -p tcp --dport 6891:6900 -j ACCEPT #msn communication #$IPTABLES -A INPUT -p tcp --sport 1863 -j ACCEPT $IPTABLES -A INPUT -i $EXTERNAL_IF --protocol tcp --sport 1863 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -o $EXTERNAL_IF --protocol tcp --dport 1863 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT echo "Msn accorde" #limite du ping $IPTABLES -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT echo "ping ok" #reseau donkey udp:4672 tcp:4662 #on accept sur les port entrants par défault d'eMULE $IPTABLES -A INPUT -p tcp --dport 4662 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 34037 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 34038 -j ACCEPT echo "Emule ouverture du port entrant 4662 " $IPTABLES -A INPUT -p udp --dport 4672 -j ACCEPT echo "Emule ouverture du port entrant 4672 " # on accepte les sorties pour emule $IPTABLES -A INPUT -p tcp --sport 4662 -j ACCEPT echo "Emule ouverture du port sortant 4662 " $IPTABLES -A INPUT -p udp --sport 4672 -j ACCEPT echo "Emule ouverture du port sortant 4672 " # On accepte de le laisser sortir du firewall et on accpete les connexions entrantes que l'on a initiées $IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A INPUT -m state --state ESTABLISHED -j ACCEPT echo "connexion ouverte ok" #accord ssh $IPTABLES -t filter -A INPUT -i $INTERNAL_IF -s 0.0.0.0/0 -d 192.168.0.2 -p tcp --dport 22 -j ACCEPT echo "ssh accorde" #pour rediriger vers un serveur web si besoin sur le reseau local #iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80 # Décommentez la ligne suivante pour que le serveur CUPS éventuel # soit joignable de l'extérieur #$IPTABLES -A INPUT -p tcp --sport 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 ucp --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 #on log tout $IPTABLES -A FORWARD -j LOG_DROP $IPTABLES -A INPUT -j LOG_DROP $IPTABLES -A OUTPUT -j LOG_DROP echo "firewall actif" echo "log dans /var/log/messages"