Post

Come configurare regole firewall su OPNsense

Se siete novelli nelle regole firewall come ero io prima di decidermi a configurare il mio personale router/firewall può volerci del tempo per capire al meglio e sentirsi confidenti nella implementazione. Cercherò di affrontare e chiarire l’argomento con questo post.

Introduzione

Prima di tentare di costruire il mio router, ho effettuato diverse ricerche in modo da sapere a cosa stavo andando in contro. In particolare, ho letto diversi post e guardato diversi video su internet su come creare regole firewall, visto che è uno dei motivi principali del perchè stavo intraprendendo questo progetto: implementare maggiore sicurezza nella mia rete domestica.

Il processo in se di definizione delle regole firewall sembrava abbastanza semplice, fino a quando non mi sono seduto per scrivere le mie regole. Iniziare con una tabula rasa può essere difficile quando si è principianti, quello che seguirà è un discreto set di regole che limita gran parte del traffico di rete all’interno della rete domestica senza sacrificarne l’usabilità.

Saprai di aver fatto un ottimo lavoro quando la tua dolce metà (o idealmente mai) si lamenta di problemi di connettività durante l’utilizzo di dispositivi sulla rete domestica.

Uno dei primi punti da affrontare quando hai deciso di fare la seguente scelta è dedicare un po’ di tempo a pensare a ciò che vuoi ottenere costruendo il tuo router/firewall. Per i miei bisogni, sapevo che volevo separare la mia rete domestica in diverse reti logiche (tramite VLAN - Virtual Local Area Network). Di seguito alcune domande che ho dovuto pormi: quali servizi voglio bloccare o consentire all’interno della mia rete e al di fuori della mia rete? In quale VLAN devo inserire ogni dispositivo? Come posso limitare il maggior traffico di rete possibile senza rendere difficile l’utilizzo della mia rete?

Configurazioni di Default OPNsense Firewall

OPNsense crea automaticamente delle regole di default una volta installato: una regola anti-blocco per accedere alla WebUI di amministrazione e una regola “allow all” per i protocolli internet IPv4 e se definiti IPv6, questo per l’interfaccia LAN quando si configura l’interfaccia LAN/WAN al momento della configurazione di OPNsense. La prima regola impedisce di chiudersi fuori verso le pagine di amministrazione sul nostro router e consentono l’accesso a Internet senza nessuna restrizioni per la rete. La configurazione predefinita del firewall ci consente di utilizzare il router OPNsense come un tipico router di livello consumer/commerciale. Collega i vari dispositivi direttamente al router (o ad uno switch collegato al router) e funzioneranno. Se la regola di “allow all” viene disabilitata o rimossa, tutto il traffico verso Internet e altre possibili reti locali verrà bloccato ad eccezione dell’accesso alle pagine di amministrazione Web OPNsense.

Per visualizzare tali regole, passate alla pagina Firewall > Rules > LAN:

Desktop View

Ordine delle regole firewall

L’elaborazione delle regole del firewall è ideata per impedire il traffico di default: nessuna regola definita = blocca tutto il traffico. l’ordine di come vengono elaborate le regole è dall’alto verso il basso dell’elenco, quindi l’ordine delle regole nell’elenco è fondamentale.

Quando il traffico di rete corrisponde a qualsiasi regola, sia essa una regola “consenti - Allow” o “blocca - Block”, non vengono elaborate regole successive. La prima regola trovata e che è valida vince (first match rule) e tutte le regole sottostanti vengono ignorate. Ciò significa che devi pensare con criterio al corretto ordine delle regole. Non si possono semplicemente aggiungere in modo casuale e aspettarsi che funzionino.

Desktop View

Quando si creano regole firewall è utile considerare di inserire le regole più specifiche in cima all’elenco e le regole più generali in fondo. Il traffico di rete più specifico viene consentito o negato, mentre il traffico di rete che non corrisponde a nessuna delle regole specifiche verrà gestito dalle regole più ampie. Le regole più ampie sono come regole “catch all” che possono consentire o negare tutto il traffico di rete non specificato. In ambienti più restrittivi, una regola “nega tutto il resto - deny all other” può essere in fondo mentre in un ambiente domestico, una regola “consenti a tutti gli altri - allow all other” può essere più appropriata (con la consapevolezza che sarà meno restrittiva e sicura).

Creare le Regole

Iniziamo a definire qualche regola:

Consentire il traffico ad uno specifico server DNS

Una delle prime regole da creare per una maggiore sicurezza è quella di consentire solo i server DNS specificati dal tuo router/server dns locale.

Ciò consente di controllare i server DNS utilizzati nella rete domestica e impedisce ad utenti e dispositivi di utilizzare altri server DNS esterni o di eseguire i propri server DNS all’interno della vostra rete.

È importante farlo se si desidera eseguire i propri di server DNS definiti se presenti o si utilizzano server DNS esterni che forniscono filtraggio/blocco dei contenuti. Queste regole del firewall DNS impediranno agli utenti/dispositivi di diventare “rogue” e bypassare il filtro/blocco che hai implementato per la tua rete. Utilizziamo l’interfaccia LAN in questo esempio, che è l’interfaccia predefinita in OPNsense per la rete LAN interna. È possibile sostituire questa interfaccia con qualsiasi altra interfaccia da voi definita. Questo vale per tutti gli esempi di regole che andremo a trattare.

Sarà necessario ripetere i passaggi per consentire server DNS specifici a ogni VLAN/interfaccia definita e connessa a Internet. Se si dispone di diverse o più VLAN/interfacce, è possibile creare un gruppo per le regole. I gruppi vengono elaborati prima delle regole per ogni interfaccia. Le regole in questo caso saranno più facili da mantenere se si fa un corretto uso dei gruppi.

Per aggiungere miglior protezione al vostro server DNS, aggiungere le seguenti due regole:

1. Allow server DNS interno

Option Value
Action Pass
Protocol TCP/UDP
Source any
Source Port any
Destination LAN address
Destination Port 53 (DNS)
Description Allow DNS server interno

Seleziona l’azione “Pass - Passa” per la regola di permesso del traffico. Scegliendo l’indirizzo di origine e la porta di origine con “qualsiasi” rappresentati dal *. Questo cattura tutto il traffico sull’interfaccia LAN che sta andando alla destinazione specificata. Per l’indirizzo di destinazione, selezionare l’indirizzo LAN. Per la porta di destinazione, scegliere la porta default 53 utilizzata dal servizio DNS. L’indirizzo LAN viene utilizzato come destinazione poiché il servizio DNS viene pubblicizzato sull’indirizzo IP di ciascuna interfaccia.

L’indirizzo IP dell’interfaccia viene utilizzato anche come indirizzo gateway per i dispositivi presenti su quella rete. Quando si esaminano le informazioni DHCP per ogni dispositivo, verrà visualizzato l’indirizzo della LAN come server gateway e server DNS. Es. per la mia configurazione, è l’indirizzo 192.168.1.1.

L’indirizzo IP DNS può essere diverso dall’indirizzo IP del gateway a seconda della configurazione della vostra rete, ma per questo esempio, presumo che sia lo stesso poiché stiamo utilizzando la configurazione del server DNS di OPNsense e non un server DNS o un servizio DNS esterno. Poiché è possibile utilizzare dei server DNS con il Raspberry Pi (tramite il software Pi-hole come già trattato), si possono definire due diversi indirizzi IP del server DNS che non sono gli stessi dell’indirizzo IP del gateway.

2. Block qualsiasi DNS server esterno

Option Value
Action Block
Protocol TCP/UDP
Source any
Source Port any
Destination any
Destination Port 53 (DNS)
Description Block DNS esterno

Seleziona “Block - Blocca” per la regola di negazione del traffico. Ancora una volta l’indirizzo di origine e la porta devono essere impostati su “qualsiasi - any” sulla rete LAN. Per questa regola di blocco, la destinazione deve essere “qualsiasi” perché vogliamo bloccare qualsiasi tentativo di utilizzare qualsiasi altro server DNS.

Ricorda che a causa dell’ordine delle regole, ogni tentativo di accedere al server DNS specificato attraverso la prima regola “consenti” definita poco sopra, avrà esito positivo e l’elaborazione delle regole verrà interrotta per tale richiesta. Tuttavia, se un dispositivo sta tentando di accedere a un server DNS esterno, raggiungerà la regola di “blocco” poiché la regola “consenti” non passerà, negando l’accesso al server DNS.

L’elenco delle regole dovrebbe essere simile al seguente:

Desktop View

Dovrebbe essere corretto aggiungere queste regole in cima all’elenco della tua lista. Se visualizzi l’interfaccia LAN, non puoi spostare alcuna regola al di sopra della regola anti-blocco, ma è corretto definire le regole sotto quest’ultima. La prima regola consente l’accesso al server DNS locale, mentre la seconda regola blocca l’accesso a tutti gli altri server DNS, indipendentemente dal fatto che siano locali o remoti.

Permettere l’accesso all’indirizzo gateway della interfaccia

Nel caso in cui si dispone di più VLAN/interfaccia sulla rete, è necessario assicurarsi che l’accesso alle altre reti sia bloccato ad eccezione delle poche eccezioni che andremo a consentire.

A causa del modo in cui verranno impostate le regole in questa dimostrazione, sarà necessario consentire il traffico di rete all’interno di ciascuna VLAN/interfaccia per accedere al proprio indirizzo IP del gateway, che sarà lo stesso dell’indirizzo IP assegnato all’interfaccia. Se non lo eseguiremo e bloccheremo tutti gli indirizzi IP privati, bloccherà l’accesso a Internet e ad altri servizi.

Spero che, mentre dimostro questo esempio, capirete il ragionamento alla base per questa regola.

È possibile decidere di bloccare l’accesso solo alle VLAN configurate sulla rete specificando ogni singolo indirizzo di rete VLAN, il che significa che non sarebbe necessaria la regola “Allow - Consenti” per l’indirizzo del gateway di interfaccia. Tuttavia, se definisci nuove VLAN, dovrai ricordarti di aggiungerle alla regola “Block - blocco”. In caso contrario, le altre reti avranno pieno accesso alla nuova rete, poiché prevediamo di avere una regola “consenti tutto - Allow All” in fondo alle nostre liste di regole!. Pertanto, è più sicuro definire una regola che blocchi tutti gli indirizzi IP privati per ogni VLAN/interfaccia e aggiungere la regola “Allow - Consenti” precedente per consentire l’accesso all’indirizzo IP del gateway di interfaccia. Se si crea una nuova VLAN, di default l’accesso viene bloccato finché non lo si consente. Questa scelta è più sicura perché costringe a creare una regola “Allow” anziché consentire l’accesso di default. Non sarebbe simpatico scoprire in seguito che tu (o chiunque altro) ha il pieno accesso alle risorse di rete dove non dovrebbe. Vedremo come configuriamo la regola “blocca tutte le reti private” successivamente. Questo avvertimento anticipato era per evitare potenziale confusione (sperando di non aggiungerne ulteriore).

Per consentire l’accesso all’indirizzo IP del gateway dell’interfaccia:

Option Value
Action Pass
Protocol any
Source IOT net
Source Port any
Destination IOT address
Destination Port any
Description Consentire accesso al gateway

Desktop View

Permettere un servizio web locale attraverso VLANs/Interfacce

Se si utilizzano VLAN o interfacce multiple con diverse subnet e si espone un servizio web locale come un Media Server, è possibile consentire l’accesso al server da diversi dispositivi su differenti reti. Per tale scopo, vai all’interfaccia in cui risiede il tuo dispositivo client da dove vuoi raggiungere. Quindi dobbiamo consentire l’accesso alla porta 32400 (un esempio la porta predefinita per Plex). Dovresti scegliere la rete dell’interfaccia che hai selezionato come origine e sulla destinazione inseriresti l’indirizzo IP del server (oppure puoi definire un alias) e configuriamolo con porta 32400. Questa regola fornisce l’accesso alla rete dalla tua rete IoT al tuo server presente in una rete diversa (VLAN) in modo che ora tu possa guardare Plex dal telefono o dal lettore multimediale.

Option Value
Action Pass
Protocol TCP
Source IOT net
Source Port any
Destination 192.168.10.10
Destination Port 32400
Description Consentire accesso a Plex

Desktop View

La regola cosi definita, consente a qualsiasi dispositivo sulla rete IOT di accedere al Media Server all’indirizzo 192.168.10.10 sulla porta 32400. Presupponendo che Plex si trova in una rete VLAN diversa rispetto alla rete IOT. Altrimenti, se si trovano nella medesima rete, non sarebbe necessaria una regola firewall poiché si avrebbe già accesso al server.

Consiglio vivamente di familiarizzare con gli alias oltre che con i gruppi di regole, soprattutto quando è necessario fare riferimento a diversi ip o reti o determinate cose più di una volta. Nell’esempio precedente, è possibile creare un alias per il nostro servizio Plex in modo che invece di definire l’indirizzo ip 192.168.10.10, è possibile utilizzare l’alias “MediaServer” o qualsiasi nome scelto per il server.

Un ulteriore esempio potrebbe essere un server web che esegue Wordpress o Nextcloud. Dovresti in caso consentire la porta 443 (HTTPS) o dove esposto tale servizio. Puoi mettere queste regole di accesso per i tuoi servizi di rete locali da qualche parte anche nel mezzo dell’elenco delle regole e dovresti essere ok.

Option Value
Action Pass
Protocol TCP
Source IOT net
Source Port any
Destination 192.168.10.10
Destination Port 443 (HTTPS)
Description Consentire accesso a web server

Desktop View

È possibile comunque avere su tutti i tuoi dispositivi sulla stessa rete definito e configurato un ulteriore firewall per avere un livello simile di isolamento tra i dispositivi gestiti. (e certamente incoraggio anche i firewall a livello di dispositivo come un ulteriore livello di sicurezza e per la messa a punto di una rete, questa maniera non esclude l’altra), ci sono vantaggi e praticità nel controllare il traffico di rete a livello di firewall del router piuttosto che a livello di ogni singolo dispositivo.

Tra questi vantaggi è la possibilità di limitare la comunicazione tra un gran numero di dispositivi in modo rapido ed efficiente. Tutti i dispositivi situati in una rete possono essere bloccati dall’accesso ai dispositivi in un’altra rete senza dover configurare ogni singolo dispositivo presente su quest’ultima. L’accesso ai singoli dispositivi o alla rete può essere concesso in base alle proprie esigenze. Queste configurazioni possono essere centralizzate in un unico posto: il firewall del router (questo in reti meno complesse come la rete domestica poiché la gestione della configurazione in un’azienda potrebbe essere meno centralizzata).

Bloccare l’accesso ad altre VLAN

Una volta definiti gli accessi ai nostri servizi di rete locali tra le nostre VLAN, è probabile che si necessiti di una regola per bloccare l’accesso alle altre VLAN. Di Default, l’accesso ad altre reti verrà bloccato a meno che non si disponga di una regola catch-all “consenti tutto - Allow All” in fondo all’elenco delle regole. Dato che abbiamo bisogno “consenti tutto - Allow All” per consentire qualsiasi traffico che non hai specificamente bloccato, avrai necessità di una regola per bloccare il traffico tra le VLAN nella tua rete. In caso contrario, ogni dispositivo della rete può comunicare con qualsiasi altro dispositivo delle altre VLAN, il che vanifica lo scopo della separazione delle reti.

Un modo semplice per farlo, soprattutto se si dispone di diverse VLAN, consiste nel creare un alias (come precedentemente accennato) con tutti gli intervalli di indirizzi IP privati. È possibile utilizzare tale alias per le nostre regole in ogni VLAN. Non sarà necessario specificare il singolo intervallo IP di ogni VLAN della rete. Il blocco dell’intervallo IP privato è utile poiché ha l’ulteriore vantaggio di impedire la creazione di altre reti private sconosciute sulla tua rete.

Questo potrebbe non essere rilevante per la maggior parte degli utenti a livello domestici, ma forse potresti essere preoccupato per i coinquilini e difendere le proprie reti da quelle rogue all’interno della tua rete.

Passare a Firewall > Alias per definire un nuovo alias. L’alias delle reti IP private dovrebbe essere simile al seguente:

Desktop View

La seguente regola blocca tutte le reti IP private (difiniscilo per ogni interfaccia ma ricordati di cambiare l’origine a seconda dell’interfaccia sul quale stai definendola):

Option Value
Action Block
Protocol any
Source LAN net
Source Port any
Destination PrivateNetworks
Destination Port any
Description Bloccate accesso a tutte le altri rete private

Desktop View

Ricorda se devi consentire il traffico per dispositivi specifici o reti VLAN, devi posizionare la regole sopra la regola “Bloccate accesso a tutte le altri rete private”. Se non li metti al di sopra di quest’ultima, il tuo traffico verrà scartato prima che raggiunga la regola “consenti - Allow”.

Isolare l’accesso ad altre VLAN in modo “pulito”

Un ulteriore modo per isolare una VLAN dal resto della network è quello di configurare in questo modo la policy con invert match. La selezione di questa opzione annullerà il Match della regola in modo che tutto il traffico, ad eccezione del valore della Source, attiverà la regola.

Usarlo su una interface Net delle macros come la LAN net può portare a dei comportamenti indesiderati sulla regola soprattuto se l’interfaccia usa degli indirizzi ip virtuali. Questo è dovuto dalla corrispondenza del traffico rispetto alla rete di interfaccia o dai VIP. Ad Esempio, assegnare ad una Subnet 192.168.1.0/24, un VIP (virtual ip) di 10.0.0.1/32, e una regola che nega l’interface macro come pass on $LAN from any to ! $LAN_net, il traffico destinato alla 192.168.1.100 passerà a causa dell’indirizzi IP di destinazione configurato che non corrisponde a quello del VIP.

Option Value
Action Pass
Interface TESTVLAN
Protocol any
Source TESTVLAN net
Source Port any
Destination/Invert V
Destination PrivateNetworks
Destination Port any
Description Viene bloccato accesso a tutte le altri rete private dalla network vlan

Desktop View

Per Finire, la Regola “Allow All”

Per l’utilizzo nella rete domestica, credo sia ragionevole avere una regola “consenti tutto - Allow All” in fondo all’elenco delle regole. Il motivo è che questa regola consentirà a tutto il traffico che non è stato specificamente bloccato con altre regole, di passare attraverso il firewall, incluso il traffico sulla rete locale o su Internet. Tale regola rappresenta ciò che la maggior parte degli utenti si aspetterebbe che accada: consentire tutto il resto in modo che le cose “funzionino”.

Se si desidera definire una rete domestica più rigorosa, è possibile consentire solo alcune porte in uscita, ma è necessario avere una solida conoscenza di tutto ciò a cui è necessario accedere quotidianamente e dei servizi esposti nella rete domestica. Personalmente non ho speso ulteriore tempo per determinare ogni singola porta in uscita di cui ho bisogno per consentire l’accesso. Alcuni dispositivi come gli iPhone utilizzano un disverse porte per scopi diversi. Potresti trovarti ad aggiungere alcune porte e intervalli di porte. Quindi preparati a spendere un po’ per mettere a punto ciò di cui hai bisogno se desideri percorrere quella strada.

Avere una regola “consenti tutto” in fondo all’elenco potrebbe non essere necessariamente appropriato in un ambiente più restrittivo in cui tutto il traffico di rete deve essere fortemente controllato e monitorato. Sarà quindi più possibile in questo scenario avere un “blocca tutto - Block All” come regola predefinita in fondo all’elenco e consentire solo il traffico di rete specifico. Una regola “blocca tutto” è implicita se il traffico non corrisponde a nessuna delle regole specificate nell’elenco, ma puoi comunque aggiungere una regola “blocca tutto” se ti aiuta a capire ciò che sta accadendo durante l’elaborazione della regola.

Sommario

Di seguito una breve resoconto di ciò che abbiamo definito. Queste regole potrebbero essere applicate a una singola VLAN/interfaccia come una VLAN IOT che ha accesso limitato a un’altra VLAN che ha un Plex Media Server e un server web. È possibile utilizzarlo come modello per altre VLAN con autorizzazioni variabili per ogni rete:

  • Consenti server DNS interno
  • Blocca qualsiasi altro server DNS
  • Consenti accesso all’indirizzo della interface gateway
  • Consenti accesso al Media Server nella tua network
  • Consenti accesso ad un web server nella tua network
  • Blocca accesso a tutte le altri rete private/VLANs
  • Consenti accesso a tutto (regola default “allow all”)

Spero che questo how-to ti sia tornato utile per iniziare a scrivere ed avere un idea della definizione di alcune regole.

Questo post è sotto licenza CC BY 4.0 a nome dell'autore.

DISCLAIMER: Questo blog non rappresenta una testata giornalistica in quanto viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge N°62 del 07/03/2001. Leggi di più

© Cybertome. Alcuni diritti riservati.

Servizio offerto da Jekyll con tema Chirpy