La risorsa Italiana per pfSense

14 maggio 2024

Autenticazione Active Directory con pfSense

 

Tra le più interessanti e utili funzioni che offre pfSense c'è l'opportunità di autenticare gli utenti appoggiandosi su back end di tipo LDAP, tipicamente Active Directory.


Ciò permette a un utente di accedere con le proprie credenziali di dominio alla OpenVPN remota o all'interfaccia web del firewall, laddove autorizzato.


Che cos'è LDAP?


LDAP è un protocollo applicativo utilizzato per gestire e accedere a servizi informativi distribuiti di directory. Organizza i dati in modo gerarchico, facilitandone il controllo e la gestione. E' il protocollo su cui Active Directory di Microsoft si appoggia per accedere al proprio database di utenti computer e oggetti.


Configurazione autenticazione LDAP con Active Directory su pfSense

Posizionarsi su System - User Manager - Authentication Servers

Cliccare su Add

Scegliere un Nome Descrittivo: SRV-DC

Type: LDAP

Hostname or IP address: l'ip o l'hostname di un domain controller che il firewall può raggiungere

Porta e protocollo: lasciare di default o impostare su LDAPS se necessario coi relativi parametri


Search Scope: Entire Subtree

Base DN: la base del vostro AD -  es. DC=pfsenseitaly,DC=local

Authentication container: la OU che contine gli utenti da autenticare (utilizzare il tasto "Select a container") - es. OU=Users,DC=pfsenseitaly,DC=local

Extended Query: da flaggare

Query: gruppo precedentemente creato in AD e utilizzato per identificare uno specifico gruppo di utenti autorizzati - es. memberOf=CN=OpenVPN_Auth,OU=Groups,DC=pfsenseitaly,DC=local

Bind credentials: inserire le credenziali di un utente che abbia accesso in lettura al db di AD



Lasciare il resto di default e salvare.


Verifica autenticazione

Posizionarsi su Diagnostics - Authentication
Scegliere il back-end di autenticazione appena creato
Inserire le credenziali di un utente e cliccare su Test




7 maggio 2024

Log Management in pfSense: quali quali informazioni fondamentali ci offrono


Abbiamo visto in precedenza come conservare i log generati da pfSense su un server syslog remoto, ma non ci siamo ancora soffermati ad analizzare quali sono le principali voci che vengono registrate sul nostro firewall.

Ricordiamo che i log di pfSense sono conservati nel percorso /var/log e sono fruibili tramite interfaccia web nel menù Status > System Logs.

Andremo ad analizzare le sezioni più significative

  1. System
  2. Firewall
  3. DHCP
  4. Authentication
  5. OpenVPN e IPsec
  6. Packages 

1. SISTEMA

I log di tipo System a loro volta contengono diverse sottosezioni, queste le principali
  1. General: racchiude tutti gli eventi generati dai processi, da quelli generati dal kernel, all'interfaccia web e a molti altri sottosistemi sia quelli installati di default che alcuni pacchetti aggiuntivi. Si tratta comunque di processi che non producono molte registrazioni, I sottosistemi che generano grosse quantità di log, hanno il loro menù dedicato. Questi log sono utili per monitorare le attività dei principali processi e servizi (start e stop), sicurezza (sshguard), sincronia di membri di un cluster, login via web, comandi di riavvio o eventi legati allo stato dell'UPS se ce n'è uno collegato, e così via 
  2. Gateways: registra gli eventi relativi ai Gateway (in particolare perdita di pacchetti, stato online/offline, latenza dei monitor). Sono utili per il troubleshooting sulla connettività e sul multiwan
  3. Os Boot: riporta l'output della procedura di boot ed è utile per il trobleshooting dell'avvio

2. FIREWALL

I log di questo tipo di default intercettano tutti gli eventi di block svolti dal Packet Filter.
Come configurazione globale o su singole regole è attivabile anche il logging dei pass
Viene segnalata l'azione (block o pass), l'orario, l'interfaccia di origine, la regola matchata, ip e porta di origine e di destinazione e tipo di protocollo (TCP/UDP + flag di extra information).

Sono fondamentali per verificare se c'è un evento di blocco e dovuto a cosa o, viceversa, per capire se il traffico stia effettivamente passando.

L'interpretazione di questi log merita un articolo a parte, che linkeremo appena disponibile

3. DHCP

Quando attivo su una o più interfacce, registrano i log del servizio DHCP server.
Contiene tutte le informazioni necessarie per verificarne il corretto funzionamento (gestione del lease, pool pieno, ecc.)

4. AUTHENTICATION

Contiene le informazioni circa i login riusciti e non, sia al firewall stesso sia per quei servizi per i quali svolge la funzione di back-end di autenticazione (Captive Portal per esempio o le VPN L2TP)
Monitora inoltre lo stato e i cambiamenti di diversi servizi (CARP, sshguard,ecc.)

5. VPN

IpSec e OpenVPN dispongono entrambe di un log dedicato, ognuno dei quali contiene informazioni sulle connessioni in corso e permettono di verificare al livello di dettaglio necessario (la verbosità potrebbe essere necessario cambiarla a livello dell'istanza da monitorare) eventuali problemi sulle connessioni (mancate risposte, certificati scaduti, mismatch di configurazione, configurazioni deprecate, autenticazione riuscita/fallita, ecc.)

6. PACKAGES

Questo log di default è vuoto, ma alcuni pacchetti extra (es. HAProxy) hanno un flag che permette di registrare i propri log, che finiranno in questa sezione.

Il menù dei log di pfSense contiene anche altre voci, ma oggi abbiamo voluto dettagliare maggiormente quelle che riteniamo più importanti.






17 aprile 2024

Aggiugnere rotte alla OpenVPN con FQDN


Un utilizzo abbastanza classico della VPN è quello di veicolare il traffico verso indirizzi specifici facendo passare il traffico dal tunnel, per presentarsi alla destinazione, anzichè col proprio indirizzo, con l'IP del sito in cui si trova la VPN.

Per esempio se il Sito A è configurato per poter essere accessibile solo dall'IP pubblico del mio ufficio, posso creare una VPN con l'ufficio che mi permetta di veicolando il traffico via VPN per arrivare al sito A.

In OpenVPN esistono i comandi di push route per ottenere questo comportamento: tuttavia nell'utilizzo base e più diffuso, è possibile passare solo degli indirizzi IP e non dei nomi FQDN.

Oggi vedremo come attuare questa configurazione avanzata.

Per prima cosa inseriamo nelle custom options del Server il push della rotta FQDN necessaria.
  • posizionarsi su VPN --> OpenVPN --> Server:
  • editare il Server utilizzato e posizionarsi su su Advanced Configuration -> Custom Options
  • inserire il push route con questa stringa: push "route google.com 255.255.255.255";


In questo modo tutto il traffico verso google.com sarà veicolato nel tunnel VPN e uscirà con l'ip pubblico del firewall pfSense che termina la VPN


Posizionarsi poi su VPN --> OpenVPN --> Client Export Utility:
  • sotto Advanced fare il push dell’opzione: “allow-pull-fqdn”


Una volta salvate le modifiche è possibile scaricare il certificato con la nuova configurazione.





25 marzo 2024

Installare pfSense 2.7


L'installazione di pfSense 2.7 può avvenire tranquillamente su una appliance fisica (persino su un pc purchè abbia almeno 2 schede di rete, anche se è fortemente consigliato utilizzare hardware dedicato), cosiccome in un ambiente virtuale on premises o in cloud.

La procedura di installazione è pressochè la medesima, fatto salvo il fatto che su hardware fisico dovremo preparare uno stick USB, mentre in ambito virtuale dovremo aver pre-caricato la ISO da cui far avviare la VM.

L'immagine con l'ultima versione la troviamo sul sito ufficiale: https://www.pfsense.org/download/, dove avremo anche la possibilità di leggere le release notes dell'ultima versione, prima di scaricarla.



Avviato l'installer tramite di default partirà l'installer senza fare nulla se non attendere


Accettiamo la licenza


Scegliamo Install e poi Auto (ZFS) - per approfondire l'uso di ZFS: Link



Andiamo a selezionare il disco di installazione e al termine clicchiamo su "Proceed with Installation"






Accettiamo l'avviso che ci mette in guardia sul fatto che tutto il contenuto del disco verrà distrutto, attendiamo il processo di installazione e poi procediamo col reboot






Attendiamo il riavvio e in meno di 10 minuti abbiamo il nostro nuovo firewall pfSense installato.


A questo punto possiamo procedere a configurare le interfacce di rete e poi il software stesso, tramite interfaccia web partendo dalle credenziali di default admin / pfsense


















14 marzo 2024

Riservare un IP specifico ai client collegati in VPN su pfSense 2.7

Se utilizzate OpenVPN una delle necessità più ricorrenti è quella di operare un assegnamento statico degli indirizzi IP di uno o più client.

Tale necessità può sorgere, in genere, quando serve abilitare per una specifico utente l'accesso a un particolare servizio.

A livello di rules sarà necessario creare la regola di pass verso il servizio, limitandola alla source autorizzata: per fare questa limitazione sull'indirizzo sorgente, dovremo fare in modo che ogni volta che l'utente si collega, acquisisca sempre lo stesso IP.

Avevamo già scritto un articolo in precedenza (Assegnare IP statico a client OpenVPN), di cui riportiamo qui i requisiti, sempre validi, mentre aggiorniamo la procedura di configurazione che ora è ancora più semplice.

Prima di iniziare rammentiamo alcuni concetti di base:
  • tutte le configurazioni OpenVPN sono di tipo Client-Server;
  • anche le VPN Site to Site sono di tipo Client-Server;
  • quando parliamo di IP del client ci stiamo riferendo all'IP del tunnel stabilito tra client e server.
Sebbene siano nozioni scontate è bene rinfrescarle perchè spesso ci si dimentica che:
  • anche una connessione tra due firewall pfSense o più in generale tra due gateway deve essere configurata come client-server 
  • al nostro client non verrà mai assegnato un IP della subnet locale del server.
Per poter assegnare un indirizzo IP statico ad un client è necessario:
  • poterlo individuare con certezza;
  • che non esistano due client che si presentino con lo stesso nome.
L'unico modo per farlo è utilizzare connessioni OpenVPN con certificati dove ogni client è identificato da un certificato con CN univoco e soprattutto usato per una sola installazione. 

Se non sapete come fare vi consiglio di legere prima l'articolo "OpenVPN server su pfSense 2.7"

A questo punto assumiamo:
  • di aver configurato correttamente server e client;
  • di aver creato un certificato client: mario.rossi;
  • di aver scelto come subnet per il tunnel 10.0.0.0/24;
Per poter assegnare un IP statico alle due connessioni occorre effettuare la seguente configurazione sul server.
Accediamo a VPN > OpenVPN > Client Specific Overrides

In questa sezione dovremo creare un override per ogni client a cui vogliamo assegnare un IP statico
Per ogni Overrides dovremo indicare:
  • la descrizione dell'override in Description: es. Mario Rossi
  • l'identificativo del certificato sotto Common Name: es. mario.rossi
  • l'ip da assegnare staticamente in IPv4 Tunnel Network: es. 10.0.0.250/24
Questa configurazione, in cui viene indicato direttamente l'ip da assegnare, sostituisce la precedente, un pochino più tricky, che utilizzava le subnet /30.

La nuova modalità è onfigurata in questo del server Ovpn dove deve essere selezionato il valore di default "One IP address per client in a common subnet". Se selezioniamo l'altra opzione disponibile (net30), torniamo alla modalità con le subnet /30, che è ancora presente per retrocompatibilità e ambienti legacy.



Una volta effettuata questa configurazione avremo un ip statico sulla VPN per il Sig. Rossi da utilizzare per creare delle regole ad hoc che lo riguardano.



11 marzo 2024

Log Management in pfSense



La gestione dei log è un tema ormai fondamentale quando si parla di sicurezza informatica.

I log ci permettono di mantenere traccia degli eventi che impattano il nostro sistema e delle attività svolte dagli amministratori e dagli utenti.
Attualmente inoltre, una corretta gestione dei log non è solo un tema di sicurezza, ma anche di ottemperanza a leggi quali il GDPR, o di compliance a normative come la ISO27001 e a direttive europee, ad esempio la recente NIS2.

Oggi vedremo quali sono i principali strumenti di logging che ci offre pfSense e come configurarli in modo ottimale, per porterne gestire lo storico in modo flessibile e confacente le proprie necessità.

I log di pfSense sono conservati nel percorso /var/log e sono fruibili tramite interfaccia web nel menù Status > System Logs.
Sono organizzati in diversi macroblocchi, sfogliando i quali possiamo andare a rintracciare le attività legate a:
  • Sistema 
  • Filtraggio del traffico 
  • DHCP
  • Autenticazione
  • VPN (OpenVPN, IPsec, ecc.)
  • NTP
  • Pacchetti aggiuntivi 
Ciascuna di queste voci dispone di una serie di sotto menù per la registrazione puntuale di diverse ti
topologie di eventi.

Log Settings

In questa voce di menù, che è l'ultima, troviamo tutte opzioni di configurazione per la raccolta dei log che andremo ad analizzare oggi.

PfSense mette a disposizione di default un numero molto ampio di log, tuttavia la loro conservazione in locale ha limiti di spazio, prestazioni e durata, motivo per cui porremo particolare attenzione alla conservazione in remoto.

Opzioni Generali

Log Message Format: è il formato dei syslog messaggi che vengono conservati in locale o che vengono inviati a un eventuale syslog server remoto. Sono disponibili due formati (RFC3164 o RFC5424): la scelta tra i due dipende dalla compatibilità col sistema di raccolta remoto.
RFC3164 è lo standard più datato, nativo di BSD, mentre RFC5424 è uno standard più recente che permette una gestione più precisa del timestamp.

La scelta tra i due formati dipende dalla compatibilità col sistema di parsing prescelto per renderli maggiormente leggibili, anche se entrambi gli standard possono essere utilizzati in qualsiasi demone syslog (syslog-ng e rsyslog, ecc.) e tendenzialmente i template per parsarli sono presenti nei principali motori di aggregazione log, come Splunk o Elastic, su cui si basa la maggior parte dei prodotti di log management in commercio.
La trasmissione dei messaggi Syslog inoltre può avvenire sia in UDP che in TCP.

Se non ci sono esigenze particolari, possiamo lasciare il default (RFC3164)

Selezionare le seguenti opzioni, valutando le altre alla bisogna:
  • Forward/Reverse Display
  • Log firewall default blocks
  • Log packets blocked by 'Block Bogon Networks' rules
  • Log packets blocked by 'Block Private Networks' rules
  • Log errors from the web server process
  • Generate log entries when making changes to the configuration
GUI Log Entries: 1000

Il tasto Reset log files, ci permette di eliminare tutti i log presenti in locale compresi i file di rotazione dei log.

Log Rotation

In questa sezione possiamo decidere la dimensione dei singoli file di log e poichè il sistema non è studiato per una conservazione long term in locale si consiglia di mantenere questi valori:

Log Rotation Size (Bytes):  tra 512000 e 10240000
Log Retention Count: tra 7 e 14

Queste impostazioni si applicheranno a tutte e 20 le tipologie di file di log presenti, bisogna perciò fare attenzione allo spazio occupato.
Il sistema ci preallerta, indicandoci l'attuale spazio occupato dai log, il massimo raggiungibile con le dimensioni da noi impostate e lo spazio libero su disco in questo momento.

Log Compression: La compressione dei log va attivata solo in caso di file system diverso da ZFS, che di default comprime già il contenuto del disco.
Può essere utile disattivarla anche in caso di file di log molto grandi per i quali ci metterebbe troppa a comprimere o per sistemi particolarmente lenti.

Remote Logging Options

In questa sezione possiamo fare il redirect dei log verso un sistema remoto.

Source Address: scelgo l'interfaccia su cui fare il bind del servizio
IP Protocol: IPv4/IPv6
Remote log servers: ip_remote_syslog_server:port

E' possibile specificare fino a 3 server syslog remoti. E' necessario specificare la porta solo se differente dalla 514 UDP che è la porta di default del syslog.
L'invio avviene solo in UPD, se necessario attivarlo in TCP, si può utilizzare il pacchetto aggiuntivo syslog-ng, di cui non parleremo oggi, ma sarà oggetto di un articolo futuro.

Remote Syslog Contents: è possibile filtrare la tipologia di eventi da inviare al remote syslog selezionando le voci di interesse in questo menù.

Salvare al termine delle modifiche.


Nome

Email *

Messaggio *