27 agosto 2024
20 agosto 2024
Creare Regole di NAT in pfSense - Parte 1
NAT IN PFSENSE
NAT InbounD.
NAT INBOUND
Il NAT Inbound, noto anche come Port Forwarding, consente di reindirizzare il traffico proveniente dall’esterno verso un indirizzo IP interno specifico.
Interface: Selezionare l’interfaccia WAN.
Protocol: Scegliere il protocollo (TCP).
Destination: Selezionare “WAN address”.
Destination Port Range: Inserire la porta esterna
Redirect Target IP: Inserire l’indirizzo IP interno del server
Redirect Target Port: Inserire la porta interna
Salvare e applicare le modifiche: Cliccare su “Save” e poi su “Apply Changes”.
Esempio di NAT Inbound
Supponiamo di avere un server web interno con l’indirizzo IP 192.168.1.100 e di voler rendere accessibile il sito web tramite HTTPS su Internet. La configurazione della regola di port forwarding sarà la seguente:
NAT Outbound
Configurazione del NAT Outbound su pfSense
- Automatic: pfSense gestisce automaticamente le regole di NAT Outbound.
- Hybrid: Consente di aggiungere regole manuali mantenendo quelle automatiche.
- Manual: Tutte le regole devono essere configurate manualmente.
Esempio di NAT Outbound
13 agosto 2024
Come aggiornare pfSense con fix e minor update
Oltre agli update di versione e sottoversione, (da 2.6 a 2.7, oppure da 2.7 a 2.7.2) pfSense offre la possibilità di applicare dei fix per la risoluzione di bug e vulnerabilità tramite un pacchetto aggiuntivo chiamato System Patches.
Ecco cosa fare quindi per installarlo, mantenerlo aggiornato ed applicare i fix:
Installazione: posizionarsi su System - Package Manager - Available Packages e cercare "patch"
Applicazione : posizionarsi poi su System - Patches e cliccare su Apply All Recomanded in fondo alla pagina per attivare tutte le patch.
Riavviare il firewall o il servizio coinvolto o ricaricare il filtro (di fianco a ogni patch è spiegato cosa serve fare per renderla subito operativa)
5 giugno 2024
Creare regole di firewall in pfSense - parte 1
- Azione: Ogni regola può avere un’azione specifica:
- Pass: Permette al traffico di passare attraverso il firewall.
- Block: Scarta il traffico senza inviare alcuna risposta.
- Reject: Scarta il traffico e invia un messaggio al mittente indicando che la connessione è stata rifiutata
- Interfaccia: Specifica l’interfaccia su cui applicare la regola. La regola è sempre applicata in ingresso all'interfaccia in questione. In altre parole, le regole dell’interfaccia LAN si applicano al traffico proveniente dalla rete locale (LAN), mentre le regole dell’interfaccia WAN si applicano al traffico proveniente da Internet.
- Versione TCP/IP: Puoi specificare se la regola si applica solo a IPv4, IPv6 o entrambi.
- Protocollo: Indica il protocollo, ad esempio, TCP, UDP o ICMP.
- Origine e destinazione: Le regole possono specificare sia l’indirizzo IP che la porta/e di origine che quelli di destinazione. Ad esempio, puoi consentire il traffico solo da un indirizzo IP specifico verso il centralino VoIP sulla VLAN fonia.
- Ordine di valutazione: Le regole vengono valutate dall’alto verso il basso. La prima regola corrispondente viene applicata. L’ordine delle regole è perciò fondamentale affinchè il firewall si comporti come desiderato.
- Negazione implicita: Se non c’è una regola corrispondente, il traffico viene implicitamente negato.
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
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
- System
- Firewall
- DHCP
- Authentication
- OpenVPN e IPsec
- Packages
- 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
- 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
- Os Boot: riporta l'output della procedura di boot ed è utile per il trobleshooting dell'avvio
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.
- 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";
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.
14 marzo 2024
Riservare un IP specifico ai client collegati in VPN su pfSense 2.7
Tale necessità può sorgere, in genere, quando serve abilitare per una specifico utente l'accesso a un particolare servizio.
- 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.
- 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.
- poterlo individuare con certezza;
- che non esistano due client che si presentino con lo stesso nome.
Se non sapete come fare vi consiglio di legere prima l'articolo "OpenVPN server su pfSense 2.7"
- 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;
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
11 marzo 2024
Log Management in pfSense
- Sistema
- Filtraggio del traffico
- DHCP
- Autenticazione
- VPN (OpenVPN, IPsec, ecc.)
- NTP
- Pacchetti aggiuntivi
Log Settings
Opzioni Generali
- 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
Log Rotation
Remote Logging Options
7 marzo 2024
OpenVPN Server su pfSense 2.7
Una delle funzionalità più utilizzate e più apprezzate di pfSense è la possibilità di fare da terminatore per la OpenVPN.
- Creazione dei certificati (CA - Server - User)
- Configurazione del server OpenVPN
- Configurazione dell'interfaccia virtuale
- Impostazione regole di firewall
- Export della configurazione del client
Creazione dei certificati
Creazione del certificato della CA
- Descriptive Name: Nome del certificato
- Method: Create an internal Certificate Authority
- Key length: 4096
- Digest Algorithm: sha512
- Lifetime: 3650 days (10 anni)
- Country Code:
- State or Province:
- City:
- Organization:
- Email Address:
- Common Name: internal-ca
Creazione del certificato Server
- Method: Create an internal Certificate
- Descriptive Name: Nome del certificato
- Certificate Authority: la CA creata in precedentza
- Key length: 4096
- Digest Algorithm: sha512
- Lifetime: 3650 days (10 anni)
- Common Name: nome dns firewall
- Country Code:
- State or Province:
- City:
- Organization:
- Email Address:
- Certificate Type: Server Certificate
Creazione della Certificate Revocation List
- Certification Authority: la CA creata in precedentza
- Method: Create an internal Certificate Revocation List
- Descriptive Name: CRL
- Lifetime: 730 days
- Serial: 0
Creazione del certificato User
- Method: Create an internal Certificate
- Descriptive Name: Nome del certificato (per esempio lo username dell'utente)
- Certificate Authority: la CA creata in precedentza
- Key length: 4096
- Digest Algorithm: sha512
- Lifetime: 3650 days (10 anni)
- Common Name: lo username dell'utente
- Distinguished Name:
- Country Code:
- State or Province:
- City:
- Organization:
- Email Address:
- Certificate Type: User Certificate
Configurazione del server OpenVPN
- Description: il nome descrittivo
- Server Mode: Remote Access (SSL/TSL + User Auth)
- Selezioniamo i backend di autenticazione
- Device Mode: tun
- Protocol: UDP
- Interface: WAN (interfaccia su cui viene fatto il bind)
- Local Port: 1194
- TLS authentication: YES
- Automatically generate a shared TLS authentication key: YES
- Peer Certificate Authority: Selezionare il certificato della CA appena creato
- Peer Certificate Revocation List: Selezionare la CRL appena creata
- Server Certificate: Selezionare il certificato del server appena creato
- DH Parameters Length: 4096 bits
- Encryption algorithm: CHACHA20-POLY1305 + AES-256-GCM
- Auth digest algorithm: SHA256 (256-bit)
- Hardware Crypto: selezionare una eventuale scheda di accelerazione
- Certificate Depth: One (Client+Server)
- Flaggare Strict User-CN Matching
- Flaggare Enforce key usage
- Tunnel Network: Inserire una subnet per il tunnel, non usare subnet già in uso.
- Ipv4 Local network(s): inserire le subnet locali raggiugibili tramite la VPN separandole con virgola
- Allow Compression: Refuse any non-stub compression
- Topology: One IP address per client
- Configurare eventuali impostazioni relative a DNS default domain, server DNS, NTP, NetBIOS secondo le proprie esigenze
Configurazione dell'interfaccia virtuale
- Portarsi nel menù Interfaces > (assign)
- Nella colonna Network port selezionare ovpns1 (REMOTE ACCESS)
- Cliccare su Add per aggiungere la nuova interfaccia
- Cliccare sul nome della nuova interfaccia, tipicamente optx
- Nell'interfaccia effettuare le seguenti modifiche:
- Enable: Yes
- Description: OPENVPN_REMOTE
Impostazione regole di firewall
- Action: Pass
- Protocol: UDP
- Destination Port Range: From OpenVPN to OpenVPN
- Action: Pass
- Protocol: Any
- Source: Any
- Destination: Any
Export della configurazione del client
4 marzo 2024
Bloccare regole con gateway specifico in ambiente MultiWAN quando questo non è disponibile
28 febbraio 2024
Abilitare FTP Client Proxy su pfSense
I principali vantaggi di una sua implementazione sono:
- NAT traversal: Facilita la gestione delle connessioni in presenza di NAT
- Sicurezza: L'FTP Proxy Client può fornire un livello aggiuntivo di sicurezza agendo come un punto di controllo per monitorare e filtrare il traffico FTP in base alle politiche di sicurezza dell'azienda;
- Controllo degli accessi: Può essere utilizzato per controllare e limitare gli accessi agli utenti FTP. Ad esempio, è possibile configurarlo per consentire solo determinati indirizzi IP o utenti autorizzati a connettersi ai server FTP interni;
- Logging: L'FTP Proxy Client registra le attività FTP, consentendo agli amministratori di rete di monitorare e analizzare il traffico per identificare eventuali problemi di sicurezza o anomalie;
- Riduzione del carico di lavoro: In ambienti con un alto volume di traffico FTP, l'FTP Proxy Client può ridurre il carico sui server FTP interni, gestendo in modo efficiente le connessioni e ottimizzando le risorse di rete;
- Supporto per protocolli FTP attuali e legacy: Può essere configurato per supportare sia il tradizionale protocollo FTP (File Transfer Protocol) che le sue varianti più sicure come FTPS (FTP over SSL/TLS) e SFTP (SSH File Transfer Protocol).
Gli step di installazione e configurazione sono i seguenti:
- Installare il package da System à Package Manager à Avaiable Packages
- Individuare il Package: FTP_Client_Proxy
- Una volta installando andare su à Services à FTP Client Proxy
- Posizionarsi
su Local Interface à Selezionare
l’interfaccia locale sul quale applicare questo package (la/le LAN/VLAN desiderate):
in questo caso lo applichiamo su un interfaccia di Bridge.
- Flaggare Early Firewall Rule per posizionare le regole FTP in cima al set di regole per ignorare i blocchi espliciti; aiuta inoltre a consentire l’FTP passivo verso destinazioni arbitrarie
- Flaggare Rewrite Source to Port 20
- Abilitare le Log Connection per avere una traccia all’interno dei log.
15 febbraio 2024
Rilasciata la versione 2.7.2 di pfSense
Versione 2.7.0
- PHP è stato aggiornato dalla versione 7.4.x a 8.2.6.
- Il sistema operativo di base è stato aggiornato a FreeBSD 14-CURRENT
- Sono stati rimossi diversi algoritmi IPsec deprecati, tra cui:
- 3DES Encryption
- Blowfish Encryption
- CAST 128 Encryption
- MD5 HMAC Authentication
- E’ stato aggiunto il supporto per la crittografia ChaCha20-Poly1305 con IPsec.
- Captive Portal è stato migrato da IPFW a PF
- E’ stata introdotta una nuova GUI per il Packet Capture
- OpenVPN è stata upgradata alla 2.6.4
Versioni 2.7.1 e 2.7.2
- 2.7.1 (elenco completo qui)
- Migliora il supporto a SCTP
- PHP è stato aggiornato alla versione 8.2.11.
- Il sistema operativo di base è stato aggiornato a un punto più recente su FreeBSD 14-CURRENT.
- OpenSSL nel sistema base è stato aggiornato dalla versione 1.1.1g a 1.1.1n.
- Risolve la vulnerabilità di tipo remote code execution CVE-2023-42326
- 2.7.2 (elenco completo qui)
- Sono state apportate correzioni per diverse Notices e Security Advisories di FreeBSD, tra cui:
- Vulnerabilità di spoofing TCP in pf (4) (FreeBSD-SA-23:17.pf)
- Possibile corruzione dei dati ZFS (FreeBSD-EN-23:16.openzfs)
- Utilizzo elevato della CPU da parte dei thread del kernel ZFS (FreeBSD-EN-23:18.openzfs)
- Implementazione AES-GCM errata in ossl (4) (FreeBSD-EN-23:17.ossl)
- Problemi di prestazioni in OpenSSL, corretti con accelerazione come AES-NI
- Viene installata la versione 2.6.8 di OpenVPN che risolve le vulnerabilità CVE-2023-46849 e CVE-2023-46850