IPFW sur FreeBSD 13

IPFW est déjà installé, il s'agît de l'un des pare-feux par défaut sur FreeBSD.
Il possède des jeux de configurations pré-définis que l'on peut utiliser immédiatement pour commencer à sécuriser un poste de travail par exemple.
Voir à ce sujet l'article sur le manuel FreeBSD

Au-delà, il est également possible d'écrire sa propre matrice de flux, en rédigeant un script de règles qui sera ré-exécuté à chaque redémarrage du serveur :

(Passer en root)


Quelques commandes base avec IPFW

Pour permettre le lancement du pare-feu dès le démarrage du serveur :

sysrc firewall_enable='YES'

Tapper des règles (un exemple ci-dessous, bloquer le port 55555 avec tcp).

Mais attention, ces règles s'effaceront au redémarrage du serveur.
L'utilisation de la commande ipfw directement dans le shell est donc temporaire !

ipfw -q add drop tcp from any to me 55555

Supprimer toutes les règles entrées précédemment

ipfw flush

(Désactiver IPFW (au cas où))

service ipfw stop
sysrc firewall_enable='NO'

Utiliser IPFW avec un script

Voici un exemple comprenant plusieurs cas de figure d'une matrice de flux, à télécharger et adapter à votre sauce. La liste est, bien entendue, absolument non exhaustive !!

Télécharger « regles-ipfw.sh »

Vous devrez changer le nom de vos interfaces réseaux au début du script, et commenter ou dé-commenter les règles dont vous aurez (ou non) besoin. Voir, rajouter des interfaces réseaux si vous en avez plus de 3

Une fois votre script au point, vous devrez l'ajouter au fichier /etc/rc.conf.
Je rappelle que le rc.conf doit DEJA contenir firewall_enable=YES
Rajouter donc :

sysrc firewall_script='/etc/regles-ipfw.sh'

(Ré)activer le service

service ipfw start
service ipfw restart

Faire du NAT avec IPFW

ipfw a la capacité de créer du NAT.
Mais pour cela, il faut ajouter :

sysrc gateway_enable=YES
sysrc firewall_enable=YES
sysrc firewall_nat_enable=YES

Les 3 doivent être ACTIFS.

Voir à ce sujet l'article sur le manuel FreeBSD


Faire du DNAT avec IPFW

on peut également faire du DNAT.
Avant cela, envoyer dans le rc.conf les services à exécuter au démarrage :

sysrc gateway_enable=YES
sysrc firewall_enable=YES
sysrc firewall_nat_enable=YES

Puis, dans votre fichier de configuration de règles (par exemple dans celui mis à télécharger : /etc/regles-ipfw.sh), rajouter :

redirect_port IP-DU-LAN:PORT PORT-WAN

Le PORT-WAN est le port sur lequel est reçu la demande de connexion sur le pare-feu

Exemple : Je suis chez moi, sur mon poste A. Je veux pouvoir travailler, en SSH, sur le serveur B (dont l'IP est 192.168.0.200), présent dans l'infrastructure de mon entreprise (derrière un pare-feu).
Je veux, qu'en me connectant à l'adresse IP publique du pare-feu de mon entreprise, sur le port 54333, je puisse accéder au serveur B en ssh (on va rester simple, sur le port 22)

Dans le pare-feu de l'entreprise (/etc/regles-ipfw.sh), je précise:

redirect_port 192.168.0.200:22 54333

On peut aussi préciser un intervalle de ports !

redirect_port 192.168.0.200:2000-3000 4000-5000

BIEN ENTENDU, NE PAS OUBLIER DE CRÉER LES RÈGLES POUR AUTORISER LE TRAFIC A ENTRER !!!


Faire du SNAT avec IPFW

on peut également rediriger une adresse IP privée du LAN sur une adresse publique :
toujours :

sysrc gateway_enable=YES
sysrc firewall_enable=YES
sysrc firewall_nat_enable=YES

Puis, ajouter à votre fichier de conf scripté (/etc/regles-ipfw.sh) :

redirect_address IP-LOCALE IP-PUBLIQUE

⬆️ Retour en haut de la page