Nous allons plutôt tenter de présenter un logiciel pouvant aider grandement à la mise en place d'un firewall sous Linux.
On s'aperçoit sur ce schéma que le seul moyen pour une machine sur un des réseau, d'accéder à l'autre est de passer par la machine firewall, ce qui permet de contrôler totalement ce qui s'échange entre les deux réseaux en ouvrant ou fermant les "robinets" sur le firewall.
Il existe deux types de firewall :
Les serveurs proxy , on peut citer notamment SOCKS , et TIS Firewall Toolkit (FWTK), présentent l'inconvénient d'être plus difficile à configurer et surtout de ne pas être transparent pour l'utilisateur, en effet il faut configurer son navigateur ou son client ftp pour passer par le proxy.
Au contraire, un firewall filtrant permet un accès transparent pour l'utilisateur , tout en assurant une bonne sécurité puisque l'on peut totalement contrôler ce qui passe et vers quoi !
Nous nous concentrerons donc sur ce type de firewall , qui combiné au fonction de masquerading permettent également l'accès indirect à Internet depuis l'arrière d'un firewall.
Ceci à pour double avantage , d'une part un coût moindre car il suffit d'avoir une seule connexion à Internet pour plusieurs machines, d'autre part une sécurité accrue car il n'existe aucun moyen pour quelqu'un de l'extérieur, d'accéder aux machines internes , en effet l'extérieur ne voit qu'une seule machine : le firewall!
Pour utiliser ces fonctions , il vous faudra recompiler votre noyau
comme suit :
Allez dans le répertoire /usr/src/linux
puis faites
make xconfig
:
Vous voyez apparaître l'utilitaire de configuration du noyau :
Sélectionnez networking options et dans le menu networking options sélectionnez :
Voila vous pouvez sauver, faite make zImage
et
make modules
pour recompiler le noyau et les modules associés,
puis réinstallez le noyau et redémarrez.
Ne perdez pas de vue qu'une machine firewall doit, pour jouer son rôle de protection, posséder deux interfaces réseau. En effet si ce n'est pas le cas, rien 'empêche une station sur le réseau externe d'accéder directement au réseau interne sans passer par le firewall, le rendant ainsi inutile !
Si les 2 interfaces réseau sont des cartes ethernet , il faudra également configurer le noyau pour qu'il puisse gérer les 2 cartes. Ce sujet n'est pas traité ici , se reporter au Multi-Ethernet mini-HOWTO pour plus de précisions.
Cependant une configuration plus modeste et probablement plus répandue peut se limiter à une seule carte ethernet pour le réseau local, et une connexion ppp vers Internet . Dans ce cas il n'y a rien de plus à rajouter à la config Linux que la connexion ppp classique vers le fournisseur d'accès !
Un dernier point est à contrôler : Linux possède un interrupteur général autorisant (ou non) le passage des trame IP d'une interface à l'autre. Si cet interrupteur est à off , aucun passage ne sera autorisé quelque soit la configuration que vous appliquerez ! Il faut donc le mettre à on , quitte à interdire quand même le passage mais de manière plus sélective au moyen de l'utilitaire ipfwadm !
Vous pouvez contrôler l'état de cet interrupteur au moyen
de la commande suivante :
cat /proc/sys/net/ipv4/ip_forwardsi l'on obtient 0 : pas de passage, 1 : passage autorisé selon la configuration.
echo 1 > /proc/sys/net/ipv4/ip_forwardLes distributions RedHat et Mandrake forcent cet interrupteur à off par défaut. Ceci est configurable dans le fichier
/etc/sysconfig/network
où il suffit de changer
FORWARD_IPV4=false
par true
!
Il n'entre pas dans mes intentions de décrire toutes les possibilités de ipfwadm mieux vaut se reporter au manuel pour cela, je vais donc donner juste quelques exemples d'utilisation tirés du Firewall-HOWTO et du IP-Masquerade mini HOWTO.
# Par defaut INTERDIRE tout passage ipfwadm -F -p deny # Vider toutes les regles de filtrage : Maintenant, nous avons un # firewall absolu. Rien ne peut passer au travers. ipfwadm -F -f ipfwadm -I -f ipfwadm -O -f # Autoriser l'acces de l'e-mail au serveur ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25 # Autoriser les connexions e-mail vers les serveurs exterieurs ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535 # Autoriser les connexions web vers le serveur web /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 196.1.2.11 80 # Autoriser les connexions web vers les serveurs web exterieurs /sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0 1024:65535 # Autoriser le trafic DNS /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 196.1.2.0/24 # masquer un reseau entier par le firewall ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 # ou bien masquer certaines adresse seulement ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.2/32 -D 0.0.0.0/0 ipfwadm -F -a m -S 192.168.1.8/32 -D 0.0.0.0/0 # ne pas oublier de inserer les modules necessaire au masquage de # certain protocole /sbin/modprobe ip_masq_ftp.o /sbin/modprobe ip_masq_irc.o /sbin/modprobe ip_masq_cuseeme.oComme vous pouvez le voir , tout ceci n'est pas trivial, spécialement quand on ne le pratique pas tous les jours ! Il serait certainement d'une aide précieuse de pouvoir configurer ceci avec une interface graphique !
Easyfw est une interface graphique à ipfwadm permettant de générer un script de commande ipfwadm. vous pouvez ensuite exécuter ce script à votre guise , ou le faire exécuter par easyfw.
Easyfw permet de créer les règles de filtrage de manière visuelle et plus facilement , mais surtout, il permet d'appliquer des configurations prédéfinies , ce qui permet dans ce cas de configurer un firewall en quelques clics !
easyfw vous propose une boite de dialogue avec les interfaces réseau existantes :
il vous suffit de cliquer sur la ligne voulue , typiquement ppp0
pour
le réseau externe et eth0
pour l'interne ! Bien entendu , vous pouvez
également entrer l'adresse réseau manuellement !
Ensuite , vous pouvez choisir parmi les configurations prédéfinies une qui convient
à vos besoins, par exemple :
Si vous avez trouvé votre bonheur dans les configurations prédéfinies, vous avez
fini ! Il suffit d'appuyer sur appliquer et l'on vous propose alors :
Vous pouvez choisir de ne pas appliquer immédiatement, mais attention dans ce cas aux connexions ppp qui peuvent changer d'adresse IP, votre script généré risque de ne plus être valide lors de la prochaine connexion.
Si aucune des configurations prédéfinies ne vous convient, il vous faudra alors
spécifier chaque règle de filtrage. Easyfw vous propose 3 tableaux du type :
Le premier menu spécifie le comportement par défaut lorsque aucune règle ne s'applique,
généralement pour une fonction de firewall , il vaut mieux interdire par défaut et
rajouter des règles pour autoriser tel adresse ou tel protocole !
Ensuite vous pouvez ajouter, modifier ou détruire une règle de filtrage grâce à la
boite de dialogue suivante :
Cette boite vous permet donc de rajouter une règle qui accepte/refuse en paramètrant eventuellement les adresses source/destination, le protocole, et les ports.
On agit de la même manière pour :
Vous pouvez facilement créer vos propres configurations prédéfinies en éditant les fichiers de config, la syntaxe en est trés simple ! L'avantage de ces configurations prédéfinies est qu'elles permettent en quelques clics d'installer un firewall sans recréer toutes les règles de filtrage , et ce même si les adresses IP ont changées .
On peut le trouver à l'adresse suivante : http://www.linux-kheops.com/pub/easyfw/