Zeroshellhome page:
www.zeroshell.net
Una piccola distribuzione Linux per gestire i servizi di rete.
Cosa
e` Zeroshell? Zeroshell
e` una LiveCD Linux orientata alla gestione dei servizi di
rete. Puo` 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 possibilita` 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 e` una distribuzione estremamente contenuta,
con dimensioni inferiori ai 100MB. La scelta della forma di Live CD e`
motivata da diversi fattori. Il primo e` la semplicita`
di upgrade che permette di passare ad una release successiva
semplicemente con un reboot. Il secondo motivo e` la intrinseca
sicurezza di cui le immagini ISO sono caratterizzate. Infatti, poiche` il filesystem contenente i binari eseguibili e` in sola
lettura, un'intrusione esterna, difficilmente puo` 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
e` 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 silenziosita`
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 funzionalita` di Zeroshell, e`
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 piu` adatti dove
trovare e richiedere supporto.
Router,
Bridge e Firewall e Traffic Shaping Una delle funzionalita` presenti in Linux da
sempre e` la possibilita` di abilitare il routing fra le
diverse interfacce di rete di cui e` dotato il sistema.
L'interfaccia web di Zeroshell da` 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. Cio` e` utile per esempio, quando si
dispone di un collegamento ADSL con un solo IP, ma si vuole far
accedere a Internet piu` computer simultaneamente.
La funzionalita` 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. Cio` e` 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. Cio` consente un bel
risparmio di lavoro agli amministratori, che in tale maniera non
devono piu` configurare un numero eccessivo di route statiche
per ogni router. Il RIP tiene conto anche della metrica (cioe`
del numero di hop necessari per raggiungere un nodo), permettendo
cosi` 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 piu` 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, e` quello in cui si vogliono applicare delle regole di
firewalling, ma non lo si puo` fare su di un router layer 3
poiche` 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, e` interamente amministrabile via web.
Tale firewall puo` essere utilizzato indifferentemente sia che
Zeroshell stia agendo da router che da bridge. Una delle
caratteristiche fondamentali e` la presenza dei filtri Layer 7
(L7-Filter) che permettono di individuare i pacchetti guardando al
contenuto del loro Payload (Deep
packet inspection). Cio` e` 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 possibilita`
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. Cio` 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, puo`
essere utilizzata, invece che per bloccare determinati protocolli,
per assegnarli una priorita`, una banda garantita ed una banda
massima. Un esempio per tutti e` quello in cui conviene dare
bassa priorita` ai grossi trasferimenti di dati e alta a quelli
realtime come il VoIP, in cui una latenza troppo lunga
comprometterebbe la qualita` 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 cio`, Zeroshell utilizza il
software Open Source OpenVPN. Il vantaggio di questa soluzione,
rispetto ad altre come il diffuso protocollo IPSec, e` che nel
tunnel criptato si fanno passare vere e proprie trame Ethernet e non
soltanto protocolli di livello 3. Le conseguenze sono immediate: si
puo` 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, puo` 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
e` stato scelto perche` sfruttando IPSec ha un'elevata
sicurezza (rispetto per esempio al piu` diffuso ma debole
PPTP). Un Road Warrior (cosi` 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 e` dimostrato spesso complicato da
configurare lato client, anche in sistemi come Microsoft Windows che
nativamente puo` effettuare tali VPN, senza l'aggiunta di altro
software. Per questo motivo, con l'ultima release di Zeroshell si e`
dato supporto alle VPN Host-to-LAN tramite OpenVPN, che risulta molto
piu` semplice da configurare benche` richieda
l'installazione di tale software. Come si puo` vedere
consultando il documento http://www.zeroshell.net/openvpn-client/,
e` disponibile un porting di OpenVPN per tutti i sistemi
operativi piu` diffusi (Linux, Solaris, OpenBSD, FreeBSD,
NetBSD, Mac OS X e Microsoft Windows). In particolare, il server
OpenVPN configurato in Zeroshell ha un elevata flessibilita`,
poiche` 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
semplicita` con cui una persona non autorizzata, semplicemente
avvicinandosi ad una zona coperta da segnale Wi-Fi, puo`
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, mostro` presto i suoi limiti di sicurezza, dovuti
alla debolezza dell'algoritmo di cifratura. Si introdussero percio`
lo standard WPA successivamente evolutosi nel WPA2 (802.11i) che
prevede due modalita` 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 modalita` Enterprise, dedicata
alle realta` piu` grandi, che elimina la necessita`
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 confidenzialita` dei dati
al prezzo di una non immediata configurabilita` dei client
degli utenti, che spesso necessitano di supporto da parte degli
amministratori. Cio` non e` accettabile in un ambiente
pubblico come un HotSpot di un aeroporto o di un albergo. In questi
luoghi, si e` 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, cosi`
come per le VPN realizzate con OpenVPN, e` possibile
autenticare gli utenti di un dominio Microsoft Active Directory
sfruttando Kerberos 5.
Grazie poi alla sua modularita`, 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 funzionalita`: 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 puo` 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 puo`
distribuire l'accesso al Wireless su piu` 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 e` quello di
poter creare VPN ridondate e con consequente incremento di banda. Cio`
e` possibile grazie al fatto che OpenVPN incapsula nel tunnel
crittografato, trame Ethernet a tutti gli effetti e quindi e`
possibile utilizzare la capacita` 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),
puo` 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 e`
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 possibilita` di bilanciare il carico dei
collegamenti con Internet e di ridondarli in caso di guasto, sara`
introdotto il Net Balancer. Questo modulo consentira` a
Zeroshell di avere piu` di un Default Gateway. La logica con
cui sara` distribuito il carico sui diversi router di confine
con l'esterno sara` sia Round-Robin (quindi automatica), che
attraverso delle regole simili a quelle del firewall. Con
quest'ultima possibilita` si da` all'amministratore, la
facolta` 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 piu`
genericamente) da un link, mentre il resto del traffico dai restanti
collegamenti.
Autenticazione
Kerberos 5 e autenticazione X.509 Come si e` 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 e` disponibile
un tutorial all'URL http://www.zeroshell.net/kerberos/)
e` stato scelto perche` ritenuto uno tra i protocolli di
autenticazione piu` 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 possibilita` 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. Cio` e` senz'altro necessario, quando
un'organizzazione che vuole utilizzare i servizi di Zeroshell,
possiede gia` un'infrastruttura PKI.
Sviluppi
futuri e nuovi servizi A
breve sara` disponibile il Net Balancer, che e` uno dei
servizi maggiormente richiesti. Successivamente verra`
sviluppata la possibilita` di attivare un proxy web (senz'altro
Squid) che consentira` la scansione delle pagine web per
bloccare Virus, Worm e Malware piu` in generale, prima che
raggiungano i browser degli utenti. Con molta probabilita`
l'Antivirus utilizzato sara` ClamAV vista la sua natura Open
Source. Anche questa e` una necessita` molto sentita,
emersa dalle richieste sui forum, tanto che come testimonia il post
http://www.zeroshell.net/forum/viewtopic.php?t=382,
c'e` chi a provveduto a installare tale software da se.
Probabilmente dopo la release 1.0.0, Zeroshell conterra`
anche un server IMAP e un server SMTP con antivirus per la
distribuzione della posta elettronica.
|