Pare-feu PF sous FreeBSD
PF est le pare-feu officiel d’OpenBSD et fourni en standard avec FreeBSD avec une syntaxe claire et simple à comprendre
Configurer PF le firewall sous FreeBSD
Commençons par activer pf grâce au fichier /etc/rc.conf, on définit aussi le fichier qui contiendra les régles
pf_enable="YES" pf_rules="/etc/pf.conf"
Lancement du service
service pf start
Fichier de règles /etc/pf.conf
# MACROS (variables qui seront remplacées par leurs valeurs dans le reste du fichier) if="igb0" addr="100.000.000.000 » # Adresse ip séparé par des virgules qui seront autorisées à tout faire sur le serveur trusted= ‘ { 123.123.123.123, 213.213.213.213 } ’ # TABLES Persistant table <bruteforce> persist file "/var/db/pf/bruteforce" # REGLES # Ne filtre pas la boucle locale set skip on lo0 #Normalisation des paquets entrants (permet d’éviter des paquets malformés volontairement ou non) scrub in all #Stop tout par défaut block all # Stop les tables persistant et arrête de lire le fichier block drop in from <bruteforce> # Protection contre l'ip spoofind antispoof log quick for $if inet # Arrête les tentatives de déterminer l'os block in log quick on $if proto tcp flags FUP/WEUAPRSF block in log quick on $if proto tcp flags WEUAPRSF/WEUAPRSF block in log quick on $if proto tcp flags SRAFU/WEUAPRSF block in log quick on $if proto tcp flags /WEUAPRSF block in log quick on $if proto tcp flags SR/SR block in log quick on $if proto tcp flags SF/SF #On laisse passer sur le tcp udp et icmp les adresses ip de confiance pass in quick on $if inet proto tcp from $trusted to any flags S/SA keep state pass in quick on $if inet proto udp from $trusted to any keep state pass in quick on $if inet proto icmp from $trusted to any keep state # Si c’est votre serveur web, on laisse passer les demandes sur le port 80 (www) pass in quick on $if inet proto tcp from any to $addr port 80 keep state #On bloque les tentatives de connexion sur des ports sensibles ou l’on ne devrait pas accéder normalement # ssh de notre serveur ou l’on a changé le port par défaut block in quick on $if inet proto tcp from any to $addr port ssh flags S/SA ( max 0, overload <bruteforce>) # smtp ... block in quick on $if inet proto tcp from any to $addr port smtp flags S/SA ( max 0, overload <bruteforce> …
Charger les règles
Attention gardez toujours une connexion supplémentaire ouverte à côté au cas où
pfctl -e -f /etc/pf.conf
pfctl ou comment contrôler votre pare-feu
Afficher le contenu des tables
pfctl -t table -T show
Ajouter une ip à une table (attention perdue après un redémarrage)
pfctl -t table -T add 123.123.123.123
Idem pour supprimer une ip d’une table
pfctl -t table -T delete 123.123.123.123
Voilà un point de départ à adapter à votre serveur en fonction des services fournis par celui-ci.