Vous êtes sur la page 1sur 2

T.

BERNARD DE DOMPSURE

Projet dadministration rseau

IUP-ASR 2004-2005

T. BERNARD DE DOMPSURE

Projet dadministration rseau

IUP-ASR 2004-2005

Configuration dun firewall sous Linux Prsentation gnrale


Un pare-feu (firewall) est une passerelle que lon place sur un rseau pour scuriser les communications entrantes et sortantes. Il existe deux familles de pare-feu : les firewalls filtrage de paquets et les firewalls de type proxy. Ils ne travaillent pas de la mme faon et n'offrent pas les mmes scurits. Selon la version du noyau Linux utilise, plusieurs types de firewall filtrant existent : jusqu' la version 2.1.102, cest ipfwadm qui est implment, depuis la version 2.1.102, on utilise ipchains, partir du noyau 2.4, iptables/NetFilter est implment en plus. NetFilter permet doffrir une infrastructure ddie au filtrage/manipulation de paquets, que les utilisateurs et dveloppeurs pourraient dployer comme un add-on construit autour du noyaux Linux. Il a t conu pour tre modulaire et extensible. Iptables est un module qui s'insre dans la structure de NetFilter et autorise l'utilisateur accder aux rgles et commandes de filtrage/manipulation du noyau. Le but de cette documentation est dexpliquer comment configurer un pare-feu avec les iptables sous Linux.

Chargement des modules Il est ncessaire de charger ces modules chaque boot puis de lancer les rgles de filtrage/masquage, avant de pouvoir utiliser iptables : # modprobe ip_tables Il faut faire un script qui sera lanc chaque dmarrage ( rajouter dans /etc/rc.d/init.d suivant le systme). Et selon les besoins, on peut ventuellement charger dautres modules (cf. modules)

Fonctionnement diptables
Le noyau contient par dfaut trois tables : Filter, NAT et Mangle. Une table permet de dfinir un comportement prcis du firewall Linux. La table FILTER va contenir toutes les rgles pour le filtrage des paquets. La table NAT permet d'effectuer des translations d'adresses. La table MANGLE permet de marquer des paquets entrants (PREROUTING) et gnrs localement (OUTPUT). Ce marquage va permettre de traiter spcifiquement les paquets marqus dans les tables de routage. Une table est un ensemble de chanes, elles-mmes composes de rgles.

FILTER

NAT PREROUTING Pour faire la translation dadresse de destination Pour faire la translation dadresse de la source Pour modifier la destination de paquets gnrs localement

MANGLE PREROUTING

Dmarrage
Tout dabord iptables est une commande que seul root peut lancer. Ensuite, vrifier la version de votre noyau :
> uname -a INPUT

Contrle des paquets entrant localement sur lhte Contrle des paquets sortant localement sur lhte

Si la version du noyau est antrieure 2.4, il faudra installer iptables (cf. installation) Pour voir si la commande est prsente :
> which iptables

OUTPUT

POSTROUTING

OUTPUT Marquage des paquets entrants (PREROUTING) et gnrs localement (OUTPUT)

Pour voir si le module est install :


> lsmod | grep iptable FORWARD

Filtre les paquets qui passent d'une interface rseau l'autre

OUTPUT

Installation de iptables (succinct)


IpTables a besoin d'un kernel de gnration 2.4 compil avec des options spciales. Ceci ne pose pas de problmes avec les noyaux 2.4 gnriques des principales distributions bases sur cette gnration de kernel. Le noyau Si vous dsirez re-compiler votre kernel (make dep; make clean; make bzImage), il faut spcifier les options ncessaires au fonctionnement d'iptables comme CONFIG_PACKET, CONFIG_NETFILTER,
CONFIG_IP_NF_CONNTRACK, CONFIG_IP_NF_FTP, CONFIG_IP_NF_IRC, CONFIG_IP_NF_IPTABLES, CONFIG_IP_NF_FILTER, CONFIG_IP_NF_NAT, CONFIG_IP_NF_MATCH_STATE, CONFIG_IP_NF_TARGET_LOG, CONFIG_IP_NF_MATCH_LIMIT, CONFIG_IP_NF_TARGET_MASQUERADE

Sur un firewall, lorsquun paquet arrive, la fonction de dcision de routage va dterminer si le paquet est destin un processus local ou un hte sur un autre rseau. Deux cas peuvent se prsenter :

Le paquet lui est destin : le paquet traverse la chane INPUT. S'il n'est pas rejet, il est transmis au processus sollicit. Il sera traiter. Peu ventuellement mettre un paquet en rponse. Ce nouveau paquet traverse la chane OUTPUT. S'il n'est pas rejet, il va vers la sortie.

Dplacez votre ancien rpertoire de module


> mv /lib/module/votre_version /lib/module/votre_version.old

Si le paquet est destin un hte sur un autre rseau : il traverse la chane FORWARD. S'il n'est pas rejet, il poursuit alors sa route.

Puis compilez et installez les modules (make modules; make modules_install), Copiez alors le nouveau kernel
> cp /usr/src/linux/arch/i386/boot/bzImage /boot

Netfilter Rcuprer sur le site officiel les sources (http://www.samba.org/netfilter). Dsarchiver et compiler (make, make install).

T. BERNARD DE DOMPSURE

Projet dadministration rseau

IUP-ASR 2004-2005

T. BERNARD DE DOMPSURE Pour logguer tout ce qu'on jette :


>

Projet dadministration rseau

IUP-ASR 2004-2005

Configuration des tables


Suivant la syntaxe utilise, la commande iptables va permettre de spcifier des rgles de slection des paquets IP. On va pouvoir : Ajouter des rgles / chanes. Supprimer des rgles / chanes. Modifier des rgles / chanes. Afficher les rgles / chanes Les paquets sont rcuprer suivant leurs : adresse source, adresse destination, protocole et numro de port. Pour chaque rgle de slection, on peut soit accepter le paquet, soit l'ignorer, soit renvoyer une erreur. Pour voir les commandes les plus usuelles :
> man iptables

iptables -N LOG_DROP > iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : ' > iptables -A LOG_DROP -j DROP

Et ensuite
> iptables -A FORWARD -j LOG_DROP > iptables -A INPUT -j LOG_DROP > iptables -A OUTPUT -j LOG_DROP

Pour accepter tout ce qui se passe sur linterface lo par exemple


> iptables -A INPUT -i lo -j ACCEPT > iptables -A OUTPUT -o lo -j ACCEPT

Pour refuser les connexion sortantes vers les services non scuriss telnet, FTP, et rsh
> iptables -A INPUT -t DENY -p tcp --dport telnet,ftp,shell

Pour accepter le trafic FTP Commandes principales Ces options spcifient une action particulire effectuer. Seule l'une d'elles peut tre spcifie sur la ligne de commande, sauf indication contraire. -A -D -R -I -L -F -N -X -P --append --delete --replace --insert --list --flush --new --delete-chain --policy Ajoute une ou plusieurs rgles la fin de la chane slectionne Permet de supprimer une chane Remplace une rgle dans la chane slectionne Pour ajouter une chanes Pour afficher les rgles de filtrages Pour supprimer toutes les rgles Permet de crer une nouvelle chane Permet d'effacer une chane Met en place le comportement par dfaut : ACCEPT, REJECT, DROP
> iptables -A INPUT -i eth0 -p tcp -sport 21 -m state --state ESTABLISHED -j ACCEPT

(pour accepter les trames FTP qui rentrent sur linterface eth0 seulement si cest une connexion dj tablis)
> iptables -A OUTPUT -o eth0 -p tcp -dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

(pour accepter les trames FTP qui sortent si cest une nouvelle connexion ou une connexion dj tablis)

Pour empcher un ping sur une machine du rseau 192.168.2.0


> iptables A FORWARD i eth0 d 192.168.2.0 p icmp j DROP

Pour supprime toutes les trames rentrantes dans l'espace utilisateur, sauf HTTP (avec '!')
> iptables -I INPUT -p tcp -sport ! 80 -j DROP

Mise en place de modules


Les modules permettent de rajouter des fonctionnalits NetFilter. Prenons lexemple pour FTP. Charger le module : > modprobe ip_conntrack_ftp Ensuite, il faut vrifier que le trafic FTP est autoris (cf. Pour accepter le trafic FTP). Cest indispensable pour que la connexion puisse s'tablir. Ensuite cest ici que ip_conntrack_ftp va servir :
> iptables -A INPUT -i eth0 -p tcp -sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT ( RELATED signifiant que le paquet initie une nouvelle connexion) > iptables -A OUTPUT -o eth0 -p tcp -dport 20 -m state --state ESTABLISHED -j ACCEPT

Commandes pour matcher -p -s -d -j -i -o -f -sport -dport --protocol --source --destination --jump --in-interface --out-interface --fragment --source-port --destination-port --tcp-flags --icmp-type --mac-source --state Le protocole de la rgle ou du paquet vrifier : tcp, icmp, all Spcification de la source Spcifie la destination Spcifie ce quil faut faire si le paquet correspond la rgle Spcifier une interface d'entre Spcifier une interface de sortie Paquet fragment Spcifier le port source ou une plage de ports Spcifier le port destination ou une plage de ports Spcifier un flag tcp matcher : SYN ACK FIN RST URG PSH ALL Spcifier un type de paquet icmp Spcifier l'adresse MAC matcher Etats du paquet matcher : ESTABLISHED, NEW, INVALID,RELATED

Enfin pour que le serveur puisse tablir la connexion pour les donnes (en mode actif) : > iptables -A INPUT -i eth0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state
--state ESTABLISHED -j ACCEPT > iptables -A OUTPUT -o eth0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

(sport et deport signifie lintervalle des ports accepts. En effet, la connexion se fait sur le port 20/21 mais les transferts se font sur dautres ports

Mise en place du pare-feu


Lors de la mise en place d'un pare-feu, on doit : effacer toute les rgles existantes et s'assurer qu'aucune rgle n'est applique
> iptables -F > iptables L

De nombreuses autres rgles de filtrages relativement fines peuvent tre mise en place avec iptables. Nous avons vu seulement la table FILTER. Les autres tables fonctionnent de la mme manire. Il y a certaines limitations de NetFilter : par exemple il n'intgre pas des fonctionnalits de limitation de bande passante ou il n'intgre pas des fonctionnalits d'introduction d'un pourcentage d'erreur dans les communications.

Bibliographie
http://www.samba.org/netfilter http://doc-libre.equinux.ca http://www.ze-linux.org 4

appliquer une politique par dfaut qui refuse tous les paquets
> iptables P INPUT DROP > iptables -P OUTPUT DROP > iptables -P FORWARD DROP