Académique Documents
Professionnel Documents
Culture Documents
Iptables
Drnires modifications : Monday 07 April 2003
La drnire version de ce document est disponible ici : http://tuxz.org/cours/iptables/
Stphane Sals
s.sales@tuxz.org
Table of Contents
1.COURS
2.TP IPTABLES
2
2
3
4
5
5
5
5
5
5
5
5
5
5
5
5
7
7
7
7
--to-source options. If you specify more than one source address, either via
Page (one
1 sur 12
an address range or multiple --to-source options, a simple round-robin
after another in cycle) takes place between these adresses.
9
Monday
07 April 2003
2.3.1.TODO: 3.--to-source ipaddr[-ipaddr][:port-port You can
add several
--to-source options. If you specify more than one source address, either via
an address range or multiple --to-source options, a simple round-robin (one
after another in cycle) takes place between these adresses.
9
Page 2 sur 12
1. COURS
1.1. Mettons nous en situation :
j'ai 3 machines en rseau(raccords via un switch) qui forme mon LAN, une de ces machines
possde 2 interfaces rseaux :
- une carte rseau reli au switch qui sera donc mon interface pour joindre mon LAN
- une connexion modem reli un autre rseau, en l'occurrence Internet
Un schma valant mille explications :
Nous ne dtaillerons pas ici l'installation d'iptables tant donn que nous travaillerons sur des
Debian munis du noyau 2.4.18-bf2.4 qui contient tout ce dont nous avons besoin(la seule chose
restant ventuellement faire tant de charger les modules dont nous nous serviront, une
commande permettant de charger un module est :
modprobe module
* monter un firewall filtrant bas sur les paquets mais aussi sur le statut des connexions
Page 3 sur 12
* monter un firewall filtrant bas sur les paquets mais aussi sur le statut
Monday
des connexions
07 April 2003
engendrs par les paquets(le suivi de connexion)
* utiliser NAT(Network Address Translation) et le masquerading afin de partager un accs
internet plusieurs machines
* utiliser NAT pour faire du proxy transparent(vite d'avoir paramtrer le proxy sur les
clients/navigateurs web)
* mettre en place(notamment en permettant le marquage des paquets via la table mangle) la
possibilit d'utiliser tc+iproute2 dans le but d'obtenir un routeur sophistiqu permettant le
QoS(Quality of Service, ie privilgi certains services, mettre en place des limites d'utilisation de
bande passante sur un utilisateur, sur un groupe etc)
* manipuler des paquets pour par exemple altr le champ TOS(2) d'un datagramme IP
Nous allons donc nous positionner comme tant sur la machine qui fera office de firewall/routeur
pour tenter de la scuriser.
Lorsqu'un paquet arrive, il va tre orient(selon un certain nombre de paramtres) dans l'une des
diffrentes chanes disponibles.
Ainsi que nous le montres le schma un paquet rentrera toujours dans la machine via la chane
PREROUTING et sortira toujours de la machine via la chane POSTROUTING(chanes servant
notamment certaines oprations de routage entre les 2 rseaux) raccords par notre routeur.
Les chanes INPUT et OUTPUT quand elle serviront respectivement placer des rgles pour les
paquets destins la machine et ceux mis par la machine, pour faire simple si un paquet est
destin ma machine, "il arrivera dans la chane INPUT" [1]
Par exemple si je demande la visualisation d'une page sur le web depuis la machine, j'mets une
requte qui sortira par la chane OUTPUT et la rponse arrivera sur ma machine par la chane
Page 4 sur 12
INPUT .
Par exemple si je demande la visualisation d'une page sur le web depuis la machine,
Monday j'mets
07 Aprilune
2003
requte qui sortira par la chane OUTPUT et la rponse arrivera sur ma machine par la chane
INPUT .
[La nuance est dans le "destin", savoir que l'on peut considrer qu'un paquet destination du
LAN sera, au moins certain(s) moment(s) et certain(s) niveau(x) du modle OSI, destin la
machine faisant office de routeur mais sera lui orient dans la chane FORWARD et non pas dans la
chane INPUT]
Au moment o le paquet rentre dans la chane, les rgles correspondant cette chane sont
appliques dans l'ordre dans lequel elles sont stockes.
tant donn que pour la premire partie du tp nous n'utiliserons que la table filter, nous pourrons
omettre durant celle ci le paramtre -t, car en l'absence de celui-ci la table filter est utilis par
dfaut.
Pour manipuler les rgles appliques une chane, on utilisera les paramtres :
-A pour append : rajouter une rgle la suite des autres(la premire rgle pass par -A se
retrouve en premire position, les suivantes se retrouve la suite)
-D pour delete : effacer une rgle
-D numerox : effacer la rgle numro x
-D rgle : efface la rgle
-F pour flush : on obtient le mme rsultat en effaant toutes les rgles une par une
-P : sert fixer les policy par dfaut, c'est dire fixer l'action prendre par dfaut(ie
quand aucune rgle n'est match).
La premier paramtre connatre est le paramtre -j, car c'est avec celui-ci que l'on va dire quoi
faire lorsqu'un paquet match la rgle que l'on crit. Le paramtre -j s'utilise de la manire suivante :
-j target
Ainsi une rgle basique sera de la forme :
iptables -A chane -j target
Nous utiliserons dans un premier temps les 2 cibles suivantes(ensuite nous verrons que nous
pourrons crer nos propre cibles) :
ACCEPT: laisser passer le paquet
DROP : refuser le paquet
[ par dfaut il existe une cible QUEUE et RETURN que nous n'utiliserons pas dans ce tp]
N.B: avant de commencer le tp vous prendrez soin de couper tout service qui pourrait modifier les
rgles iptables(/etc/init.d/service stop, o service peut tre iptables,shorewall etc).
Vous vrifierez avec la commande iptables -L (liste les rgles qui sont en ce moment applique) qui
devra vous donner ceci :
# iptables -L
Chain INPUT (policy ACCEPT)
target
prot opt source
destination
destination
Page 5 sur 12
destination
Le "policy ACCEPT" n'est pas bnin, en effet ceci prcise l'action prendre par dfaut(i.e quand
aucune rgle ne match)
2. TP IPTABLES
2.1. Oprations sur une seule chane et sur la table filter:
Crer les rgles suivantes : (vous noterez sur cette feuille chacune des rgles demandes, ainsi
que le test de la rgle, savoir un copi/coll du terminal, et/ou du rsultat d'un sniff(
ethereal,ngrep etc)
2.1.1. Premire rgle
Interdire tout paquet entrant
Effacer la rgle
HELP : Les services qui tournent sur des ports < 1024 sont des services qui tournent sous le
compte root et sont donc protger prioritairement
effacer la rgle et retester une connexion ftp
Page 6 sur 12
Page 7 sur 12
Page 8 sur 12
Page 9 sur 12
Nous considrerons qu' iptables est install sur la machine servant de routeur/firewall et nous allons
donc nous attacher crire le script pour cette machine.
Les machines, le routeur et le serveur plac dans la DMZ, doivent tre protges au mieux.
Le routeur a 3 interfaces rseau :
eth0(192.168.0.254) reli la DMZ
eth1(192.168.1.254) reli au LAN
ppp0(62.212.36.222) reli internet
La machine doit pouvoir tre joignable via SSH depuis le LAN, et depuis Internet.
Les machines du LAN doivent pouvoir aller sur Internet(HTTP et FTP).
Les machines du LAN doivent pouvoir pinger une machine sur Internet.
Sur la DMZ, la machine 192.168.0.1 hberge le site web de l'entreprise, un relay mail et un serveur
imap-ssl qui doivent tre joignable, depuis le LAN, et depuis Internet. Cette machine doit aussi tre
joignable par SSH depuis le LAN et depuis Internet.
Page 10 sur 12
| D | T | R | 0 | 0 |
+-----+-----+-----+-----+-----+-----+-----+-----+
Aide :
HELP : man iptables : INCONTOURNABLE
HELP : iptables --help, iptables -p TCP --help, iptables -p icmp --help etc
HELP : iptables -L : liste les rgles iptables actives
HELP : un certain nombre de paramtre sont activable via le systme de fichier virtuel /proc,
par exemple pour activer le port forwarding on s'y prends comme cela :
HELP : echo 1 > /proc/sys/net/ipv4/ip_forward
HELP : /etc/services(voir aussi /etc/protocols) : liste les services et leur numro de port
HELP : /usr/include/linux/icmp.h : liste des noms des diffrents type et code icmp
HELP : http://www.netfilter.org/documentation/HOWTO/fr/packet-filtering-HOWTO.html
HELP : http://christian.caleca.free.fr/netfilter/
HELP : D'une manire gnrale quand on ne comprends pas ce qui ce passe(pourquoi a
marche ? pourquoi a marche pas ?) on place une rgle de log et on regarde les logs
ainsi cres
Page 12 sur 12