Openbsd: Firewall Ridondanti Con CARP E Pfsync Chris Gamboni CISSP [email protected] Tilug.Ch, Bellinzona, 9 Aprile 2005 Cos'è Openbsd ?

Openbsd: Firewall Ridondanti Con CARP E Pfsync Chris Gamboni CISSP Hb9fbl@Gmail.Com Tilug.Ch, Bellinzona, 9 Aprile 2005 Cos'è Openbsd ?

OpenBSD: Firewall ridondanti con CARP e pfsync Chris Gamboni CISSP [email protected] TiLug.ch, Bellinzona, 9 aprile 2005 Cos'è OpenBSD ? ● OpenBSD: – Nasce da un fork di netbsd nel 1995 – Secure by default (1 remote exploit in 8 anni) – Progetto basato in Canada, nessuna restrizione sull’esportazione di crittografia – Una release ogni 6 mesi (3.7 al 1.6.2005) – Si finanzia con la vendita di CD e di gadgets – Progetti collegati: OpenSSH, OpenNTPd, OpenBGPd, OpenOSPFd, etc… Alta disponibilità: CARP e pfsync ● Il firewall è un single point of failure – Quando il firewall è fermo nessuno accede ad internet, gli e-mail sono bloccati, ecc… – Non si può fermare il firewall per aggiornarlo ● OpenBSD, dalla versione 3.5, offre CARP e pfsync che permettono di avere firewalls in parallelo. Quando un firewall si ferma, il firewall di backup ne assume l’identità in modo trasparente. CARP (1) ● Common Address Redundancy Protocol: è il protocollo che si occupa di gestire il failover a livello 2 ed a livello 3. ● Ogni gruppo CARP possiede: – Un indirizzo MAC virtuale – Un indirizzo IP virtuale – Una password CARP (2) ● Ogni interfaccia CARP può avere 3 stati: MASTER, BACKUP e INIT (ifconfig) ● Il master manda messaggi Multicast (224.0.0.18) usando il protocollo IP 112 ● La frequenza di invio dei messaggi è configurabile (default = 1 sec) ● Chi invia messaggi più frequentemente diventa master CARP (3) ● CARP funziona sia con IPv4 sia con IPv6 ● CARP ha anche una funzione arp-balance che può servire per load-balancing, ma solo nella rete locale. ● CARP spedisce messaggi cifrati con SHA-1 HMAC ● CARP, a differenza di HSRP e VRRP, è esente da licenze e brevetti. CARP: configurazione ● Configurazione IP reali: – paguro: /etc/hostname.fxp0 ● Inet 10.0.0.2 255.255.255.0 NONE – lemuro: /etc/hostname.xl0 ● Inet 10.0.0.3 255.255.255.0 NONE ● Configurazione IP virtuale: – paguro+lemuro: /etc/hostname.carp0 ● Inet 10.0.0.1 255.255.255.0 10.0.0.255 vhid 1 pass abcd1234 CARP: stato ● paguro# ifconfig carp0 carp0: flags=41<UP,RUNNING> mtu 1500 carp: MASTER vhid 1 advbase 1 advskew 0 inet 10.0.0.1 netmask 0xffffff00 ● lemuro# ifconfig carp0 carp0: flags=41<UP,RUNNING> mtu 1500 carp: BACKUP vhid 1 advbase 1 advskew 100 inet 10.0.0.1 netmask 0xffffff00 Esempio1: servizio ridondante ● paguro ha il numero IP 10.0.0.2, mentre lemuro ha il numero IP 10.0.0.3. ● paguro segnala tramite CARP ogni secondo (configurabile) di avere l’indirizzo 10.0.0.1 ● Dopo 3 mancate segnalazioni di paguro, lemuro diventa MASTER annunciando CARP e rispondendo all’IP virtuale 10.0.0.1 CARP: preemption (1) ● Con CARP preemption è possibile definire chi è MASTER e chi è BACKUP. ● Configurazione per il server di backup: – /etc/hostname.carp0 ● Inet 10.0.0.1 255.255.255.0 10.0.0.255 vhid 1 advskew 100 – In questo caso si aumenta il tempo tra gli annunci CARP (1sec + advskew/255). CARP preemption (2) ● Nei sistemi con diverse interfaccie CARP è auspicabile che in caso di malfunzionamento di un’interfaccia fisica, tutti i gruppi CARP vengano passati al server di Backup ● Con “preempt” in caso di problemi ad un’interfaccia il valore advskew di tutti i gruppi CARP del sistema viene portato a 240, causando un failover generale. Pfsync (1) ● Pfsync si occupa di comunicare ad altri firewall le modifiche alla tabella di stato delle sessioni (annuncia i cambiamenti ed inserisce nella propria tabella i cambiamenti annunciati da altri) ● Al momento pfsync non usa autenticazione, è quindi altamente consigliato l’utilizzo di una rete dedicata Pfsync (2) ● Configurazione dell’interfaccia di sincronizzazione: – /etc/hostname.fxp2 ● Inet 192.168.255.254 255.255.255.0 NONE – /etc/hostname.pfsync0 ● Up syncif fxp2 Integrazione pf+CARP+pfsync ● Le regole dei firewall dovranno lasciare passare i pacchetti pfsync e CARP: – /etc/pf.conf ● Pass quick on { $syncif } proto pfsync ● Pass on { $intif $extif } proto carp keep state Pfctl: visualizzare le sessioni # pfctl -ss self tcp 10.5.0.1:22 <- 10.0.1.168:1168 ESTABLISHED:ESTABLISHED self carp 224.0.0.18 <- 10.5.0.2 NO_TRAFFIC:SINGLE self carp 10.5.0.2 -> 224.0.0.18 SINGLE:NO_TRAFFIC Esempio2: firewall ridondante ● paguro e lemuro hanno 3 interfacce ● paguro è configurato come MASTER ● In caso di problemi a paguro, lemuro diventa master (dopo 2-3 secondi) ● Tutte le sessioni, grazie a pfsync, vengono mantenute poiché già trasferite ad lemuro. ● Quando paguro riparte chiede un “bulk update” della tabella degli stati a lemuro e poco dopo ridiventa master Esempio2: schema Rete esterna carp0 Lemuro Paguro pfsync Backup Firewall Master Firewall carp1 Rete interna Referenze ● OpenBSD: http://www.openbsd.org ● Firewall failover with pfsync and CARP: http://www.cuntersiege.com/doc/pfsync-carp/ ● Italian OpenBSD user group: http://www.opengeeks.it/docs/carpepfsync.pdf ● OpenBSD man pages: man carp, ifconfig, pfsync, pf.conf, ecc….

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    18 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us