Routeur/Firewall sous kernel 2.4

Dernière mise à jour : 14/04/2004

    De la m√™me mani√®re que je vous avait cr√©√© une page sur la m√©thode pour installer un firewall/routeur sous un Linux √† base de kernel 2.2, voici venue la mise √† jour vers le kernel 2.4 avec iptables. Voici donc la quatri√®me √©dition qui f√™te ainsi ses 3 ans, j'y ai inclu le choix entre deux scripts, celui d'origine (tr√®s facile √† mettre en place) et un nouveau script en mode parano qui demande plus de comp√©tences.. La derni√®re r√©vision de cette page corrige des probl√®mes de paquets bloqu√©s sur les ports bittorrent et le protocole ipv6 (second script).

    Il vous faudra pour commencer vous assurer que vous poss√©dez les outils n√©cessaires sous votre Linux. Le mieux est de d√©dier une machine qui deviendra routeur/firewall. Le routeur a pour but de router (d√©lire non ?!?) des paquets IP √† travers le r√©seau vers une interface interne (second r√©seau interne) ou externe (internet, modem). Personnellement, pour des raisons financi√®res, j'ai juste utilis√© ma machine principale qui pilote le modem externe afin de router les paquets vers mon portable, c'est donc cette machine qui contient le firewall. Le firewall sert √† vous prot√©ger (mais aussi votre r√©seau) du monde ext√©rieur et de bloquer des appels non solicit√©s (et voyant mes logs, je peux vous dire que cela sert).

    Dans la th√©orie, vous devez donc pr√©parer votre kernel pour avoir les bonnes options, vous assurez que vous avez iptables (du projet netfilter) install√© et il ne reste alors plus qu'√† faire un script que nous appellerons firewall. Pour IPtables, vous pouvez soit le r√©cup√©rer du lien ci-dessous mais je pr√©conise plut√īt d'utiliser la version fournie avec votre distribution, il ne reste alors plus que la partie kernel √† r√©gler.

    Allez dans les sources de votre kernel favori et fa√ģtes un make menuconfig. Allez ensuite dans la partie Network et activez les options suivantes :



    Allez ensuite dans le sous-menu Netfilter et passez tout en module sauf les deux derni√®res options. Regardez la capture d'√©cran ci-dessous si vous avez un doute.



    Il ne reste ensuite qu'√† recompiler votre kernel. Vous pouvez pour cela suivre la proc√©dure disponible dans la section syst√®me et intitul√©e : kernel 2.4.x. Elle devrait vous donner une id√©e assez pr√©cide de l'affaire. Red√©marrez ensuite votre machine sur le nouveau kernel. V√©rifiez ensuite que vous poss√©dez la comande iptables en faisant : iptables -v. Dans le cas contraire, t√©l√©chargez le ou installez le √† partir de vos CDs Linux.

    Le script ci-dessous vous donne les bases pour d√©marrer votre routeur/firewall de fa√ßon simple, les ports http (80), ftp (20,21) et quake (27960) sont comment√©s pour plus de s√©curit√©, si vous en avez besoin, d√©commentez les.

    Dans le script qui va suivre, j'ai configur√© un petit firewall qui bloque tout acc√®s depuis l'ext√©rieur lorsqu'il n'est pas solicit√©. L'interface ${INTERFACE_LOCALE} nomme ma carte du r√©seau interne qui communique sur un r√©seau de type 192.168.0.x et de netmask 255.255.255.0. J'utilise √©galement sur la m√™me machine l'interface ${INTERFACE_INTERNET} qui est un modem se connectant de temps en temps √† internet. On va dire que ma machine poss√©dant le modem tourne en 192.168.0.254 (ce qui est normal pour un routeur). La configuration d√©crite ici bloque tout acc√®s ext√©rieur, autorise ensuite la carte r√©seau et forwarde les paquets du modem vers le r√©seau interne. T√©l√©chargez ensuite le script suivant que vous placerez dans : vi /etc/init.d/firewall.

    Le second script requiert une bonne compr√©hension du r√©seau et du concept de paquets entrants et sortants. J'ai tent√© de commenter au mieux possible ce second exemple mais je vous conseille la lecture de quelques ouvrages r√©seau si des difficult√©s surviennent. Je ne compte pas fournir d'aide sur ce script. Etant donn√© que votre /var/log/messages enregistrera tous les paquets bloqu√©s, il vous sera facile de diagnostiquer le probl√®me. Ainsi pour diagnostiquer un port que vous essayez d'acc√©der, en cas d'√©chec, utilisez : tcpdump -i eth0 port 'numero_de_port'. Apr√®s ce petit avertissement, vous pouvez t√©l√©charger le second script. Dans ce script, j'ai ouvert les ports ssh, smtp, http, https, imap-ssl et bittorrent.

    Voil√†, vous avez √† pr√©sent un script en √©tat de marche, un simple /etc/init.d/firewall start devrait vous s√©curiser votre machine. Vous n'√™tes bien s√Ľr pas √† l'abri d'attaques potentielles sur iptables ou sur les logiciels dont les ports sont ouverts (apache, ftp, etc ...). Il vous appartient donc de v√©rifier la s√©curit√© de ceux-ci √† intervalles r√©guli√®res.

    La prochaine mise √† jour de cette page incluera des informations sur l'ipv6.