# Sicurezza e vulnerabilità delle reti

La sicurezza e vulnerabilità delle reti è un tema costante nella sicurezza informatica che si pone nel momento in cui si hanno più computer interconnessi fra loro, cioè in una rete di calcolatori: essi, infatti, offrono diverse vulnerabilità sfruttabili, più o meno facilmente, da terzi per intromettersi nel sistema ed intercettarne i dati.
Quando la rete è aperta a Internet, un'importante aggravante deriva dal fatto che Internet è nata come rete didattica in un ambiente universitario e le sue regole non prevedono metodi di sicurezza intrinseci alla struttura: le difese devono essere messe in atto sulle macchine stesse o creando strutture di rete particolari.

## I beni da proteggere

I beni da proteggere (asset in lingua inglese) sono principalmente la confidenzialità, l'integrità e la disponibilità dei dati gestiti dalla rete informatica. Evidentemente per fare ciò bisogna anche proteggere i computer ed i vari dispositivi presenti nella rete.
Considerando poi che la rete di computer non è fine a se stessa, ma è parte di un sistema più complesso, solitamente è un bene da proteggere anche il sistema sottostante alla rete. Ad esempio, è facilmente intuibile che il sistema informatico di una banca protegge anche il denaro da essa custodito.

## Tipologie di attacchi

I principali punti deboli, ed i relativi attacchi, che minano la sicurezza delle reti sono:

### Denial of Service

La locuzione denial of service (spesso abbreviata in DoS) indica un malfunzionamento provocato da un attacco informatico con il quale si saturano deliberatamente le risorse di un sistema informatico che fornisce un servizio, ad esempio un sito web, fino a renderlo incapace di erogare il servizio.

### IP Spoofing

L'IP Spoofing consiste nell'introdursi in un sistema informativo, del quale non si ha l'autorizzazione, cambiando il proprio IP non valido in uno valido. Con questo sistema si fa credere alla vittima che si è qualcosa di diverso (un hostname, un indirizzo ethernet, ecc). L'attacco a spoofing può essere considerato come una variante dell'attacco a Sniffer attivo e viene condotto generalmente sulla posta elettronica.

### Attacchi a Sniffer

Serve per impossessarsi di password e user-id di un utente autorizzato per accedere alla rete locale. Possedendo tali dati, l'hacker può entrare nella rete, copiare i pacchetti dati dagli utenti ed accaparrarsi le informazioni che gli interessano. Lo sniffer può essere attivo o passivo. Una sicurezza contro questo tipo di vulnerabilità può essere fornita dai firewall e dalla crittografia sulle informazioni scambiate.

### Attacco a desincronizzazione iniziale

Consiste nella rottura, da parte dell'hacker, della connessione lato server, grazie alla quale può creare una nuova connessione contrassegnata da un differente numero di sequenza.

### Sessione Telnet

Anche le sessioni telnet possono essere intercettate da un hacker: egli, dopo aver osservato passivamente le trasmissioni della rete, creerà un'interruzione della sessione telnet attraverso l'invio in massiccia quantità di dati nulli (che verranno comunque cancellati dal demone telnet del server), provocando una desincronizzazione della sessione stessa. Utilizzando il medesimo procedimento, l'hacker metterà in desincronizzazione anche il client, e si metterà in ascolto dei numeri di sequenza dei pacchetti per mantenere la connessione e controllare la sessione. Se, tuttavia, tale sessione non accetta la trasmissione di dati nulli, l'attacco non può avere luogo.

### Numero di sequenza

L'attacco al numero di sequenza viene utilizzato per avere accesso al sistema ed intercettare informazioni importanti, quali login, password e dati riservati, che il sistema stesso trasmette al server. Poiché, durante una comunicazione tra computer attraverso una rete TCP, ad ogni pacchetto viene allegato un indirizzo IP ed un numero di sequenza (ossia un numero univoco), l'hacker dovrà in primo luogo mettersi in ascolto dei pacchetti Internet e determinare l'indirizzo IP del server, e solo successivamente sarà in grado di controllare i numeri di sequenza dei pacchetti stessi. Questa operazione di monitoraggio ha lo scopo di permettere di prevedere quale sarà il prossimo numero di sequenza generato e dunque di insinuarsi fra il server e l'utente attraverso l'invio di un proprio pacchetto contrassegnato da tale numero. L'hacker, a questo punto, è in grado di intercettare le trasmissioni con l'utente poiché, conoscendo l'indirizzo IP del server, può generare pacchetti con numeri di sequenza e indirizzi IP corretti. Tale tipologia di violazione viene spesso effettuata in vista di un ulteriore attacco ad un altro server della rete.

### Dirottamento del protocollo TCP (o TCP hijack)

Per i server connessi a Internet, il dirottamento del protocollo TCP è la minaccia più grave, poiché consente all'hacker di entrare in un sistema operativo diverso dal proprio. Con questo procedimento, infatti, si possono aggirare host anche muniti di elevati livelli di sicurezza, proprio perché permette di aggirare i sistemi di password monouso. Contrariamente all'attacco al numero di sequenza, qui l'hacker ottiene l'accesso costringendo la rete ad accogliere come fidato il proprio indirizzo IP.
Altri tipi di minacce alla sicurezza delle reti sono le backdoor, che permettono all'hacker di entrare nuovamente e facilmente in un sistema che ha già violato, e i worm, che possono essere considerati i virus del sistema Internet.

## Tecniche di protezione delle reti

Per architettura di rete sicura si intende la struttura pianificata di un determinato sistema informatico che abbia la sicurezza in primo piano.
Quando si progettano sistemi informatici è possibile conferire importanza all'architettura generale e pianificarne la sicurezza come idea portante. Allo stesso modo la struttura di una rete può avere un aspetto significativo sulla sua sicurezza. Dopo la costruzione di un'architettura di rete ci si occupa anche di verificarne l'operato e il funzionamento, così da sorvegliare le attività di ogni funzione.
Esistono diverse tipologie di controllo nelle architetture: segmentazione, ridondanza, singoli punti di errore.

### Segmentazione

La segmentazione è un controllo di protezione potente, che può limitare i danni potenziali in una rete; essa riduce il numero di minacce e limita la quantità di danni permessa da una singola vulnerabilità. La segmentazione consiste nel frammentare le parti fondamentali di una rete, così da evitare compromissioni o malfunzionamenti. Una struttura sicura utilizza più segmenti. L'uso di firewall per interconnettere i segmenti in modo controllato può essere essenziale per la sicurezza.
Oltre che all'utilizzo di più segmenti vi si può aggiungere l'utilizzo di server separati riducendo il danno potenziale dovuto alla compromissione di qualsiasi sistema secondario. L'accesso separato è un modo di dividere la rete in segmenti.

### Ridondanza

Un altro controllo architetturale fondamentale è la ridondanza, che permette di eseguire su più nodi una funzione. La struttura ideale deve presentare due server e utilizzare la cosiddetta modalità failover. In questa modalità i server comunicano con gli altri periodicamente determinando se sono ancora attivi o se uno dei server ha problemi, in tal caso gli altri si occupano dell'elaborazione al suo posto. Così facendo le prestazioni vengono ridotte alla metà in presenza di malfunzionamento, ma l'elaborazione continua ad essere svolta.

### Singoli punti di errore

Per assicurarsi che l'architettura faccia tollerare al sistema malfunzionamenti in modo accettabile (per esempio rallentando l'elaborazione senza interromperla, oppure recuperando e riavviando le transazioni incomplete) si adotta la modalità di cercare i singoli punti di errore, ovvero occorre chiedersi se esiste un singolo punto della rete, che in caso di errore, potrebbe negare l'accesso a tutta la rete o a una parte significativa di essa.

### Crittografia

La crittografia è lo strumento più importante per un esperto di sicurezza delle reti, serve a fornire confidenzialità, autenticità, integrità e accesso limitato ai dati. Nelle applicazioni di rete, la crittografia può essere applicata sia tra due host (crittografia di collegamento) sia tra due applicazioni (crittografia end-to-end). Quando si usa la crittografia simmetrica le chiavi devono essere consegnate al mittente e al destinatario in modo sicuro. Per aggirare questo problema è molto diffuso l'uso della crittografia asimmetrica (solitamente in combinazione con la crittografia simmetrica).

#### Crittografia end-to-end

Questo tipo di crittografia garantisce la sicurezza da un estremo della trasmissione all'altro. Può essere applicata da un dispositivo hardware tra l'utente e l'host o da software in esecuzione sul computer host. La crittografia precede l'elaborazione di trasmissione e instradamento dello strato e affronta potenziali difetti negli strati inferiori. Nel caso in cui uno strato inferiore dovesse fallire nel mantenimento della sicurezza e dovesse rendere noti i dati ricevuti, la riservatezza di questi non sarebbe comunque compromessa. Quando si utilizza la crittografia end-to-end i messaggi inviati attraverso diversi host sono protetti, i dati contenuti nel messaggio sono crittografati e allo stesso modo lo è anche il messaggio mentre è in transito. Di conseguenza anche quando un messaggio deve passare attraverso nodi potenzialmente insicuri, esso è comunque protetto dalla divulgazione durante il suo transito.
Con la crittografia end-to-end, restano visibili e in chiaro i contatti (mittente e destinatari della comunicazione) e alcuni tipi di messaggio che necessariamente transitano attraverso i server.

#### Crittografia peer-to-peer

La crittografia peer-to-peer (abbreviato P2P) garantisce che nessun dato sia salvato su server intermedi e che non ci sia nessun tipo di immagazzinamento dei contenuti presenti nelle chat di tutti gli utilizzatori del sistema.
La rete P2P è infatti caratterizzata dall'assenza di client/server e di metadati, per cui è utile in particolare per impedire il blocco del servizio da parte degli operatori, dei governi etc. Più precisamente, la topologia di rete è a maglia, mentre nelle reti con client e server è generalmente a stella.

## Tecniche di verifica della sicurezza

La verifica della sicurezza di una rete è solitamente un problema complesso e viene spesso eseguita da organizzazioni specializzate. È abbastanza diffuso l'uso di un red team o di un tiger team che, tra l'altro, esegue operazioni di penetration test.