7
Il Tacacs + è sembrato inizialmente migliore del protocollo Radius, ma
dopo un’analisi approfondita delle caratteristiche di entrambi, si è scelto di
utilizzare il Radius.
Valide motivazioni sono principalmente dovute al fatto che il TACACS+ è
proprietario della Cisco System e quindi non viene garantita compatibilità
con tutti gli apparati di rete(anche se diverse aziende si stanno
aggiornando) inoltre da prove effettuate, risulta che il TACACS+ utilizza
un’elevata quantità di memoria e sfrutta un elevato numero di cicli della
CPU.
Infine è stata rilevata una vulnerabilità di TACACS+ agli attacchi di tipo
replay quindi, se sono aperte troppe sessioni, la cifratura potrebbe essere
compromessa.
In entrambi i casi dopo la scelta dei rispettivi protocolli, si è passati ad
un’analisi accurata dei software esistenti per supportare questi
meccanismi usando come criterio di valutazione principale la sicurezza e
poi il costo del software cercando di puntare su progetti di tipo Open-
Source.
Questo per problemi di licenza di utilizzo dei programmi e soprattutto per
non fermarmi solamente all’interfaccia di un programma, ma per andare
fino in fondo al codice per capire il reale funzionamento di esso.
Come ultimo punto è stato realizzata una distribuzione di Linux (derivante
dalla Slackware 10.2), la PMGslackware che racchiude al suo interno
tutto il lavoro svolto.
Una volta installata, come una normale distribuzione Linux, è possibile
installare da una cartella apposita, i pacchetti presi in considerazione per
realizzare gli obiettivi preposti(OpenVPN e FreeRadius).
Sono inoltre presenti all’interno del cd due cartelle contenenti i files di
configurazione(con relativi commenti) dei due pacchetti così da poter
implementare in maniera facile e veloce i server.
Si consiglia, per problemi di modularità e di sicurezza, di implementare
due server diversi: in particolare il database relativo al server Radius
dovrebbe essere memorizzato su un’altra machina così da garantire una
8
maggiore sicurezza, una migliore gestione del sistema e soprattutto, la
privacy degli utenti.
9
CAPITOLO 1
SICUREZZA E
VIRTUAL PRIVATE
NETWORKS (VPN)
10
Sicurezza e Virtual Private Networks (VPN)
1.1 Sicurezza Informatica
Il mio crimine è la mia curiosità
(The Mentor)
La sicurezza informatica mira a proteggere i dati personali da potenziali
rischi o violazioni siano questi volontari o involontari.
La protezione viene attuata secondo vari livelli sia astratti che fisici che
sono a loro volta complementari tra loro; se ad un server, ad esempio,
vengono applicati tutti i possibili criteri di protezione per renderlo
invulnerabile dall’esterno e poi però viene lasciato in una stanza
accessibile a chiunque…Mi sembra di aver reso l’idea!!
Infatti secondo il D.D.L. 196/2003 i server devono essere posti in locali
protetti contro i furti.[1]
Il livello astratto viene identificato in genere come l’autenticazione e la
verifica delle autorizzazioni di chiunque acceda ad un sistema così
importante.
In generale quindi si parla di sicurezza attiva e sicurezza passiva.
Per sicurezza attiva si intendono tutte le tecniche, generalmente
combinate tra loro, che servono a proteggere intrinsecamente i dati sia per
quanto riguarda l’accesso e quindi la consultazione, sia per quanto
concerne la loro modifica.
Le tecniche di attacco per questi sistemi sono molteplici per cui è
necessario cercare di interporre tra il “bersaglio” e l’ ”attaccante” più
barriere possibili.
11
1.2 Fasi dell’attacco
Per quanto possano essere svariati i tipi di attacco effettuabili è comunque
possibile fornire delle indicazioni di massima riguardo alle fasi che
costituiscono un attacco.
1. HIDING(Mascheramento)
Essa rappresenta la fase iniziale dell’attacco, nella quale l’attacker
compie una serie di operazioni, spesso complesse, per camuffarsi
ossia evitare di rivelare la sua identità o il luogo in cui si trova per
scongiurare il pericolo di essere tracciato ed individuato.
2. INFORMATION GATHERING(Raccolta informazioni)
Affinché un attacco abbia esito positivo, l’attacker deve reperire il
maggior numero di informazioni possibili della rete scelta come
bersaglio.
In questo caso non viene realizzata una vera e propria intrusione, ma
si sfruttato informazioni pubbliche reperibili attraverso dei canali
standard(database del NIC, record, DNS, traceroute, ping etc.).
Le tecniche comunemente usate per questo scopo sono :
Network Surveying : si tratta di una combinazione di elementi che
sono ricerche dati, raccolta di informazioni e controllo di politiche di
sicurezza. Al termine di questa sottofase, l’attacker, è in possesso dei
nomi di dominio interessati, delle funzioni principali sui server, degli
IP di proprietà dell’azienda bersaglio, di una mappa di rete
approssimativa, di indirizzi e-mail validi(in genere del tipo info@
oppure webmaster@ etc.) e di informazioni specifiche sull’ISP che
fornisce la connettività Internet.
Port Scanning : con questo termine si intende l’attività di probing
invasivo delle porte di sistema a livello di trasporto. Ogni sistema che
implementa TCP/UDP ha 65536 porte disponibili per entrambi i
protocolli: al termine di questa fase l’attacker conoscerà ancora
meglio la conformazione della rete aziendale.
Service Identification : una volta individuate le porte attive, con
questa fase l’attacker cerca di esaminare le applicazioni in ascolto su
12
quelle porte. A volte più applicazioni possono stare in ascolto sulla
stessa porta es, Perl e PHP considerati componenti dell’applicazione
che ascolta sulla porta 80/TCP. Dopo questa fase l’attacker ha una
visione tale da permettergli di individuare possibili punti deboli
all’interno della rete target.
System Identification : tramite questa operazione si cerca di capire
quale tipo di sistema operativo è attivo su una determinata macchina,
la sua versione ed altre informazioni specifiche. Una tecnica molto
usata è quella del TCP/IP fingerprinting realizzata per ampliare la
visione della rete e le possibili esposizioni.
3. SYSTEM PENETRATION(Intrusione)
Una volta che l’attacker è in possesso di tutte le informazioni
necessarie riguardo alla rete, è arrivato il momento dell’attacco
diretto vero e proprio.
Questo varia sensibilmente a seconda delle tipologie di rete, dei
sistemi adoperati, delle vulnerabilità, ma dipende soprattutto
dall’attacker.
Si perché ogni attacker ha un suo trademark che lo
contraddistingue(un po’ come per chi fabbrica bombe!) ed è difficile
staccarsi da una tecnica a meno che non si abbia una visione a 360°
del sistema.
Le possibili insicurezze possono essere raggruppate in 4 aree:
System security : sono vulnerabilità a livello di sistema operativo e
software di base. Tipicamente alcuni servizi, o programmi applicativi,
non aggiornati o mal configurati si prestano ad essere attaccati per
ottenere un accesso non autorizzato al sistema(vulnerabilità remote)
oppure per realizzare una privilege escaleption tecnica che verrà
descritta in seguito. Tipici esempi sono quelli che sfruttano
l’esecuzione di codice arbitrario da remoto(exploit), la mancata
gestione di eccezioni o la scorretta implementazione delle politiche di
accesso al sistema(password guessing o brute force).
13
Network security : sono vulnerabilità che minano il livello di
sicurezza dell’intera rete. Fattori che favoriscono queste tipologie di
vulnerabilità sono principalmente la tipologia delle reti e la
conseguente presenza di punti di accesso(poco o per niente protetti)
alla rete privata, la tipologia e la configurazione dei sistemi che si
occupano di routing e firewalling(servizi attivi, ACL, default password,
Packet Filler) ed infine la possibilità di effettuare il monitoraggio
passivo della rete(Network Sniffing) alla ricerca di informazioni
private trasmesse in chiaro.
Application security : vengono sfruttate le vulnerabilità dei software
applicativi. In particolare un gran numero di applicazioni interne si
prestano come obbiettivi di questi attacchi che mirano ad ottenere
informazioni riservate o accesso non autorizzato ai sistemi. Un
esempio molto diffuso è l’SQL injection oppure altri sono il cross-site
scripting o l’hijacking(per applicazioni web).
Procedural security : vengono sfruttate le vulnerabilità delle
procedure utilizzate per tentare di proteggere il sistema tramite ad
esempio relazioni di fiducia tra le singole macchine della rete che
portano a human deception e social engineering.
4. CLEANING(Pulizia)
Una volta termina l’intrusione, l’attacker cerca di far sparire le sue
tracce dal sistema procedendo alla cancellazione delle tracce
lasciate nei file log, passando poi ad eventuali regioni del file system
per finire ad eventuali IDS(Intrusion Detection System).
14
1.3 Tipologie di Attacco
Dopo questa panoramica sui modi di attacco di un sistema bisogna
analizzare anche i tipi di attacco perpetrabili contro il sistema :
¾ Exploit
¾ Buffer overflow
¾ Spyware
¾ Shellcode
¾ Backdoor
¾ Port Scanning
¾ Sniffing
¾ Spoofing
¾ Trojan
¾ Virus
¾ DoS (Denial of Service)
¾ DDoS (Distribuited Denial of Service)
¾ Social Engineering
¾ Privilegi Escaleption
Dopo un elenco delle principali modalità di attacco, vediamo adesso di
analizzarle più dettagliatamente :
Exploit : è una tecnica mirata a sfruttare bug e vulnerabilità di un sistema
allo scopo di acquisire privilegi o di portare a termine un DoS.[2]
Tra i diversi modi che portano alla classificazione degli exploit, quello
principale è in base al modo in cui viene contattata l’applicazione target.
Si parla quindi di exploit remoto quando questo è compiuto attraverso la
rete e sfrutta la vulnerabilità senza precedenti accessi al sistema.
Si parla di exploit locale quando l’attacker effettua un preventivo accesso
al sistema mirato in genere ad aumentare i suoi privilegi rispetto a quelli
forniti dall’amministratore.
15
Gli exploit possono essere classificati anche a seconda del tipo di
vulnerabilità trattate (es. buffer overflow, cross-site scripting etc.)
Lo scopo della maggior parte di essi è quello di prendere i privilegi di root
su un sistema.
E’ comunque possibile acquisire, tramite accesso preventivo, un accesso
con minori privilegi che poi vengono alzati fino a diventare root(Privilege
Escaleption).
In genere un exploit sfrutta una specifica falla del sistema, la quale una
volta scoperta, viene riparata rendendo quindi vano l’attacco.
Per questo molti attackers(da notare che non parlo di hacker o cracker…),
i cosiddetti blackhat, non divulgano mai gli exploit trovati, ma li tengono
riservati per loro o per la loro crew; in questo caso si parla di zero day
exploit.
Buffer Overflow : è una tecnica che prende di mira programmi
software.[3]
Consiste nel fatto che un programma non controlla in anticipo la
lunghezza dei dati in arrivo, ma si limita a scrivere il loro valore in un buffer
di dimensione prestabilita, confidando che l’utente non immetta più dati di
quanto esso ne possa contenere.
In genere questo accade quando il programma viene scritto usando
librerie di input/output che non fanno controlli sulle dimensioni dei dati
trasferiti.
Quando capita, per errore o volutamente, che arrivino più dati della
dimensione del buffer, i dati extra vanno a sovrascrivere quelle che sono
le variabili interne del programma o il suo stesso stack; in questo caso il
programma può bloccarsi, dare risultati errati o far bloccare il computer,
tutto dipende da ciò che viene sovrascritto.
Un attacker che conosce il programma ed il sistema operativo sul quale
gira, può addirittura precalcolare quali e quanti dati malevoli inviare al
computer target per provocare un buffer overflow ed in alcuni casi anche
impossessarsi del computer.