pf.conf per bloccare * solo * un indirizzo IP specifico quando la VPN non è connessa

1

Sto provando a configurare un firewall filtro dei pacchetti per bloccare l'accesso a un piccolo intervallo di indirizzi IP quando una VPN non è connessa.

Le mie regole dovrebbero consentire il traffico https / http oltre a questo elenco ristretto e specifico di indirizzi IP. È importante che il dispositivo non possa raggiungere questi indirizzi IP quando la VPN non è connessa.

Sto usando il built-in macOS VPN in 10.13

Ho alcune cose abbastanza standard nelle mie regole finora:

vpn_ifs = "{ utun1 ipsec0 }"
hw_ifs = "{ en0 en1 en2 }"
...
pass quick on $vpn_ifs

Il motivo della mia richiesta è che ho una risorsa basata sul web a cui posso accedere solo dopo aver connesso la VPN. Consentendo la connettività a questa risorsa prima che la VPN sia connessa, l'accesso al mio account viene disabilitato.

Ho bisogno di accedere al traffico http e https prima che venga stabilita la VPN per abilitare i servizi che devono funzionare prima che la connessione VPN sia attiva. Incluso, ma non limitato al supporto del captive portal.

    
posta John 27.03.2018 - 19:40
fonte

1 risposta

0

Ogni pacchetto viene valutato rispetto al set di regole del filtro dall'alto verso il basso e vince l'ultima regola di corrispondenza. La parola chiave quick è l'unica eccezione: il pacchetto verrà bloccato o passato immediatamente imperturbato da qualsiasi regola successiva.

Supponendo che tu stia usando l'approccio nega tutto devi autorizzare esplicitamente il passaggio o il rilascio dei pacchetti.

Set di regole:

block all
...

Per soddisfare il tuo requisito di "risorsa basata sul web" devi consentire / negare rapidamente pacchetti a seconda dell'interfaccia:

pass out quick on $vpn_ifs from any to { <web_res1>, <web_res2> } no state  
block out quick on $hw_ifs from any to { <web_res1>, <web_res2> } no state

Per soddisfare il tuo requisito di "traffico http e https" devi consentire il traffico in uscita alla porta 80/443:

pass out on $hw_ifs from any to any port { 80, 443 }

Usando l'approccio nega tutto hai aggiunto alcune regole (ad es. per consentire il traffico da / verso le reti locali).

L'insieme di regole finali ha questo aspetto:

block all
...
rules
...
pass out quick on $vpn_ifs from any to { <web_res1>, <web_res2> } no state  
block out quick on $hw_ifs from any to { <web_res1>, <web_res2> } no state
...
pass out on $hw_ifs from any to any port { 80, 443 }
...
more rules

Qui è un esempio di nega tutto pf.conf con un sacco di regole spiegate. Tuttavia, le regole vengono utilizzate su un gateway FreeBSD: alcune non devono essere applicate o non sono utili nel proprio ambiente. Le singole regole non funzionano affatto (ad esempio funzionalità relative a ALTQ).

    
risposta data 29.03.2018 - 20:15
fonte

Leggi altre domande sui tag