Zeroshell
home page:
www.zeroshell.net
Una piccola distribuzione Linux per gestire i servizi di rete.
Cosa
è Zeroshell?
Zeroshell
è una LiveCD Linux orientata alla gestione dei servizi di
rete. Può essere utilizzato come router, firewall, traffic
shaping per la garanzia del QoS, Captive Portal per la protezione
degli accessi mediante web login, Radius server per la protezione di
reti Wireless con WPA/WPA2, server VPN per la connessione tra LAN e
singoli host, server DHCP e DNS ed altro.
Il
nome Zeroshell deriva dalla possibilità di configurare e
amministrare il tutto mediante un'interfaccia web che limita
l'utilizzo della shell a quei casi di configurazione non previsti
dalla GUI.
Contenendo
soltanto il software strettamente necessario per fornire i suddetti
servizi, Zeroshell è una distribuzione estremamente contenuta,
con dimensioni inferiori ai 100MB. La scelta della forma di Live CD è
motivata da diversi fattori. Il primo è la semplicità
di upgrade che permette di passare ad una release successiva
semplicemente con un reboot. Il secondo motivo è la intrinseca
sicurezza di cui le immagini ISO sono caratterizzate. Infatti, poiché
il filesystem contenente i binari eseguibili è in sola
lettura, un'intrusione esterna, difficilmente può creare
grossi danni facendo del nodo compromesso un punto di attacco verso
altri host. Male che vada poi, un semplice reboot rimette le cose al
loro posto.
Zeroshell
è disponibile anche su Compact Flash, rendendo possibile il
boot su dispositivi embedded che fanno uso di tale mezzo. Esiste poi
una particolare immagine dedicata all'utilizzo con i WRAP e i Soekris
Net4801 che sono piccoli sistemi con AMD Geode SC1100 a
basso consumo e dotati di diversi interfacce Fast Ethernet. Tali
dispositivi, dato il loro basso consumo e la loro silenziosità
dovuta alla totale assenza di ventole, li rende adatti alla
realizzazione di Router/Firewall per ambienti SOHO.
Prima di iniziare a
vedere nel dettagli le funzionalità di Zeroshell, è
utile segnalare i due forum http://www.zeroshell.net/forum/
in lingua Italiana e http://www.zeroshell.net/eng/forum/
in lingua Inglese che rappresentano i luoghi più adatti dove
trovare e richiedere supporto.
Router,
Bridge e Firewall e Traffic Shaping
Una delle funzionalità presenti in Linux da
sempre è la possibilità di abilitare il routing fra le
diverse interfacce di rete di cui è dotato il sistema.
L'interfaccia web di Zeroshell dà massimo supporto in tal
senso, gestendo il NAT, i Virtual Server e il RIP versione 2.
Il NAT (Network Address Translation) permette di avere
sulla LAN indirizzi IP di classi private mascherati su Internet con
indirizzi pubblici. Ciò è utile per esempio, quando si
dispone di un collegamento ADSL con un solo IP, ma si vuole far
accedere a Internet più computer simultaneamente.
La funzionalità di Virtual Server (detta anche
Port Forwarding se riferita a servizi TCP/UDP) permette di
configurare un server che accetti le connessioni dall'esterno, ma le
trasmetta poi ai server reali che si occupano di fornire il sevizio
richiesto. Ciò è utile per collocare i server su di
una subnet privata (DMZ) e pubblicarne i servizi su di un nodo che
sia raggiungibile dall'esterno.
Il RIPv2 (Routing Information Protocol versione 2)
invece, consente ai diversi router presenti nella LAN di imparare
automaticamente, gli uni dagli altri, i percorsi (next-hop)
per raggiungere tutti i nodi. Ciò consente un bel
risparmio di lavoro agli amministratori, che in tale maniera non
devono più configurare un numero eccessivo di route statiche
per ogni router. Il RIP tiene conto anche della metrica (cioè
del numero di hop necessari per raggiungere un nodo), permettendo
così di creare percorsi di ridondanza per il fault tolerance
della rete.
La
web interface di Zeroshell consente anche la creazione di bridge
mettendo insieme 2 o più interfacce Ethernet. I bridge possono
essere pensati come router di livello 2, in cui l'instradamento delle
trame ethernet ,avviene esaminando l'indirizzo MAC di destinazione
(invece dell'IP che viene preso in considerazione nei router Layer
3). Uno dei casi in cui torna utile creare un bridge tra due pezzi di
LAN, è quello in cui si vogliono applicare delle regole di
firewalling, ma non lo si può fare su di un router layer 3
poiché i nodi appartenenti ai 2 segmenti
di rete hanno IP appartenenti alla medesima subnet.
Il Firewall di Zeroshell,
che ovviamente si appoggia sul modulo Netfilter del Kernel Linux e
sul comando iptables, è interamente amministrabile via web.
Tale firewall può essere utilizzato indifferentemente sia che
Zeroshell stia agendo da router che da bridge. Una delle
caratteristiche fondamentali è la presenza dei filtri Layer 7
(L7-Filter) che permettono di individuare i pacchetti guardando al
contenuto del loro Payload (Deep
packet inspection). Ciò è particolarmente utile
per limitare mediante traffic shaping o bloccare le connessioni che
avvengono su porte TCP/UDP variabili e non predefinite, come quelle
generate da software P2P. E' configurabile anche il modulo IPP2P del
Netfilter, anche esso dedicato all'individuazione del peer to peer.
Da segnalare, per quel che riguarda il firewall, la possibilità
di attivare il logging delle connessioni, tramite cui, per ogni
connessione TCP e UDP che avviene da e verso la LAN, vengono
registrati l'IP sorgente, la porta sorgente, l'IP destinazione e la
porta destinazione. Ciò permette, qualora sia segnalato
qualche abuso, di risalire al nodo della LAN che lo ha commesso.
Infine, la stessa
interfaccia con cui si configurano le regole del firewall, può
essere utilizzata, invece che per bloccare determinati protocolli,
per assegnarli una priorità, una banda garantita ed una banda
massima. Un esempio per tutti è quello in cui conviene dare
bassa priorità ai grossi trasferimenti di dati e alta a quelli
realtime come il VoIP, in cui una latenza troppo lunga
comprometterebbe la qualità dell'audio. A tal scopo, sempre i
filtri layer 7 danno un valido aiuto nella classificazione del
traffico Skype, SIP e H323.
Le
Virtual Private Network
Zeroshell
supporta due tipologie di Virtual Private Network: LAN-to-LAN e
Host-to-LAN. Le VPN LAN-to-LAN o Site-to-Site congiungono due LAN
geograficamente distanti utilizzando un tunnel criptato che
attraversa Internet. Per far ciò, Zeroshell utilizza il
software Open Source OpenVPN. Il vantaggio di questa soluzione,
rispetto ad altre come il diffuso protocollo IPSec, è che nel
tunnel criptato si fanno passare vere e proprie trame Ethernet e non
soltanto protocolli di livello 3. Le conseguenze sono immediate: si
può taggare la VPN con il protocollo 802.1q e quindi
realizzare un trunking con cui far transitare le VLAN (Virtual LAN)
presenti sugli switch da un sito all'altro; una VPN composta da trame
ethernet, può essere messa direttamente in bridge con le
interfacce verso le LAN. In tale maniera, non solo si possono avere
indirizzi appartenenti alla stessa subnet IP su entrambe le LAN, ma
anche il traffico broadcast attraversa la VPN permettendo l'utilizzo
di risorse Windows condivise con NetBIOS di
funzionare anche senza la presenza di un server WINS. Il bridging di
VPN permette, tra l'altro, di far transitare protocolli non
necessariamente IP, come AppleTalk e IPX.
Per quel che riguarda le
Virtual Private Network di tipo Host-to-LAN, che sono quelle che
permettono ad un utente che si trova all'esterno della sua LAN, di
connettersi ad essa tramite Internet e di accedere ai servizi senza
subire le protezioni del firewall, Zeroshell ne supporta di due tipi:
L2TP/IPSec e OpenVPN.
Il protocollo L2TP/IPSec
è stato scelto perché sfruttando IPSec ha un'elevata
sicurezza (rispetto per esempio al più diffuso ma debole
PPTP). Un Road Warrior (così sono detti gli utenti che sono
lontani dalla loro LAN) per potersi connettere ha bisogno di due
livelli di autenticazione: IPSec viene autenticato con certificati
digitali X.509, mentre L2TP tramite username e password Kerberos 5.
Tuttavia, L2TP/IPSec si è dimostrato spesso complicato da
configurare lato client, anche in sistemi come Microsoft Windows che
nativamente può effettuare tali VPN, senza l'aggiunta di altro
software. Per questo motivo, con l'ultima release di Zeroshell si è
dato supporto alle VPN Host-to-LAN tramite OpenVPN, che risulta molto
più semplice da configurare benché richieda
l'installazione di tale software. Come si può vedere
consultando il documento http://www.zeroshell.net/openvpn-client/,
è disponibile un porting di OpenVPN per tutti i sistemi
operativi più diffusi (Linux, Solaris, OpenBSD, FreeBSD,
NetBSD, Mac OS X e Microsoft Windows). In particolare, il server
OpenVPN configurato in Zeroshell ha un elevata flessibilità,
poiché consente all'utente di autenticarsi oltre che mediante
certificati digitali X.509, anche tramite Username e Password
verificati con un server RADIUS o KDC Kerberos 5. In particolare
l'autenticazione Kerberos V, permette agli utenti di un dominio
Microsoft Active Directory, di accedere alle VPN di Zeroshell.
Server
RADIUS e Captive Portal per l'autenticazione del WI-FI
Il diffondersi della tecnologia Wireless per l'accesso
alla LAN, ha generato nuovi problemi di sicurezza, vista la
semplicità con cui una persona non autorizzata, semplicemente
avvicinandosi ad una zona coperta da segnale Wi-Fi, può
associarsi qualora non siano state prese le opportune contromisure.
Una prima risposta al problema, fu l'introduzione del
WEP, che consiste nell'utilizzare chiavi condivise RC4 con cui
autenticare i client e successivamente criptare il traffico. Ma
questo procedimento, che non solo costringe gli amministratori a
generare le chiavi sugli Access Point e successivamente comunicarle
agli utenti, mostrò presto i suoi limiti di sicurezza, dovuti
alla debolezza dell'algoritmo di cifratura. Si introdussero perciò
lo standard WPA successivamente evolutosi nel WPA2 (802.11i) che
prevede due modalità di funzionamento: con pre-shared key
(WPA-PSK) che assomiglia al WEP, vista la presenza di una chiave
condivisa tra utenti e Access Point, ma che prevede algoritmi di
cifratura robusti come AES e la modalità Enterprise, dedicata
alle realtà più grandi, che elimina la necessità
di avere chiavi condivise e autentica gli utenti tramite un server
RADIUS compatibile con lo standard 802.1x.
Tramite FreeRADIUS, Zeroshell permette l'autenticazione
dei client wireless, sia con username e password (EAP-TTLS e PEAP)
che con certificati digitali X.509 (EAP-TLS).
L'utilizzo di WPA2 con un server RADIUS 802.1x offre
altissime garanzie di sicurezza e di confidenzialità dei dati
al prezzo di una non immediata configurabilità dei client
degli utenti, che spesso necessitano di supporto da parte degli
amministratori. Ciò non è accettabile in un ambiente
pubblico come un HotSpot di un aeroporto o di un albergo. In questi
luoghi, si è andata diffondendo la tecnica del Captive Portal,
in cui un client che si trova nella rete Wi-Fi viene comunque da
subito associato agli Access Point e assegnato un indirizzo IP.
Tuttavia, prima di poter accedere ai servizi della LAN o poter
accedere ad Internet deve aprire un web browser ed autenticarsi.
Zeroshell integra un Captive Portal che prevede
l'autenticazione sia direttamente con certificati digitali X.509 che
con credenziali normali. Mentre l'autenticazione X.509 apre la strada
al riconoscimento mediante Smart Card, l'autenticazione con username
e password permette l'autenticazione utilizzando un server Kerberos 5
o un server RADIUS esterno. Anche per il Captive Portal, così
come per le VPN realizzate con OpenVPN, è possibile
autenticare gli utenti di un dominio Microsoft Active Directory
sfruttando Kerberos 5.
Grazie poi alla sua modularità, il Captive Portal
di Zeroshell permette la realizzazione di accessi distribuiti alla
rete. In altre parole, Zeroshell scinde la funzione di Captive Portal
in due sotto funzionalità: quella di Authentication Server e
quella di Captive Gateway.
Alla prima spetta il compito di fornire la pagina di web
login e di interpellare i server RADIUS o Kerberos 5 quando l'utente
cerca di autenticarsi. Al Captive Gateway (che può funzionare
sia in Routed Mode che in Bridged Mode) spetta invece il compito di
intercettare le richieste http e https ridirigendole verso
l'Authentication Server e di sbloccare l'accesso se quest'ultimo
riconosce l'utente. Grazie a questa suddivisione di compiti, si può
distribuire l'accesso al Wireless su più Captive Gateway
(anche geograficamente distanti), ma che fanno riferimento allo
stesso server di autenticazione. Il vantaggio consiste nell'avere un
unico punto in cui gestire l'autenticazione e la pagina di web login.
Load
Balancing e Fault Tolerance dei collegamenti WAN
Un altro vantaggio dell'utilizzo di OpenVPN per
connettere due sedi distanti utilizzando Internet è quello di
poter creare VPN ridondate e con consequente incremento di banda. Ciò
è possibile grazie al fatto che OpenVPN incapsula nel tunnel
crittografato, trame Ethernet a tutti gli effetti e quindi è
possibile utilizzare la capacità del Kernel di Linux di creare
dei Bonding di schede di rete ethernet, per aggregare insieme anche
le VPN.
In altre parole, se un'organizzazione possiede in una
sede distaccata almeno 2 collegamenti WAN (anche ADSL vanno bene),
può far passare una VPN con la sede centrale per ognuno di
essi e riunire l'insieme delle VPN risultanti in unico canale BOND.
In questa maniera, se uno dei collegamenti dovesse venire meno, la
relativa VPN verrebbe temporaneamente esclusa per garantire la
connessione mediante le VPN restanti. Peraltro, se il BOND di VPN è
configurato in Load Balancing, viene utilizzato algoritmo Round-Robin
per distribuire ciclicamente le trame Ethernet sui diversi canali
criptati. In questa maniera si ottiene un incremento di banda
proporzionale al numero di link WAN di cui l'organizzazione dispone.
Dalla prossima release di Zeroshell, allo scopo di
ampliare le possibilità di bilanciare il carico dei
collegamenti con Internet e di ridondarli in caso di guasto, sarà
introdotto il Net Balancer. Questo modulo consentirà a
Zeroshell di avere più di un Default Gateway. La logica con
cui sarà distribuito il carico sui diversi router di confine
con l'esterno sarà sia Round-Robin (quindi automatica), che
attraverso delle regole simili a quelle del firewall. Con
quest'ultima possibilità si dà all'amministratore, la
facoltà di decidere determinate classi di traffico o
determinati nodi con quale collegamento Internet devono comunicare.
Tanto per fissare le idee, un amministratore potrebbe decidere di far
transitare tutto il traffico VoIP (o interattivo più
genericamente) da un link, mentre il resto del traffico dai restanti
collegamenti.
Autenticazione
Kerberos 5 e autenticazione X.509
Come si è visto nel caso delle VPN Host-to-LAN,
del Radius Server per l'autenticazione 802.1x e per il Captive
Portal, Zeroshell dispone di due metodi di autenticazione principali:
Kerberos 5 per quel che riguarda il riconoscimento con username e
password e l'autenticazione TLS per il riconoscimento mediante
certificati digitali X.509.
Il
protocollo di autenticazione Kerberos 5 (di cui è disponibile
un tutorial all'URL http://www.zeroshell.net/kerberos/)
è stato scelto perché ritenuto uno tra i protocolli di
autenticazione più sicuri e flessibili. Grazie ad esso,
Zeroshell permette di centralizzare e unificare l'autenticazione non
soltanto dei servizi visti finora, ma anche del semplice login su
workstation e server sia Linux/Unix che Windows.
In particolare poi, per permettere oltre alla semplice
autenticazione, anche la gestione dell'autorizzazione su macchine
Unix, al server Kerberos, Zeroshell affianca un servizio LDAP con cui
memorizzare e distribuire le informazioni sugli utenti, i gruppi e
gli host della rete. Grazie alla gestione di una directory LDAP,
Zeroshell permette di sostituire l'ormai obsoleto servizio NIS (anche
noto come Yellow Pages) che permette di centralizzare le informazioni
contenute nei file /etc/passwd e /etc/group di una macchina Unix.
Altro vantaggio nell'uso di LDAP consiste nella possibilità di
gestire delle rubriche di indirizzi e-Mail centralizzate utilizzabili
dai client di posta elettronica come Outlook o Thunderbird o per il
routing della posta elettronica per mezzo di MTA come Postfix.
La scelta di supportare anche l'autenticazione dei
client con TLS/SSL, che richiede ad un utente che voglia accedere ad
un servizio di possedere un certificato X.509 insieme alla relativa
chiave privata, ha richiesto di implementare in Zeroshell una
Certification Authority, per l'emissione di certificati X.509. Tale
CA ha funzioni minime, ma comunque sufficienti al fine
dell'autenticazione X.509. Resta comunque possibile utilizzare in
Zeroshell i certificati generati da una Certification Authority
esterna. Ciò è senz'altro necessario, quando
un'organizzazione che vuole utilizzare i servizi di Zeroshell,
possiede già un'infrastruttura PKI.
Sviluppi
futuri e nuovi servizi
A
breve sarà disponibile il Net Balancer, che è uno dei
servizi maggiormente richiesti. Successivamente verrà
sviluppata la possibilità di attivare un proxy web (senz'altro
Squid) che consentirà la scansione delle pagine web per
bloccare Virus, Worm e Malware più in generale, prima che
raggiungano i browser degli utenti. Con molta probabilità
l'Antivirus utilizzato sarà ClamAV vista la sua natura Open
Source. Anche questa è una necessità molto sentita,
emersa dalle richieste sui forum, tanto che come testimonia il post
http://www.zeroshell.net/forum/viewtopic.php?t=382,
c'è chi a provveduto a installare tale software da se.
Probabilmente dopo la release 1.0.0, Zeroshell conterrà
anche un server IMAP e un server SMTP con antivirus per la
distribuzione della posta elettronica.