[Précédent : Problèmes avec FTP] [Index] [Suivant : Exemple #1 : Pare-feu SoHo ]
Authpf altère le jeu de règles pf(4) en ajoutant des règles à un jeu de règles nommé attaché à un point d'ancrage. Chaque fois qu'un utilisateur s'authentifie, authpf crée un nouveau jeu de règles nommé et y charge les règles de filtrage, nat, binat, et rdr. Les règles qu'authpf charge peuvent être configurées par utilisateur ou globalement.
Voici quelques exemples d'utilisation d'authpf :
Authpf enregistre le nom d'utilisateur et l'adresse IP de chaque utilisateur qui réussit à s'authentifier ainsi que le début et la fin de leur session. L'enregistrement se fait via syslogd(8). En utilisant cette information, un administrateur peut déterminer qui s'est connecté et responsabiliser les utilisateurs par rapport à leur trafic réseau.
nat-anchor authpf
rdr-anchor authpf
binat-anchor authpf
anchor authpf
PF "sortira" du jeu de règles principal pour évaluer les règles authpf à l'endroit où les règles anchor sont placées dans le jeu de règles. Il n'est pas nécessaire que les quatre règles anchor soient présentes. Par exemple, si authpf ne doit charger aucune règle de traduction nat, la règle nat-anchor peut être omise.
Le premier fichier contient des règles qui seront uniquement chargées lorsque l'utilisateur $USER (cette variable étant à remplacer par le nom d'utilisateur) se connecte. La configuration spécifique par utilisateur est utilisée lorsqu'un utilisateur donné -- un administrateur par exemple -- nécessite un jeu de règles différent du jeu de règles authpf par défaut. Le deuxième fichier contient les règles par défaut qui sont chargées pour tout utilisateur qui ne possède pas son propre fichier authpf.rules. Si le fichier spécifique à l'utilisateur existe, il est chargé au lieu du fichier par défaut. Au moins un des fichiers doit exister. Autrement authpf ne fonctionnera pas.
Les règles de filtrage et de traduction ont la même syntaxe que pour n'importe quel autre jeu de règles PF avec une seule exception : Authpf permet l'utilisateur de deux macros prédéfinies :
Il est recommandé d'utiliser la macro $user_ip pour ne permettre que le trafic provenant de la machine de l'utilisateur authentifié.
Autrement, il est aussi possible d'autoriser uniquement l'accès à des utilisateurs spécifiques en mettant leur nom d'utilisateur dans le fichier /etc/authpf/authpf.allow. Si le fichier /etc/authpf/authpf.allow n'existe pas ou contient "*", authpf permettra l'accès à n'importe quel utilisateur qui a réussi à se connecter via SSH et qui n'est pas explicitement banni.
Si authpf n'est pas capable de déterminer s'il doit autoriser ou interdire l'accès à un utilisateur, il affichera un message bref et déconnectera l'utilisateur. Une entrée dans le fichier /etc/authpf/banned/ est toujours prise en compte avant une entrée dans le fichier /etc/authpf/authpf.allow.
Il existe plusieurs méthodes pour attribuer authpf à un utilisateur comme shell de connexion :
# ps -ax | grep authpf 23664 p0 Is+ 0:00.11 -authpf: charlie@192.168.1.3 (authpf)
Dans l'exemple ci-dessus, charlie est connecté depuis la machine 192.168.1.3. En envoyant un signal SIGTERM au processus authpf, on peut déconnecter l'utilisateur. Authpf supprimera aussi toute règle chargée pour l'utilisateur et supprimer toutes les connexions à état que l'utilisateur aura ouvert.
# kill -TERM 23664
Le fichier /etc/authpf/authpf.rules contient les règles
suivantes :
wifi_if = "wi0" dns_servers = "{ 10.0.1.56, 10.0.2.56 }" pass in quick on $wifi_if proto udp from $user_ip to $dns_servers \ port domain keep state pass in quick on $wifi_if proto tcp from $user_ip to port { ssh, http, \ https } flags S/SA keep state |
L'administrateur charlie devra être capable
d'accéder aux serveurs SMTP et POP3 du campus en plus des droits
d'accès précités. Les règles suivantes font
partie du fichier /etc/authpf/users/charlie/authpf.rules :
wifi_if = "wi0" smtp_server = "10.0.1.50" pop3_server = "10.0.1.51" dns_servers = "{ 10.0.1.56, 10.0.2.56 }" pass in quick on $wifi_if proto udp from $user_ip to $dns_servers \ port domain keep state pass in quick on $wifi_if proto tcp from $user_ip to $smtp_server \ port smtp flags S/SA keep state pass in quick on $wifi_if proto tcp from $user_ip to $pop3_server \ port pop3 flags S/SA keep state pass in quick on $wifi_if proto tcp from $user_ip to port { ssh, http, \ https } flags S/SA keep state |
Voici le contenu du jeu de règles principal figurant dans le
fichier /etc/pf.conf :
# macros wifi_if = "wi0" ext_if = "fxp0" scrub in all # filtrage block drop all pass out quick on $ext_if proto tcp from $wifi_if:network flags S/SA \ modulate state pass out quick on $ext_if proto { udp, icmp } from $wifi_if:network \ keep state pass in quick on $wifi_if proto tcp from $wifi_if:network to $wifi_if \ port ssh flags S/SA keep state anchor authpf in on $wifi_if |
Le jeu de règles est très simple :
Le jeu de règles par défaut est utilisé pour bloquer tout trafic non strictement nécessaire pour le fonctionnement de l'architecture. Le trafic sortant de l'interface externe est autorisé. Cependant le trafic en entrée de l'interface sans fil est interdit. Une fois l'utilisateur authentifié, leur trafic est autorisé à traverser l'interface sans fil et à accéder au reste du réseau. Le mot-clé quick est utilisé un peu partout afin que PF n'évalue pas tous les jeux de règles nommés quand une nouvelle connexion traverse la passerelle.
[Précédent : Problèmes avec FTP] [Index] [Suivant : Exemple #1 : Pare-feu SoHo ]