Commencez avec une installation propre de votre distribution Linux (j'ai utilisé RedHat 3.0.3 et les exemples sont fondés sur cette distribution). Moins vous installez de logiciel, moins votre système aura de trous de sécurité, portes dérobées et/ou bogues susceptibles d'induire des problèmes de sécurité dans votre système, donc installez le moins possible d'applications.
Prenez un noyau stable. J'ai utilisé le noyau Linux 2.0.14 pour mon système. La documentation est donc fondée sur ses paramètres.
Vous devez recompiler le noyau Linux avec les options appropriées. A ce point, je vous renvoie au Kernel HOWTO, à l'Ethernet HOWTO et au NET-2 HOWTO si vous ne l'avez pas encore fait.
Voici les paramètres réseau que je sais fonctionner dans "make config" :
Ensuite, vous pouvez recompiler, réinstaller le noyau et rebouter. Les cartes réseau doivent apparaître dans la séquence de démarrage. Sinon, plongez-vous à nouveau dans les autres HOWTO jusqu'à ce que cela fonctionne.
Si vous avez deux cartes réseau dans votre ordinateur, vous devrez très certainement ajouter un paramètre "append" dans votre fichier /etc/lilo.conf pour décrire les IRQ et adresses des deux cartes. Le mien se présente ainsi :
append="ether=12,0x300,eth0 ether=15,0x340,eth1"
C'est la partie réellement intéressante. Vous avez quelques décisions à y prendre. Puisque nous ne souhaitons pas laisser InterNet accéder au réseau privé, il n'est pas nécessaire d'utiliser des adresses réelles. Un certain nombre d'adresses InterNet ont été laissées de côté pour les réseaux privés. Puisque tout le monde a besoin de toujours plus d'adresses et puisque celles-ci ne peuvent circuler sur InterNet, il s'agit d'un bon choix.
Parmi celles-ci, nous utiliserons celles de 192.168.2.xxx pour nos exemples.
Votre firewall proxy sera membre des deux réseaux et ainsi pourra passer les données vers et depuis le réseau privé.
199.1.2.10 __________ 192.168.2.1 _ __ _ \ | | / _______________ | \/ \/ | \| Systeme |/ | Station(s) de | / InterNet \--------| Firewall |------------| travail | \_/\_/\_/\_/ |__________| |_______________|
Si vous vous préparez à utiliser un firewall filtrant, ces adresses sont encore correctes. Vous devrez utiliser le masquage IP (masquerading) pour que cela fonctionne. Avec ce processus, le firewall route les paquets et les transforme en adresses IP "réelles" pour circuler sur InterNet.
Assignez l'adresse IP réelle à la carte réseau du côté InterNet (extérieur). Assignez 192.168.2.1 à la carte Ethernet du côté intérieur. Il s'agira de votre adresse proxy/gateway. Vous pouvez assigner une adresse de la plage 192.168.2.2 à 192.168.2.254 à toutes les autres machines du réseau protégé.
Puisque j'utilise RedHat Linux (Eh, les gars, faudrait voir à m'en offrir une copie, vu la pub ? ;-), pour configurer le réseau lors du démarrage j'ai ajouté un fichier "ifcfg-eth1" dans le répertoire /etc/sysconfig/network-scripts. Ce fichier est lu lors du processus de démarrage pour configurer le réseau et les tables de routage.
Voici l'allure de mon fichier ifcfg-eth1 :
#!/bin/sh #>>>type de peripherique : ethernet #>>>declaration de variables : DEVICE=eth1 IPADDR=192.168.2.1 NETMASK=255.255.255.0 NETWORK=192.168.2.0 BROADCAST=192.168.2.255 GATEWAY=199.1.2.10 ONBOOT=yes #>>>fin de declaration de variables
Vous pouvez aussi utiliser ces scripts pour vous connecter automatiquement par modem chez votre fournisseur. Jetez un coup d'oeil au script ipup-ppp.
Si vous utilisez un modem pour votre connexion InterNet, votre adresse IP sera assignée à votre machine à l'instant de la connexion.
Commencer par contrôler ifconfig et route. Si vous avez deux cartes réseau, votre ifconfig doit afficher quelque chose qui ressemble à :
#ifconfig lo Link encap:Local Loopback inet addr:127.0.0.0 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:1620 errors:0 dropped:0 overruns:0 TX packets:1620 errors:0 dropped:0 overruns:0 eth0 Link encap:10Mbps Ethernet HWaddr 00:00:09:85:AC:55 inet addr:199.1.2.10 Bcast:199.1.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:12 Base address:0x310 eth1 Link encap:10Mbps Ethernet HWaddr 00:00:09:80:1E:D7 inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:15 Base address:0x350
et votre table de routage :
#route -n Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface 199.1.2.0 * 255.255.255.0 U 1500 0 15 eth0 192.168.2.0 * 255.255.255.0 U 1500 0 0 eth1 127.0.0.0 * 255.0.0.0 U 3584 0 2 lo default 199.1.2.10 * UG 1500 0 72 eth0
Note: 199.1.2.0 est l'adresse du côté InterNet du firewall et 192.168.2.0 celle du côté privé.
Ensuite, essayez un ping sur InterNet depuis le firewall. J'avais l'habitude d'utiliser nic.ddn.mil comme point de test. C'est toujours un bon test, mais il a prouvé qu'il était moins fiable que je l'espérais. Si cela ne fonctionne pas dès l'abord, essayez un ping sur quelques autres sites qui ne soient pas connectés à votre réseau local. Si cela ne fonctionne pas, alors votre PPP est mal configuré. Relisez le NET-2 HOWTO, et essayez à nouveau.
Maintenant, essayez des ping sur les machines du réseau protégé depuis le firewall. Tous les ordinateurs doivent êtres capables d'atteindre tous les autres. Dans le cas contraire, repassez une couche de NET-2 HOWTO et retravaillez encore un peu votre réseau.
Puis, chaque machine du réseau protégé doit être capable d'atteindre le firewall par ping. Sinon, retournez une fois de plus en arrière.
Ensuite, essayez d'atteindre l'adresse extérieure du firewall depuis l'intérieur du réseau protégé (Note : il ne s'agit d'aucune des adresses 192.268.2.xxx). Si vous le pouvez, c'est que vous n'avez pas désactivé la transmission IP. Assurez-vous que ce soit bien ce que vous souhaitez. Si vous le laissez actif, vous devrez travailler le filtrage IP décrit plus loin dans ce document.
Enfin, essayez d'atteindre Internet depuis l'arrière de votre firewall. Utilisez la même adresse que celle qui avait fonctionné avant (par exemple, nic.ddn.mil). De même, si vous avez désactivé la transmission IP, cela ne devrait pas fonctionner, mais si vous l'avez activée, cela devrait.
Si vous avez activé la transmission IP et que vous utilisez une adresse IP "réelle" (pas 192.168.2.*) pour votre réseau privé et que vous ne puissiez atteindre InterNet, mais seulement le côté InterNet de votre firewall, contrôlez si le prochain routeur transmet bien les paquets pour votre adresse de réseau privé (votre fournisseur devrait avoir réalisé cela pour vous).
Le fait d'assigner le 192.168.2.* au réseau protégé indique qu'aucun paquet ne peut lui être transmis. Si vous avez déjà lu plus loin et que le masquage IP soit activé, ce test devrait fonctionner.
Vous avez maintenant une configuration de base.
Le firewall n'est d'aucune utilité s'il reste ouvert aux attaques via un service inutilisé. Un "méchant" peut obtenir l'accès au firewall et le modifier pour ses desseins propres.
Commencez par désactiver tous les services inutilisés.
Regardez le fichier /etc/inet.conf
.
Ce fichier contrôle ce qu'on appelle le "super-serveur".
Cela contrôle un tas de daemons serveurs et les exécute sur demande.
Désactivez définitivement netstat, systat, tftp, bootp et finger. Pour désactiver un service, placez simplement un "#" devant. Ensuite, envoyez un signal SIG-HUP au processus inetd, selon la syntaxe suivante : kill -HUP <pid>, où "pid" est le numéro du processus inetd. Cela force inetd à relire son fichier de configuration (inetd.conf) et à se relancer.
Testez le résultat par telnet sur le port 15 du firewall, qui est le port de netstat. Si vous obtenez une réponse de netstat, c'est que vous n'avez pas relancé inetd correctement.
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre