Dernière modification : February 15 2007 07:03:04.
FIREWALL:
Ici, vous trouverez un exemple de script pour une machine qui fait office de routeur et de firewall.
Tout d'abord vous devez posseder Iptable.
Ce firewall fait aussi office de routeur.
SCRIPT DEMARRANT LE FIREWALL:
#!/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"
Voir les commentairesAjouter un commentaire