Sie sind auf Seite 1von 37

www.udivers.

com IPTABLES FIREWALL

Plan
Prsentation gnrale

Firewall avec IPChains


Firewall avec IPTables (NetFilter)

Partie 1
Prsentation gnrale

Firewall avec IPChains


Firewall avec IPTables (NetFilter)

Dfinition thorique
Firewall
Logiciel de contrle daccs au niveau du rseau Divers niveaux de filtrage
Liaison (adresse MAC, ) Rseau (en ttes IP, IPX, et type/code ICMP) Transport (ports TCP/UDP) Filtrage adaptatif ( statefull inspection ) ou dynamique Session ( circuit level gateway , SOCKS) Application (relais applicatifs application proxys ).

Dfinition pratique
Mais pratiquement :
Fonctionnalit principale : filtrage IP Fonctionnalit supplmentaire : traduction dadresses et de ports

Filtrage IP
Ide : contrler les paquets IP autoriss atteindre un hte Intrt : scuriser un hte de faon globale (au niveau rseau)

Traduction dadresses et de ports


Ide : rcrire les en-ttes des paquets Intrt : faire face la pnurie dadresses routables sur lInternet.

Avantages des firewalls


Gestion de la scurit concentre

Configuration peu sensible lchelle du primtre de scurit


Capacit daudit du trafic rseau Traces supplmentaires pour certains incidents

Concentrer la maintenance quelques heures/jours sur une ou plusieurs machines plutt quun parc

Inconvnients des firewalls


Goulet dtranglement rseau Point nvralgique de larchitecture de scurit Complexe :
Connaissance ncessaire des protocoles filtrs (TCP/IP, HTTP, mais aussi FTP, SQL, )

Comprhension du fonctionnement du parefeu (interface entre les divers niveaux de filtrage, traduction dadresse)

Firewalls libres
Netfilter
Filtre de paquets du noyau Linux 2.4 Successeur dIPChains (Linux 2.2) Dvelopp par Paul Russell

IP Filter
Filtre de paquets fonctionnant sous Unix libres et propritaires Intgr dans FreeBSD et NetBSD Conu et dvelopp par Darren Reed

Packet Filter
Filtre de paquets dans OpenBSD ( partir de la version 3.0) Conu par Daniel Hartmeier

Filtrage IP standard
Critres
Interface rseau : entre ou sortie Adresses IP (source et destination) : hte ou sous-rseau Champs de len-tte IP :
Fragmentation TOS et TTL Options IP

Protocoles de niveau 4 : TCP, UDP et ICMP


Ports source et destination (TCP et UDP) Drapeaux (TCP) Types et codes (ICMP)

Actions
Laisser passer (ACCEPT) Bloquer (DENY ou DROP) Rejeter (REJECT) => message ICMP ou segment TCP avec drapeau RST

Filtrage tats (statefull)


Principe :
Filtrage dynamique, en conservant des tats pour les connexions en cours Seuls des paquets correspondants un tat pr-existant sont accepts

Intrt :

Simplifie lcriture des rgles de filtrage Amliore la scurit, en nautorisant que le trafic effectivement licite

Protocoles :
TCP UDP
Segments appartenant une connexion TCP en cours Datagrammes en rponse un datagramme UDP mis Messages ICMP derreur Messages ICMP en rponse un message ICMP mis

ICMP

Filtrage tats : mise en oeuvre


Mise en uvre :
Cration dun tat lors de la traverse du premier paquet Mmorisation de paramtres identifiant de faon unique une connexion Validation des paquets par comparaison des tats courants Expiration des tats aprs un temps paramtrable

Paramtres conservs :
Adresses source et destination Ports source et destination Type, code, identifiant et numro de squence (ICMP)

TCP :
Sassurer que des segments TCP font partie dune connexion en cours est complexe Real Stateful TCP Packet Filtering in IPFilter => http://home.iae.nl/users/guido/papers/tcp_filtering.ps.gz

Traduction dadresses et de ports (NAT)


Traduction dadresses
Uni-directionnelle
Traduction en sortie dadresses (typiquement) prives en adresse(s) publique(s) Possibilit de changer le port source

Bi-directionnelle
Traduction dune adresse (typiquement) publique en une phrase (typiquement) prive et rciproquement

Redirection de ports
Redirection dun port en entre vers un autre, en modifiant ladresse de destination ou non

Mise en oeuvre :
Fonctionnalits prsentes dans Netfilter, IPFilter, Packet Filter Ne sont pas dtailles ici

Partie 2
Prsentation gnrale

Firewall avec IPChains


Firewall avec IPTables (NetFilter)

FireWall avec IP-Chains


Possibilits Principe de base

Options
Mise en service

IPChains : possibilits (1/2)


ipchains est l'un des systmes de filtrage utilisable sur les noyaux 2.2 Il est driv de ipfw un systme prsent sur d'autres Unix

Il est trs puissant : Comptage de traffic Blocage de traffic non souhait Masquage d'adresses Dtournement vers un service local

IPChains : possibilits (2/2)


Chaque rgle slectionne les paquets sur les critres :
Adresse IP source du paquet Adresse IP destination du paquet Type de protocole (TCP, UDP, ICMP) Port de protocle adress (source, destination) Interface IP traverse Type de paquet (connexion, transfert)

Chaque rgle permet les actions suivantes :


Autorisation du paquet Destruction du paquet Rejet du paquet avec message d'erreur Dtournement du paquet sur un serveur local

IPChains : principe de base


ipchains s'organise par chanes Une chane est un ensemble de rgles, qui dterminent ce qui devrait arriver un certain type de paquet rseau. Il existe 3 chanes fixes :
Input : pour les paquets arrivant Forward : pour les paquets redirigs vers un autre hte Output : pour les paquets transmis par la filtre

Les rgles de chaque chane dpendent de leur ordre. Quand un paquet arrive, il est compar aux rgles de la chane pertinente, depuis la premire jusqu la dernire.
Ipchains CMD [chain] [rule-spec|num] [options]
=>Ex : ipchains A input i eth0 -s 192.168.0.1 p TCP j DENY

IPChains : options
Cibles (option j => paquet envoy sur cible) :
ACCEPT DENY REJECT (=> icmp) MASQ (option CONFIG_IP_MASQUERADE ncessaire)

Commandes :
-A (= ajouter) -D (= supprimer) -R (= remplacer) -C (= vrifier)

Options :
-p [!] protocol =>icmp, tcp, udp, all -s [!] addr ([!] port) => adresse source (-d pour destination) -i [!] interface -j target => sil y a correspondance, paquet envoy vers cette cible

IPChains : mise en service


Un support noyau est obligatoire (prsent de base maintenant) Il faut insrer des options :
"Network firewalls" ( CONFIG_FIREWALL=y ) "IP: firewalling" ( CONFIG_IP_FIREWALL=y )

En standard sur noyaux 2.1.x et 2.2.x Les rgles peuvent tre dites dynamiquement Il faut sauvegarder une version de filtrage Il faut installer la version sauvegarde au boot Ne pas oublier :
De mettre les filtres avant d'activer les interfaces rseau De mettre les filtres avant d'activer le routage de paquets IP

Partie 3
Prsentation gnrale

Firewall avec IPChains


Firewall avec IPTables (NetFilter)

FireWall avec IP-Tables


Dfinition IPChains vs IPTables Principe de base Options Nouveaut Exemple

Dfinition:
IPTables est un outil Linux (exclusivement) pour grer le pare-feu qui est intgr au noyau Linux 2.4 (et suprieur). L'architecture du noyau pour le systme de pare-feu s'appelle 'netfilter'. Netfilter a de trs nombreuses fonctionnalits: filtrage de paquets, suivi de connexions, NAT1, .... Le principe de fonctionnement est simple, lorsque la carte rseau recoit un paquet celui-ci est transmis la partie netfilter du noyau. Netfilter va ensuite tudier ce paquet (les enttes et le contenu) et en se basant sur des rgles que l'administrateur aura dfini, il va choisir de laisser passer le paquet intact, de modfier ce paquet, de le transmettre une autre machine ou encore d'interdire le passage.

IPTables vs IPChains
iptables est l'un des systmes de filtrage utilisable sur les noyaux 2.4 (et les dernires versions du noyau 2.3)
Il est une volution de la commande ipchains afin de clarifier certains points (comme le forwarding entre interfaces). Il incorpore les fonctionnalits de diffrentes commandes issues de ipchains et ipfwadm => regroupe toutes les fonctionnalits Linux relatives au filtrage de paquets.

IPTables : principe de base


iptables s'organise par tables Chaque table contient une srie de chanes de rgles. Il existe 3 tables principales :
Filtre :correspond aux notions de filtrage rseaux (accepter/refuser un
paquet) contient les chanes INPUT, FORWARD et OUTPUT (table par dfaut)

NAT : correspond des fonctions de routage (pour monter une passerelle


par exemple) soccupe de la conversion dadresse de rseau. Contient les chanes PREROUTING, OUTPUT et POSTROUTING. paquets la vole. Contient les chanes PREROUTING et OUTPUT.

Mangle : est utilise pour modfier les paquets permet une modification des

Les rgles de chaque chane dpendent de leur ordre. Quand un paquet arrive, il est compar aux rgles de la chane pertinente appartenant la table pertinente, depuis la premire jusqu la dernire.
iptables [-t table] CMD [chain] [rule-spec|num] [options]

=>Ex : iptables t filter A input i eth0 -s 192.168.0.1 p TCP j DENY

Filtrage de ports

Quand un paquet arrive (par la carte rseau par exemple), le noyau regarde la destination de ce paquet : c'est appel le routage. Si ce paquet est destin cette machine, le paquet passe dans la chaine INPUT. les processus qui attendent le paquet le recevront. Autrement, si le noyau n'a pas le forwarding autoris (machine qui n'est pas configure en routeur), ou qu'il ne sait pas comment forwarder le paquet, le paquet est supprim. Si le forwarding est autoris et que le paquet est destin un autre rseau, le paquet va directement la chaine FORWARD. S'il est accept, il sera envoy vers le rseau de destination. La chane OUTPUT concerne les paquets qui ont t cr par la machine locale. Ces paquets passeront par la chaine OUTPUT immdiatement.

Chacune de ces chanes peut donner plusieurs rponses possibles pour paquet : ACCEPT : le paquet est accept DROP : le paquet est refus , on l'efface et on ne rpond rien REJECT : le paquet est refus et on signale le rejet l'expditeur Chaque chane possde une rgle par dfaut policy qui dfinit si l'on accepte ou refuse les paquets par dfaut. Par dfaut, les policy sont ACCEPT. Nous verrons par la suite que l'administrateur peut crer des chanes personnalises en plus des 3 chanes par dfaut qui lui permettent d'organiser ses rgles de filtrage de manire plus propre et optimise (lorsqu'on a plusieurs milliers des rgles, c'est vraiment trs utile).

IPTables : options
Cibles (option j => paquet envoy sur cible) :
Cibles de ipchains SNAT (=> adresse source convertie => dans chane POSTROUTING de table
NAT)

DNAT (=> adresse dest. Convertie => dans chane PREROUTING de table NAT) LOG (ncessit davoir charg le module concern dans le noyau)

Commandes :
Commandes de ipchains -N (--new-chain), -X (--delete-chain) -F (--flush) => supprime toutes les rgles de la chane et de la table concerne

Options :
Options de ipchains -i [!] interface =>spcifie linterface de rception => chanes INPUT, FORWARD
et PREROUTING

-o [!] interface =>spcifie linterface dexpdition => chanes OUTPUT,


FORWARD et POSTROUTING

[!] syn =>spcifie que cette rgle ne devrait satisfaire que des paquets TCP que
sils initient la connexion

IPTables : nouveaut
Capacit de crer des rgles de comparaison fondes sur les tats des paquets => due au module state
Syntaxe : iptables m state state [!] [state, state,]

Etats possibles :
NEW : compare les paquets nappartenant aucune connexion en cours ESTABLISHED : compare les paquets appartenant une connexion dj ouverte RELATED : compare les paquets qui appartiennent une autre connexion, par
exemple les messages ICMP derreur, ou le trafic li au fonctionnement dun protocole applicatif (ftp data => modes passif ou actif)

INVALID : compare les paquets qui nont aucun sens dans le contexte de la

connexion existante, ou ceux qui nont pu tre reus pour une raison quelconque.

IPTables : exemple

DEMONSTRATIONS
1er exemple:
Protection de la machine locale : Nous allons maintenant voir comment mettre en place un firewall sur la machine locale. Executez la commande : # iptables -L -v
(-L == liste les rgles et -v demande le mode 'verbeux')

Vous devriez voir quelque chose qui ressemble :


Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) Pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

Vous voyez donc pour chaque chane, la policy (comportement par dfaut), le nombre de paquets qui a travers les rgles de la chane et le nombre d'octets correspondants.

DEMONSTRATIONS
Nous allons maintenant interdire les connexions sur le port 80, pour cela , il faut interdire les paquets dans la chane INPUT sur le port 80 : # iptables -A INPUT -p tcp --dport 80 -j DROP Cette commande signife : -A INPUT => ajoute en bas de la liste des rgles de la chane INPUT -p tcp => pour les paquets qui utilisent les protocole TCP dport => pour les paquets qui sont destination du port 80 -j DROP => l'action : DROP les paquets (on e ace les paquets), le -j peut galement servir rediriger sur une autre chane et/ou effectuer diffrentes actions On essai de se connecter la machine via le port 80

DEMONSTRATIONS
2me exemple: Nous allons maintenant autoriser uniquement un adresse qlq se connecter sur votre machine a travers port 80. Pour cela, nous allons insrer une rgle pour cet adresse avant la rgle qui DROP les paquets. Il est important de la placer avant, car les rgles sont excutes dans l'ordre ou elles ont t places dans la liste, donc si la premire rgle rejette le paquet, celui-ci n'atteindra jamais la 2me rgle qui l'autorise. Gardez bien toujours en mmoire que l'ordre compte. On rcuprez l'adresse IP puis excutez : # iptables -I INPUT 1 -p tcp --dport 22 -s adresse_ip -j ACCEPT le '-I INPUT 1' signife insre en premire position dans la liste. l'option -s permet de choisir la source des paquets, on choisit donc les paquets provenant de la machine voisine (on peut galement spcifer des rseaux entiers au format 193.54.241.0/24 par exemple).

DEMONSTRATIONS
Essayez de vous connecter sur votre machine depuis la machine dont ladresse IP est autoris!!, et depuis une autre machine! N'hsitez pas utiliser la commande 'iptables -L -v' pour voir les compteurs de paquets qui voluent en fonction de vos tests. (NB: vous pouvez utiliser la commande 'iptables -Z' pour remettre zro les compteurs de paquets et d'octets) Nous avons vu comment ajouter et insrer des rgles, on peut aussi les effacer en utilisant l'option -D, par exemple en faisant : # iptables -D INPUT 1 vous effacez la premire rgle de la chane INPUT. Il peut tre pratique de voir les numros de chaque rgle lorsqu'on liste les rgles, cela se fait avec l'option linenumbers : # iptables -L -v --line-numbers

DEMONSTRATIONS
3me exemple: Imaginons par exemple que l'on veuille grer plusieurs rgles pour contrler l'accs au service web. On pourrait procder de la manire suivante : 1 - Cration d'une chane spcifque # iptables -N web 2 - On indique la chane INPUT que tout ce qui concerne web doit tre transmis cette nouvelle chane # iptables -A INPUT -p tcp --dport 80 -j web 3 - On rajoute nos rgles de ltrages dans la chane web - on accepte que le voisin se connecte # iptables -A ssh -s ip_machine_du_voisin -j ACCEPT - on interdit au reste du monde de se connecter # iptables -A ssh -j DROP

DEMONSTRATIONS 4me exemple:


Nous allons essayer de crer une chane de toutes les machines de la salle et d'avoir une seule machine qui se connecte directement sur le routeur pour la connexion internet. La machine csci1 sera la seule machine qui se connectera directement au routeur. L'objectif est d'obtenir une chane de machines de telle sorte que csci4 traverse csci3 puis csci2 puis csci1 avant que la connexion soit transmise au routeur et que de l'extrieur seule csci1 soit visible. Chaque machine sera donc une passerelle pour la machine voisine. L'objectif est que tout le monde voit l'IP de csci1 sur la page http ://www- fourier.ujfgrenoble.fr/~mmarcha/ip.php de son navigateur. Commencez par tous redmarrer vos machines (pour nettoyer tous les tests prcdents). - sur la machine csci1 : Activez le forwarding puis activez la fonction de masquerading pour tout le rseau : # iptables -t nat -A POSTROUTING -s 193.54.241.0/24 -j MASQUERADE Rien d'autre faire votre niveau. - Toutes les autres machines : Activez le forwarding puis activez la fonction de masquerading. Tuez ensuite le client DHCP qui prend les infos de connexion sur le serveur DHCP # killall dhclient pour qu'il ne modfie pas les paramtres que vous allez mettre manuellement. Changez votre passerelle pour utiliser la machine de votre voisin comme passerelle. (par exemple si votre machine est la machine csci4, utilisez csci3 comme passerelle).

DEMONSTRATIONS
5me exemple: Le firewall et le rseau interne peuvent tout faire. Les adresses du rseau interne sont masques pour sortir vers Internet.
IFACE=eth0

# Masque en sortie linterface eth0

# Cre une chane qui bloque tout tentative de connexion de lextrieur


iptables -N block iptables -A block -m state --state INVALID -j DROP iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A block -m state --state NEW -i ! $IFACE -p icmp --icmp-type echo-request -j ACCEPT iptables -A block -m state --state NEW -i ! $IFACE -p udp -j ACCEPT iptables -A block -m state --state NEW -i ! $IFACE -p tcp --syn -j ACCEPT iptables -A block -i $IFACE -m limit --limit 3/s -j LOG --log-prefix "Bad packet from $IFACE:" iptables -A block -i ! $IFACE -m limit --limit 3/s -j LOG --log-prefix "Bad packet not from $IFACE: " iptables -A block -j DROP

iptables -t nat -A POSTROUTING -o $IFACE -j MASQUERADE

# Fais correspondre les chanes INPUT et FORWARD avec cette chane


iptables -A INPUT -j block iptables -A FORWARD -j block

# Active le forwarding IP :

echo 1 > /proc/sys/net/ipv4/ip_forward

Je vous remercie pour votre attention

Questions!! ?

Visite le site www.udivers.com

Das könnte Ihnen auch gefallen