[Precedente: Considerazioni con l'FTP] [Indice] [Successivo: Ridondanza di firewall con CARP e pfsync]
Authpf carica le regole filtraggio/NAT dell'utente in un unica anchor point. L'ancora è chiamata combinando la username UNIX dell'utente e il process-id di authpf nel formato "username(PID)". Ogni ancora utente è conservata all'interno dell'ancora authpf che è a sua volta ancorata alle regole principali di configurazione. La "fully qualified anchor path" diviene quindi:
main_ruleset/authpf/username(PID)
Le regole che authpf carica possono essere configurate sulla base del singolo utente o globalmente.
L'uso di authpf include:
Authpf tramite syslogd(8)effettua il log della username e dell'indirizzo IP di ogni utente che si autentica con successo e inoltre, il tempo di inizio e fine della sessione di login. Usando queste informazioni, un amministratore può determinare facilmente gli utenti collegati ad un particolare orario e rendere responsabili gli utenti per il loro traffico.
Authpf non viene eseguito se il file di configurazione /etc/authpf/authpf.conf non è presente. Anche se il file è vuoto (0 byte), deve essere presente o authpf uscirà immediatamente dopo la corretta autenticazione di un untente.
Le seguenti direttive di configurazione possono essere inserite in authpf.conf:
nat-anchor "authpf/*"
rdr-anchor "authpf/*"
binat-anchor "authpf/*"
anchor "authpf/*"
Ovunque siano piazzate le regole ancora all'interno delle regole di configurazione, da quel punto PF si staccherà dalle regole principali per verificare le regole di authpf. Non è necessario che tutte e quattro le regole ancora siano presenti; per esempio, se authpf non è stato settato per caricare nessuna regola di nat, la nat-anchor può essere omessa.
Il primo file contiene regole che sono caricate solo quando l'utente $USER (il quale è sostituito con il nome utente) si connette. La regola di configurazione per utente è usata solo quando uno specifico utente -- come un amministratore -- richiede un set di regole differenti rispetto alle configurazioni di default. Il secondo file contiene le regole di default che sono caricate per ogni utente che non ha il proprio file authpf.rules. Se il file specifico dell'utente esiste, esso sovrasciverà il file di default. Almeno uno dei due file deve esistere o authpf non funzionerà.
Regole di filtraggio e traslazione hanno la stessa sintassi come in ogni altra regola di PF con una eccezione: Authpf ha due macro predefinite:
Si raccomanda di fare attenzione nell'utilizzare la macro $user_ip per consentire solo ad utenti autenticati il traffico attraverso il gateway.
Oltre la macro $user_ip, authpf farà uso della tabella authpf_users (se esiste) per conservare gli indirizzi IP di tutti gli utenti autenticati. Assicurarsi di definire la tabella prima di usarla:
table <authpf_users> persist
pass in on $ext_if proto tcp from <authpf_users> \
to port smtp flags S/SA keep state
Questa tabella dovrebbe essere usata solo nelle regole da applicare a tutti gli utenti autenticati.
In modo opposto, è anche possibile consentire l'accesso solo a utenti specifici inserendo le username nel file /etc/authpf/authpf.allow. Se il file /etc/authpf/authpf.allow non esiste o "*" è presente nel file, authpf consentirà l'accesso a ogni utente che si collegherà via SSH fin quando non riceverà un divieto esplicito.
Se authpf non sarà in grado di determinare se ad una username è concesso l'accesso sarà stampato un breve messaggio e poi l'utente verrà disconnesso. Una username in /etc/authpf/banned/ sovrascrive sempre una username in /etc/authpf/authpf.allow.
Quando un utente si autentica con successo con authpf, viene mostrato un messaggio di benvenuto.
Hello charlie. You are authenticated from host "64.59.56.140"
Questo messaggio può essere modificato agendo sul file /etc/authpf/authpf.message. Il contenuto di questo file sarà mostrato dopo il messaggio di benvenuto di default.
Ci sono un paio di modi per assegnare authpf come shell utente:
Le classi login sono create nel file login.conf(5). OpenBSD di default ha la seguente classe login per utenti authpf:
authpf:\
:welcome=/etc/motd.authpf:\
:shell=/usr/sbin/authpf:\
:tc=default:
Utenti sono assegnati a una classe di login editando il campo class del database utente passwd(5). Un modo per fare questo è con il comando chsh(1) command.
# ps -ax | grep authpf
23664 p0 Is+ 0:00.11 -authpf: charlie@192.168.1.3 (authpf)
Qui l'utente charlie è collegato dalla macchina 192.168.1.3. Inviando un segnale SIGTERM al processo authpf, l'utente può essere disconnesso. Authpf rimuoverà anche ogni regola caricata per l'utente e ucciderà ogni connessione stateful aperta dall'utente.
# kill -TERM 23664
Il file /etc/authpf/authpf.rules contiene le seguenti regole:
wifi_if = "wi0"
pass in quick on $wifi_if proto tcp from $user_ip to port { ssh, http, \
https } flags S/SA keep state
|
L'utente amministratore charlie ha bisogno di accedere ai server
SMTP e POP3 del campus, navigare su web e usare SSH. Le seguenti
regole sono riportate in
/etc/authpf/users/charlie/authpf.rules:
wifi_if = "wi0"
smtp_server = "10.0.1.50"
pop3_server = "10.0.1.51"
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
|
Le regole di configurazione principali -- presenti in
/etc/pf.conf -- sono le seguenti:
# macro
wifi_if = "wi0"
ext_if = "fxp0"
dns_servers = "{ 10.0.1.56, 10.0.2.56 }"
table <authpf_users> persist
scrub in all
# filtraggio
block drop all
pass out quick on $ext_if inet proto tcp from \
{ $wifi_if:network, $ext_if } flags S/SA modulate state
pass out quick on $ext_if inet proto { udp, icmp } from \
{ $wifi_if:network, $ext_if } keep state
pass in quick on $wifi_if inet proto tcp from $wifi_if:network to $wifi_if \
port ssh flags S/SA keep state
pass in quick on $wifi_if inet proto { tcp, udp } from <authpf_users> \
to $dns_servers port domain keep state
anchor "authpf/*" in on $wifi_if
|
Le regole di configurazione sono molto semplici e fanno le seguenti
Le regole principali sono realizzate per bloccare tutto e consentire solo il traffico necessario. Il traffico è libero di transitare verso le interfaccie esterne ma è bloccato all'ingresso dell'interfaccia wireless dalla policy di default deny. Dopo che un utente si è autenticato, il traffico è consentito in ingresso all'interfaccia wireless e quindi attraverso il gateway sul resto della rete. La keyword quick è usata ovunque, così PF non deve verificare ogni singola regola di configurazione quando una nuova connessione passa attraverso il gateway.
[Precedente: Considerazioni con l'FTP] [Indice] [Successivo: Shell utente per l'autenticazione di gateway]