Si vous utilisez un noyau 2.1.102 ou supérieur, passez directement à la section suivante sur IPCHAINS.
Dans les anciens noyaux, la transmission IP est activée par défaut. Pour cette raison, votre réseau doit commencer par refuser l'accès à tout et vider toutes les règles de transmission (ipfw) en place depuis le dernier lancement. Le fragment de script suivant doit se trouver dans votre script de lancement réseau (en général, /etc/rc.d/init.d/network) :
# # configuration de la transmission IP et # de la trace # # Transmission # # Par defaut INTERDIRE tous les services ipfwadm -F -p deny # Vider toutes les regles de trace ipfwadm -F -f ipfwadm -I -f ipfwadm -O -f
Maintenant, nous avons un pare-feu absolu. Rien ne peut passer au travers.
Maintenant, on peut créer le fichier /etc/rc.d/rc.firewall. Ce script doit autoriser le passage des trafics courrier, web et DNS. ;-)
#!/bin/sh
#
# rc.firewall
#
# Lancement de la bibliotheque de fonctions
. /etc/rc.d/init.d/functions
# Lecture de la configuration
. /etc/sysconfig/network
# On controle que le reseau soit actif
if [ $NETWORKING = "no" ]
then
exit 0
fi
case "$1" in
start)
echo -n "Lancement des services du pare-feu : "
# Autorise le courriel a arriver au serveur
/sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25
# Autorise les connexions aux serveurs courriel externes
/sbin/ipfwadm -F -a accept -b -P tcp -S 192.1.2.10 25 -D 0.0.0.0/0 1024:65535
# Autorise les connexions a notre serveur web
/sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.11 80
# Autorise les connexions aux serveurs web externes
/sbin/ipfwadm -F -a accept -b -P tcp -S 192.1.2.* 80 -D 0.0.0.0/0 1024:65535
# Autorise le trafic DNS
/sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 192.1.2.0/24
;;
stop)
echo -n "Arret des services du pare-feu : "
ipfwadm -F -p deny
;;
status)
echo -n "Montrez-vous les statistiques du pare-feu ?"
;;
restart|reload)
$0 stop
$0 start
;;
*)
echo "Usage: firewall {start|stop|status|restart|reload}"
exit 1
esac
Note : Dans cet exemple, nous avons un serveur courriel (SMTP) qui tourne sur 192.1.2.10 qui doit être capable d'envoyer et recevoir des paquets sur le port 25. Le serveur web tourne sur 192.1.2.11. Nous autorisons quiconque sur le réseau local à accéder aux serveurs web externes ainsi qu'aux serveurs DNS.
Cet exemple n'est pas parfaitement sécurisé. Puisque le port 80 n'est pas obligatoirement utilisé comme port web, un intrus rusé pourrait utiliser celui-ci pour créer un réseau privé virtuel (VPN : virtual private network) au-travers du pare-feu. Pour contourner cela, il faut configurer un mandataire web, et n'autoriser que celui-ci à traverser le pare-feu. Les utilisateurs du réseau local devront alors passer par le mandataire pour atteindre les serveurs web extérieurs.
On peut aussi s'intéresser à la surveillance du trafic qui passe au-travers du pare-feu. Le script qui suit compte chaque paquet. On peut ajouter une ou deux lignes pour compter les paquets qui vont vers un système particulier.
# Flush the current accounting rules ipfwadm -A -f # Accounting /sbin/ipfwadm -A -f /sbin/ipfwadm -A out -i -S 192.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 192.1.2.0/24 /sbin/ipfwadm -A in -i -S 192.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 192.1.2.0/24
Si tout ce que vous cherchez est un pare-feu filtrant, vous pouvez vous arrêter ici. Testez-le et amusez-vous bien :-)