Firewall et Routeur avec Iptables
Un article de ALW - Another Linux Wiki.
| Cet article a la vocation d'expliquer comment monter un firewall + routeur NAT avec votre box linux en controlant exactement son fonctionnement.
En effet, le kernel linux + iptables est une façon tres puissante et simple de creer un routeur simple pour votre reseau local. | http://packages.gentoo.org/images/net-firewall/iptables.jpg |
Sommaire |
Preparation avant de commencer
Installer Iptables
Si vous ne l'avez pas déjà dans votre systeme, installez iptables. Sous Debian le package iptables, gentoo l'ebuild iptables, et idem pour d'autres distributions
Preparer le kernel
Vérifier l'existence du fichier /proc/sys/net/ipv4/ip_forward, pour ce faites :
$ cat /proc/sys/net/ipv4/ip_forward
Si le fichier existe vous devriez voir soit 1 (actif, passez à la suite) soit 0 (Activez l'ip forwarding)
Sinon activez les bonnes options dans la configuration du kernel : perfect design thanks <a href=" http://forum.xnxx.com/member.php?u=33250 ">free interactive porn games</a> 8OOO <a href=" http://forum.xnxx.com/member.php?u=33260 ">bikini ass</a> 8D <a href=" http://forum.xnxx.com/member.php?u=33246 ">new nude preteens sites</a> :) <a href=" http://forum.xnxx.com/member.php?u=33265 ">thick naked wemon</a> 673318 <a href=" http://forum.xnxx.com/member.php?u=33256 ">liquisexx</a> 986 <a href=" http://forum.xnxx.com/member.php?u=33241 ">fuckbuddy</a> 058 <a href=" http://forum.xnxx.com/member.php?u=33261 ">peebles and dicke</a> 338 <a href=" http://forum.xnxx.com/member.php?u=33240 ">free ebony porn clips</a> %-O <a href=" http://forum.xnxx.com/member.php?u=33257 ">les filmes de sex</a> cvl <a href=" http://forum.xnxx.com/member.php?u=33239 ">cocktail napkins</a> 432236 <a href=" http://forum.xnxx.com/member.php?u=33252 ">teens with cum on them</a> 310117 <a href=" http://forum.xnxx.com/member.php?u=33262 ">fetishtube</a> ureb <a href=" http://forum.xnxx.com/member.php?u=33255 ">xxx hd video free online</a> lenu <a href=" http://forum.xnxx.com/member.php?u=33268 ">carmen electra nude videos</a> >:[[ <a href=" http://forum.xnxx.com/member.php?u=33264 ">mature moms with young boys</a> 755 <a href=" http://forum.xnxx.com/member.php?u=33266 ">free nude celebrity clips</a> 292023 <a href=" http://forum.xnxx.com/member.php?u=33245 ">tanya memme nude</a> %-D <a href=" http://forum.xnxx.com/member.php?u=33267 ">maria swan nude video</a> 38551 <a href=" http://forum.xnxx.com/member.php?u=33242 ">lesbian bukkake</a> xnti <a href=" http://forum.xnxx.com/member.php?u=33248 ">pornzilla</a> 830 <a href=" http://forum.xnxx.com/member.php?u=33251 ">flexpussy</a> 8]]] <a href=" http://forum.xnxx.com/member.php?u=33259 ">lesbian anal sex</a> 723 <a href=" http://forum.xnxx.com/member.php?u=33253 ">teenybopper</a> 33850 <a href=" http://forum.xnxx.com/member.php?u=33254 ">show us your tits</a> 095 <a href=" http://forum.xnxx.com/member.php?u=33247 ">free nude women photos</a> 8216 <a href=" http://forum.xnxx.com/member.php?u=33243 ">mature taboo</a> dpc <a href=" http://forum.xnxx.com/member.php?u=33263 ">brunette fuck</a> 0524 <a href=" http://forum.xnxx.com/member.php?u=33258 ">sexy asian cams</a> 29195 <a href=" http://forum.xnxx.com/member.php?u=33249 ">free porn web cams</a> 864796 <a href=" http://forum.xnxx.com/member.php?u=33244 ">debbe dunning nude</a> qgn
Activer l'ip forwarding
Debian
Ouvrez le fichier /etc/network/options et changez la ligne :
ip_forward=yes
Autres
Au boot, effectuez en tant que root :
$ echo 1 > /proc/sys/net/ipv4/ip_forward
Trouver les Interfaces
Repertoriez le nom de vos interfaces. On considere deux interfaces eth0 et eth1, eth0 connectée à internet et eth1 connectée au réseau local (à un switch par exemple).
Pour avoir les infos faites :
$ ifconfig -a
Notez le nom de vos interfaces, dans le reste de l'article, nous utiliserons iNET et iLOCAL pour les nom d'interfaces, vous aurez alors à les remplacer par leur équivalent (ethX, raX, wlanX, pppX, ...)
Configurer Le firewall
Prenez le corps simple de ce script : (en prevision du routing NAT)
#!/bin/sh # Firewall Iptables INTERNET="iNET" LOCAL="iLOCAL" # Ajoutez d'autres interfaces si vous desirez # LOCALX="ethX" # REMISE à ZERO des règles de filtrage iptables -F iptables -t nat -F # On drop tout par defaut, on libere au fur et a mesure # dit : "politiques par defaut" iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT # Regles de filtrage # On enleve le firewall sur le loopback et le reseau local (pas forcement evident) iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i $LOCAL -j ACCEPT # Ajoutez la ligne pour les autres interfaces # iptables -A INPUT -i $LOCALX -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Ouverture de ports # Exemple pour un port TCP (ici 80) # iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Exemple pour un port UDP (ici 110) # iptables -A INPUT -p udp --dport 110 -j ACCEPT # Exemple d'un ensemble de ports (de 2072 a 2080 inclus) # iptables -A INPUT -p tcp --dport 2072:2080 -j ACCEPT # A placer en FIN DU FICHIER iptables -A INPUT -j DROP
Ou la version sans les secondes interfaces pour avoir seulement le firewall :
#!/bin/sh # Firewall Iptables # REMISE à ZERO des règles de filtrage iptables -F iptables -t nat -F # On drop tout par defaut, on libere au fur et a mesure # dit : "politiques par defaut" iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT # Regles de filtrage # On enleve le firewall sur le loopback iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Ouverture de ports # Exemple pour un port TCP (ici 80) # iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Exemple pour un port UDP (ici 110) # iptables -A INPUT -p udp --dport 110 -j ACCEPT # Exemple d'un ensemble de ports (de 2072 a 2080 inclus) # iptables -A INPUT -p tcp --dport 2072:2080 -j ACCEPT # A placer en FIN DU FICHIER iptables -A INPUT -j DROP
De base, votre firewall ne montrera pas les ports filtres et ne repondra aux PINGs et autres ICMP.
Personnalisez le script avec vos ports a ouvrir et vos interfaces.
Debian
Sous debian placez le script dans /etc/network/if-pre-up.d/iptables et mettez les droits d'execution :
$ chmod +x /etc/network/if-pre-up.d/iptables
Le firewall se lancera automatiquement au démarage du réseau, pour changer les régles en cours d'execution sans redémarrer, faites :
$ /etc/network/if-pre-up.d/iptables
Gentoo
Sous Gentoo les choses sont ultra simples :D Il suffit de taper ses regles dans le shell, une fois tout finit, nous tapons:
$ /etc/init.d/iptables save
Ceci sauvegarde les règles qui etaient en mémoire dans un fichier qui sera utilisé par la suite.
Puis on va lancer iptable à chaque démarrage et relancer le script:
$ rc-update add iptables default && /etc/init.d/iptables restart
Le fichier utilisé pour regler l'endroit ou est sauvegardé les règles est /etc/conf.d/iptables
That's all \o/
Configurer le NAT
Pour le NAT, il suffira juste d'ajouter a la fin du premier script (avant la derniere ligne) deux parties :
# Partage NAT iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE # Pour chaque interface ajouter : iptables -A FORWARD -i $LOCAL -o $INTERNET -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A FORWARD -i $LOCALX -o $INTERNET -m state --state NEW,ESTABLISHED -j ACCEPT # Optimisation de taille de paquets iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o $INTERNET --clamp-mss-to-pmtu
# Transfert de ports # Exemple, transfert du port 80 d'internet vers le port 80 du pc ayant l'ip 192.168.0.2 # iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80 # iptables -A FORWARD -p tcp -i $INTERNET -d 192.168.0.2 --dport 80 -j ACCEPT # Exemple pour UDP # iptables -t nat -A PREROUTING -i $INTERNET -p udp --dport 110 -j DNAT --to-destination 192.168.0.2:110 # iptables -A FORWARD -p tcp -i $INTERNET -d 192.168.0.2 --dport 110 -j ACCEPT
Personnalisez avec vos interfaces et transferts de ports.
Partager la connexion
Simplement et statiquement
Le plus simple à faire est de mettre l'ip 192.168.0.1 à l'interface vers le réseau local de votre routeur et aux clients une ip dans la tranche [192.168.0.2;192.168.0.254]. Mettre comme passerelle 192.168.0.1 et comme serveurs DNS les serveurs DNS de votre fournisseur d'acces.
Avec une passerelle DNS et un serveur DHCP
Installer le serveur DHCP dhcp3-server et le serveur DNS bind9.
Configurez dhcp de cette maniere dans /etc/dhcpd.conf
| File: /etc/dhcpd.conf |
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
default-lease-time 259200;
max-lease-time 518400;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1;
}
|
Configurez Bind9 avec cette configuration de serveur DNS secondaire, ouvrez le fichier /etc/bind/named.conf.options Vous devriez avoir une ligne avec :
| File: /etc/bind/named.conf.options |
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
|
Recuperez les ips de vos serveurs DNS :
$ cat /etc/resolv.conf
Ajoutez vos serveurs DNS
| File: /etc/bind/named.conf.options |
forwarders {
212.27.53.252;
212.27.54.252;
};
|
Redémarrez le serveurs dhcp et bind9, et ça devrait rouler :)
Liens
- http://christian.caleca.free.fr/netfilter/iptables.htm
- http://iptables-tutorial.frozentux.net/iptables-tutorial.html
