Für die Nutzung von authpf werden lokale Benutzer angelegt:
adduser -s -class authpf -batch foo nogroup "Foo Bar"
Dann fügt man den öffentlichen SSH Schlüssel in /home/foo/.ssh/authorized_keys ein und erzeugt die userspezifischen Firewall Regeln und Nachrichten für das Anmeldefenster. Zum Beispiel wird der externe TCP Port 3389 über das SSH-Gateway auf die interne Maschine in der DMZ umgeleitet, um den Zugriff auf den Remote Desktop einer Windows Maschine zu erlauben:
pass in on em0 inet proto tcp from $user_ip to em0 port 3389 rdr-to 192.168.xxx.yyy port 3389
pass out on em0 inet proto tcp from $user_ip to 192.168.xxx.yyy port 3389 nat-to em0
( /etc/authpf/users/foo/athpf.rules )
Das SSH-Gateway befindet sich hierbei im selben Ethernet-Segment, wie die Windows-Maschine!
Dem Benutzer kann man folgende Nachricht ausgeben:
You can now access following service:
RDP to Windows machine: rdesktop foo@ssh-gateway"
( /etc/authpf/users/foo/authpf.message )
Achtung: Anders als bei Linux iptables, werden alle Regeln auf die
IP-Pakete angewendet und die letzte Regel gilt. Ausnahme man
verwendet das Schlüsselwort "quick", dann bricht die Abarbeitung an
der Stelle ab!
Zum anschauen der erzeugten Regeln, mit ps aux die PID raussuchen:
ps axw|grep authpf
pfctl -a "authpf/foo(xxx)" -s rules
Damit kann man wunderbar Zugriff für externe Firmen und Mitarbeiter auf seine DMZ erlauben, ohne die Services für Gott und die Welt zu öffnen.
Authpf habe ich 2002 in meiner Hacker-WG in Bonn kennengelernt. Hat ein bißchen gedauert, bis ich es erstmals produktiv einsetze

Puffy rockz!