
Par Xavier GRUSELLE et Grégory ALLAIN (Site optimisé pour Firefox 1.5)
Liens conseillés
Un exemple de configuration
Nous allons maintenant construire le script shell qui va mettre en place un firewall en tenant compte des principales informations de la première partie.
Notre réseau local est en 192.168.0.0/24. 192.168.0.1 est une machine dont on veut faire un serveur web. 192.168.0.254 est notre routeur firewall. Il possède 2 interfaces :
- Interface locale : 192.168.0.254
- Interface internet : 212.155.x.x
Depuis notre réseau local, on souhaite acceder à n'importe quelle machine et n'importe quel service sur Internet. En revanche, on ne veut aucune connexion entrante sur notre gateway et notre réseau à part pour le serveur web et pour le service ssh (sur la gateway et le serveur ssh). Voilà pour la problématique. Avant de commencer à rédiger le script il faut garder une règle primordiale en tete concernant le traffic : - PAR DEFAUT ON ACCEPTE RIEN - ensuite seulement on fait ce qu'il faut autoriser le traffic qu'on juge necessaire. Il ne faut - JAMAIS - autoriser par defaut et essayer de bloquer tout ce qu'on pense dangeureux, on en oublie *toujours*.
Pour pouvoir utiliser iptables, il faut charger son module noyau :
modprobe ip_tables
Pour utiliser les capacités statefull de netfilter il faut aussi le module adéquat:
modprobe ip_conntrack
Ensuite on ``flush'' les tables pour supprimer les règles qui auraient pu etre entrées plus tot.
iptables -FOn va donc commencer par dire à iptables qu'on jette tout par defaut. Pour cela on utilise l'option -P d'iptables pour changer la décision par défaut.
iptables -t nat -F
iptables -t mangle -F
iptables -P INPUT DROPA cet instant, on a dit à iptables d'ignorer tout ce qui vient sur le firewall (INPUT), tout ce qui en part (OUTPUT) et tout ce qui passe par lui (FORWARD - trafic entre le réseau interne et Internet). Maintenant on peut commencer à autoriser les paquets qu'on souhaite voir passer ...
iptables -P OUTPUT DROP
iptables -P FORWARD DROP