venerdì 2 novembre 2012

pfSense in alta affidabilità

Per chi offre servizi H24 tramite internet è fondamentale l'affidabilità dei propri sistemi. Anche in questo caso pfSense si dimostra un firewall di alto livello offrendo la possibilità di accoppiare più macchine per gestire connettività in HA.
Nei precedenti articoli pfSense in alta affidabilità con CARP e pfsync - Parte 1 e 2 abbiamo visto in modo dettagliato quali meccanismi vengono impiegati da pfSense per gestire l'HA, ora è venuto il momento di passare dalla teoria alla pratica addentrandoci nella configurazione di due sistemi pfSense in HA.

Requisiti

Per prima cosa dobbiamo procurarci due macchine identiche munite di almeno 3 schede di rete: una per la connessione WAN, una per la connessione LAN ed una SYNC per il traffico di sincronizzazione dei due firewall. Come abbiamo visto nei precedenti articoli non è necessario utilizzare un interfaccia dedicata per il traffico di sincronizzazione ma è caldamente consigliato per questioni di sicurezza dato che il traffico di replica viaggia in chiaro ed un alterazione malevola dei pacchetti può pilotare modifiche sulle impostazioni del firewall di backup. 
Altro requisito fondamentale è la disponibilità di tre indirizzi IP per le interfacce WAN e tre per le LAN. Ogni macchina disporrà di un IP per la WAN ed uno per la LAN più un IP virtuale per interfaccia.

Nella nostra configurazione faremo uso dei seguenti indirizzi:

Firewall Master
LAN: 192.168.0.1
WAN: 10.0.0.1
SYNC:  192.168.254.1

Firewall Backup
LAN: 192.168.0.2
WAN: 10.0.0.2
SYNC:  192.168.254.2

Virtual IP
LAN: 192.168.0.3
WAN: 10.0.0.3

Configuriamo il CARP

Nel nostro esempio supporremo di avere due macchine pfsense con la configurazione di base già realizzata e le interfacce configurate con gli ip riportati sopra. Supporremo anche di aver già collegato tra loro i due firewall con un cavo cross attestato sulle due interfaccie SYNC.
Per prima cosa configureremo la regola necessaria al transito dei pacchetti di sincronizzazione su entrambi i firewall.
Benchè sia possibile consentire tutto il traffico sull'interfaccia SYNC senza troppe complicazioni, procederemo in modo più rigoroso cercando di limitare possibili intrusioni.
Creiamo un alias chiamato SRV_SYNC contenente l'elenco degli IP delle interfacce SYNC dei firewall.

Clicchiamo su Firewall > Aliases
Aggiungiamo un nuovo alias
Name: SRV_SYNC
Type: Host(s)
Hosts: 
   192.168.254.1
   192.168.254.2

Ora procediamo con la creazione della regola per consentire il traffico sulle interfacce:


Clicchiamo su Firewall > Rules
Selezioniamo l'interfaccia SYNC
Aggiungiamo una nuova regola
Action: Pass
Interface: SYNC
Protocol: Any
Source: SRV_SYNC
Destination: SRV_SYNC

Colleghiamoci sul firewall di backup ed impostiamo il protocollo CARP per mettersi in ascolto sull'interfaccia SYNC.

Clicchiamo su Firewall > Virtual IPs > CARP Settings
Synchronize States: SI
Synchronize Interface: SYNC

Ora colleghiamoci sul firewall master ed impostiamo il protocollo CARP.

Clicchiamo su Firewall > Virtual IPs > CARP Settings
Synchronize States: SI
Synchronize Interface: SYNC
Synchronize Config to IP: 10.0.0.2
Remote System Username: Admin (è necessario utilizzare delle credenziali che abbiano l'autorizzazione ad apportare modifiche alla configurazione)

Remote System Password: ****** 

Ora spuntiamo tutte le voci corrispondenti a cio che vogliamo mantenere sincronizzato tra i due firewall.

Configuriamo gli IP virtuali

Ora ci preoccuperemo di impostare gli IP virtuali. Iniziamo con l'IP virtuale utilizzato dalle interfacce LAN.

Clicchiamo su Firewall > Virtual IPs > Virtual IPs
Aggiungiamo un nuovo IP virtuale
Type: CARP
Interface: LAN
IP Address: 192.168.0.3/24
Virtual IP Password: ******
VHID Group: 1
Advertising Frequancy: base: 1 Skew: 0
Description: CARP LAN

Ora ripetiamo la procedura per l'interfaccia WAN avendo l'accortezza di modificare il VHID.


Clicchiamo su Firewall > Virtual IPs > Virtual IPs
Aggiungiamo un nuovo IP virtuale
Type: CARP
Interface: WAN
IP Address: 10.0.0.3/24
Virtual IP Password: ******
VHID Group: 2
Advertising Frequancy: base: 1 Skew: 0
Description: CARP WAN

Ora la nostra configurazione è completa, per verificare che tutto stia funzionando regolarmente possiamo collegarci al firewall backup selezionare il menù Firewall > Virtual IPs > Virtual IPs e verificare che abbia sincronizzato automaticamente i virtual ip appena creati.

Per verificare il ruolo del nostro firewall nel cluster è possibile accedere alla pagina Status > CARP (failover) ed osservare il ruolo riportato in corrispondenza di ogni virtual ip.

Da questo momento tutte le regole modificate sul firewall master verranno replicate sul firewall di backup a patto che nella definizione del CARP si sia scelto di mantenere sincronizzata quella configurazione specifica.

Testing

Per verificare che la configurazione stia funzionando correttamente, possiamo spegnere il firewall master. Nel giro di qualche secondo il firewall backup prenderà il posto del master mantenendo attive le sessioni già stabilite dal firewall master. Effettuata la verifica possiamo riaccendere il firewall master e verificare che tutto il traffico venga spostato nuovamente sotto la sua gestione. 

Note

  1. In una configurazione in HA occorre far attenzione durante la creazione delle regole ricordando che l'IP di riferimento è sempre quello virtuale quindi in caso di regole di port forwarding, o di firewall si deve sempre fare riferimento all'IP virtuale;
  2. E'possibile escludere regole di NAT o di firewall dalla sincronizzazione spuntando la voce No XMLRPC Sync che indicherà al CARP che la regola non deve essere sincronizzata.
  3. Non tutti i pacchetti aggiuntivi consentono la sincronizzazione tramite XMLRPC pertanto in alcuni casi è necessario replicare manualmente le impostazioni.
  4. Tutte le modifiche apportate alla configurazione del firewall backup non verranno in alcun modo replicate.

Posta un commento