J'ai testé ce qui suit sur une Debian 3.0 Woody, noyau 2.4.18bf, noyau 2.4 standard à l'installation de cette distribution, qui permet pleinement, et sans recompilation, l'utilisation d'IPtables, firewall standard de cette génération.
La démarche décrite ci-dessous est surement valable avec les noyaux d'installation standard de toutes les distributions classiques récentes.
La philosophie de ce firewall est simple : on commence par tout ignorer
puis on accepte ce qui concerne une connection établie par notre propre
machine. Sur la boucle locale (interface lo
), par contre,
toutes les opérations sont autorisées.
On notera que les paquets indésirables ne sont pas rejetés mais ignorés
(cible DROP
au lieu de REJECT
). Ainsi, la
machine qui l'a envoyé ne peut déterminer si son paquet a été refusé,
perdu, si le bon protocole est utilisé pour communiquer avec notre
machine, si le port qu'elle visait existe ou non sur notre machine, est
fermé ou non, etc...
Inutile de trop faciliter la prise de renseignements à la moindre tentative d'intrusion.
Ce firewall a été conçu dans le but de protéger un machine se connectant à internet par modem ADSL Ethernet. Il laisse aussi la possibilité de partager sa connection au travers d'un réseau local. Au-delà de ces deux fonctions, il sera de peu d'utilité, en particulier si vous utilisez déjà un de ces combinés switch-routeur-firewall-modem ADSL.
Les interfaces : le nom de l'interface de connection côté net est
ppp0
; celui de la première carte Ethernet, à laquelle le
modem est relié, eth0
. Ce sont donc les premiers éléments à
contrôler en cas d'échec avec votre installation, en particulier si vous
possédez plusieurs cartes réseaux ou si vous obtenez votre connection
d'une autre machine sur un réseau local.
Un biais pour faire des tests facilement : introduire de nouvelles variables en début de fichier par les deux lignes :
ETH=eth0 NET=ppp0
et remplacer, dans la suite du fichier, toute apparition de
eth0
par $ETH
et de ppp0
par
$NET
(n'oubliez surtout pas les $
!). Dès
lors, changer le nom de vos interfaces dans tout le fichier
revient à changer ces deux lignes du début.
Notons enfin que ce firewall refuse les pings (protocole ICMP).
Toutes les opérations décrites ici doivent être effectuées en tant que root.
Le texte de ce firewall est à
enregistrer tel que sous /etc/init.d/firewall
(il faut étre
root pour ce faire). Comme il s'agit d'un script, il ne faut pas oublier
de le rendre exécutable, par exemple par la commande chmod 744
/etc/init.d/firewall
. Ce qui, au passage, laisse aux utilisateurs
autres que root l'accès en lecture seule à ce fichier et le loisir de se
rendre compte à quel point ils sont bien protégés.
Le lancement du firewall se fait maintenant par la commande :
# /etc/init.d/firewall start
l'arrêt, le redémarrage et l'interrogation par la même commande mais
avec stop
, restart
ou status
.
Quoi qu'il en soit, je vous laisse détailler le texte dudit firewall.
Voyons mainteant comment n'avoir pas à lancer soi-même le firewall et aussi comment être protégé Dès le démarrage de la machine, ou, du moins, au moment adéquat au cours du processus de démarrage.
Le fichier étant enregistré à l'emplacement sus-mentionné, reste à créer
les liens de lancement dans les dossiers ad hoc, c'est à dire
/etc/rc0.d
à /etc/rc6.d
.
Ce qui se fait, sous Debian par :
# update-rc.d firewall start 20 2 3 4 5 . stop 20 0 1 6 .
ce qui signifie que le firewall sera actif ou démarré à l'ordre 20 aux niveaux d'exécution 2, 3, 4 et 5 et arrêté ou inactif aux niveaux d'exécution 0, 1 et 6. Soyons logiques : en cas de connection au démarrage ou de connection permanente, on prendra soin de démarrer le firewall... avant ! Et de l'arrêter... après la déconnection !
En ce qui me concerne, la connection démarre dès le niveau 2 en
20ième position (existence du lien
/etc/rc2.d/S20ppp
) et s'arrête au même ordre au niveau
d'exécution 6. J'ai donc souhaité que le firewall commence à fonctionner
à l'ordre 14, que j'ai choisi arbitrairement, et stoppe à l'ordre 25.
J'ai donc tapé :
# update-rc.d firewall start 14 2 3 4 5 . stop 25 0 1 6 .