LinuxPratico - Sicurezza

Page 1

II portscan: un occhio

indiscreto nella rete La "Rete delle Reti" ci spia? Facciamo chiarezza su una delle "leggende" più diffuse degli ultimi anni, affrontando l'argomento "pori scanning", un must per ogni appassionato di sicurezza

Marco Ortisi <m,ortisi@linuxpratico.com>

Ogni persona che oggi può essere definita esperta nel settore della sicurezza informa

tica ha dovuto, prima o poi, affrontare le problematiche legate allo scanning; queste possono

host: sta quindi alia base di attacchi maggiormente

essere descritte e raggruppate all'origine come un

compiessi.

insieme di tecniche mirate ad ottenere informazioni

Nmap può essere considerato oggi il più completo

importanti su un computer (d'ora in poi definito

tool di tecniche di scanning pubblicamente accessi

host) o un gruppo di essi, quali possono per esem

bile. Gli esempi che seguiranno si baseranno sulla

pio essere la reperibilità di un indirizzo IP in rete, i

versione 3.48 reperibile (assieme alla passate e

tipi di servizi offerti agli utenti, le relative versioni

future release) all'indirizzo

etc. La parola scan deriva dall'inglese e sta infatti a

http; //vfM. insecure.org

significare "esaminare", "scrutare", "analizzare". Con il passare degli anni comunque l'accezione scanning ha subito un'evidente espansione di signi

Sweep Scanning & Broadcast Scanning

ficato ed in essa sono state inglobate anche altri tipi di tecniche (come per esempio quella del

Uno dei problemi basilari riguarda la possibilità di

fingerprinting discussa nel corso dell'articolo).

determinare quanti indirizzi IP in un range (un grup

Grazie a quanto sin'ora detto, conoscere ed utilizza

po) sono raggiungibili in una rete (pubblica o priva

re tali tecniche può sortire un doppio effetto: essere

ta) prima di passare ad analisi più complesse. La

d'aiuto in fase d'attacco (in quanto il fruitore finale

logica che sta dietro questa tecnica è molto sempli

delle informazioni raccolte potrà scegliere quella

ce: se un indirizzo IP risponde ad una determinata

maggiormente appropriata in base al tipo d'am

richiesta vuoi dire che lo stesso fa capo ad un host

biente e situazione da esaminare), ed esserlo in

attivo per il quale è possibile effettuare controlli

fase di difesa (in quanto l'avere conoscenza di cosa

maggiormente invasivi (caso A). Sarebbe invece

sia possibile fare servirò a comprendere come

uno spreco di tempo comportarsi nella stessa

potersi proteggere da questo tipo di attacchi).

maniera con un indirizzo IP che non fornisce alcuna

In realtà lo scanning non è un attacco nel vero e

risposta alle richieste inviate (caso B), d'ora in poi

proprio senso della parola. Esso è, però, lo stadio

definite query.

precedente ai tentativo concreto d'intrusione in un

Bisogna tuttavia fare una precisazione: un host che

non risponde a determinate richieste non necessa riamente è inattivo. Lo stesso potrebbe avere un firewall configurato che blocchi le query inviate. Lo scopo è quindi quello di trovare un modo per otte Vittima

Attaccante (Caio A)

nere delle risposte dall'host destinatario anche in

presenza di dispositivi di filtraggio o sistemi ID5. La tecnica che stiamo discutendo prende il nome di

Richiesta

Sweep Scanning. Nmap necessita dell'opzione -sP

Risposte

per sfruttarla.

Il concetto è !o stesso del ping (famoso tool presen te nella maggior parte dei sistemi operativi odierni): si tende ad inviare una richiesta definita ICMP Echo

(Caso B}

Richiesta Richiesto Richiesto

c

Request in attesa di ricevere in risposta un ICMP Echo Reply. Dato che solo questo potrebbe non bastare per rilevare un host attivo (in quanto le

query di tipo ICMP vengono solitamente bloccate dai firewall}, Nmap invia alla destinazione un pac chetto TCP con flag ACK settato, diretto verso la L'interazione tra attaccante e vittima durante due diversi tentativi di scanning

porta 80 (solitamente utilizzata per usufruire del

servizio web). Questo sotterfugio (attivabile anche tramite l'utilizzo dell'opzione -sA di nmap) dovrebbe


causare l'invio da parte dell'host di destinazione di

Host

192.168.0.165 appears

to

be up.

un pacchetto TCP con il flag R5T settato. La geniali

Host

192.168.0.166 appears

to

be

down.

tà di questa tecnica consiste nel fatto che nmap

Host

192.168.0.167 appears

to

be

up.

invia un pacchetto riguardante una connessione

Host

192.168.0.1Q8 appears

to

be down.

che in realtà risulta essere estranea al destinatario,

Host

192.168.0.1G9 appears

to

be down.

il quale ReSeTtandola fa capire di volerla interrom

Host

192.168.0.116 appears

to

be down.

pere e conseguentemente (ma non volontariamen

Host

192.168.S.Ili appears

to

be down.

te) di essere un host attivo.

Host

192.168.0.112 appears

to

be

Ecco una sessione d'esempio:

Nmap

run

addresses

completed

-

13

IP

up. (4

scanned #

nmap

-sP

Starting

hosts up) in

3.243 seconds

192.168.9."

nmap 3.48

(

http://www.insecure.org/nmap/ at

La modalità verbose può arricchire maggiormente

)

2633-12-16 22:Q1

CET

l'output di dettagli quando specificata 2 volte di

te

be

up.

seguito t-vv). La notazione dell'indirizzo IP utilizza

192.168.Q.105 appears

to

be

up.

ta come parametro dell'esempio sopra esposto è

192.168.G.107 appears

to

be

up.

separata questa volta dal simbolo -

Host

192.168.6.112 appears

to

be

up.

Nmap

run

Host

192.163.0.100 appears

Host Host

compieteci

-

256 IP

addresses

(4

hosts

scanned

in

108.836

(trattino),

up) secondi

-

La notazione 192.168.0. ■ che è stata utilizzata da lìnea di comando, istruisce nmap ad effettuare uno sweep scanning su tutti gli indirizzi IP racchiusi tra l'intervallo 192.168.9.1 e 192.168.0.255. Nmap supporta anche altri tipi di notazioni (alcune delle quali verranno illustrate in seguito). Dall'output del comando si evince che 4 host sono attivi e raggiungibili in rete {per ognuno di essi

viene stampato a video l'indirizzo IP), ma quello che salta subito all'occhio riguarda l'elevato tempo di scansione: 108 secondi sono tanti, soprattutto se si pensa all'impatto che ciò potrebbe avere quando si opera su molti più host. Questo è dovuto ai fatto che nmap prova a risolvere ogni indirizzo IP attivo trovato, in una stringa FQDN {Fuily Qualified Domain A/ame, ossia hostname più dominio, esem pio serverl.altavista.com) attraverso l'ausilio dei

server DNS configurati nella macchina da cui viene

Un host che non risponde ai ping può

lanciato l'attacco. E' per tale motivo che è possibile

risultare invisibile ad un'analisi superficiale

specificare il flag

-n (ossia "don't reverse") che di

sabilita questo comportamento standard:

#

rmap

i...]

-sP parti

-n di

192.163.9." output

omesse

Nmap run compieteti - 256 IP addresses scanned

(4 hosts up) in

55.663

Indirizzo Broadcast

seconcis

In questo caso sono stati risparmiati quasi la metà dei secondi in confronto alla sessione precedente.

ICMP Echo Requeit

Un altro flag che sarà maggiormente apprezzato

nelle prossime sessioni d'esempio è -v. Esso attiva la modalità verbose di rimai), che mostra un output arricchito di maggiori dettagli (nel caso dello sweep scanning, specifica oltre agli indirizzi IP trovati attivi anche quelli inattivi):

»

nmap

-sP

Starting

-n

-u

192.168.0.1GO-112

nmap 3.48

(

http://www.insecure.org/nrrtap/ at

2093-12-16

Host

192.168.0.160 appears

to be up.

Host

192.168.0.1G1 appears

to

be

Host

192.168.9.102 appears

to

be down.

Host

192.168.0.163 appears

to

be down.

Host

192.168.0.1G4 appears

to

be

©te

)

22:38

CET

PI ^^=LJ

Q

_Z=*L,

PI '?=W

Oown.

down.

Un ping all'indirizzo dì broadcast permette di ricevere risposta dagli host attivi

~

p. 38


INFORMAZIONI

Tecniche avanzate di

pacchetto TCP con flag SYN settato. Di riflesso l'effetto impor

mascheramento

averlo contattato, ed invierà ad esso gli eventuali pacchetti di

tante che si ottiene è che Host C crederà che sia Host B ad risposta, in questo caso cercando di portare a termine il

Vi sono deile situazioni in cui si desidera ottenere il massimo

3WayHandshake e replicando con il secondo pacchetto della

livello di anonimato in fase di scansione. Questa è una di quel

fase in questione (il SYN/ACK). Ricevendolo. Host B invierà ad

le tecniche definite "esoteriche" per via dell'alto livello di ano

Host C un pacchetto TCP con flag RST attivo, in quanto lui non

nimato che assicura all'utilizzatore finale.

ha mai richiesto l'inizializzazione di quella connessione. Ciò

Essa necessita di 3 soggetti per poter funzionare:

causerà l'aumento del suo campo IPID di 1. Host A a questo punto reinvierà una richiesta di connessione

> colui che è interessato ad effettuare la scansione (Host A);

ad Host B ed analizzando il valore IPID precedentemente

una postazione residente tisicamente in qualsiasi parte del

memorizzato con quello attualo, riuscirà a determinare che la

mondo da poter impersonare (Host B);

porta interessata è nello stato "open". Viceversa se la porta

> la postazione presa di mira, nonché oggetto dello scanning (Host C)

fosse stata chiusa. Host C avrebbe replicato con un pacchetto RST (al posto del SYN/ACK) e ciò non avrebbe causato l'invio

di alcuna replica da parte di Host B e nemmeno il relativo

II concetto teorico è quello di riuscire ad effettuare la scansio ne delle porte a cui si è interessati, rendendo visibile tra i file di log di Host C, l'indirizzo IP di Host B. Detta così sembra faci

aumento del campo IPID.

Nmap implementa questa tecnica attraverso il flag "-si". La sintassi è molto semplice:

le. Ma come è possibile fare ciò senza mostrare la propria # nmap -PO -si

identità?

192.168.0.36 192.168.e.112 -n -p 79-85

Ogni pacchetto che viene spedito in rete è contrassegnato da un numero identificativo chiamato IPID. La maggior parte dei

In questo esempio l'host mittente utilizzerà come dumb

sistemi operativi non assegnano ad ogni pacchetto un IPID

(l'Host B del caso) l'indirizzo IP 192.168.0.30 per effettuare la

casuale, bensì tendono ad aggiungere il valore 1 all'ultimo

scansione delle porte dalla 79 alla 85 di 192.168.0.112. Il

generato. In questo modo tenendo traccia dei vari ÌPID in un

flag "-PO" istruisce nmap sul fatto di omettere la fase di ping

determinato lasso di tempo si ha la possibilità di sapere quan

dell'host e procedere direttamente con lo scanning. Questa

ti pacchetti un host ha inviato in giro per la rete. Ma come può

tecnica è la meno tracciabile tra quelle fin'ora introdotte, ma

questo far capire se una porta è nello stato "open" presso un

ciò non corrisponde a dire che sia quella maggiormente utiliz

host remoto? La pratica dell'attacco si sostanzia nel momento

zata. L'IPÌD di un sistema potrebbe non seguire un andamento

in cui Host A invia una richiesta (solitamente un SYN) ad Host

sempre costante durante la scansione e ciò compromettereb

B analizzando il valore originario dell'IPID e tenendone traccia.

be l'attendibilità dell'output finale. Talvolta la difficoltà nel tro

In seguito Host A contatterà Host C alla porta desiderata, fal

vare host dormienti (nella fattispecie del caso 192.168.G.30)

sificando il proprio indirizzo IP con quello di Host B, utilizzando

e la generazione randomica dell'IPID in un sistema, rendono

una tecnica definita spoofing. Questo avviene attraverso un

l'implementazione pratica dì questa tecnica molto ardua.

stante ad indicare che si ha interesse ad effettuare

#

solamente la scansione degli indirizzi IP racchiusi

[...]

tra l'intervallo 192.168.0.100 e 192.168.0.112.

nmap

nmap

-sP

parti run

-PP

-n

192.16B.0--

di output omesso

conpleted

-

256

Talvolta può essere comodo effettuare lo sweep

IP addresses scanned

(4

hosts

in

up)

36.867

seconds

scanning di un range di indirizzi IP usufruendo di messaggi di query differenti dai tanto sfruttati ICMP

E' però possibile utilizzare un modo più semplice

Echo Request. Essendo questi infatti portatori sani

dello Sweep Scanning per conoscere quanti indirizzi

di attacchi di tipo DoS e DDoS (per intenderci quelli

IP sono attivi in una rete. Esso prende il nome di

mirati alla consumazione della banda di un host ed

Broadcast Scanning.

alla conseguente inattività dei servizi forniti) è pre

Esistono infatti degli indirizzi particolari (definiti di

feribile bloccare il loro ingresso a priori, evitando la

broadcast) che vengono determinati in base ad una

fuoriuscita in risposta di un ICMP Echo Reply.

specifica maschera di sottorete applicata ad un IP.

Fortunatamente non tutte le query del protocollo

In pratica basta l'invio di una sola richiesta ICMP

sono così

Echo Request all'indirizzo di broadcast, per far si

tanto conosciute e temute. Per esempio l'ICMP

che ogni host "vivo" residente in rete replichi con

Timestamp Request viene utilizzato per ottenere

un ICMP Echo Reply (evitando di fatto l'invio di un

l'orario corrente in millisecondi (a partire dal 1970)

alto numero di richieste come accade con lo Sweep

di un host e la sua presenza tenderà a sollecitare

Scanning). Dato che le maschere di sottorete utiliz

un ICMP timestamp reply in risposta.

zate {o subnet mask) sono quasi sempre standard,

Ma dove sta l'inghippo? Si va incontro ad una mar

è solitamente facile determinare tale indirizzo di

ginale implementazione della query in questione

broadcast di un gruppo di host.

(alcuni stack TCP/IP di vari sistemi operativi potreb

Utilizzando per esempio un indirizzo IP di classe C

bero ignorare per default l'ingresso di tali pacchetti

192.168.0.112 ed applicando ad esso una masche

di richiesta), ma in linea di massima si tratta di un

ra di sottorete standard 255.255.255.0, l'indirizzo

dettaglio minore vista la gran mole di sistemi che la

broadcast rilevato sarà 192.168,0.255.

implementano nativamente (la stragrande maggio

Nmap

ranza degh OS presenti oggi nel mercato).

so l'ausilio del flag -PE:

ICMP sfruttabili per lo sweep scanning

implementa il Broadcast Scanning attraver

Nmap mette a disposizione il flag -PP per lo scopo:

(!©


Scanning dei servizi [TCP e UPP] Attentante

Vittima

SYN (Y)

Una volta determinati quali indirizzi IP sono attivi in un range (operazione definita anche "mappatura

STN(K) + ACK(Y+1)

della rete"), si può procedere alla fase successiva

ACK(K + 1)

relativa alla scoperta dei servizi presenti negli host desiderati; sarà attraverso quelli vulnerabili che

avverrà in seguito l'intrusione. C'è da dire comun La sequenza del 3-way handshake che

que che nmap di per sé non segnala un servizio

permette di stabilire una connessione TCP

come vulnerabile, ma comunica le porte aperte degli host a cui si è interessati. Sarà compito dell'u

tente sfruttare altre caratteristiche del tool per avere notizie sempre più certe sul tipo di servizio

attivo; non è detto infatti che se la porta 80 sia aperta in un host il relativo servizio sia necessaria mente un Web Server (come da standard dovrebbe

essere). La correlazione porta/servizio non è quindi Atto«ante

Porta aperto

sempre vera. Nmap da la possibilità di portare a

SYN (Y)

termine la fase mirata alla rilevazione di tutte le

SYN (K) + ACKfY+ì)

porte aperte in uno o più host in molti modi, a

RSTACK

seconda del grado di anonimato che si desidera

~

ottenere. Ciò consentirà anche di fare una panora

mica sulle tecniche utilizzabili maggiormente in

Porto chiuso

auge fino ad oggi.

SYN (Y)

TCP Vanilla Scanning

RST(Y+1)

II Vantila Scanning è la tecnica più semplice che possa essere utilizzata. Nmap la implementa attra verso il fiag -sT. Il concetto è banale: essa tenta di Funzionamento del "vanilla scan": se la

porta è chiusa si riceverà un RST

stabilire una connessione per ogni porta che si desi dera analizzare. Per fare ciò conduce a termine quella che viene definita la fase del "3 Way Handshake" o preludio alla connessione. In pratica, prima che un client decida di stabilire un collegamento TCP (che sarebbe uno dei protocolli

9

rniap

[parti

-sP di

-PE

192.168.S.255

di trasporto che permette lo scambio dei dati tra

-li

gli host) con un server, ha bisogno di sincronizzare

output omesse]

dei valori definiti numeri di sequenza (ISN) con

Host 192.168.B.255 seems ta be a subnet broadcast address

[returned 5 extra

pmgs)

l'host di destinazione. Senza questa fase l'invio sicuro dei dati non sarebbe possibile. Il termine

A causa delle pericolosìtà degli indirizzi broadcast,

sicuro qui prende un'accezione diversa da quella

molti sistemi oggi per default disabilitano la possibi

che si potrebbe immaginare: sta ad indicare che i

lità di rispondere a query di questo tipo.

dati arriveranno con certezza all'host destinatario,

Lo Sweep Scanning rimane perciò, nella maggioran

anche se certe porzioni d'informazione vengono

za dei casi, più utilizzato.

smarrite durante il tragitto. Un esempio:

Come difendersi dallo Sweep Scanning e dal ;? Bloccare in ingresso le query di tipo ICMP non desiderate (esempio request

S nmap

-ST -11

Interesting

192.168.0.112

ports on

-p

1-25

192.163.3.112:

e timestamp) e/o bloccare in uscita le risposte ICMP

(Thè 22 ports scanned but not shojn betow are in state:

alle query non desiderate;

PORT STATE

per i firewall di tipo

closed}

SERVICE

statefull (che mantengono, cioè, lo stato delle con

21/tCp filtered

ftp

nessioni intercorse tra l'host che si sta proteggendo

22/tcp open

ssh

e le altre reti) bloccare in ingresso tutti i pacchetti

25/tcp open

smtp

TCP con flag ACK settati che non si riferiscano a sessioni relative a connessioni realmente inizializza-

Un nuovo flag che qui bisogna introdurre è -p. Esso

te e stabilite (RELATED, ESTABUSHED).

specifica il range di porte che devono essere analiz

Per il Broadcast Scanning potrebbe anche essere

zate. Se omesso nmap per default effettua la scan

abilitata l'opzione iempecho

sione di tutte quelle racchiuse tra l'intervallo 1 e

ignorebroadcasts

attraverso il comando

1024 ed in seguito tutte quelle specificate nel file services fornito assieme alla versione utilizzata del

# echo

"1"

>

tool. In entrambi i casi, le porte vengono analizzate

/proc/sys/net/ipv4 /ìcmp echo

ignorebroadcasts

in modo casuale (cioè senza un ordine sequenzia le). Alla voce STATE nmap riporta lo stato della porta:

©te

^


_

INFORMAZIONI open: sta a significare che la connessione è

TCP/IP

stata accettata e quindi che la porta è aperta;

Fìngerprinting

filtered: indica che un firewall od un dispositivo di filtraggio impediscono ad nmap di.

Spesso si potrebbe essere interessati a scoprire il sistema

determinare se quella porta è aperta o meno;

operativo dell'host di destinazione se durante la fase di

unfiltered: indica che la porta è chiusa e

scansione ciò non è stato possibile (per esempio non

nessun dispositivo ostacola nmap nel

riuscendo a riconoscere dai banner ottenuti certi servizi che

determinare ciò.

sono proprietari di determinati OS). La tecnica utilizzata in questo caso prende il nume di TCP/IP

Solitamente quest'ultima voce appare solo se in

Fingerprint. Nmap la implementa attraverso il flag -0.

fase di scansione sono state rilevate molte porte

Essa si basa sull'invio di pacchetti con una serie di opzioni e

flag settati in modo mirato che tendono a sollecitare rispo ste particolari che identificano lo specifico sistema operati vo. Ciò è dovuto al fatto che gli stack TCP/IP sono spesso

afflitti da sviste di programmazione o con volontarie elusioni degli standard dichiarati nelle RFC. Pertanto si potrebbero creare situazioni in cui i sistemi Microsoft rispondano in un

nello stato fìitered.

Nella colonna SERVICE nmap indica il tipo di servizio standard che equivale a quella porta, ma non fa un reale controllo per vehficare che, come detto prima, quest'accoppiamento sia vero. Per la sua semplicità, il vanilla scanning ha il van

certo modo a delle richieste, mentre quelli Linux lo facciano

taggio di poter essere utilizzato da utenti anche

in un'altra maniera.

senza privilegi di root e, per contro, lo svantaggio

Il TCP/IP Fingerprint serve a rilevare queste anomalie.

dì essere facilmente rilevabile in quanto si basa

Le richieste ricevute vengono infine confrontate con le istru

sullo scambio completo dei pacchetti che identifica

zioni contenute nel file nmap- f jngerprints. per riconoscere

no il preludio alla connessione.

lo specifico sistema operativo.

Per tutte

Ecco una sessione d'esempio:

le porte che non si riferiscono a servizi che si desi derano rendere fruibili all'utenza, bloccare in

a nmap

-0 192.168.9.5

[parti di Runmng: OS

-n -v

Linux Z.l.X

detsiXs:

Linux

Uptime 43.131 TCP Sequence

days

|

Generation:

II SYN Scanning è un buon compromesso tra tecnica

2.2.25

(since Tue Nov 11

Prediction:

Sequence

TGP SYN Scanning

2.2.X

2.1.19 -

Diffìculty=2064259 IPID

ingresso tutti i pacchetti TCP con flag 5YN settato.

output omesse)

68:58:23 20S3)

Clas5=random positive

increments

veloce e poco rintracciabile: è a tutt'oggi quella maggiormente utilizzata. Nmap la implementa

(Good lucjcjj

attraverso il flag -sS. Essa viene spesso identificata

Incrementai

con il nome di "scanning a mezza apertura" (half-opcn scanning), perché non completa la fase

L'output ottenuto anzitutto mostra che il sistema operativo

del 3 Way Handshake e quindi, di fatto, non stabili

rilevato è Linux con kernel compreso tra la versione 2.1.19

sce una vera e propria connessione.

e la 2.2.25. Uptime sta ad indicare il tempo di attività di

Ciò che fa capire ad un host che vi è qualcuno

tale host in rete; in questo caso lo stesso ha subito l'ultimo riavvio o shutdown 43 giorni prima. Questo esame è possibile attraverso l'invio di richieste TCP Timestamp e solo se l'host destinatario fornisce questo tipo

di informazioni. L'opzione -v da linea di comando abilita 2 test differenti:

intenzionato ad effettuare un collegamento ad una

sua porta (sia essa chiusa o aperta) è un pacchetto TCP contenente un'opzione settata definita SYN. Quando una porta è chiusa il comportamento di

default della destinazione è di inviare un pacchetto RST al mittente (comunicando di fatto di non voler

1)TCP Sequence Prediction utilizzato per determinare la

accettare la connessione). Ma quando una porta è

difficoltà di portare a termine una connessione per intero

aperta, l'host destinatario tende a rispondere con

attraverso lo spoofing, sfruttando una tecnica definita

un singolo pacchetto recante 2 opzioni settate (il

"predizione dei numeri ISN":

SYN e i'ACK), stante a significare che sì desidera

2) IPID Sequence Prediction utilizzato per verificare il tipo di incremento

applicato all'omonimo campo IPID

andare avanti nel collegamento. Il mittente a que sto punto (avendo determinato ciò che voleva) non

(utile per riconoscere se la destinazione può essere

ha più interesse nel terminare la SYN-cronìzzazione

soggetto passivo del Dumb Host Scanning).

della connessione ed invia alla destinazione un pac chetto RST (rifiutando di fatto l'invito a proseguire

Esiste un'altra tecnica definita ICMP Fingerprint utilizzata

lo scambio di dati). Questa situazione sortisce un

per scoprire il sistema operativo di un host. Essa si basa

doppio effetto:

sullo stesso concetto dell'altra, sfruttando però l'invio di richieste ICMP. Entrambi (TCP e ICMP Fingerprint) sono tracciabili utilizzando tool di analisi dei pacchetti a basso livello (quali tcpdump, ethereal, etc), ma sono difficilmente con trastabili.

Di norma sarà sufficiente una singola porta aperta o la rice zione di una sola risposta per determinare il sistema opera tivo di un host.

a) da la possibilità di sapere se una porta è aperta o meno;

b) non conduce a termine di fatto alcuna connessione, quindi non lascia tracce nei file di

log (che registrano tutte le attività intraprese da chi contatta uno o più servizi) del sistema dell'indirizzo IP di chi ha effettuato la scansione.

(«0


ESERCIZI

Alcuni esercizi

TCP FIN Scanning

~

II FIN Scanning è una tecnica altamente "stealth"

per approfondire

(silenziosa) che può essere definita un vero colpo di genio. Presentata su di un ormai storico numero

Nmap dò la possibilità di usufruire di molte altre opzioni

della famosa ezine Phrack. reperibile all'indrizzo:

d'ausilio alle tecniche di scanning fin qui introdotte.

http://www.phrack.org/show.php?p=49&a=15

Utilizzando la pagina di manuale del tool (man

II concetto di base è più semplice di quello che si

nmap) quale

sarebbe la sintassi da linea di comando per raggiungere i seguenti obiettivi, sapendo che l'indirizzo IP oggetto della

scansione (ove non specificato) è quello della propria macchina?

possa immaginare: un host di destinazione risponde ad un pacchetto TCP con flag FIN settato {che sta ad indicare la volontà di porre fine ad una connes sione) con un pacchetto RST se la porta analizzata

1) Utilizzo del 5yn Scanning sulle porte dalla 1 alla 1024 con fiag don't reverse e verbosità abilitati.

è chiusa o non fornendo alcuna risposta se è aper ta. Per far ciò dovremo usare i! fiag - sF. Esempio di sintassi:

2) Utilizzo del Vantila Scanning sulle porte 80, 22 e 25 con l'abilitazione del flag don't reverse.

# nmap

3) Utilizzo dello Sweep Scanning su 3 indirizzi IP di classe

-sF

192.168.6.199

-n

-p

privata (192.168.0.1,192.168.0.2, 192.168.0.3) forniti

PORI

STATE

attraverso un file chiamato IPS.txt

22/tcp

open

ssh

23/tcp

closetì

tel.net

24/tcp

closed

priv-mail

25/tcp

closed

smtp

■UAvendo effettuato una scansione ad un host usufruendo della sintassi

H

nmap

-sS

192.168.Q.1

-p

24-26

-PO

-n

22,23,110,25

Interesting ports on 192.168.0.112: 5ERVICE

Una cosa da notare qui è che il carattere "," può

ed avendo ottenuto ti successivo risultato, cosa si può evincere osservando lo stato delle porte analizzate?

essere utilizzato per specificare esattamente le porte che si intendono analizzare. Inoltre, in questa

sessione, anche senza l'ausilio del parametro -v, PCRT

STATE

nmap mostra lo stato di tutte le porte controllate (sia

SERVICE

aperte che chiuse).

24/tcp

filtered

priv-mail

25/tcp

operi

sratp

Il FIN Scanning potrebbe essere a tutt'oggi la tecni

26/tcp

fiUeretì

unknown

ca maggiormente utilizzata se non fosse per un det

taglio molto importante: alcuni sistemi operativi 5) Quali opzioni sono abilitate ed a cosa servono nella seguente sintassi?

» nmap

-PO

-sV

-sF

(quali per esempio Microsoft, IOS Cisco, IRIX, MVS, HP/UX e B5DI) tendono a rispondere con dei pac

-p 20,21,22,23,24.25 ■v

-n 192.168.0.1

6} Utilizzo del TCP/IP Fingerprint con Decoy Scanning

chetti RST anche quando una porta è aperta. Essendo i sistemi Microsoft i più diffusi tra quelli poc'anzi menzionati, un output di nmap che dovesse rilevare lo stato di tutte le porte analizzagli possibili

spoofando 4 indirizzi di rete privati (192.168.1.1,

(dalla 1 alla 65535) come "chiuse", potrebbe far

192.168.100.100, 192.168.90.1. 192.168.4.4), flag don't

capire all'attacker (colui che lancia cioè lo scan) di

reverse e verbosità abilitati.

avere a che fare con una piattaforma Microsoft anziché BSD Compliant o Unix Like e procedere di

Sarà possibile scaricare le soluzioni degli esercizi proposti direttamente dal sito delia rivista, all'indirizzo:

http://www.linuxpratico.com/sicurezza/

~

conseguenza ad attacchi mirati per quel tipo di sistema. Il FIN Scanning può quindi essere utilizzato come una tecnica pre-fingerprint. La sua attuazione

necessita di privilegi di root. Come difendersi da! FIN Scanning? Bloccare in

ingresso tutti i pacchetti TCP con flag FIN settato Esempio di sintassi:

per tutte le porte chiuse o relative a servizi che non si vogliono rendere pubblici all'utenza. Per i firewall

« nmap

-sS www.xxx.com

-v

-p

1-25

di tipo statefull (che mantengono cioè lo stato delle connessioni intercorse tra l'host che sì sta proteg

L'unica cosa d'interesse qui è che non viene specifi

gendo e le altre reti) bloccare in ingresso tutti i pac

cato il flag -n e viene fornito un FQDN al posto di un

chetti TCP con flag FIN settati che non si riferiscano

indirizzo IR La bassa tracciabilìtà di questa tecnica

a sessioni relative a connessioni realmente tnizializ-

è in realtà un palliativo, in quanto è possibile affian

zate e stabilite (RELATED, ESTABUSHED).

care oltre al sistema di logging standard, altri stru

menti in grado di registrare anche il singolo pac

Conclusione

chetto ricevuto ed accorgersi di fatto dell'attacco

Lo scanning è il gradino primario per effettuare altri

subito. L'attuazione di questa tecnica necessita dei

tipi di controlli su host o intere reti. Esso è inscindi-

privilegi di root.

bile dalla fase di raccoglimento delle informazioni. canning? Prendere le

stesse precauzioni utilizzate per il Vanilla Scanning.

L'efficacia di ciò dipende dalla tecnica utilizzata e dal grado di anonimato che si desidera ottenere.

~


Sicurezza: attacchi passivi in rete locale hi una rete locale è possibile portare attacchi di tipo passivo attraver so tecniche di miffìng. Scoprite insieme a noi il funzionamento di tali tecniche e dell'ARP Spoofmg...

Marco Drtisì <m.ortisi@linuxpratico.cofn>

Andrea Desantis <a.desantis@linuxpratico.con>

Dopo aver portato a termine la fase dello scanning si avranno sufficienti informazioni

per poter passare allo step successivo: l'at tacco o il tentativo d'intrusione vero e proprio, quel

informazioni all'attaccante. Questo modo d'agire

lo che dovrebbe garantire l'accesso alla postazione

viene denominato attacco passivo.

desiderata ed ai suoi dati. Esso può essere lanciato

Ma cosa si va ad "attaccare" nella pratica attivamente

da due punti strategicamente diversi:

0 passivamente? Principalmente due cose sono sog gette a questo tipo di "trattamento" nell'ambito che si

> da locale: se l'intrusore ha accesso alla rete

sta discutendo: i servizi presenti in un host o i protocolli

locale (come per esempio una intranet) in cui si

di cui esso fa uso per comunicare in rete.

trovano gli host che vuole colpire;

Quest'ultimi, sopratutto in ambiti locali {che sono

> da remoto: se l'intrusore si trova in una rete diversa da quella in cui vuole accedere.

quelli che analizzeremo), sono particolarmente vul nerabili ad attacchi di tipo passivo. Uno strumento valido per testare e dimostrare que

Tuttavia nella sicurezza informatica il termine

sta ed altre modalità offensive è Ettercap. Esso è

"attacco" non sempre indica un intervento diretto

stato creato da due autori italiani {Alberto Ornaghi

su qualcosa; anzi i risultati migliori spesso si otten

e Marco Valìeri) ed è reperibile all'uri:

gono semplicemente osservando i movimenti della

http://ettercap.sourceforge.net

vittima, ignara, che possono rivelare importanti

L'ultima versione è la 0.6b ma a breve dovrebbe essere disponibile una nuova release chiamata "ettercapNG" con una serie di caratteristiche

INFORMAZIONI

aggiuntive interessanti.

Dato che per i nostri esempi pratici utilizzeremo

Compilazione

proprio questo tool, consiglio caldamente sin da ora

d'installarlo sul proprio sistema. La compilazione di Ettercap a partire dai sorgenti può esse re necessaria per ottenere un binario personalizzato per (a nostra distribuzione e le nostre esigenze di configurazione.

Per compilare Ettercap sarà necessario avere installato i pacchetti di sviluppo (gec, glibc-dev, binutils, etc). Dopo aver scaricato i sorgenti del programma, estraiamoli con il solito comando:

Installazione di Ettercap 1 pacchetti binari di Ettercap sono disponibili per la maggior parte delle distribuzioni Linux. Per le distri buzioni basate su RPM basterà scaricare i pacchetti ettercap, ettercap-plugins e libettercap dispo nibili sul sito:

#

tar xvfz

ettercap-9.6.b.tar.gz

Quindi procediamo con la compilazione:

--enable-Mtps

rpm

-Uvh

".rpm

--disable-gtk

Per Debian, invece, sarà sufficiente utilizzare, come

# make # make

Per installarli basterà, in genere, un semplice:

#

# ed ettercap-6.6.b

# ./configure

http://rpm.pbone.net

instali

II parametro --disable-gtk omette l'installazione del sup porto grafico. Se non lo si specifica sarà necessario avere

al solito, APT:

# aptget

instali

ettercap

ettercap-plugins

installato anche il pacchetto gtk2-devel. Se si desidera il supporto all'interfaccia grafica sotto XFree, non bisognerà specificare tale opzione.

Lo Sniffìng

Per installare anche i plugin che vengono distribuiti assieme

Come visto poc'anzi il termine "attacchi passivi" è

al tool bisogna digitare:

da imputare interamente all'implementazione di

* make plug-ins # make plug-insinstall

una serie di tecniche (che man mano analizzeremo) le quali mettono un attaccante nelle condizioni di poter ottenere accesso ad altre postazioni in rete senza violarle in modo diretto. Tra queste, una delle


più interessanti è lo sniffing. Come facilmente intui bile dai nome essa si occupa di intercettare (in gergo sniffare) i dati in circolazione su una rete, dando così la possibilità ali'intrusore di "catturare" l'intero contenuto di E-Mail, documenti o, cosa ancor più grave, di quaìsiasi tipo di password della vittima (del proprio sistema, di altri sistemi localizzati all'interno o all'esterno della rete, di caselle E-Mail, d'accesso a servizi web, di client di messenging,

ecc..)- Lo strumento che, all'atto pratico, si occupa di tutto questo prende il nome di sniffer. Lo sniffing non è una tecnica propriamente "univer sale", nel senso che talvolta ha bisogno dell'ausilio

di altre tecniche per poter essere correttamente Schermata iniziale di Ettercap, da cui è

portata a termine. Ciò è causato principalmente

possibile selezionare gli IP da attaccare

dalla presenza in rete di due diversi tipi di dispositi vi: gli hub o gli switch. Tuttavia eviteremo di parlare dei primi, ormai in disuso, e passeremo direttamen

te ai secondi. Questa scelta non è assolutamente limitativa per l'utente, sia perché gli hub sono ora

~

mai poco presenti nelle reti odierne, sia perché la tecnica di sniffing che tratteremo in questo articolo funziona molto bene con entrambi i dispositivi

(semplificando di gran lunga quelle che erano le

SOUBCti

tecniche originarie di cattura dei dati in ambienti di

USI

:

192.168.0.10

i.—.

rilier

]92.iee.0.1

<—'

IL=;ivs

rete con presenza di hub).

Esempia pratica Ettercap rende banale all'utente l'intercettazione delle connessioni desiderate (e naturalmente dei

relativi dati). Tutto ciò che bisogna conoscere, sem plicemente, è l'indirizzo IP dell'host che si vuole spiare. Quanto detto può essere dimostrato com piendo pochissime operazioni. Per prima cosa, andrà eseguito il tool attraverso il comando: Schermata raffigurante il dettaglio dei dati intercettati in una connessione.

# ettercap

Nella lista di sinistra selezionare (premendo Invio) ['indirizzo IP che si intende spiare (nell'esempio

TIPS 'n' TRICKS

192.168.0.70); in quella di destra, invece, l'indirizzo che funge da gateway d'uscita per la rete (nell'esem pio 192.168.0.1) come da figura 1. Premere il tasto

Sonde anti-sniffing

a, quindi per dimostrare la veridicità dell'attacco

In ambienti di rete con presenza di hub è possibile rilevare

spostarsi al computer che si intende spiare e visita

gli host che stanno praticando sniffing. Una postazione,

re il sito http://www.oltrelinux.com navigando un po' in qualche link. Tornare al

computer in cui è stato eseguito

prima di portare a termine attacchi di questo tipo, imposte rò la propria scheda Ethernet in una modalità definita pro

miscua che inibirà di fatto i controlli fatti dal filtro hardware della stessa figura 5. In modalità promiscua, un'interfaccia

Ettercap. Durante l'assenza dal PC saranno state

riceve tutto il traffico transitante, incluso quello non indiriz

inserite delle voci dal programma che si riferiscono

zato direttamente ad essa.

a tutte le connessioni sniffate in quel momento.

Un amministratore può quindi inviare in rete una serie di

Attraverso le frecce cursore posizionarsi in quella che interessa (in questo caso una di quelle che si riferiscono all'IP 8G. 17.149.253) e premere il tasto

pacchetti sonda opportunamente manipolati: questi, in con dizioni normali, quando cioè una scheda non è settata in modalità promiscua, non dovrebbero causare la ricezione di alcuna risposta. In caso contrario l'amministratore avrebbe

Invio. A questo punto apparirà a video il dettaglio in

la certezza che l'host che ha risposto è predisposto per lo

chiaro testo dei dati intercettati come da figura 2.

sniffing. La discussione sul tipo di sonde inviate rischierebbe

Premere il tasto q per tornare al punto precedente,

di allungare smisuratamente i contenuti dell'articolo: da

quindi nuovamente q per interrompere lo sniffing

delle connessione e ritornare al menu iniziale di

kernel a kernel, infatti, esse possono cessare di funzionare, pertanto in questo campo vige una ricerca continua.

Per tale motivo ci limiteremo a dire che Ettercap può rileva

Ettercap.

re la modalità promiscua attraverso un plugin chiamato

Pratica ws Teoria

dalla lista all'avvio del programma).

Come visto Ettercap permette in modo pratico di intercettare tutte le connessioni volute. Ma cosa

hunter (attivabile premendo il tasto p e selezionandolo

Un controllo di questo tipo, di tanto in tanto, non farebbe assolutamente male a qualunque rete.


accade "tecnicamente" quando si preme il tasto a nella schermata iniziale del programma? Per capirlo bisogna partire dal modo in cui ì PC di una rete comunicano a livello fisico l'un l'altro.

Ciò che viene collegato fisicamente alla porta di uno switch è un cavo che va a terminare nella sche da di rete (anche denominata "scheda Ethernet") di un client/server. In essa è presente un indirizzo a 48

bit definito "MAC" (di tipo hardware) come 00:3Q:84:40:9E:91 che identifica univocamente la scheda tra tutte le altre presenti In rete e che assie me all'indirizzo IP (di tipo software) in essa configu rato, creano "un'associazione" certa ad un determi nato host.

Uno switch effettua lo smistamento dei singoli "pac chetti dati" (d'ora in poi definiti frame) conservan do in memoria una tabella dove ad ogni porta fisica viene associato un indirizzo MAC. Questa tabella

Switdi

fohelli swiKh

Porto

MAC

1

N

2

y

3

K

viene analizzata al momento della ricezione di un nuovo frame in modo da determinare univocamen te in quale porta instradarlo (figura 4). Una scheda di rete effettua due tipi di controlli su ogni trame che riceve in modo da far arrivare al kernel de! sistema operativo solamente i dati che gli competono. II primo viene portato a termine da

un filtro hardware che analizzando la porzione dati specifica di ciascun frame in ingresso (chiamata header Ethernet) consente l'accesso solamente a

quelli destinati al proprio indirizzo MAC. Arrivati nella zona kernel del sistema operativo il frame

diventa "pacchetto" in quanto viene privato dello funzionamento di HUB (in alto) e Switch

header Ethernet ormai non più utile. A questo punto

(in basso) a confronto

il pacchetto viene preso in consegna dal sistema

operativo e inviato al processo utente solamente se passa il controllo di un ulteriore filtro software (le cui regole di accettazione o scarto vengono settate

da tool quali iptables, ìpchains, ecc... figura 4). Una delle principali limitazioni alle tecniche di sniffing in ambienti con presenza di switch viene pertanto for

Frame

nita, oltre che dagli stessi switch attraverso le asso ciazioni univoche MAC-IP che essi creano, anche dalle schede di rete con il proprio filtro hardware e

Filtro hardwore Indico

MAC destinazione

quello software del sistema operativo.

Sniffino in

MAC uhedo di tetti

Indirizzo IP

ambienti switchati Detta così sembrerebbe che sia impossibile fare sniffing in ambienti switchati. in realtà un classico sniffer nato per operare su segmenti di rete connes

Kernel Esistono (imitazioni d'accesso

perii pacchetto?

si con hub non avrebbe possibilità di funzionare cor rettamente senza sfruttare una tecnica ausiliaria.

Tale tecnica prende il nome di ARP Poisoning.

Fillro soffwore

Vediamo in cosa consiste.

Ko

Come già detto un computer connesso ad una rete Ethernet è provvisto di due tipi d'indirizzi: IP e MAC.

Quest'ultimo è necessario affinchè i frame possano Usertond

essere inviati e ricevuti ed è l'unico punto di colle gamento dello strato datalink. In pratica un host per scambiare dati con una destinazione inizialmente ne conosce solamente l'indirizzo IP e ciò non è suffi

Percorso intrapreso da un frame quando

ciente. Dato che la comunicazione avviene in real

viene ricevuto da una scheda di rete

tà a livello fisico tra le varie schede di rete attra verso lo switch, un host necessita di un metodo


per conoscere l'indirizzo MAC di una destinazione a partire dal relativo indirizzo IP prima di cominciare ad inviargli dei dati. Per questo scopo viene utilizza to il protocollo ARP (Address Resolution Protocol).

Quando un computer ha bisogno di contattare un host di cui non conosce l'indirizzo MAC, invia in rete un pacchetto ARP Request settando l'indirizzo fisi co di destinazione al classico broadcast address (cioè FF:FF:FF:FF:FF:FF) e specificando l'indirizzo

IP equivalente alla destinazione desiderata. In que sto modo la richiesta viene smistata a tutte le schede Ethemet collegate in rete (essendo di tipo broadcast).

Chi la riceve deve analizzare l'indirizzo IP presente con quello configurato nella propria interfaccia di rete e. se equivalente, ritornare al mittente il pro prio indirizzo MAC in un pacchetto ARP Reply.

Per fare in modo che l'invio di ogni pacchetto non generi sempre una richiesta ARP, ciascun host man tiene una cache (definita ARP Cache), in cui sono presenti le coppie indirizzo IP/MAC Address associa

to (visualizzabili attraverso il comando arp

-a).

Una postazione invia una richiesta ARP di tipo broacast per ottenere il MAC Address di y.y.yy. Questo risponde con un ARP Reply

Queste associazioni vengono eliminate nella ARP

~

Cache dopo un certo periodo di tempo che va dai 5 ai 20 minuti. Le associazioni incomplete (quelle per

definitivamente come all'inizio dell'articolo è stato

cui ad un indirizzo IP non equivale alcun MAC

possibile visualizzare in chiaro testo i dati scambiati

Address) sono causate dal tentativo di inviare pac

tra un host in rete ed un sito web.

chetti ad host che non sono presenti in rete e che

Supponiamo che le postazioni qui oggetto dell'at

non possono quindi rispondere alle ARP Request.

tacco aggiornino le loro cache ARP a partire dalla

Il problema d'insicurezza risiede nel fatto che l'ARP

ricezione di una semplice ARP Reply e poniamo il

è un protocollo stateless {al contrario del TCP) quin

caso che ATTACCANTE sia l'intruso, IP_B la posta

di la ricezione di un ARP Reply senza averne fatto

zione attaccata e IP_C i! gateway d'uscita in una

espressamente

rete locale.

richiesta

attraverso

un

ARP

Request, causa l'aggiornamento automatico della ARP Cache di un host. L'ARP Poisoning è in definiti va la tecnica che ne permette l'alterazione.

1 ATTACCANTE altera la cache ARP di IP_B

inviandogli un ARP Reply in cui afferma che

L'eccezione alla regola comunque esiste ed è rap

ii MAC Address di IP_C è equivalente a quello

presentata da Linux con kernel 2.4.x; esso non

di ATTACCANTE.

accetta repliche ARP non espressamente sollecita te, ma rimane comunque vulnerabile a questo tipo

2 ATTACCANTE altera la cache ARP di IP_C

di attacco se riceve una richiesta ARP contraffatta.

inviandogli un ARP Reply in cui afferma che

In pratica l'intrusore invia una ARP Request con il

il MAC Address di IP_B è equivalente a quello

proprio MAC Address ed indirizzo IP contraffatto

di ATTACCANTE.

(secondo le esigenze dell'attaccante). Il kernel 2.4.x dell'host vittima pensando che qual

cuno è interessato ad avviare una comunicazione

3 Quando IP__B e IPC entrano in comunicazione,

in realtà essi (a causa dei punti 1 e 2) inviano i

con lui, aggiunge l'associazione IP/MAC appena

pacchetti da loro generati a ATTACCANTE il

ricevuta nella propria ARP Cache e risponde con un

quale sarà libero di sniffarli. Quest'ultimo dovrà

ARP Reply. Ettercap utilizza entrambe le tecniche

provvedere anche a forwardare all'occorrenza i

(poisoning attraverso ARP Reply ed ARP Request)

dati ricevuti verso IP_B e IP_C facendogli

alternandone l'uso (ma la tecnica più diffusa rimane

credere così di essere in diretto contatto l'uno

sicuramente la prima). Maggiori dettagli in tal senso

con l'altro.

sono inclusi nel file README reperibile nel pacchetto sorgente del tool.

Snìffing & ABP Poisoning L'attacco che è possibile vedere nel riquadro (detto

4 Per mantenere un effetto continuo i punti 1 e 2 devono essere ripetuti ad intervalli regolari

anche successivamente l'inizio dell'attacco, principalmente per evitare che !e associazioni

appunto ARP Poisoning) causa di per sé una sempli

IP/MAC scadano nella cache ARP degli host

ce negazione di servizio (Denial of Service) alla vit

soggetti a poisoning. Se ciò accadesse infatti

tima, ma può essere agevolmente utilizzato per

l'attacco cesserebbe di funzionare. Non appena

sniffare le connessioni di uno o più host.

terminato ATTACCANTE dovrà ripristinare i

Fortunatamente queste tecniche sono utilizzabili

MAC Address originari nella cache delle vittime

solamente in reti locali dato che i pacchetti ARP non

se non vorrà causar loro difficoltà di

possono essere forwardati attraverso router. Un

comunicazione in rete (come dimostrato nel

esempio teorico "illustrato" servirà a comprendere

paragrafo precedente).

~


INFORMAZIONI

.

Esempio di alterazione della Arp cache di un trast Dimostriamo quanto è banale alterare la cache ARP di un host. Eseguire Ettercap attraverso il comando:

COMUNICAZIONE NORMALE ip

# ettercap

D::i

Nella lista di sinistra selezionare l'indirizzo IP a cui si vuole alte rare la cache {esempio 192.168.0.113); in quella di destra selezionare invece l'indirizzo IP del gateway d'uscita della rete (esempio 192.168.G. 1). L'effetto ottenuto quando l'attacco verrà portato a termine sarà quello di isolare 192.168.G. 113 da Internet.

Dall'host vittima (192.168.0.113 del caso) pingare l'indirizzo IP

del gateway (esempio ping

-e

FASE1 ATTACCANTI

1 192.168.G. 1) e quindi visua

lizzarne la cache ARP attraverso il comando:

#

arp

-an

Si otterrà un output simile al seguente:

MAC- 00=11:22:33:44:55 IP €.= «0=11 22-33-44.55

(192.168.6.1}

at

ee:9B:27:27:B0:64

[ether|

on

eth9

Tenere ben a mente in questa fase l'indirizzo MAC

FASE 2 IP B

60:99:27:27:BD:64 associato con TIP 192.168.0. 1.

ATTACCANTE

Dal computer su cui gira Ettercap premere il tasto j. Per dimo strare la veridicità dell'attacco spostarsi sul computer che si

vuole isolare e riciigitare il comando arp - an. Il risultato sarà: (192.168.9.1)

at 90:09:5B:fl6:2A:C6

[ether]

on ethe

Caée IP 1=00:11:22=33 44 55

IP C= 00.11=21 J3.44:H

La prima cosa che salta subito all'occhio è la differenza d'asso ciazione IP/MAC tra i due comandi che mostrano il contenuto della cache ARP della vittima. Tentando dì navigare da questo

host si noterà l'impossibilità di raggiungere qualsiasi sito

FASE 3 IP B

ATTACCANTE

Internet. Esso cercherà in pratica di inviare i propri frame all'in dirizzo MAC sbagliato (Q0;Q9:5B:O6:2A:C6 e non a 0O:9G:27:27:BDi64),che in realtà è quello della macchina dalla quale è stato lanciato l'attacco: quest'ultima, scartandoli, causerà di fatto alla vittima l'impossibilità di navigare in rete. Per terminare l'attacco spostarsi nel computer dal quale è stato

eseguito Ettercap e premere un tasto qualsiasì.

L'ARP Poisoning è una tecnica geniale che può

INFORMAZIONI

essere utilizzata sia per sniffare il flusso di dati tra due IP (come d'esempio tra un client, 1P_B, ed il suo gateway d'uscita, IP_C) che tutto il traffico

ARP gratuiti...

verso uno specifico IP o tutto il traffico verso qual

Quando un host manda un'ARP Request impostando TIP

siasi destinazione.

sorgente e destinazione della richiesta al proprio indirizzo

Un'altra tecnica di sniffing in ambienti switchati

ed il MAC di destinazione al classico valore broadcast

consiste nell'inviare un alto numero di repliche o richieste ARP con dei MAC Address casuali, per ten

tare di "resettare" il comportamento dello switch. E'

(FF:FF:FF:FF:FF:FF}sÌdÌceche ha inviato in rete un ARP gratuito. Questo tipo di frame viene generato per assicurar si che non vi sia nessuna altra scheda di rete che utilizzi il proprio indirizzo IP.

stato appurato che alcuni dispositivi, se tenuti sotto

Nel caso che l'host mittente riceva un'ARP Reply alla sua

stress in questo modo, passano in una modalità

richiesta, ci si troverà in presenza del famoso fenomeno del

definita frame-broadcast assumendo di fatto un

"conflitto" in cui 2 host in una rete possiedono lo stesso

comportamento del tutto simile a quello degli hub (forwardare, cioè, ogni frame ricevuto in ogni porta

hardware presente a prescindere dalla destinazio

indirizzo IP (e ciò non è possibile). Gli ARP gratuiti vengono anche inviati quando ad una posta zione viene cambiata la scheda di rete. Questa avrà un indi rizzo MAC differente da quello della precedente, l'ARP gra

ne). Ettercap viene installato nativamente con un

tuito al reboot della macchina è un metodo veloce per

plugin chiamato spcctre che agisce proprio tn que

notificare tutti gli host presenti (attraverso una richiesta

sto modo. Può essere testato lanciando ettercap, premendo p e selezionandolo dalla lista dei plugin.

Se non si sa ciò che si sta facendo sì sconsiglia cal damente dì attivarlo.

broadcast) che l'associazione IP/MAC è cambiata. Tutto ciò servirà a far aggiornare la cache ARP delle singole postazioni in rete.


~ Contromisure anti

non ne indicheremo uno od una serie specifica,

Sniffing/ABP Ppisoning

Sarà sufficiente cercare le parole managed switch

Esistono diverse contromisure che permettono di

Quando si ha a che fare con reti di piccole dimen

nel sito del produttore preferito.

contrastare attacchi di Sniffing attraverso ARP

sioni o non si dispone dei fondi necessari per l'ac

Poisoning. Il problema può essere risolto, pratica

quisto di uno switch amministrato (anche se ormai

mente, a livello hardware o a livello software. Nel

le differenze di prezzo non sono abissali come in

primo caso, se si è in possesso di dispositivi hub, è

passato) è possibile risolvere il problema diretta

indiscutibile il fatto che debbano essere cambiati

mente a livello software. Sarà sufficiente creare

con degli switch. Anche i semplici dispositivi switch

delie voci statiche nella ARP Cache degli host pre

(così come gli hub) devono essere sostituiti con i

senti in rete. Questa accortezza non permetterà più

cosiddetti switch amministrati che permettono di

l'aggiornamento della cache ARP per un determina

fissare gli indirizzi MAC desiderati su ciascuna

to IP attraverso la ricezione di ARP Request o Reply.

porta. Di fatto, questi strumenti non consentono la

Per esempio, se si desidera aggiungere in una

fuoriuscita da una specifica porta hardware di

postazione presente in rete una entry ARP statica al

frame con MAC Address diversi da quelli configurati.

gateway d'uscita con IP 192.168.0.1 si dovrà:

Esistono diversi modelli di switch amministrati ma > Ottenere l'indirizzo MAC del gateway digitando il

TIPS 'n' TRICKS

comando arping

192.168.0.1;

> Fissare (in gergo lockare) l'indirizzo iP del

gateway al MAC Address ottenuto nella fase

Oltre le ARP statiche

precedente attraverso il comando arp

E' possibile filtrare le coppie IP/MAC Address direttamente dal gateway con IPTables; questa soluzione è molto più fles sibile di quella di creare ARP statiche su ogni nodo. Posto che

-s

192.168.0.1 HAC_Address; > Per dimostrare che un tentativo di poisoning non

può più corrompere le informazioni contenute

gli indirizzi dell'host siano 192.168.0.1 e 00:11:22:33:44:55.

nella cache ARP della postazione appena

la sintassi è molto semplice:

configurata, eseguire gli stessi passi già illustrati

# iptables

-A INPUT

-s

192.168.0.1

# ìptables

nel riquadro Esempio d'alterazione della ARP

-n mac

■■mac-source 86:11:23:33:44:55

-j

ACCEPT

cache di un host (avviando naturalmente Ettercap da una postazione differente da quella

-P INPUT DROP

in cui è stata messa la voce statica); > Navigare in rete dal computer vittima ed

INFORMAZIONI

accertarsi della corretta visualizzazione dei siti

visitati.

ARP Proxy

L'efficacia di questo metodo è controbilanciata dal ARP Proxy: è un sistema utilizzato per mettere in comuni cazione due o più reti che non sono in diretto contatto tra loro. Per esempio supponiamo che un client presente in una rete abbia intenzione di comunicare con un server residente

fatto che, in pratica, è un lavoro lungo e faticoso creare voci ARP statiche in una postazione per ogni host residente in rete, pertanto il consiglio che

in un'altra e che le 2 reti vengano collegate tra loro tramite

spesso viene dato è quello di affrettarsi a farlo per

un router. Il client invia una Richiesta ARP per conoscere

lomeno in tutti i server e client in cui circolano dati

l'indirizzo MAC del server.

importanti (qualora non fosse possibile affidarsi a

Come già detto il protocollo ARP non è routabile (non può essere in pratica inoltrato a reti esterne a quella locale) per tanto è il router stesso a prendersi carico della richiesta ed

a rispondere con un ARP Reply. In questo modo il client

switch amministrati).

Considerazioni finali

invierò a lui tutti i frame destinati al server che verranno a

Lo sniffing, semplice o coadiuvato da ARP poisoning

loro volta smistati alla giusta destinazione.

come metodo di attacco passivo, è uno strumento

In Internet. essendoci diversi salti tra un host mittente ed

molto potente, ma di perse non consente l'intercet

uno di destinazione, questo processo viene ripetuto ciclica

tazione di dati al di fuori di quelli transitanti in chia

mente nella cache di ogni router.

ro testo. In presenza di sessioni crittografate (come SSL o 55H) la semplice analisi dei pacchetti non

WEBOGRAFIA

Riferimenti web RPM per Ettercap

http://rpm.pbone.net DEB per Ettercap

http://packages.debian.org/unstable/net/ettercap Risorse sui protocollo ARP

http://mia.ece.uìc.edu/-anùt/Ethernet/msg00002.html Sito di Ettercap

http://ettercap.sourceforge.net RFC riguardante ARP

http://vwirf.faqs.org/rfcs/rfc826.htnil

consente di avere un output leggibile o comprensi bile. La chiave di tutto risiede nell'adeguato sfrutta mento dell'ARP Poisoning (a meno che non possie da accesso ad un punto nella rete in cui tutti i dati

fluiscono, come per esempio un gateway), interve nendo "attivamente" nella comunicazione tra un

client e un server, non limitandosi alia semplice osservazione dei pacchetti. La manipolazione fraudolenta di false repliche e

richieste ARP permette all'intruso di operare altri tipi di attacchi oltre quelli menzionati. Molti di essi verranno trattati nel successivo articolo assieme alle relative tecniche di rilevamento.


Sicurezza: sniffing, spoofing e hijacking Una volta compreso il funzionamento dcU'ARP-Spoofing, è possibile effettuare con estrema facilità gli attacchi basati su IP spoofing ed IP hijacking, in particolar modo in ambito locale.

Marco Ortist <m.ortisif3linunpratico.com>

Andrea Desantis <a.desantis@linuxpr3tico.com>

Gli attacchi passivi ai protocolli di rete con sentono l'intercettazione di dati in modo del tutto silenzioso. Con lo sniffing infatti le password che viaggiano in chiaro testo possono essere "catturate" ed utilizzate per introdursi nei

Spoofing: la base Lo spoofing è una tecnica che permette l'aiterazio-

sistemi desiderati.

ne dei pacchetti in modo che sembrino provenire da

Tuttavia questa tecnica è completamente insuffi

un host diverso da quello in cui l'ipotetico intruso

ciente contro protocolli che fanno massiccio utilizzo

sta in realtà lanciando l'attacco.

della crittografia, come SSL ed SSH (tale situazione

Questo avviene principalmente falsificando il campo

verrà chiamata "scenario 1 ").

"Source Address" nell'header IP di ogni pacchetto.

Un altro pessimo luogo comune da sfatare è l'osan-

Detto campo specifica l'indirizzo del mittente che sta

nazìone totale della "password" come mezzo sicuro

cercando d'inizializzare una connessione TCP o UDP. Lo

d'intrusione in un sistema. Non si considera il fatto

spoofing viene definito vedente quando l'intruso ha la

che ci potrebbero essere ulteriori strumenti di prote

capacità di sniffare il traffico tra l'host che vuole

zione come quello di consentire l'accesso esclusiva

impersonare e quello che vuole attaccare e cieco

mente ad uno o più indirizzi IP (scenario 2).

quando ciò non è possibile.

In presenza di situazioni come queste, possedere la

Solitamente questo accade quando non si dispone

password di root di un host, ma non avere accesso

dell'accesso locale ad una rete e si tenta di sferrare

ad un sistema di cui esso si fida in modo da poter

l'attacco direttamente da remoto.

lanciare un attacco direttamente da tale host, ne pre

Lo spoofing cieco è una tecnica molto complessa,

cluderà la riuscita.

nella maggior parte dei casi oggi difficilmente

Tutti i problemi sinora menzionati possono essere

sfruttabile o addirittura impossibile da portare a

bypassati intervenendo attivamente nell'attività di

termine, pertanto non verrà qui discussa (dando per

rete. Lo sniffing rimane, quindi, il fulcro principale su

scontato quindi che l'intruso si trovi in una postazione

cui poggiano due tra le sue conseguenze più dirette:

qualsiasi all'interno di una rete locale, vedi figura 1).

lo spoofing e l'hijhacking. Esse permetteranno all'intruso di risolvere problematiche come quelle precedentemente poste.

Attaccare utilizzando il protocollo TCP: lo spoofing

La produzione di sessioni d'esempio verrà praticata

Un intruso dovrà adempiere correttamente a 3 fasi

attraverso l'ausilio di Ettercap 0,6b.

ben precise per riuscire a concludere un attacco di

spoofing vedente:

Intrusa

Palchetto (on indirizzo IPlalsKkoio

Server

i^l)

1 Posizionare uno sniffer in modo d'intercettare il flusso dei dati tra l'host che intende impersonare e la vittima (avvalendosi di una qualsiasi delle tecniche discusse nella prima parte dell'articolo se necessario).

Cileni lecito

2 Attraverso un attacco DoS mettere fuori gioco

isolato dalla rete

l'host che deve essere impersonato in modo da isolarlo dal resto della rete {magari utilizzando la tecnica "ARP Poisoning" per lo scopo).

3 Avviare una connessione con la vittima Sessione di spoofing, l'intruso inizia una connessione con il server

falsificando il proprio indirizzo IP come se fosse quello del client lecito

"spoofando" l'indirizzo IP dell'host isolato dalla rete, portare avanti la connessione rispondendo correttamente ai pacchetti intercettati. Una volta

inizializzato il collegamento l'intruso avrà la

possibilità di inviare i dati desiderati e far credere


alla vittima di riceverli da un host fidato. Passata questa fase iniziale, tenere in piedi una connessione non sarà molto difficile: bisognerà solamente prestare attenzione ai valori Sequence Number ed Acknowledgment Number ritornati dalla destinazione e rispondere adeguatamente. Per fare

ciò si devono conoscere profondamente le regole del gioco (che in questo caso si chiama protocollo

TCP} ed avvalersi dell'ausilio di un programma che automatizzi tutte le operazioni necessarie. Le

specifiche tecniche del TCP sono comunque consumabili all'uri

http://www.faqs.org/rfc/rfc793.txt II punto 2 è di fondamentale importanza per la riuscita dell'attacco: se l'host da impersonare non

Esempio di come l'intruso può distruggere la connessione tra IP_B ed IP C inviando un paio di pacchetti RST spoofati con j corretti valori di Acknowledgment

venisse isolato dal resto della rete, i pacchetti invia ti dalla vittima gli verrebbero recapitati anche se non sono stati da lui realmente sollecitati (non dimentichiamoci che il vero mittente è l'intruso). Di fatto l'host lecito non avendo richiesto l'inlzlallzzazione di alcuna connessione risponderà alla destina zione con un pacchetto TCP con flag RST attivo. Questo causa la distruzione della connessione in corso e vanifica di fatto l'attacco intrusivo. Con lo spoofing lo scenario 2 proposto all'inizio dell'artico lo può essere facilmente bypassato. In questo modo, se un server di cui si conosce la password garantisce l'accesso solamente ad uno specifico indirizzo IP, l'intruso avrà ugualmente la

possibilità di insinuarsi al suo interno. Dato che lo spoofing permette principalmente l'al terazione dell'indirizzo IP del mittente di un pac

chetto, esso trova applicazione in tantissimi altri ambiti: uno dei più classici è quello di causare un

DoS killando tutte le connessioni intraprese da un host {il cosiddetto "Kill Connection").

Con "Ettercap" basta semplicemente sniffare il traf

Classica Sessione di Hijacking: il client stabilisce una connessione con il server e

l'intruso si insinua successivamente nel mezzo di questo flusso.

fico che circola in rete {come già ampiamente descritto nel corso del precedente articolo) e pre mere il tasto k. Ma vediamo cosa accade, nello specifico, sfruttando questa caratteristica de! tool. Ponendo il caso che IP_A sia l'intruso, IP_B la vittima ed IP_C la desti nazione che esso prova a contattare: 1IP A posiziona uno sniffer in grado d'intercettare il flusso di dati tra IP B ed IP C ed attende che il primo tenti di stabilire una

connessione con il secondo; 2 quando il client inizia la fase di 3-way handshake con il server o successivamente a questa, IP A invia un pacchetto con flag RST attivo

Classico attacco Man In Thè Middle: l'intruso mantiene il client ed il server in un'illusione di connessione diretta, ponendosi invece al centro della comunicazione

a IPB spoofando l'indirizzo di IP C e uno ad IP C spoofando l'indirizzo di IP B. In questo modo rende

impossibile la comunicazione alla vittima

paio di campi definiti "Sequence Number" ed

causandogli di fatto la "negazione di un servizio"

"Acknowledment Number" per differenziare le

(Denial Of Service).

connessioni intraprese da parte di un host.

Pertanto la riuscita dell'attacco dipende dalla cor Il punto 2 necessita di ulteriori spiegazioni. La sem

retta manipolazione di questi valori.

plice ricezione di un pacchetto con flag RST attivo

Se l'intruso non usufruisse di uno sniffer per inter

non implica la distruzione di un collegamento.

cettarli sarebbe molto difficile indovinare queste

Il TCP utilizza (oltre che le porte e gli indirizzi IP) un

informazioni alla "cieca", vedi figura 2.


Hijacking: la base

■ Scoordinarlo durante una connessione, attendendo che entri nello stato ESTABLISHED e

L'hijacking è una tecnica che consente all'intruso di

prima che faccia altrettanto il server inviargli un

inserire dei comandi o "iniettare" dei dati in una

pacchetto con flag RST in modo da resettare la

connessione già legalmente intrapresa tra un client

sua connessione verso il client, Quindi intrapren

ed un server. Essa può anche

dere un nuovo collegamento con il server,

essere di tipo veden

te o cieco. I nostri esempi si baseranno prettamente

spoofando naturalmente l'IP del client, portando

sulla prima tipologia di attacco.

lo avanti finché desiderato. Dato che la connes

Va detto comunque che se lo spoofing cieco è molto

sione resettata è solamente quella che va dal

difficile o addirittura impossibile da portare a termine,

server verso il client e non viceversa, questo non

l'hìjacking cieco (che è un po' la congiunzione di tutte

avrà voce in capitolo sul nuovo collegamento

le tecniche sinora analizzate) lo è ancora di più.

intrapreso dall'intruso: attenderà, fino ad andare

L'attacco ha quindi luogo nel momento in cui il

in timeout, che il server comunichi di esser pron

client, ii server o entrambi passano allo stato

to a scambiare i dati con lui (e quindi di esser

ESTABLISHED. In quel preciso istante entra in scena

entrato nello stato ESTABLISHED). Ciò naturalmen

l'intruso. Per fare in modo che questo attacco vada

te non accadrà mai.

a buon fine sarà necessario utilizzare in congiunzio ne tecniche di sniffing

- per intercettare i dati che

fluiscono tra 2 host - e di spoofing - in modo da far

> Desincronizzarlo, attendendo lo stabilimento della connessione ed inviando dati al server

credere al server che sia i! client "lecito" ad inviargli i

prima che lo faccia il client stesso. Dato che l'in

pacchetti - [figura 3).

vio di ogni pacchetto causa l'alterazione dei valo ri Sequence Number e Acknowledgment Number,

Hijacking: attaccare

il client non sarà più in grado di fornire i giusti

utilizzando il protocollo TCP

parametri al server se l'intruso trasmetterà dati prima di lui.

Un classico scenario di hijacking prende il nome dì character ìnjection. In pratica l'intruso s'insinua nel mezzo di una connessione ed invia caratteri al ser

> Isolarlo dalle altre postazioni in rete attra verso un qualsiasi attacco DoS.

ver al posto del reale mittente. Il problema principale in questo caso è decidere cosa farne del client. Sarebbe possibile:

> Agire come un "Man in Thè Mìddle" (uomo nel mezzo) inserendosi tra i capi del collegamen

to e mantenendoli in un'illusione di connessione diretta (peer-to-peer), come in figura 4.

INFORMAZIONI

U

Attacco a Internet!

Il National Infrastructure Security Co-ordination Centre inglese ha rilasciato un advisory di sicurezza

L'ultima opzione è quella più proficua e meno sospetta: il client non noterà brusche interruzioni di comunicazione o grossi ritardi nello scambio dei

http://vfrW.uniras.gov.uk/vuls/2004/236929/index.htm

dati che potrebbero insospettirlo.

riguardante una grave falla nel protocollo TCP/IP che è stata

Questo tipo di attacco è particolarmente indicato per

immediatamente etichettata come critica: il "buco" era già

tutti quei servizi che consentono l'interazione testuale

noto da diverso tempo ma i suoi effetti erano stati subito

con il server (come una sessione telnet di chat).

ridimensionati perché si pensava che fosse impossibile da sfruttare praticamente. Tuttavia i calcoli del matematico Paul Watson hanno dimostrato che la falla e invece utilizzabile per nuocere concretamente. In pratica è

esempio di "character injection" in questo modo:

possibile resettare

delle connessioni TCP tramite l'utilizzo di pacchetti spoofati

Con Ettercap possiamo agilmente simulare un

Fin qui niente di nuovo in quanto attraverso lo

spoofing vedente questo era già uno scenario conosciuto. In

realtà stiamo parlando di poter resettare delle connessioni anche risiedendo su una rete diversa da quella del client e del server.

> Eseguire Ettercap nella postazione desiderata ed avviare una sessione di sniffing (come illustrato

nel corso del precedente articolo). > Da un altro PC sfruttare ia console testuale di

Come funziona in pratica il meccanismo? Si tratta di

Linux per collegarsi ad un server IRC come

inviare un pacchetto con il flag RST impostato, spoofando TIP

nell'esempio (i caratteri contrassegnati in

di uno degli host della connessione lecita e specificando un

grassetto sono i comandi che dovranno essere

numero di sequenza che rientri nella "finestra" dei possibili

digitati dall'utente):

valori accettabili (il TCP accetta tutti i numeri di sequenza pre senti all'interno di una certa "finestra" e le probabilità di tro vare, in questo modo, il giusto sequence number sono mag

$

tetnet

irc.tin.it

6667

giori di un qualsiasi altro attacco alla "cieca"). Ovviamente

Trying 62.211.69.9...

anche le porte TCP sorgente e destinazione devono essere cor

Connected to irc.tln.lt.

rettamente specificate.

Escape character

Fattore mitigante dell'attacco è comunque il fatto che oggi-

NICK

giorno sempre più router non accettano di instradare pacchetti

ìs

'*]'.

F0l3n4

II cui indirizzo IP mittente sia diverso dalla interfaccia dalla quale proviene. In questo modo i pacchetti spoofati saranno scartati a priori e non raggiungeranno mai la destinazione.

Dopo un po' dal server si otterrà una risposta

simile a questa:


:irc2.tin.it 081 F6l3n4

all'interno di messaggi cifrati asimmetricamente.

:Welcome to thè

Gli algoritmi di crittografìa asimmetrica sono quelli

Internet Relay Network F6l3n4l-ciao@x.x.x.x

che utilizzano la tecnologia chiave pubblica/chiave

:irc2.tin.it 682 F6l3n4 :Your host is irc2.tin.it,

privata. Un certificato contiene (oltre alle

running version 2.16.3p3+heap+p65v2

informazioni dell'ente che lo ha generato) una :irc2.tin.itJW6 F0l3n4 :F0l3n4 MODE F9l3n4

chiave pubblica che una volta estrapolata consente

:End of MOTO coiwnand.

al client di cifrare i messaggi SSL scambiati

:+i

inizialmente e mirati a negoziare le session key. A questo punto sarebbe possibile dialogare con il

Solamente il server è in grado di decifrare questi

server in modo da joinare un canale desiderato,

messaggi; nemmeno il client stesso una volta

inviare un messaggio in query a qualcuno etc...

cifrati è in grado di riportarli in una forma leggibile. Ciò è dovuto alla corrispondenza biunivoca che

> Dalla console di Ettercap selezionare la

esiste tra chiave pubblica e chiave privata (la

connessione che si riferisce alla sessione avviata

prima in pratica non può essere utilizzata per

dal client con il server IRC e premere invio. A

risalire in qualche modo alla seconda dalla quale

questo punto premendo sul tasto i

comunque è stata generata). Semplicemente

(abbreviazione di injection) appare una maschera

sniffando traffico di rete inerente sessioni SSL un

in cui è possibile digitare i caratteri che verranno

intruso non sarebbe in grado di risalirne al

iniettati nel flusso della connessione sniffata,

contenuto per via di questo motivo. Non

attraverso l'ulteriore pressione del tasto Invio

possedendo la chiave privata del server l'unica

(vedi figura 5). Digitare, per esempio, la breve

cosa che è possibile fare consiste nell'inviare un

frase "Ciao Amico!".

proprio certificato ad IP B facendolo sembrare proveniente da IP C attraverso la tecnica dello

> Nella console testuale del client apparirà ora il

spoofing. In questo modo la vittima cifrerà i dati

testo iniettato con Ettercap.

inerenti la negoziazione delle session key da inviare al server con la chiave pubblica di IPA, il

> E' possibile ritornare ad osservare la lista delle

quale sarà in grado di decifrarli e dopo averne

connessioni sniffate con Ettercap premendo il

osservato il contenuto cifrarli nuovamente con la

tasto q. L'ulteriore pressione di questo tasto ci

chiave pubblica di IP C (nel punto 1 infatti IP A

riporterà nel menu iniziale del programma.

aveva accettato il certificato del server per conoscerne proprio la chiave pubblica) e

Se non si dispone di 2 PC è comunque possibile simulare

trasmettere così il tutto a IP C.

l'attacco su un'unica postazione, come nelle figure 5 e 5/1. L'intervento attivo nel flusso dei dati scambiati

tra due host non è fine solamente all'invio di caratteri testuali.

Lo scenario si fa più interessante se si pensa che è possibile intervenire su "oggetti" importanti come i "certificati"

nelle

connessioni

cifrate.

S •

Effettivamente l'hijacking è la soluzione più logica

tlifUr

InforMCien.

7 - J«w» C«Aligur«i»B.

allo scenario 1 reso noto nell'introduzione di questo articolo: come fare ad intercettare informazioni in chiaro testo anche in presenza di protocolli come SSL?

Chi si è "divertito" con Ettercap si sarà certamente accorto che usufruendo dello sniffing tramite ARP

Poisoning possono essere ottenuti, durante il corso

J

di una sessione crittografata, informazioni come

Ettercap permette di iniettare caratteri in una connessione digitandoli direttamente da una mascherina

username/password, header o codice html diretta mente in chiaro testo. Come può essere raggiunto questo scopo? Ponendo

come al solito, il caso che IP A sia l'intruso, IP_B la vittima ed IP C il server SSL che esso contatta:

Inon appena IP B prova a stabilire un

collegamento SSL con IP C, IPAsi frappone tra i due ed invia ad IP B un certificato falso da lui generato. Contemporaneamente IPA accetta il certificato che gli viene inviato da IP C come se fosse il client lecito.

ltc2 tin

72

rO13n4

ire]

«.„

72

F013M

rlrc2

ti»

72

roi Sul

:lic2

72

DI Sol

ilici

72

roi

72

DI

qualslttl Clpo esse Slatto.

-

ilrci

ti»

"

-

da Te lecco Italia Het. impedire o

:

TI» si riserva U diritto di

lialtaze l'ascesso a tpialsiasl

meste o

TI. ~ .«.«- .1» «,«=!.= „„.„«. 0 ««■»„.

:ltc2

lire;

7< rotini

;ltc2

:rO13 14 R

rOlSni

End ot BOTO connand.

:*1

mie

2 All'inizio di una sessione SSL le cosiddette session key (quelle che successivamente

consentiranno la codifica/decodifica dei dati utente che andranno scambiati) vengono immagazzinate

Il testo "Ciao Amico!" è stato correttamente iniettato tramite Ettercap

nel flusso della connessione del client


311 punto 2 ha lo scopo principale di catturare le session key che saranno utilizzate per

cifrare/decifrare i dati utente veri e proprì. Una sarà in pratica, la chiave attraverso la quale i! client

codificherà i dati mentre il server li decodificherà, con l'altra invece il client decodificherà i dati ed il server li codificherà (non a caso le session key prendono il nome di write session key e read session key. Ottenute entrambe, niente e nessuno

potrà più evitare all'intruso di consultare in chiaro testo i dati scambiati da IP B ed IP_C. Ettercap attiva le caratteristiche racchiuse nei punti 1, 2 e 3 automaticamente (se compilato con il supporto SSL) quando si usufruisce della tecnica dell'ARP

Esempio di connessioni HTTPS sniffate in chiaro testo: abbiamo username e password.

Poisoning per fare sniffing.

Il file di certificato che utilizza può essere trovato in /usr/local/share/ettercap/etter.ssl.crt, tuttavia uno nuovo può essere generato digitando da shell il comando ettercap -w.

Questo modo d'agire causa un problema che l'occhio

attento dovrebbe sempre esser pronto a rilevare

Ciientag

Intruso

Server ONS

che è spesso sentore di qualcosa di anomalo. Quando un client riceve un certificato solitamente fa 3 tipi di controlli su di esso:

risposto spoofola IP=«.««jt fl

> si assicura che sia inerente al sito contattato

confrontando l'FQDN contenuto al suo interno (nome host+dominio) con quello richiesto; > controlla la sua data di emissione e la sua durata per accertarsi che non sia scaduto; > controlla che sia firmato da una certifìcation II client invia una query al server DNS per

ottenere l'indirizzo IP di microsoft.com. L'intruso intercetta la richiesta e replica

authority fidata confrontandone la firma con quelle contenute nel database del proprio browser.

specificando nella risposta l'IP desiderato al

quale il client successivamente si connetterà

La falsificazione dei primi due punti non comporta

particolari difficoltà. Il check del terzo punto, fallirà invece miseramente, se il certificato non sarà firmato dalla reale certification authority per la quale l'in truso vuole spacciarsi (il che è assolutamente pro au.ty

[avii.qbcv.iwc!

babile). Il fallimento di un controllo dovrebbe essere

'

un grave campanello d'allarme. e)

1

(Oil)

IDI

Oiclll

w.qksc-.-.retì

1

(OH)

Iti

Oitrlll

t]

->

Purtroppo a tutt'oggi attacchi di questo tipo possono

andare facilmente in porto a causa delia poca com

|Ì1I.)1.JO9.I)3 lf!).O.73i l.!B]

(0.11

[mnr.qlsrv.r

petenza in ambito sicurezza degli utenti.

Oltre a questo c'è da considerare che moltissimi siti (talvolta anche alcuni molto conosciuti) utilizzano certificati "fatti in casa" magari attraverso tool come OpenSSL (vAvw.0pen5sl.org) il che rende familiare alla vista il fallimento di almeno un check per un certificato.

■11"!

Differenza tra spoofing t]

|B1.2!.!!. IH]

e hijacking La differenza tra spoofing e hijacking potrebbe sem brare meno sottile di quella che in realtà è.

Ettercap permette di sniffare il traffico DNS: in base a quanto contenuto nel file etter.dns alterare le risposte a determinate query,

si intende creare una connessione ex novo con una

grazie al plugin "phantom"

destinazione. Viceversa l'hijacking si applica su

Lo spoofing viene utilizzato principalmente quando

connessioni già in corso. Tuttavìa quest'ultima


^ tecnica si avvale della prima per operare corretta

La riga 1 indica che se Ettercap dovesse sniffare dal

mente ed entrambi si avvalgono dell'aiuto dello

flusso di dati intercettati una query DNS per il dominio

sniffing per portare a termine il proprio lavoro.

microsoft.com, esso dovrebbe rispondere al client

Comunque il raggiungimento di uno scopo non

{spoofando l'indirizzo !P del server DNS al quale la

sempre si ottiene con l'ausilio di tecniche "oscure".

richiesta era stata inviata) che l'indirizzo IP da puntare

Spesso intere sessioni TCP possono essere intercettate

è

con maggiore semplicità alterando un singolo data-

www.linux.org). Come si nota dalla riga 2, è possibile

gramma UDP.

utilizzare anche il carattere speciale * che ha il

Spoofing e Hijacking: un attacco utilizzando il

198.182.196.56 (di fatto

l'indirizzo

IP di

significato di "tutti" (nell'esempio specifico, tutti gli

hostname

che

terminano

con

dominio

microsoft.com). Il file etter.dns può essere

protocollo UDP

aggiornato a piacimento, rispettando il solito formato

Se a livello del trasporto delle informazioni l'intera

Questo tipo d'attacco è molto pericoloso, se si

infrastruttura di internet si basa sui router, la

considera il fatto che l'intruso può redirigere il flusso

reperibilità degli host è, invece, resa possibile grazie

di comunicazione di un client verso un server sotto

ai DNS.

il suo controllo.

Nella maggior parte dei casi prima di stabilire una

In tal modo esso non avrebbe più bisogno di operare

connessione, un client contatta il proprio server

all'interno della rete della vittima ma potrebbe

DNS richiedendo la conversione dell'FQDN di una

raggiungere i suoi scopi semplicemente facendo il

destinazione ad indirizzo IP. Ottenuta questa risposta

bello e cattivo tempo all'interno di una postazione

esso può cominciare ad inizializzare una connessione

"sicura" da lui gestita.

indirizzoIP hostname/[*].dominio/[*1.

con il server desiderato.

Il "sicura" sta ad indicare che. di fatto, ogni tecnica

Tali query DNS generano solitamente, traffico di tipo

sfruttata all'interno di una rete amministrata da

UDP per questioni di ottimizzazione dei tempi di

persone che non si conoscono genera un minimo di

collegamento (di fatto con questo protocollo non è

traffico anomalo, che potrebbe portare alla scoperta

prevista alcuna fase di 3-way handshake preventiva

delle attività dell'intruso. Su una macchina propria

il che fa diminuire i tempi di risposta, ma aumentare

invece questo rischio non esiste, vedi figura 8.

il rischio che le richieste o le repliche stesse non giungano mai a destinazione). Un intruso potrebbe

Considerazioni finali

sniffare questo tipo di traffico e rispondere alle

A meno che un intruso non risieda in un gateway o

query del mittente prima che lo faccia il server DNS

in un punto in cui è libero di osservare tutto il traffico

lecito. In questo modo sarebbe in grado di redirigere

di una rete, esso avrà bisogno dell'ARP Poisoning (in

la vittima verso qualsiasi altro host esso desideri.

ambienti switchati o anche in presenza di hub) per

Questa tecnica trova applicazione pratica in ogni

effettuare sniffing e attaccare attivamente con

servizio (telnet. ssh. smtp, pop3), ma senza dubbio

tecniche di spoofing e hijacking.

da il meglio di sé affiancata al protocollo HTTP (vedi

Il percorso logico da seguire quindi per combattere

figura 7). Con Ettercap questo attacco può essere

queste due "piaghe" consiste nell'evitare che un

dimostrato utilizzando il plugin phantom dopo aver

intruso possa portare a termine attacchi di sniffing.

avviato una classica sessione di sniffing.

Essendo che questo (come già ampiamente discus

Nella directory /usr/local/share/ettercap/ è

so) si avvale dell'ARP Poisoning per operare corret

presente il file etter.dns. Da lì il tool prende le

tamente, se ne deduce che riuscendo a rendere

informazioni necessarìe per capire quali risposte a

nulla tale tecnica (in un modo o nell'altro), la riusci

richieste DNS devono essere propositamente alterate.

ta di tutti gli altri attacchi verrebbe compromessa.

Il file è formato al suo interno da righe del tipo:

Oltre alle soluzioni "attive" (che richiedono cioè la variazione di componenti hardware o configurazioni

1)

198.182.196.56

inicrosofT.com

2)

198.182.196.56

-.nicrosoft.com

software) menzionate nella prima parte dell'articolo, un ottimo metodo di prevenzione consiste ne! controllo "passivo" del traffico "strano".

WEBOGRAFIA

Riferimenti wen Sito di Ettercap ht tp://ettercap.sou rcefo rge.net RPM per Ettercap

http : //npm. pbone. net DEB per Ettercap

http://packages.debian.o rg/unstable/net/ettercap Specifiche tecniche del TCP http://www.faqs.org/rfc/rfc793.txt Sito di OpenSSL

http: / A>ww. openssl. org Sito dove reperire Arpwatch http://www-nrg.ee.lbl.gov/nrg.html

Ettercap stesso da la possibilità di utilizzare un

semplice plugin chiamato arpcop che segnala la presenza di richieste o repliche ARP "anomale"

(sentore di possibili attacchi di ARP Poisoning). Il top del monitoraggio da questo punto di vista viene assicurato da arpwatch. Questo ottimo tool reperibile all'uri http://www-nrg.ee.lbl.gov/nrg.html si occupa esclusivamente d'intercettare traffico di tipo ARP e segnalare l'ingresso in rete di nuovi host

o possibili anomalie (come appunto le variazioni d'indirizzi MAC).

Cominciare a proteggersi già a livello dei protocolli è un ottimo punto di partenza per assicurare la sicurezza a tutta l'infrastruttura di rete.


Sicurezza: Intrusion Detection System Prevenire è meglio che curare...ed il detto non sbaglili. Vediamo come applicare questa regola nel campo della sicurezza informatica cercan

do di intercettare sul nascere eventuali attacchi o intrusioni... Marco Ortisi <m.ortisi@1inuxpratico.com>

Andrea Desantis <a.de5anti5@linuxpratico.com>

Nel corso delle precedenti pagine abbiamo

già ampiamente trattato le principali tecni che offensive che possono essere utilizzare per ottenere importanti informazioni su un host o

ce avverte l'amministratore del pericolo e logga i

addirittura comprometterlo. Stiamo parlando di

dati relativi alla specifica connessione 0 trans

scanning, sniffing. spoofing e hijacking. E' venuto il

azione in appositi file, di modo che possano

momento di fare un break e spostare il baricentro

essere analizzati in seguito.

della discussione dalla parte opposta, vale a dire

SNOBT

quella difensiva. Oggi introdurremo ai cosiddetti ID5 {Intrusion

II tool IDS OpenSource più rinomato in ambiente

Detection System), sistemi capaci di allertare l'am

Linux è Snort. All'interno del sito del progetto è pos

ministratore di una rete quando si subisce un attac

sibile scaricare i sorgenti in formato tar.gz 0 con

co intrusivo (in talune circostanze confermando se

sultare l'esplicativa documentazione all'indirizzo

lo stesso è andato a buon fine 0 meno) o quando

http://www.snort.org/docs/

nella propria rete circola traffico sporco quale

Per l'installazione è possibile consultare l'apposito

potrebbe essere quello generato da un trojan, da un

riquadro nelle prossime pagine.

worm o da un virus (0 magari dallo stesso intruso).

Snort in realtà non agisce solo come un classico

Tutto naturalmente dipende da come l'IDS viene

ID5, bensì viene distribuito con 3 modalità native:

configurato, ma questi sono dettagli cui daremo

■ Modalità Packet Sniffer: consente di

rilievo più avanti. Gli IDS svolgono un ruolo diverso

da altri apparati difensivi come i firewall.

visualizzare a video tutti i pacchetti sniffati in

La principale differenza consiste nel fatto che men

rete. Agisce praticamente come un classico

tre i firewall vengono utilizzati per bloccare o con

network sniffer;

;■ Modalità Packet Logger: agisce allo stesso

sentire il transito di un certo tipo, basandosi sulle informazioni contenute all'interno degli header dei

modo della modalità sniffer con l'eccezione che

protocolli di rete (ad esempio IP) e di trasporto (ad

tutto viene loggato su disco;

esempio TCP), un IDS può arrivare ad ispezionare

■ Modalità Intrusion Detection: consente di

anche i dati che un pacchetto trasporta (detti anche

analizzare il traffico circolante in rete alla ricerca

paytoad) prima di decidere se allertare o meno

di attacchi e sessioni pericolose.

l'amministratore. In definitiva possiamo dire che il primo funge da gestore del traffico di rete, bloccan dolo o facendolo transitare, il secondo invece da

controlfore dello stesso, avvertendo quando qualco sa di anomalo viene rilevato.

Come già detto, lo scopo principale di un IDS consi ste nell'awisare l'amministratore del verificarsi di

>— I.—,

NOTE: .

eventi importanti (come un tentativo di scansione,

l'infezione di un PC in rete, eco). Ciò è possibile

.

...

..

-_-

...

grazie agli alert. Questi non sono altro che dei mes saggi visualizzabili su console o memorizzabili su file di testo che descrivono in sintesi l'anomalia rile vata. Lo scopo e l'importanza di un alert non è,

!

(*■*«• Tlj ibi RL I fi

1

_fli • I.BI

._j

■Eli»! wii ■' ™- '

" ' ■

per un'ulteriore consultazione, in appositi file di log. essere svincolata da quella di alert (un IDS può cioè essere configurato in modo da loggare tutte le ano

malie rilevate senza prima avvisare). Un alert inve

- X*.

-^- ■ 1

it:

-

.

UUM

'.

■-

Lr.

sto è fondamentale che i dati scambiati nella con

Tale fase viene appunto definita di togging e può

.1

jìo

però, solo quello di mettere in guardia; oltre a que nessione che io ha generato vengano conservati,

Jtum '■""

flilnia

';-;■ '■

■' -

leu

I sito ufficiale di SNORT, su cui è possibile trovare sia il pacchetto da scaricare, sia

'ampia e ben fatta documentazione, a cui far sempre riferimento


INFORMAZIONI

Installare SHORT dai sorgenti e tramite RPM Come al solito è possibile installare Snort da pacchetto RPM

Installare dai sorgenti

o da sorgente. Nel primo caso ci si può affidare ai package

Dopo aver scaricato il sorgente d'interesse decomprimerlo

forniti dalla propria distribuzione Linux o si possono utilizzare

con il seguente comando:

quelli generici scaricandoli dal sito: http://www.snort.org/d\/binaries/linux

# lar xvfz snort-x.x.x.tar.gz

Nel secondo caso I sorgenti possono essere scaricati da: http : //uhm. snort. org/dl/ In entrambi i casi comunque è necessario sapere che Snort (come la quasi totalità dei pacchetti attualmente circolanti) è soggetto a dipendenze ed ha bisogno di alcune librerie per

funzionare correttamente; in particolar modo la sua intera struttura poggia sulle librerie libpcap (winw.tcpdump.org) che dovranno necessariamente essere presenti nel sistema. Anche le pere (wnw.pcre.org) saranno fondamentali. Con esse è possibile scrivere delle regole Snort usufruendo della sintas si classica del Peri.

Installare il pacchetto precompilato Dopo aver scaricato il package RPM di interesse digitare da linea di comando:

quindi procedere con ia compilazione in questo modo:

<t

./configure

per conoscere quali opzioni sono disponibili in fase di compila zione digitare il comando ./configure

--help

# make # malte

check

# make

instali

Snort è ora installato. Effettuando una compilazione standard come quella poc'anzi mostrata, il binario snort verrà posizio

# rpm -Uvh snort-x.x.x-ixxx.rpm

Modalità Packet Snìffer

nato nella cartella /usr/local/bin a meno che non sia stata

specificando da linea di comando il parametro -l.

La modalità Packet Sniffer è utile per analizzare ai

Questa modalità è particolarmente indicata quando

volo il traffico che in quel momento sta transitando

si deve fare un'analisi completa di una determinata

in rete. Si comporta allo stesso modo di un classico

connessione o di un particolare flusso di dati. La

tool di analisi dei pacchetti (come per esempio

visualizzazione su console dei pacchetti è spesso

tcpdump) ed è utile soprattutto quando si deve fare

troppo rapida in modalità sniffer, per questo in

una breve verifica del flusso di dati attualmente

certe circostanze è utile conservare ciò che viene

transitante. In modo molto semplicistico tale moda

intercettato in appositi file di log che ne consentano

lità può essere avviata digitando da shell:

~

specificato un percorso diverso attraverso l'opzione --prefix.

la consultazione e l'analisi successiva. Questo è quello che in pratica è possibile fare con la modalità

s

snort

packet logger. Un esempio:

-v

Così facendo verrebbero stampati a video header

1

snort

-vd

-l

/var/log/snort

IP. TCP, UDP e ICMP dei pacchetti intercettati. Per visualizzare anche i dati che i pacchetti trasportano

In questo caso i file di log verranno salvati all'inter

è possibile specificare da linea di comando:

no di una gerarchla di directory in /var/log/snort.

Ponendo il caso di una connessione tra gli host #

snort

192.168.1.12 e lG.10.ie.2G, specificando l'opzio

—wd

ne -l

/var/log/snort i dati intercettati verranno

Specificando l'opzione -e è inoltre possibile visualiz

salvati all'interno di /var/log/snort talvolta in una

zare a video l'Ethernet header. Snort utilizza le

sottodirectory chiamata 192.168.1.12/ altre volte

librerie libpcap per prelevare i pacchetti dallo stack

in una sottodirectory chiamata 10.10.10.20/.

di rete; se la si conosce bene è possibile sfruttare a

Questo può essere un problema, soprattutto perché

piacimento la stessa sintassi di tcpdump specifican

porzioni di dati di una connessione possono risiede

do un filtro bpf per limitare in qualche modo il con

re in file e directory diverse, costringendo così l'am

trollo sui dati che fluiscono, soprattutto quando si è

ministratore che li analizza a continui rimandi da un

in presenza di sessioni molto ingombranti. Per

punto all'altro del disco, al fine di ricomporre finte

esempio ii seguente comando mostra come stam

rà sessione d'interesse.

pare a video gli header ed il payload dei pacchetti

Per ovviare a questo problema, potremo utilizzare il

sniffati al di fuori di quelli che arrivano o sono desti

parametro -h: a questo va specificato il range di

nati alla porta 22 (ssh) di qualsiasi host:

indirizzi allocati nella propria rete locale per far sì che il logging venga uniformato secondo un certo

#

snort

-vd

not

pori

22

standard. Per esempio, digitando da linea di comando:

Modalità Packet togger

p snort

-vd

-l /var/log/snort

-h 192.168.1.0/24

Quando si ha la necessità di salvare i pacchetti snif

fati in una gerarchla di file di log si può passare

i file di log verranno conservati in /var/log/snort

dalla modalità sniffer alla modalità Packet Legger

all'interno di sottodirectory che assumeranno

~


solamente i nomi degli indirizzi IP appartenenti alla

> EXTERNALNET che indica quale è la rete esterna.

propria rete (nel nostro specifico caso la directory si

E' possibile anche qui specificare uno o più range

chiamerà 192.168.1.12/).

di indirizzi IP. ma le funzioni di Snort verrebbero

Tutte le sessioni di esempio sin ora mostrate logga-

limitate drasticamente (a meno che non si

no su disco in modalità ASCII. E' possibile loggare i

desideri controllare solamente il traffico

pacchetti in un modo più compatto come quello

proveniente o diretto verso specifiche fonti ed ignorare tutte le altre). E' consigliabile lasciare il

binario specificando il parametro -b:

valore standard any. In questo modo Snort considererà rete estema qualsiasi cosa non

# snort -l /var/log/snort -b

rientri in ciò che è stato specificato in H0ME_NET.

I file generati potranno essere riportati ad un forma to leggibile utilizzando un qualsiasi tool che suppor

Un modo corretto di settare la variabile HOMENET

ti il formato binario di tcpdump come Ethereal,

potrebbe essere:

tcpdump o lo stesso snort attraverso il parametro - r: var HOME NET 192.168.1.6/24

# snort

-dvr nomefile.log

cosi facendo tutti gli indirizzi che vanno da Anche in questa modalità è possibile specificare un

192.168.1.0 a 192.168.1.255 verranno considerati

filtro bpf per mostrare a video solo i pacchetti che

locali. Per specificare più indirizzi IP o range è possi

interessano.

bile utilizzare la seguente sintassi:

II

successivo

esempio

mostrerà

dal

file

nomefile.log solamente il traffico relativo allo

var H0HE_NET 1192.168.1.6/24,

172.16.1.2,

16.6.1.6/8]

scambio di datagrammi UDP :

Le stesse regole vanno seguite per impostare la # snort

-dvr nomefile.log udp

variabile EXTERNALNET, nel caso in cui il valore

standard any non soddisfi le proprie esigenze. Un altro parametro importante richiamabile da linea

Proseguendo all'interno di snort.conf vengono

di comando è -P: con esso sarà possibile specificare

dichiarate altre variabili come DNS

lo snaplen dei dati, vale a dire quanti byte all'inter

SMTP SERVERS o HTTP_SERVERS, il cui scopo è quello

no del pacchetto sniffato dovranno essere stampati

di identificare le esatte postazioni in cui sono attiva

a video o salvati su log.

ti determinati servizi (DNS, SMTP, WEB, appunto).

SERVERS,

In modo standard Snort assegna a ciascuna di esse il valore contenuto in HOMENET. Il concetto di base

è molto semplice ed è ben commentato all'interno del file di configurazione di Snort: La modalità Intrusion Detection System è senza

dubbio quella più personalizzabile tra le varie sup

Configura la lista dei tuoi server.

portate. E' particolarmente indicata quando si vuole

Snort di controllare gli attacchi diretti solamente a

costantemente analizzare la qualità del traffico cir

quei sistemi che hanno un servizio attivo.

colante nella propria rete e loggare o essere avver

controllare gli attacchi basati sul protocollo HTTP se

Ciò permette a

Perché

titi da un alert quando vengono rilevati eventi rite

non si possiede un server web? Questo modo di pensare

nuti dannosi e/o pericolosi.

raigliora le prestazioni di filtraggio basate sugli

La modalità IDS, per essere avviata correttamente,

indirizzi IP.

ha bisogno di prelevare alcune informazioni utili al

può essere settata allo stesso modo di $HOME_NET

Ciascuna delle variabili qui specificate

suo funzionamento da un file standard chiamato snort.conf.

Il punto in cui questo file si trova

All'interno di snort.conf seguono quindi una sfilza

dipende dal pacchetto rpm e dalle opzioni eventual

di altre variabili. Una certamente molto importante

mente utilizzate in fase di compilazione.

è RULE PATH. Essa contiene l'esatto percorso in cui

Solitamente Snort lo ricerca nella directory corrente

si trovano i file mie di snort. Tali file contengono le

o in /etc. Alternativamente è possibile specificare

regole che lo istruiranno su come e quando segna

un percorso o un file diverso attraverso il parametro

lare un evento pericoloso (un attacco specifico ad

-e come da esempio:

un server di posta interno, un tentativo d'intrusione

# snort

cui si fosse scelto di compilare il pacchetto dai sor

dalla rete interna verso Internet, ecc). Nel caso in -e /hone/pippo/snort.conf

genti è necessario creare la directory che conterrà Analizziamo il contenuto di snort.conf per capire il

questi file con un mkdir

suo ruolo in modo più approfondito. All'inizio del file

settare la variabile RULE PATH secondo le proprie

vengono dichiarate due variabili (altre possono

esigenze.

essere create a piacimento):

Snort inoltre viene distribuito con un set di regole

-p

/path/desiderato e

divise per categoria e tipologia di servizio: sarà > HOME NET in cui vengono specificati l'indirizzo IP

necessario copiarle dalla directory rules/ del pac

o il range di indirizzi IP che serviranno a Snort

chetto sorgente decompresso, all'interno della

per capire quale è la rete locale che si sta

directory specificata nella variabile RULE PATH, per

monitorando.

far sì che tutto funzioni correttamente. Ulteriori


informazioni e dettagli sono consumabili nel para

1

snort

-vd -h

192.168.1.8/34

-e

/etc/snort.conf

grafo Rule e Signature. Verso la metà del file snort.conf vi sono delle

In questo caso il programma verrà avviato in moda

sezioni di testo utilizzate per la configurazione dei

lità console. E' possibile avviarlo anche in modalità

cosiddetti preprocessori. Questi consentono l'ag

background con l'ausilio del parametro -D:

giunta di nuove funzionalità al programma: potrem mo definirli dei veri e propri plugin

#

snort

-vd -h

192.166.1.8/34 -e

/ete/snort.conf -0

Ne esistono molti, ognuno con le sue caratteristi che, il suo scopo e le sue opzioni. La loro attivazio

Cos'i facendo l'interruzione dello stesso non potrà

ne all'interno del file di configurazione avviene

avvenire tramite la semplice pressione dei tasti

attraverso la forma:

Ctrl+C, bensì dovrà prima essere identificato il suo PID attraverso il comando ps e quindi il processo

preprocessor <nome_del_preprocessore>:

dovrà essere killato con il comando kill

<opzicni>

-9 pid.

Una maniera più sbrigativa può essere lanciare un Fare una trattazione compieta sui preprocessori

killall

richiederebbe davvero molto tempo, per questo

invierà tutti gli alert al file /var/log/messages se

-9

snort. Una volta in esecuzione, Snort

rimandiamo all'uri

da linea di comando è stato specificato il parametro

http://www.snort.org/docs/snort manual

■ s o se è stato abilitato il logging facility relativo nel

/nodel7. ritmi

file snort.conf, come mostrato precedentemente.

qui ne introdurremo in modo basilare solamente

Con il parametro -A è possibile attivare da linea di

alcuni:

comando al volo uno dei 7 alert mode disponili (con

"

cui è possibile , per esempio, specificare di allertare l'amministratore tramite console piuttosto che

> f rag2: lo scopo di questo preprocessore è quello di eseguire la deframmentazione IR Con questo

attraverso un socket UNIX o non allertarlo comple

plugin è anche possibile rilevare attacchi DoS

tamente, etc).

che usufruiscono del meccanismo di

Il dettaglio dei dati intercettati potrà sempre

deframmentazione dei pacchetti. Prende in

essere consultato nella gerarchia di file di log pre

ingresso 4 parametri. Se nessuno viene

senti all'interno delle directory contenute in

specificato Snort utilizza dei valori di default.

/var/log/snort {a meno di non specificare un altro

percorso da linea di comando). Ulteriori opzioni

> stream4: questo è uno dei preprocessori più

sono consumabili digitando da console snort

importanti e utili. Il suo scopo è quello di

■ ?.

riassemblare uno stream di dati TCP (un

pacchetto solamente, infatti, spesso non è in INFORMAZIONI

grado di contenere una sessione intera) e di analizzarne il contenuto. E' in grado di rilevare e

segnalare vari tipi di portscan e tecniche di

Non tutti sanno che...

fingerprlnt. > telnet decode: si occupa di normalizzare le stringhe contenute all'interno di sessioni Telnet o

Lo scopo di un ID5 non è solo quello di allertare l'amministra tore o loggare gli attacchi subiti. Esso può agire attivamente

FTP. Banalmente possiamo definire la

nel flusso dei dati scambiati. Per esempio nel paragrafo Rule

normalizzazione di una stringa come la

e Signature mostriamo una semplice regola che genera un

sostituzione di dati grezzi all'interno di uno stream in un formato human-readable.

> http inspect: normalizza il traffico HTTP e rileva

evento alert quando nello stream di dati scambiati tra un

host della HOME_NET ed un qualsiasi server di posta è presen te la stringa HELP. Con Snort è possìbile interrompere una connessione quando in uno stream di dati viene rilevata la

le anomalie presenti nelle comunicazioni che si

presenza di un qualcosa di anomalo. Snort può insomma

svolgono utilizzando tale protocollo.

intervenire attivamente in una sessione di rete. Questa carat

teristica si chiama Flexresp ed è ben documentata nel file

Verso la fine del file di configurazione sono presenti le opzioni di logging. E' sempre bene decommenta re la stringa output:

alert

syslog:

LOG AUTH

README.FLEXRESP presente all'interno della cartella doc/ dei sorgenti. Per attivarla bisogna specificare in fase di compila zione l'opzione - -enable- flexresp e nel sistema dovranno essere installate le librerie libnet.

LOG_ALERT per ottenere un veloce report degli alert

Vediamo un esempio pratico. Sostituiamo la regola inserita

rilevati sul file /var/log/messages.

all'interno del file smtp. rules con quest'altra:

Seguono poi

alcune dichiarazioni include simili al C. La maggior parte di queste indicano quali regole devono essere

alert

abilitate e quali no. Vi sono per esempio alcune

msg:

categorie come le backdoor. rules che non sono mantenute da tempo e pertanto vengono disabilita te di default anteponendo alla direttiva include il

tep SHOHE NET any

■> any 25

(content:

"HELP";

"Comando HELP richiesto a server SMTP";

resp:rst_all;)

In questo modo quando verrà identificata la stringa HELP in uno stream di byte scambiato con un server di posta la con nessione verrà chiusa, rst ali specifica il modo in cui que

simbolo canceiletto #. Per abilitare ciò che si desi

sto andrà fatto (in tale circostanza inviando un pacchetto di

dera basterà rimuovere il segno del canceiletto

tipo RST sia alla destinazione che al mittente).

dalla riga desiderata.

Altre opzioni sono consultanti all'uri

Una volta settato il file di configurazione secondo le

http://vww.snort.org/docs/snort manual

proprie esigenze è l'ora di avviare Snort in modalità

/nodel6.httil#SEaiONOO373OOOO0OOSflOOOOOO

Intrusion Detector.

~


o

1j( Fìle necessari al funzionamento di SHORT File

Percorso

Descrizione

snort.conf

/et e/

file di configurazione di Snort

*.rules

/var/snort/

file che racchiudono le regole di Snort.

classification.config

/etc/

File identificativo per la classificazione degli attacchi. Sezione dasstype http://iftvw.snort.org/docs/snort manual/nodel3.htrnl

reference.config

/etc/

File utilizzato per referenziare un particolare tipo di attacco. Sezione reference http://vww.snort.org/docs/snort manual/nodGl3.html

unicode.np

/var/snort/

File map unicode di 115. Utile al corretto funzionamento del preprocessore httpinspect. Ulteriori informazioni possono

essere reperite all'uri http://vwrf.snort.org/docs/snort manual/nodel7.html

Un IDS per amico:

alert

modalità di funzionamento

generiche

tep

192.168.l.fl/24 any

-> any

135

L'insieme delle parole chiave che Snort mette a dis posizione può essere considerato un mini linguag

La presenza di un firewall non preclude quella di

un

gio di programmazione a tutti gli effetti, data la

ID5. Gli apparati possono coesistere nello stesso

vastità dei termini utilizzabili.

ambiente, anzi l'uno va a completare l'altro.

Basti pensare che l'argomento ha riempito libri inte

Poniamo il caso di avere un Web server protetto da

ri, come Snort 2.1 Intrusion Detection, Second

firewall. L'unica porta raggiungibile dall'esterno

Edition (Syngress).

sarà la 80. Un firewall garantisce sì un alto livello di

Anche questa volta introdurremo ì concetti basilari

protezione, ma è limitato ad un certo tipo di analisi

della questione. Esiste un intero capitolo della docu

(a livello dello strato di rete e di trasporto); in que

mentazione che tratta di questi temi; è consumabile

sto specifico caso uno script PHP, una CGI o lo stes

all'indirizzo:

so Apache potrebbero essere vulnerabili ad un par

http://www.snort.org/docs/snort_manual/node9.html

ticolare attacco. Lo scenario classico potrebbe

Qui ci fecalizzeremo sulle parole chiave di base.

essere quello di un tentativo d'intrusione mirato al

Una regola è formata principalmente da una parola

server web con i! firewall che permetterà il transito

iniziale che indica l'azione (alert = avverti e logga,

di tali dati pericolosi. Il massimo che si potrà infatti

log = logga solamente, pass = ignora il pacchetto.

fare con un firewall sarà quello di bloccare o abilita

adivate e dynamic) seguita dal protocollo (udp,

re l'accesso da e verso la porta 80, invece in questo

tep, etc), una coppia socket (indirizzo:porta

caso un IDS, se presente, potrebbe segnalare il ten

sorgente, indìrizzo:porta

tativo d'intrusione all'amministratore attraverso

operatore direzionale.

l'ausilio delle signature che possiamo restrittiva

Per esempio la regola precedentemente mostrata

mente definire come dei termini ben conosciuti (uti

generava un alert ogni qual volta un host apparte

destinazione) ed un

lizzati da un particolare virus o worm o da uno spe

nente alla rete 192.168.1.0/24 contattava un qual-

cifico tool) che possono trovarsi all'interno del

siasi altro host (direttiva any) sulla porta tep 135. La

payload di un pacchetto, identificando (possibil

regola può essere semplificata con opportune varia

mente in modo univoco) il tipo di attacco ed il

bili in questo modo:

rischio correlato. Questo è in parole povere il mec

canismo utilizzato da Snort: mantenere un'insieme

alert tep SHOME NET any ■> SEXTERNALNET 135

di file rule in cui poter specificare quali signature o caratteristiche di un pacchetto controllare.

Rule e Signatore Un'ottima abitudine è quella di mantenere aggiorna

In quest'ultimo caso la regola è più leggibile, ma il risultato finale non cambia. Oltre all'operatore direzionale -> che indica il senso del flusso dei dati, può essere specificato l'operato

to il database delle regole di Snort, magari usando

re <>. In tal caso il flusso sarà bidirezionale.

quelle che gli esperti distribuiscono gratuitamente in

Vediamo una regola un po' più complessa:

rete. Un buon punto d'inizio potrebbe essere con

trollare costantemente il sito:

http://www.snort.org/dl/rules/ Alternativamente se si hanno le idee ben chiare è

alert tep sEXTERNAL NET any (contenti

-> 192.168.1.15 21

"USER roof; msg: accesso ftp

"Tentativo dì

come utente root";)

possibile scriversi le proprie regole utilizzando le parole chiave che Snort mette a disposizione...

In questo caso l'alert Tentativo di accesso ftp come

Ma che forma sintattica ha, praticamente, una rego

utente root verrà generato se sarà trovata la frase

la? Un primo semplice esempio potrebbe essere

USER root all'interno dello stream di dati scambiato

una stringa del tipo:

tra un IP della rete esterna ed il server FTP interno 192.168.1.15. Questo è molto utile quando si


intende tenere traccia dei tentativi fatti da chi

alert tcp !$H0ME NET -> 192.168.1.6/24 111 (content:

cerca di collegarsi come utente root verso un

"|SQ 81 56 a5|"; msg:

"accesso mountd dall'esterno";)

proprio servizio FTP.

Dentro la direttiva content possono essere specifi

L'operatore ' in questo caso indica tutti gli indirizzi

cati valori Dinari oltre che ascii (o un mix di entram

IP diversi da SHOME_NET.

bi) racchiudendo i dati tra 2 pipe:

Per fare un esempio pratico e constatare gli effetti che un alert può generare, aggiungiamo all'interno

del file smtp. rules (presente nella directory specifi cata nella variabile SRULEPATH) la seguente regola: alert tcp SHOMENET any

j [rootScOresecurity rrooc] # teinet 192.16S.0.45 2S Trying

220

-> any 25

[content: "HELP";

"Comando HELP richiesto a server SMTP";)

192.168.0.45...

Contiecced to Escape

msg:

192.168.0.45.

character

ìs

Quindi dopo aver configurato correttamente

'"■]'.

——:~ r~.

snort,conf e dopo averlo avviato in modalità IDS

ESHTP

aprire un'altra console (sempre sullo stesso siste ma) e digitare il comando:

Inizia il collegamento, via Teinet, ai server * tail -f /var/log/messages

SMTP della nostra rete

Da un qualsiasi altro client interno (o dalla box ID5 [rootBcOresecuncy root] # teinet 192 .168. 0 .15 25 Trying

stessa) digitare {figura 2):

192.168.0.45...

Connected co

192 .166.0. -J5.

Escape character

ìa

teinet

'*]'.

HELP

214 cpnail

h«ne page:

IP server di posta qualsiasi 2S

A connessione stabilita digitare HELP (figura 3) e

http://pobox.com/-d3b/qmail.htral

premere Invio. A questo punto nella console aperta

inizialmente verrà visualizzato a video Comando

Digitiamo il comando HELP per richiedere

HELP richiesto a server SMTP. Avrete così beccato

l'aiuto in linea del server

un provetto hacker, all'interno della vostra rete, che

non ricorda bene i comandi SMTP (figura 4). Non dimentichiamoci che un ID5 può ispezionare un pacchetto sin già allo strato di rete (generando

winiuraaiii ■!.

15 05:0

-.1 ■

Jul

-1

1:

■-.

II

0?:0

"

1!

ili ec

CF)

9C

15

(

09:0

Sii. .18.0.1

[11

«rt:

111

:

(spp_3Cre«pJ)

?o= 3 iole

-

I9pp

rei iicle

13PP .tcMMI

Un esempio chiarificatore potrebbe essere:

SJ CHCUdt

9

:• =

[11

7j

9

,■:

[111 iJil

90 .110.1»». j

ipf

i:rniM]

StMfllM]

re, ut

alert

Po' ;.;,.- BITMIISHHI! >

[111

«securlt

:;]

quindi alert anche senza analizzarne il contenuto).

.

Ili

■cp) ■ ■:■ enon

.

II*

15 G9:0

Jul

.._

:.-

ItD

ari:

resecunt

-:

BiÙU

(6:6(121

orti

[NO

is;.

I

X

anànd? HELP richl*

S+;

msg:

-> SHOMENET 445

"Tentativo di

trasmissione virus";)

»«*»" '■

.lio.ua.

il? CD (12277 i ->

tcp SEXTEHNAL NET any

(flags:

server

Swrr

rtrer

In questo caso verrà generato un alert quando un mittente esterno contatterà una destinazione locale

'.

-

Nei log, SNORT rileva che qualcuno ha richiesto l'help per un server SMTP

sulla porta 445 e nel pacchetto TCP sarà attivato il

flag SYN (utilizzato per inizializzare una connessio ne). Il segno + indica che l'alert viene generato

anche se oltre a! SYN è attivo un qualsiasi altro ffag. La porta 445 (altrimenti definita microsoft-ds) è uti lizzata per trasportare il protocollo CIFS (o SMB)

INFORMAZIONI

Webografia

direttamente da TCP/IP senza l'ausilio di layer e

strati intermedi, al contrario di come avveniva su sistemi precedenti a Windows 2000 attraverso la porta 139.

Sito principale di Snort:

http://wrtw.snort.org

Snort download:

http://vAw.snort.org/dl/

Documentazione di Snort:

http://www.snort.org/docs/

Conclusione Snort in definitiva è un ottimo strumento pro-sicurezza che va a completare i tipi di controllo che pos

Snort FAQ: http://WrtW.snort.org/docs/FAO.txt

sono essere espletati in una rete. Che sia un tool OpenSource poi va totalmente a favore dell'integra-

I Preprocessori di Snort: http://vjvw.snort.org/docs/snort manual/nodel7.html

Documentazione regole snort: http://www.snort.org/docs/snort_manual/node9.html Snort Rules:

http://www.snort.org/dl/rules/

Librerie Libpcap:

http://www.tcpdump.org

Librerie Libnet:

http://libnet.sourceforge.net

Librerie Pere:

http://www.pcre.org

zione con altri strumenti orbitanti nella stessa cate

goria. Una soluzione completa potrebbe essere, per esempio, quella di installarlo all'interno di una box Linux adibita a firewall. Questi ed altri concetti avanzati verranno discussi nelle pagine successive.

~


IPTables in pratica: massima protezione! impariamo ad utilizzare iptables per creare regole di firewalìing funzionali e veramente utili per la proiezione della nostra rete

Marco Ortisi <m.ortisi@Unuxpratico.com> e Antìrea DeSantis <a.desantis@linijxpratico.com>

La prerogativa principale di un firewall è senza ombra di dubbio quella di proteggere il pro prio PC o la propria rete da attacchi o traffico

indesiderato. E', insomma, lo strumento difensivo

Prima di proseguire introduciamo alcuni concetti

più in prima linea tra tutti quelli che è possibile

base di iptables. Il comando:

schierare a favore della propria sicurezza. A causa

di questa sua caratteristica è certamente il sistema

#

iptables

-L

che merita più attenzioni prima di essere reso ope

rativo. Non sempre, però, è chiaro ed immediato il

visualizza a video la tabella delle regole sino a

modo in cui configurarlo. Vediamo quindi cosa fare

quel momento inserite all'interno delle chain

quando si ha intenzione di proteggere la propria

INPUT, OUTPUT e FORWARD. Una risposta come la

postazione Linux e non si sa proprio da dove comin

seguente indica che le tabella è vuota (cioè non è

ciare a mettere le mani.

stata ancora inserita alcuna regola):

IPTables: primi rudimenti

Tabella 1

IPTables è la componente firewall standard di Linux

sin dall'introduzione dei kernel 2.4. Con esso è pos

Ctiain

sìbile trasformare la propria postazione casalinga o

target

INPUT

(polìcy ACCEPT)

prot

opt

source

destination

source

destination

source

destination

d'ufficio in un firewall di alto livello che non ha nulla da invidiare a gran parte delle soluzioni commercia

Cfiain

li più competitive oggi sul mercato. IPTables viene

Target

FORWARO

(policy ACCEPT)

prot

opt

comunemente installato di default nella maggior parte delle distribuzioni esistenti. Per determinare

Chain OUTPUT

la sua presenza nel proprio sistema è possibile digi

target

(policy

prot

ACCEPT) opt

tare da linea di comando: Alcune distribuzioni Linux in fase di post-installazio# which iptaOles

ne potrebbero aggiungere delle regole nelle varie

/soin/iptables

tabelle iptables del proprio sistema. Per evitare che gli esempi che riporteremo non funzionino cor

II comando restituisce il percorso completo in cui si

rettamente interferendo con esse è consigliabile

trova il binario dell'applicativo (/sbin/iptables in

azzerarle tutte digitando da linea di comando:

questo caso).

IPTables è basato su regole. Il suo utilizzo è quello

#

iptables

-F

classico di ogni programma che si avvii da prompt:

#

iptabtes

-F

-t

nat

per ogni regola da inserire si digita il nome del

#

ìptablei

-F

-t

mangle

comando {iptables} seguito da una serie di opzio ni, Queste determinano il comportamento del siste

Nel corso del testo si indicherà con Linux box o

ma quando viene rilevato un certo tipo di traffico

postazione Linux il sistema utilizzato per testare

che coincide con una o più regole inserite. La pagi

tutti gli esempi qui presentati, Presupporremo che

na di manuale (raan iptables) è molto esplicativa in

tale Linux box sia dotata di un'interfaccia Ethernet

tal senso, ma la troppa carne al fuoco può certa

(ethO) che la coileghi ad altri eventuali PC presenti

mente infondere più confusione che altro. Per tale

in rete e di un'interfaccia pppO che gli consenta di

motivo utilizzeremo un approccio passo-passo che

collegarsi ad Internet.

ci consentirà di capire, attraverso appropriati esem

In alcuni degli esempi che proporremo considerere

pi, come IPTables operi. Ciò ci aiuterà in seguito a

mo l'indirizzo IP 192.168.0.4 come quello assegna

configurare il nostro firewall Linux in modo efficace

to all'interfaccia ethO del PC Linux che si vuole pro

ed opportuno contro attacchi o probing di vario

teggere. Gii esempi che ne fanno uso potranno

tipo, agendo direttamente sulle varie chain e tabel

pertanto essere testati nel proprio ambiente di rete

le messe a disposizione dall'applicativo.

modificando tale indirizzo IP con quello assegnato alla Linux box personale. Buon divertimento!


^

1 firewall e le policy

programma avviato dall'utente. Quando decidiamo di impostare la policy di una o

Un firewall può essere configurato di base in due

più chain del nostro firewall ad ACCEPT dobbiamo in

distinti modi:

pratica inserire delle regole che specifichino chiara mente cosa vogliamo che venga bloccato, altrimen ti la nostra Linux box sarà raggiungibile da chiun

> consentendo l'accesso a tutto ciò che non è

que ed in qualunque forma. Il vantaggio di questo

esplicitamente negato;

approccio è certamente la sua semplicità d'utilizzo.

> negando l'accesso a tutto ciò che non è

Lo svantaggio è che un errore nella definizione delle

esplicitamente consentito.

regole o una dimenticanza potrebbero ancora

Queste modalità prendono il nome di policy. Di

consentire a certo traffico che pensavamo di

default iptables setta la policy di tutte le sue chain

aver bloccato di raggiungere la nostra Linux box

ad ACCEPT rispecchiando così in toto il comporta

liberamente.

mento descritto nel primo modello presentato. Ma

Quando decidiamo, viceversa, di impostare la policy

vediamo pregi e difetti di entrambi i tipi di policy. Nel primo caso, che è quello standard per iptables

INFORMAZIONI

{Tabella 1), la policy ACCEPT nelle chain INPUT ed

I target di IPTables

OUPUT della tabella FILTER sta ad indicare che tutto il traffico in entrata ed in uscita dalla propria Linux

Box verrà accettato. Un ping od una sessione telnet verso o dall'esterno verranno fatti passare senza alcun problema.

Ecco tutti i target che possono essere specificati nelle regole: ACCEPT: si utilizza quando si intende accettare il transito di un pacchetto.

Proviamo adesso a modificare la policy di default

DROP: si utilizza quando si intende bloccare un pacchetto.

della chain INPUT da ACCEPT a DROP

QUEUE: il pacchetto viene passato ad user-space.

(secondo

modello) digitando da linea di comando:

RETURN: iptables smette di analizzare le regole della chain corrente e salta alla successiva regola nella chain chiamante.

* iptables

-P

INPUT DROP

Un iptables

RIQUADRO 1

-L mostra lo stato della modifica

Differenze tra

appena apportata:

Chain INPUT target

DROP e REJECT

(policy DROP]

prot

■>

opt

(■■_■

destinatici

Come già visto il target di una regola determina il comporta mento assunto da iptables nella gestione di un pacchetto

Chain FORWARD Target

quando lo stesso fa match. DROP per esempio sta ad indicare

(policy ACCEPT}

prot

opt

saure?

destination

blocca, ma esiste un'ulteriore target spesso snobbato o fonte di confusione: stiamo parlando di REJECT. Talvolta è preferibi le infatti non bloccare totalmente una connessione o una

Chain OUTPUT

target

(policy ACCEPT]

prot

richiesta indesiderata bensì inviare un messaggio d'errore al

opt

source

destination

Proviamo adesso ad avviare una sessione ssh verso

mittente. Prendiamo in considerazione questo esempio:

*

iptables

#

ssh

-I

INPUT

-j

la nostra Linux box da un altro PC:

-p

iemp

REJECT

-s

192.168.6.67

- -reject-with ìcmp-host-unreachable

Questa regola specifica che tutti i pacchetti ICPM {-p iemp) pro

192.16B.0.4

venienti dal PC in rete 192.168.0.67 vengano bloccati (-j

dopo un po' verrà mostrato a video il messaggio

REJECT) inviando al mittente un messaggio d'errore ICPM

Host Unreachable (- - reject-with iemp- host -unreachable).

Digitiamo adesso dal PC 192.168.0.67: (eventualmente è ssh:

connect

to

host

possibile modificare la regola secondo i propri indirizzamenti IP):

192.168.9.4 port

22:

Connecllon

timefl

out

#

ping

192.168.8.4

PING

192.168.0.4

stare la policy della chain INPUT a DROP. Ciò causa il

From

192.168.0.4 ìcmp seq=l Destination Host Unreachable

rifiuto di tutto il traffico in entrata. I problemi

Prora Ì92.16B.0.4

Non riusciremo assolutamente a collegarci! In que

(192.168.0.41 from 192.168.9.67

sto caso abbiamo infatti detto ad iptables di impo

:

56(84)

bytes of data.

icmp_seq=l Destinatiti Host Unreachable

comunque si ripercuoteranno anche in uscita, vale a dire non avremo alcuna possibilità di dialogare con il mondo esterno:

In questo caso non otteniamo alcuna risposta, solamente il messaggio d'errore specificato nella regola di iptables. Altri parametri che possono essere passati a - - reject-with

*

ping

sono icmp-net-unreachable, icmp-host-unreachable.

«vn.qoocile.it

PING 66.182.9.99

(66.162.9.99)

56(84)

bytes of data

iemp-port-unreachable,iemp-proto-unreachable, iemp-net-proftibited o iemp-host-prohibited.

In realtà le risposte ai ping tornano indietro al

mittente, ma la tipologia di policy prescelta fa sì che queste vengano bloccate e non notificate al

Per le connessioni TCP è invece possibile utilizzare il parame tro tep- reset che causa l'invio del classico pacchetto TCP RST utilizzato appunto per distruggere le connessioni TCP.


di una o più chain del nostro fìrewall a DROP dobbia

indirizzi IP assegnati al sistema.

mo invece inserire delle regole che specifichino

Fortunatamente, con iptables è anche possibile

esplicitamente cosa vogliamo che venga fatto pas

specificare l'interfaccia d'ingresso dalla quale pro

sare, altrimenti qualsiasi connessione verrà blocca

vengono i pacchetti che desideriamo analizzare

ta. Questo approccio è certamente più difficoltoso

attraverso l'opzione -i, settando tutte le regole che

del primo perché bisogna sapere con esattezza che

vogliamo senza preoccuparci dell'indirizzo assegna

tipo di traffico deve poter transitare liberamente:

to all'interfaccia stessa.

un minimo errore nella definizione delle regole e la

Ciò è particolarmente appropriato quando si ha a

comunicazione con certi host potrebbe essere com

che fare con indirizzi assegnati dinamicamente o

promessa! Rimane il fatto comunque che questo

quando uno degli indirizzi IP della propria Linux box

tipo di policy è l'ideale per raggiungere livelli di

va cambiato in continuazione presso una specifica

btindatura elevati.

interfaccia (come quando ci colleghiamo con un

Una volta ottenuto un buon grado di preparazione

modem al nostro provider e questo ci assegna un

con iptables varrà la pena migrare le proprie rego

indirizzo IP dinamico).

le basandosi su questo tipo di policy per ogni chain

In questo modo si evita di riscrivere tutte le regote

utilizzata. Tuttavia oggi noi utilizzeremo il primo

riadeguando il vecchio fP al nuovo, il che di per se è

approccio. Rimettiamo quindi tutto come prima:

un grosso risparmio in salute! Il seguente è un esempio lampante di quanto abbia

#

iptables

-P

INPUT

mo detto:

ACCEPT

Adesso è venuto il momento di vedere che forma

»

iptables

-A

INPUT

-p

tcp

-i

ettìtì

ha una regola e che influenza può avere sul siste

■s

6/e

--dport

22

■}

DROP

ma. Digitiamo da linea di comando: Anche se l'indirizzo IP assegnato all'interfaccia ethQ * iptables

-A INPUT -p

tcp

-s 8/B

--dport 22

-j

DROP

(o qualsiasi altra desideriamo specificare) dovesse variare di volta in volta, le regole scritte in questo

Osserviamo in dettaglio le singole opzioni che la

modo continueranno ugualmente a funzionare

compongono:

senza alcuna modifica.

> l'opzione -A appende una regola in coda a quelle

presentate produce lo stesso identico risultato fina

già presenti nella chain INPUT. Nel nostro caso

le. L'utente dovrà solo scegliere quella più appro

La regola scritta in una qualsiasi delle tre forme qui

non essendoci ancora alcuna regola dichiarata

priata per lui. Questa scelta è dettata principalmen

questa sarà la prima presente nella chain INPUT:

te dal proprio ambiente di rete e dal grado di

> l'opzione -p specìfica il protocollo della regola

(cioè if tcp);

praticità che si intende ottenere.

Detto questo vale

davvero la pena constatare la solidità della regola

> l'opzione -s indica l'indirizzo IP sorgente delie regola. 0/0 significa qualsiasi IP\

prescelta. Per testarne il corretto funzionamento digitiamo da

> l'opzione --dport indica la porta di destinazione

un altro PC collegato in rete:

della regola. In questo caso viene specificato il valore 22 che corrisponde al servizio standard

tt

telnet

192.168.6.4

22

ssh;

> l'opzione -j indica il target della regola, ovvero

L'output a video rimarrà bloccato su Trying

cosa fare in caso iptables rilevi un pacchetto

192.168.0.4. . .

che coincida con le caratteristiche specificate

secondi. Se passato questo lasso di tempo la videa-

nella stessa. In questo caso DROP significa scarta

ta non mostrerà il classico prompt dei comandi, per

il pacchetto. Se ne avessimo voluto consentire

sbloccare il tutto e tornarci forzatamente basterà

l'ingresso avremmo dovuto specificare ACCEPT.

Lasciamolo così per una decina di

premere la sequenza dei tasti Ctri+C. Ciò significa che la nostra Linux box blocca correttamente qual

Questa regola non fa altro che bloccare (-j

DROP)

siasi tentativo di collegamento al suo servizio SSH

qualsiasi pacchetto TCP (-p tcp) con qualsiasi indi

effettuato da qualsiasi indirizzo IP sorgente.

rizzo IP sorgente (-s

Complimenti! Abbiamo configurato con successo

G/0) che tenti di collegarsi al

servizio SSH (--dport

22) di qualsiasi interfaccia

della nostra Linux box.

la nostra prima regola! Un migliore esempio di debug verrà comunque presentato più avanti.

Se la nostra postazione Linux disponesse invece di

Nota: quando possibile ogni volta che un'opzione

più indirizzi IP potremmo specificarne uno qualun

viene omessa, come per esempio - -sport che indi

que utilizzando l'opzione -d. La regola varierebbe

ca la porta sorgente utilizzata da un IP mittente o

quindi in questo modo:

l'opzione -d già vista in precedenza, iptables setta il corrispondente parametro a qualsiasi.

# iptables

-A INPUT -p tcp -s B/0 -d

192.168.8.4

--dport 72

-j

DROP

In tal caso verrebbero bloccate solo le sessioni SSH

Propedeuticità delle regale

avviate verso TIP locale 192.168.0.4. Questa rego

Analizziamo dalla tabella delle regole la chain INPUT

la non avrebbe quindi effetto su altri ipotetici

per vedere come il suo contenuto è cambiato a


seguito dell'inserimento della nostra prima regola:

consiste nell'utilizzo dell'opzione -A. Essa mette in

# iptables -L INPUT -n

quelle eventualmente già esistenti. Il problema può

coda (in gergo appende) la regola specificata a

essere bypassato eliminandole nel seguente modo: Chain INPUT (policy ACCEPT) target

prot

opt^

source

destination

drop

tcp

--

e.e.e.e/e

e.e.e.e/e

tt iptables -0 INPUT -p tcp

tcp dpt:22

-s 192.168.0.2 ■-dport 22 -J ACCEPT

# iptables -D INPUT -p tcp

Ogni regola inserita viene analizzata da iptables in

-s x^x^x.x --dport 22 -J ACCEPT

modo sequenziale, cioè dalla prima all'ultima. Per esempio se viene rilevato un pacchetto in ingresso

e ridigitandole:

nella nostra Linux box, iptables analizza una ad una tutte le regole contenute nella chain INPUT

# iptables -I INPUT -p tcp

esattamente nell'ordine in cui queste sono dichiara te. Quando ne viene trovata una che corrisponde

-S 192.168.0.2 --dport 22

-j

ACCEPT

-j

ACCEPT

# iptables -I INPUT -p tcp

con il pacchetto rilevato, iptables ferma la ricerca

-s x.x.x.x

--dport 22

ed esegue l'azione associata alla regola.

Da ciò si deduce che alcune regole devono essere

L'opzione -I in questo caso mette ciascuna regola

necessariamente dichiarate prima di altre, pena il

digitata in testa a quelle già presenti all'interno

loro mancato funzionamento.

della chain INPUT pur essendo stata inserita succes

Per esempio se vogliamo che 192.168.0.2 (un host

sivamente. Provando adesso a collegarci in ssh alla

della nostra rete locale ) ed x.x.x.x (TIP remoto del

nostra Linux box da uno degli host abilitati non

nostro ufficio) possano collegarsi al servizio SSH della nostra Linux box potremmo digitare:

noteremo alcun problema.

Analizziamo quindi nuovamente la tabella delle regole per la chain INPUT:

» iptables

-A INPUT -p tcp

# iptables

-A INPUT -p tcp

-s 192.168.0.2 •-dport 22

•s x.x.x.x

--dport 22

-j ACCEPT

-j

ACCEPT

Adesso proviamo a collegarci da 192.168.G.2 o dal

Chain INPUT

(policy ACCEPT)

Target

prot

opt

source

destination

ACCEPT

tcp

-

x.x.x.x

0.0.6.6/e

ACCEPT

tcp

--

192.168.6.2

6.6.6.0/0

tcp dpt:22

DROP

tcp

o.e.e.e/e

e.e.o.e/e

tcp dpt:22

tcp dpt:22

nostro ufficio alla postazione Linux in SSH digitando:

L'ordine delle regole è ora corretto. Qualsiasi tenta # ssh

192.168.6.4

tivo di connessione al servizio ssh della nostra Linux box proveniente dagli indirizzi IP x.x.x.x ed 192.168.0.2 verrà fatto passare; tutto il resto verrà

oppure:

invece bloccato. # ssh nostro ippubblico

non riusciremo a farlo! In questo caso infatti non abbiamo considerato la

propedeuticità delle regole. Vediamo cosa contiene

Bloccare le connessioni indesiderate o l'ingresso di

a questo punto della discussione la tabella delle

determinati tipi di pacchetti sarebbe una pratica

regole appositamente numerata per l'occasione:

fine a se stessa se non si avesse la possibilità di verificare chi ha fatto cosa in un determinato

# iptables

momento. Fortunatamente ed intelligentemente

-L INPUT -n

iptables è in grado di loggare tutto ciò che voglia Chain INPUT

mo con l'aggiunta di una semplice regola. Anche in

(policy ACCEPT)

questa circostanza comunque bisogna rispettarne

Target

prot

opt

source

destination

i)orop

o.G.e.e/e

e.e.o.e/e tcp dpt:22

la propedeuticità.

192.168.6.2

0.6.6.6/0 tcp dpt:22

Vale in ogni caso questo assioma fondamentale: la

x.x.x.x

0.6.8.6/8 tcp dpt:22

tcp

--

2)ACCEPTtcp

-

3)ACCEPTtcp

--

regola di LOG deve sempre precedere la regola di DROP ed il suo contenuto deve essere identico a

L'ordine delle regole è, evidentemente, sbagliato.

quest'ultima.

Infatti dato che ciascuna di esse viene analizzata

Per esempio vediamo come loggare su file tutte le

sequenzialmente, la numero 1 prevarrà su tutte le

connessioni bloccate dalla prima regola preceden

altre. In pratica, per ogni pacchetto in ingresso nella

temente digitata. Dapprima svuotiamo la tabella

nostra Linux box la prima regola verrà analizzata e,

delle regole:

corrispondendo al pacchetto, verrà eseguita; questo non permetterà agli indirizzi IP 192.168.0.2 e

# iptables

-F

x.x.x.x di collegarsi tramite ssh alla nostra posta

zione Linux perché ogni tentativo di connessione

Quindi ridigitiamo la prima regola; tra le tre forme

alla porta 22 verrà bloccato.

presentate scegliamo per adesso la seguente:

L'errore nella dichiarazione delle ultime due regole


w

#

iptables

-fi

INPUT

-p

tcp

-s

D/6

--dport

22

-j

semplicità. Per esempio nel nostro caso avremmo

DROP

potuto cambiare la direttiva da: A questo punto anteponiamo ad essa la regola di LOG:

«

--log-prefix "Connessione Bloccata:

ìptables

-I INPUT -)

LOG

-p tcp

-5 0/9

--dport

a:

22

--log-prefix "Connessione Bloccata:

" ■■log-prefìx "Connessione Bloccata porta

ssh:

"

ed analizziamo il contenuto della tabella delle rego le per capire come le stesse vanno dichiarate:

E' più semplice, così, capire a prima vista ciò che succede piuttosto che analizzare per Intero i vari

# iptables chain

-L

INPUT

campi visualizzati nel file di log.

INPUT -n

(policy ACCEPT)

Target

prot

opt

source

destination

LOG

tcp

--

e.0.6.G/O

0.0.0.0/0

■-log-prefii 0.0.0.B/B

tcp

Proteggersi da tecniche

di Scanning comuni

"Connessione Bloccata:

G.9.e.9/e tcp dpt:22

Capite le basi ed il funzionamento di iptables vediamo come dotare la nostra Linux box di un

Tutte le connessioni bloccate verranno cosi loggate

firewall software adeguatamente configurato per

all'interno del file /var/log/messages. Per esempio

proteggerci dalle continue intemperie cui siamo sot

dopo aver inserito entrambe le regole possiamo

toposti quando ci colleglliamo ad internet. Prima di

simulare una o più connessioni bloccate digitando

procedere, però, azzeriamo la tabella delle regole:

nella propria Linux box: * «

iail

-(

ìptatjles

-F

/var/log/messages

Una delle preoccupazioni principali quando si confi quindi da un PC diverso della propria postazione

gura un firewall dovrebbe essere quella di far si che i! proprio sistema sia immune ailo Scanning, cioè

Linux si dovrà digitare:

far sì che lo stesso possa rilasciare meno informa H

ssh

zioni possibili (o addirittura nessuna) a chi esegue

192.168.G.4

tale attacco. Due tra le tecniche di scanning oggi o, nel caso in cui si avesse la possibilità di simulare

maggiormente utilizzate sono il Vanilla Scanning ed

l'esempio da un host esterno alla propria rete,

il Syn Scanning. Per proteggersi da esse possiamo

potremmo digitare:

digitare da linea di comando:

*

«

ssh

proprio

ip pubblico

ìptaoles

-I

INPUT

-p tcp

-1

■s

--dport

O/e

pppfl 1:65535

--syn

-j

DROP

A questo punto nella prima consoie sarà possibile osservare le connessioni bloccate da ìptables

Osserviamo in dettaglio le opzioni ed i parametri ad

identificate dalla stringa Connessione Bloccata.

esse associati che ancora non conosciamo:

Dall'output della Tabella 2 si evince inoltre che la direttiva

-■ log-prefix specificata nella regola di

LOG influenza il contenuto del file di log. Possiamo

> l'opzione --dport indica la porta di destinazione della regola. In questo caso è stato specificato

cioè inserire una frase o un termine diverso per

un range che va da 1 a 65535. Questa notazione

ogni regola di LOG che desideriamo in modo da

sta ad indicare qualsiasi porta. L'abbiamo

poter identificare il traffico bloccato con maggiore

utilizzata per introdurre la possibilità con

TABELLA 2

I log delle connessioni registrati da IPTables Sep 16 11:06:15

localhost kernel:

Connessione Bloccata:

INspppB OUT= HAC=98:3e:84:4B:9b:ec:eB:3e:84:49:9e:91:0B:BS 5RC=x.x.x.x D5T=propno ippubblico LEN=48 T0S=9xBB PREC=9x00 TTL=128 ID=16679 DF PROTO=TCP SPT=2dB2 DPT=22 WIND0W=6S535 RES=6xee SVN URGP=6

Sep 16

11:06:18

localhost kernel:

Connessione Bloccata:

IN^pppQ OUT= MAC=O9:39:84:48:9b:ec:G9:3O:84:48:9e:91:0B:QO SRC=x.x.x.x DST=proprioìp pubblico LEN=4B TOS=0xOO PREC=BxG9 TTL=128 ID=16768 DF PROTO=TCP SPT=24B2 DPT=22 WINDDW=65535 RES=Ox00 SYN URGP=O

Sep

16 11:96:24

localhost

kernel:

Connessione Bloccata:

IN=ppp9 0UT= HAC=e9:3e:84:4e:9b:ec:ee:39:84:4e:9e:91:98:ee SRC-x.x.x.x DST=propno ip pubblico LEN=48 TOS^BxBO PREC=6x90 TTL-128 ID=17117 DF PROTO-TCP SPT=24B2 DPT=22 WIND0W=65535 RES=8x8e SYN URGP=9


iptables di specificare qualunque range di porte

flessibili. Per esempio usando la caratteristica del

desiderato purché separato dal simbolo :

connection tracking la regola antì-scannìng prece

> l'opzione - -syn indica il flag TCP che ci interessa controllare per ogni pacchetto in entrata nella

dentemente dichiarata può essere tranquillamente sostituita in:

nostra box. I pacchetti con il flag SYN attivo sono i responsabili della messa in comunicazione di

0 iptables

-I INPUT -p tcp -i ppp9 -a state

due host. Sono il cosiddetto preludio alla

-s B/6 --dport 1:65535 --state NEW -J DROP

connessione cioè la fase antecedente alla connessione vera e propria.

L'opzione -m consente l'aggiunta ad hoc di nuovi

moduli che danno la possibilità all'utente d'usufrui La regola poc'anzi digitata non fa altro che bloccare

re di caratteristiche ed opzioni addizionali al set

(-j

standard messo a disposizione da iptables. In que

DROP) qualsiasi pacchetto TCP (-p

qualsiasi indirizzo IP sorgente (-s

tcp) con

6/0) che tenti di

sto caso abbiamo abilitato il modulo state che ci

inizializzare una connessione (--syn) verso una

consente di fare controlli sullo stato del pacchetto

qualsiasi porta (--dport

intercettato.

1:65535) in ascolto presso

l'interfaccia esterna della propria Linux box

Infatti attraverso la direttiva --state

(-i

istruzioni ad iptables di bloccare (-j

pppO). In parole povere questa regola blocca

tutte le nuove connessioni in entrata!

NEW diamo DROP) tutti i

pacchetti il cui stato della connessione sia NEW, vale

E' possibile testarla anteponendo ad essa una rego

a dire tutto ciò che cerca di iniziare una connes

la di log nel seguente modo:

sione in ingresso con la nostra Linux box.

Gli effetti finali sono praticamente identici alla rego e iptables

la anti-scanning mostrata in precedenza.

-I INPUT -p tcp -i ppp9 -5 e/8 --dport 1:65535

--syn

-)

LOG

--log-prefix "Tentativo di Connessione:

"

Testiamo quindi questa nuova regola dicendo ad nmap di effettuare un Syn Scanning (-sS) di tutte le

porte (-p Quindi basterà digitare da un host esterno alla pro

1-65535) dell'host proprio_IP_pubblico

(la nostra Linux box) digitando da PC esterno:

pria rete: « nmap

-sS

-n

-p 1-65535 proprio_IP_pubblico

# telnet proprio ip pubblico 25

Dopo un po' l'output ottenuto sarà: In questo esempio abbiamo utilizzato la porta 25,

ma potremmo usufruirne di una qualsiasi nel range

Ali 65535 scanned ports on

1:65535. Dopo di che basterà analizzare il contenu

proprio IP pubblico are:

filtered"

to di /var/log/messages alla ricerca della frase Tentativo di Connessione:

Complimenti tutte le porte risultano irraggiungibili

Sep 16 12:16:15 localhost kernel:

scanning!

in ingresso se analizzate con questa tecnica di Tentativo di Connessione:

IN=ppp9 OUT»

Nota: se lo si desidera, tutti gli esempi qui mostrati

MAC°ee:3e:84:4e:9b:ec:ee:38:84:4e:9e:91:88:e8

possono essere adeguati alla propria rete locale

SRC=x.x.x.x DST=proprio_ip_pubblico LEN=48 T0S=8xGe

cambiando la direttiva delle regole da -i pppO a -i

PREC=9x88 TTL=128 ID=13188 0F PR0T0=TCP SPT=32189

ethO (o qualsiasi altra interfaccia desiderata) e

DPT=25 WIND0W=8192 RES=8x89 SYN URGP=8

sostituendo nelle sessioni nmap o telnet d'interesse

proprio IP pubblico con l'indirizzo IP locale della

Iptables oltre ad analizzare la presenza di certi valo

propria Linux box.

ri nei pacchetti intercettati (packet inspection) è in grado di memorizzare gli stati delle connessioni. In pratica grazie alla caratteristica del connection

In realtà le regole antiscanning mostrate non vanno

tracking per ogni pacchetto rilevato riesce a capire

bene per qualsiasi caso: sono insufficienti contro

in che stato si trova la relativa connessione vale a

tecniche più avanzate come il FIN Scanning o VACK

dire se il pacchetto si riferisce ad una connessione

probing. Ciò è facilmente dimostrabile avviando da

di tipo:

un PC esterno alla propria Linux box una nuova ses

sione di nmap:

> NEW: indicante un pacchetto che vuole iniziare una nuova connessione;

> INVALID: indicante un pacchetto che non è associato ad alcuna connessione esistente;

> ESTABLISHED: indicante un pacchetto che si

e nmap

-sF

-n proprioIPpubblico

PORT

STATE

22/tcp

open

SERVICE ssh

6998/tcp

open

Xll

riferisce ad una connessione già stabilita. > RELATED: indicante un pacchetto che vuole

Vengono così rilevate delle porte aperte: siamo

iniziare una nuova connessione che, però, a sua

ancora rintracciabili in rete! Questo dimostra l'inef

volta è associata con una esistente (come per

ficacia della prima regola contro altri attacchi e tec

esempio un trasferimento FTP).

niche di scansione.

Nelle prossime pagine vedremo come colmare que

Ciò ci consente di scrivere regole più dinamiche e

sta ed altre lacune della nostra Linux box.


IPTabies: sicurezza totale La configurazione di IpTables continua con la protezione da tecniche di attacco più avanzate: ecco che vi sarà la necessità di conoscere un po' più in dettaglio alcuni protocolli Marco Ortisi <m.ortisi@linuxpratico.coin> e Andrea DeSantis <a.desantis@linuxpratico.com>

Come visto nel numero precedente la prote zione da attacchi informatici diretti riguarda principalmente la capacità di configurare il

proprio firewall in modo che la propria Linux Box

Il - -state NEW della regola precedente corrisponde

non risponda, né con messaggi di errore né con mes

va di fatto all'opzione - - syn vista nelle scorse pagi

saggi dì notifica, alle richieste di un malintenzionato.

ne e tendeva a fare match con tutti i pacchetti che

Abbiamo anche avuto modo di constatare che la

avessero il flag TCP SYN attivo (nella fattispecie

regola di scanning:

della nostra regola tutti i pacchetti aventi il flag SYN attivo venivano bloccati). Utilizzando invece la

iptabl.es

-I

INPUT

-p tep

-s O/O

-i pppQ

seconda estensione --state

-m state

--dport 1:65535

--state NEW ■]

DROP

ad IPTabies di bloccare (-j

INVALID.NEW si indica

DROP) tutti i pacchetti il

cui stato della connessione sia INVALID o NEW, il che pecca nel garantire la sicurezza della nostra Linux

applicato alla nostra nuova regola e tradotto in

Box contro tecniche di scanning avanzate (FIN

parole semplici significa che:

Scanning, ACK probing, ecc.) provenienti da > con INVALID blocchiamo tutti quei pacchetti che

Internet.

Vale certamente la pena colmare questa lacuna e

non sono associati con alcuna connessione

volgere uno sguardo anche ad altri protocolli al di

esistente;

fuori del TCP. Le insidie possono celarsi ovunque!

> con NEW blocchiamo tutti quei pacchetti che tentano di inizializzare una nuova connessione.

Va detto a priori che tutte le regole antiscansione introdotte in queste pagine presuppongono che l'interfaccia di collegamento alla rete Internet

Questa regola ci fornisce contemporaneamente due

dell'utente sia pppO. Per effettuare inoltre tutti i

benefici. Il primo consiste nel fatto che la nostra

test qui presentati è consigliabile che l'utente dis

Linux Box è contemporaneamente immune a

ponga di un sistema posto all'esterno della propria

diversi tipi di scanning. Possiamo per esempio

LAN, condizione questa non strettamente necessa

avviare diversi test con nmap da un altro PC non

ria ai fini della fruizione completa delle informazioni

presente nella rete interna:

contenute in queste pagine. Tutte le regole qui pre sentate possono naturalmente essere testate nella

# nmap

-sF

-n

-p 1-65535 proprio ip pubblico

propria LAN modificandole ad hoc in base al proprio

#

rwap

-sS

-n

-p

ambiente di rete.

#

nirap

-sA

-n

-p 1-65535

Proteggersi da tecniche

1-65535

proprioip pubblico proprio

ìp pubblico

La prima scansione rileverà 65535 porte aperte. Ciò

di Scanning avanzate

accade perché il FIN Scanning si distingue dalle comuni tecniche di scansione.

Per proteggersi da tecniche di scanning avanzate

Questo output viene generato proprio quando si è

bastano davvero pochi accorgimenti. Dapprima

in presenza di un sistema che blocchi tutti i pac

svuotiamo la tabella delle regole di IPTabies per non

chetti relativi ad un attacco dì questo genere. Ciò ci

fare confusione con quelle già presenti:

fa capire che abbiamo impostato la regola giusta

#

A conclusione delle ultime due scansioni (SYN

per contrastare tale tecnica di scansione. iptabl.es

-F

Scanning ed ACK Scanning) verrà invece riportato a ...quindi digitiamo la nuova:

video il seguente messaggio: "Ali 65535 scanned portson 192.168.0.4 are: filtered".

#

iptables -s

-I

G/S

INPUT --dport

-p

tep

-i pppO

1:65535

-m state

--state INVALID,NEW

Tutte le porte risultano cioè irraggiungibili ad host -)

DROP

esterni. Non c'è che dire, un gran bel risultato! Il secondo beneficio di questa regola consiste nel

w

Anzitutto notiamo la sostituzione dell'estensione

fatto che il traffico dei dati uscenti dalla nostra

--state

Linux Box è comunque garantito senza alcuna

NEW della regola precedente con quella

attuale --state INVALID,NEW.

interruzione.

(y©


Nessuna delle connessioni che effettueremo verso

scansione dovrebbe essere "You have blocked ali of

l'esterno verranno bloccate. A dimostrazione di ciò

our probes!" indicante che tutte le porte controliate

possiamo effettuare dei tentativi di navigazione con

risultano nello stato BLOCKED.

un browser web o in modo più sbrigativo possiamo

Complimenti la nostra regola antiscansione TCP è

digitare da linea di comando:

stata impostata correttamente nel sistema!

# tel.net www.google.it 80

Filtrare il protocollo icmp

Trying 66.102.9.99...

Nonostante l'efficacia dell'ultima regola inserita

Connected to wiiw.google.com.

siamo ancora rintracciabili con un semplice ping da

Escape

un qualsiasi PC al di fuori delia nostra rete:

cHaracter

is

"*]■.

Questo ci fa capire che la connessione è davvero

# ping propriQ_ip_pubblicc

avvenuta con successo. La regola inserita non

PING

influenza quindi in alcun modo il traffico da noi

64 bytes from 192.168.0.4:

icmp_seq=l ttl=64 tirc>e=G.194 ms

generato.

64 bytes from I92.16B.0.4;

Ump_seq=2 ttl=64 time=Q.216 ms

la prova del 9: TCP

o

Scanning Test!

192.168.6.4

con

un

-e

2

(192.168.G.4)

56(84)

bytes of data

pacchetto ICMP di query come il

TimeStamp sol lec i tabi le da nmap attraverso l'opzione -PP:

Se non si dispone di un sistema esterno alla propria

^

rete per effettuare le prove di scansione con nmap

non c'è bisogno di scoraggiarsi: se Maometto non va alla montagna...la montagna va da Maometto... che tradotto in lessico informatico sta a significare "utilizziamo uno dei tanti servizi gratuiti in giro per

-L- ZJ

il web in grado dì indicarci il livello di protezione che il nostro firewall ci fornisce".

505

Per l'occasione possiamo utilizzare il servizio gratui

Horo ; -.

to di Sygate. Il sito è http://scan.sygate.com. Il test

., ■

T iL

;-

-

1 Spedai Bundtc!

più mirato che possiamo fare per raggiungere il nostro scopo è quello che nel sito viene definito

•Piar l'tllt JlfasMhB -ed pigi

come "Stealth 5can". Vengono controllate in pratica

rv.'-JI l'i-.'.r

» TQy ir» nj-irung un l prwtf» n#(w*K>. jGjitHj bt cgnntcit

tutte le porte TCP di uso più comune attraverso tec

tury

fri .-.I l-iJw.rr«,Dp ch#> n;"

f* Kfj vtT >T Sjjrtf "« V*»&pii He

niche di scansione avanzate. Puntiamo quindi il

torti

[le&Bd

browser della nostra Linux Box alla pagina:

http://scan.sygate.com/prestealthscan.html e cicchiamo sul pulsante Scan Now {Figura 1}. Al termine della scansione apparirà una tabella con tenente le specifiche delle singole porte analizzate

Pagina del sito delia Sygate riguardante il servizio di port scanning stealth. Il pulsante scan now avvia la scansione

ed il relativo stato {Figura 2). In base alla regola antiscansione TCP inserita con IPTables nel paragrafo

^

precedente, lo stato di ogni porta testata dovrebbe essere 6L0CKED. Alla fine della pagina viene riporta to in rosso l'esito del test. Quello in figura 2 è un esito positivo in quanto tutte le porte sono state identificate come BLOCKEO. Questo sta a significare che un malintenzionato non

ha possibilità di contattarle e quindi identificarci in Internet attraverso esse.

Il test di scansione Stealth, anche se di per sé molto importante, è solamente indicativo. Noi non ci accon

f

BLOCEZD

:■

FUlOEf.

:■:

!

BiOCKTO

WEB

i;ji

FCt!

1:

. : ■ ■. 7-

poche decine di porte (anche se sono state control

IDBIT

113

.■:

voghamo testarne ancora di più! In questo caso ci vieni in aiuto il test definito "TCP Scan": http://scan.sygate.con/tcpscan.html

con esso possiamo testare la rintracciabilità di tutte

Una volta aperta la pagina corretta del sito clicchiamo sul pulsante Scan Now. Al termine della scansio ne nessuna porta dovrebbe essere nello stato OPEN. Il messaggio finale [Figura 3) riportato dal test di

■ a

Estratto del

Tftbf [IflJiLt Tbl f-.11 fin Dr

i:r[ 'L>Jl

»

Fnrrs

«3

■ :

tfanp

44)

■l; :■:---

■■.; ■

BIJDCKED

:

e:

..

.:

■■

■■■

■:rr.iisj

risultato di scansione

■■■

1 ■ ■:!•■

rf:]i r.i'dl

-

' '

" r

y.n

:

T>«jcci1htì no

HdKS

le porte della nostra Linux Box comprese nel range 1-1024 (cioè dalla numero 1 alla numero 1024).

.=..-

finale del test

tentiamo di verifìcare la rintracciabilità dall'esterno di late attraverso tecniche di scansione avanzate),

7.-; --.

ree

I

Dlyiriiltii^

dragai a=T il fi (Ciir

:i

■M

rniius

"SS?

..

;:;:

-EEE-ntìEjflto

Hlttc4fd|j

«

-

_-

. -

' '

stealth. Il test ha avuto esito positivo


Questa non fa altro che

bloccare tutti quei pacchet

ti ICMP che cercano di raggiungere la nostra Linux Box senza che la loro presenza sia stata richiesta, cioè tutti quei pacchetti il cui stato sia INVALID o -'

-

. ,i;|

-

r

■■

MGD

n

uBM

NEW.

S'uni pini 33 IsSJO .■!««^ 1 --;.-;

Estratto del

Inserendo questa regola in pratica la nostra Linux

r:. M

b>!30

risultato finale

Box non risponderà più ad alcun pacchetto ICMP

-■■

ulto

del test di

non richiesto. E' possibile constatarlo tentando nuo

:

uno

-' -— ri

-

"

scansione TCP

loSSJ

Scan. Il test ha

-n:*L6j ;■ !"■ 9» »m ■ii-.

latta

vamente di pingarla da un altro PC o lanciando un

avuto esito

icmp TimeStamp da un altro host attraverso nmap.

positivo

Viceversa avremo la possibilità di generare tutto il traffico ICMP in uscita che desideriamo senza

rischiare che lo stesso venga bloccato. Anche le risposte alle richieste da noi generate o i messaggi di errore relativi ad esse verranno fatti passare da IPTables senza problemi. Come prova a dimostrazio ne di ciò è possibile pingare dalla propria Linux Box

■ Fan 1801 BIO10

un host a caso (al di fuori di se stessi) ed osservare

ip«n 1011 lo H30

l'arrivo delle risposte:

# ping www.google.it

-e

4

^

PING www.google.it

(66.192.9.99)

64 bytes from 66.102.9.99:

sos Homo

56(84)

bytes

of

data

icmp seq=l ttl=64 time=0.694 ms

64 bytes from 66.1Q2.9.99:

icmp_seq=2 ttl=64 tlme=0.416 ms

64 bytes

from 66.102.9.99:

ìcmp_seq-l ttl=64 titne-Q.394 ms

64 bytes

from 66.1G2.9.99:

icmp seq=2 ttl=64

time-0.716 ras

A questo punto della discussione la tabella delle regole per la chain di INPUT dovrebbe mostrare le seguenti entry:

Ut bori intnM Ila! J« hi.» • firmi Urti, 1TIP f

# ìptables

-L

INPUT

Chain

INPUT

[poliey ACCERTI

target

prot

opt

source

destination

DROP

icmp

--

0.8.9.8

O.e.B.G

state INVALID,NEW

O.G.0.0

tep

O.D.6,0

state

INVALID,NEW tep dpts:1:65535

Estratto del risultato finale del test di

La presenza di queste due semplici regole disturba

scansione UDP Scan. Il test ha avuto esito

così tanto l'operato della maggior parte delle tecni

positivo

che di scanning odierne che nmap si rifiuterà di pro cedere nella scansione della nostra Linux Box se non lo si forzerà con un apposito parametro. Vediamo assieme un esempio:

# nmap

Nmap

-PP

run

-n

proprio

compieteti

-■

ìp pubblico

1

IP

sddress

# nmap

(1

host

up)

scanned

in

-sS

Stamng

-n

nmap

proprio ip pubblico

3.SQ

(

http://wvAj.insccure.org/nmap/

3 seconds

aX Note:

Host

seems

down.

II vantaggio di non rispondere né ai ping né a qualsiasi altro pacchetto ICMP (al di fuori di rare ecce

zioni) è una pratica che aiuta certamente ad essere

If

it

is

blocking

Nmap

run

completed

■■

2004-G9-Q8

really our

1 IP address

up.

ping

)

14:56

CEST

but

probes,

try

-PO

(0 hosts up)

scanned

in

12.109

seconds

meno rintracciabili ed identificabili in rete.

Un'ottima regola da applicare in tal senso potrebbe

In questo modo lanciamo un Syn Scanning contro

l'indirizzo IP pubblico della nostra Linux Box ma

essere:

subito dopo pochi secondi nmap ritorna al prompt # iptables

-I

INPUT

-p

icmp -s 0/G

-i

pppO

--state

-m

dei comandi perché la postazione analizzata non

state

INVALID,NEW

-j

DROP

risponde a nessuno dei suoi tentativi di probing ini ziali (Host seems down). Questi gli servono per sta

L'unica cosa di nuovo qui è il parametro passato

bilire se si sta effettuando ia scansione di un host

all'opzione -p (vale a dire "icmp") che indica

attivo/raggiungibile o meno. Fallendo questi check

appunto a quale protocollo fa riferimento la regola.

nmap non può andare avanti con la scansione a

33


meno di forzarlo con il parametro -PO. Deduciamo

RIQUADRO 1

da ciò che è come se la nostra Linux Box fosse a tutti gli effetti invisibile alla rete Internet. Abbiamo inserito poche regole e siamo già riusciti a

far arrendere nmap. Niente male!

Scansione completa delle porte TCP

Filtrare il protocollo udp

Verificare diverse centinaia di porte è già di per se un test

Nonostante gli accorgimenti intrapresi la nostra

scansione TCP presentata in queste pagine. Tuttavia l'utente

significativo al fine di controllare l'efficacia della regola anti

Linux Box non è sufficientemente protetta da tutte

"paranoico" potrebbe non essere soddisfatto se non control

quelle tecniche che si basano sull'ottenimento di

lando tutte le porte possibili e allocabili in un sistema (dalla

importanti informazioni attraverso lo sfruttamento del protocollo UDP.

Anche se è molto improbabile che un utente casa lingo offra al mondo esterno servizi che si basino su

numero 1 alla numero 65535) o un ranye pdrtkoldre da lui

specificato. L'utente sarà molto contento di sapere che gli è possibile effettuare questi test visitando il sito:

http://vAsw.pcflank.com/scannerl.htm Una volta aperta la pagina sarà necessario cliccare sul pul

porte UDP è buona norma comunque filtrare questo

sante "Start Test" quindi su "Continue". A questo punto dopo

protocollo in ingresso. Per l'occasione possiamo uti

aver scelto la voce "TCP Syn Scanning" e cliccato su

"Continue" ci si ritroverà sulla pagina rappresentata in "figu

lizzare la seguente regola: »

iptab1.es

-I

INPUT

-p

udp

-i

-s 0/0

ra 5". Per selezionare un range di porte desiderato sarà pppG

-n

necessario selezionare la voce "Scan desidered ports and/or

state

--state INVALID.NEW -j

thè range of ports". Nella text box in basso si dovrà infine DROP

inserire il range di porte desiderato separato dal segno tratti no "-" (es. 2000-5010) e cliccare su "Continue". Adesso con

I benefici di questa regola sono i classici già ampia

fermate l'avvio della scansione ed attendete il risultato.

mente discussi nei precedenti paragrafi. Anzitutto saremo liberi di inviare pacchetti UDP dalla nostra

Linux Box verso l'esterno senza rischiare che IPTables li blocchi precludendo la nostra normale attività in rete. Nel seguente esempio dimostriamo come sia possibile dialogare con un server dns:

# nslookup hWLj.altauista.com Server:

xxx.xxx.xxx.xxx

Address:

xxx.xxx.xnn.xxx»

www.altavista.com

canonical

nane =

avatw.search.yahoo2.akadns.net. Name:

avatw.search.yahoo2.akadns.net

Address:

216.155.200.155

Allo stesso tempo si è immuni da scansioni o probing UDP come dimostrato dal successivo esempio di

sono nello stato open quando in realtà sono tutte

nmap:

chiuse, ci fa capire che la nostra regola IPTables è stata settata correttamente. Qualsiasi porta analiz

# nmap

-sU

proprio

ippubbLico

-n

-p

zata sfruttando queste tecniche verrà in pratica

10-20

indicata come aperta da nmap. Starting nmap V.

2.5-1BETA31

Interesting ports on

I

www.insecure.org/nirap/

)

(10.12.B.114):

La prova del 9: UDP

Scanning Test!

Port

State

Service

10/udp

open

unknown

11/udp

open

systat

Se non si dispone di sistemi esterni alla propria LAN

12/udp

open

unknown

è possibile testare l'efficacia della regola antiscan-

13/udp

open

daytiine

sione UDP precedentemente inserita attraverso

14/udp

open

unknown

l'UDP Scan test attivabile dal sito:

15/udp

open

unknown

http://scan.sygate.com/preudpscan.html

lG/uflp

open

unknown

Dopo aver aperto la pagina e cliccato su "Scan Now"

17/udp

open

qold

al termine del test si dovrebbe ottenere lo stesso

ie/udp

open

19/udp

open

chargen

responso finale "You have btocked ali of our probes!"

29/utlp

open

ftp-data

ci fa capire che la nostra regola antiscansione UDP

risultato visualizzato nella figura 4. Anche qui il

fa il suo lavoro con efficacia. Le tecniche di scansione o probing che si basano su

protocolio UDP differiscono nella forma e nel risulta to finale da quelle classiche TCP (un po' come acca

Creare regole meno

restrittive in entrata

deva con il FIN Scanning). L'output appena riporta to, in cui si evince che tutte le porte UDP analizzate

©5)

Dopo l'inserimento dell'ultima regola la chain INPUT

~


differenti indirizzi IP esterni "y-y-y-y" e "z.z.z.z" di

conterrà le seguenti entry:

raggiungerci con un ping. Affinchè le nuove regole *

iptables

Cftain

-L

INPUT

che intendiamo aggiungere funzionino dovremmo

INPUT

far si che le stesse risiedano nella chain INPUT

fpoliCy ACCEPT)

target

prot

DROP

udp

opt

source

destination

e.9.e. n

0 fl R e

prima della seconda della nostra tabella, altrimenti questa prevarrà su tutte le altre (il rispetto della

state

propedeuticità delle regole è stato già trattato nelle

INVALID,NEW DROP

e ,9 e .8

O.G.O. 9

icmp

pagine precedenti).

state

Per farlo sarà sufficiente digitare:

INVALID.NEW

DROP

0 e 0 .e

9-6-0. e

tcp

state

INVALIO,NEW tcp

# iptables

dpts:l:65535

-I

INPUT

-p icmp

-i

pppO

-s

y.y.y.y

--iemp-type echo-request

-j

ACCEPT

-j

ACCEPT

La dichiarazione di queste tre semplici regole, può essere considerata a tutti gli effetti come la confi

# iptables

-I

INPUT

-p

icmp

gurazione base di ogni firewall avanzato. I loro

pppO

-s

z.z.z.z

■■ìcmp-type echo-request

benefici si estendono anche all'immunità da prati

che di Fingerprint oltre che, come già visto, alle più

L'opzione --iemp-type ci da la possibilità di specifi

svariate tecniche di scanning. Per esempio l'esecu

care il tipo di pacchetto ICMP su cui si intende ope

zione del seguente comando da un altro PC:

rare. In questo caso il parametro echo-request cor risponde alla

w.

»

nmap

-0

-n

richiesta

di

ping.

Una lista di

parametri utilizzabili è consultabile digitando il

proprio ìp pubblico

comando: non fornirà alcuna informazione sul sistema operativo della nostra postazione Linux.

#

ìptables

-p

ìemp

-h

Come già detto queste semplici tre regole sono la base di qualsiasi sistema Firewall ed in quanto tali

Un'altra necessità che potrebbe sorgere sarebbe

vanno adattate alle proprie esigenze.

quella di consentire a chiunque l'accesso incondi

Potrebbe essere utile per esempio consentire a due

zionato a certi servizi residenti nella propria Linux Box. Per esempio si potrebbe voler rendere accessi

bili i servizi di posta (porta 25 e 110), il proprio ftp

RIQUADRO 2

pubblico (porta 21) ed il proprio server web (porta

80) all'esterno. In questo caso tutte le regole

Script delle regole

andranno naturalmente inserite prima della terza della nostra tabella originaria:

Ecco un piccolo script che raccoglie la maggior parte delle regole sin qui mostrate che ci consentirà di creare un firewall

#

Ìptables

-I

INPUT

-p tcp

-1

pppO

-s

efficace capace di proteggerci contro i più comuni attacchi dì

natura diretta oggi perpetragli. All'utente viene lasciato

#

ìptables

-I

INPUT

-p

tcp

-i

pppQ

-s

#

ìptables

-1

INPUT

p

Up

-i

pppG

-s

# ìptables

-I

INPUT

-p tcp

ppp8

-s 9/e

naturalmente il compito di apportare le modifiche/migliorie necessarie per adattarlo alla propria infrastnittura di rete ed

alla propria distribuzione Linux.

0/0 -dport

--dport

in5en.ner.tn del noduli di

> Le segjentt

connectiontracklng se non inclusi dal kernel.

rione vanno decoaaentate te 1 aodull non sino gli caricati nel

• sistema. Ciò può essere versificato utilu/amto il

comanda

■]

ACCEPT

80

-j

ACCEPT

-■dport

116

-)

ftCCEPT

A questo punto nella chain INPUT saranno visibili

ip cnnntrack ftp

quattro regole in più:

#

p tcp -i pppO -m slato -s 6/t

» Questa regola biotta tutto 11

■■ state INVALID,NEW -j W0P

Iralflco lene non richiesto proveniente da

• Internot e destinalo direttamente alla Llnu* Box; -p icmp

-1 pp|>a

iptables

Chain

--(Iport 1:65535

INPUT

25

tp_cnnntr»cli

iptables -I INPUT

-I

ACCEPT

"Ismod".

• Internet e destinato direttamente alii Linm Bo>:

lotables

-j

9/0

■-Ctport *

21

9/6

■■ state -s B/e -■stale

INVALID,NEW ■) DROP

-L

INPUT

INPUT

(pollcy ACCEPT]

Target

prol

ACCEPT ACCEPT

opt

source

Oestination

tcp

e.e.o.o/o

d.q.o.B/o

tco

0.0.0.0/0

B.0.S.D/O

lep dpt:80

ACCEPT

tcp

0.6.0.0/0

O.O.B.S/Q

tcp dpl:25

ACCEPT

tcp

e.e.e.e/G

o.e.e.9/0

tcp dpt:2i

tep dpt:iia

• Onesta regola blocca tutto il traffico udp non richiesto proveniente aa • Intenwt e deificato direttamente ili» Lini» Bo«:

ìptjDles -I IWUT -p udo -i pppB ■■ state -i 9/0 -state INVALID.NEW -J DROP

Possiamo comunque ottimizzare l'operato di

* Questa regola consente di rendere visibili all'esterno

iptables combinando queste quattro regole in

'

un'unica regola nel seguente modo:

ipotetici servizi

ftp,

• di posta e web installati sulla propria Lini» Boi. »

ìpiables

-I

INPUT

-p tcp

-1 appO

■ mulitport

.4 B/8

■ tìporti 21.25,89,110 .j

ACCEPT

# ìptaliles

-I

INPUT

-p tcp -1

-s S/6

ppps

-m muluport

--dports 21,25.80.11G -] ACCEPT


Il risultato finale visibile nella chain INPUT sarà:

Quest'ultima regola chiude il cerchio.

#

alla nostra postazione Linux di contattare in uscita

Ricapitolando in questo modo si da la possibilità iptables

-l

Chain INPUT Target

input

tutti i servizi TCP relativi al range di porte 1-3000 ed

(policy ACCEPT)

prot

opt

source

il servizio UDP dns.

destination

Qualsiasi tentativo di contattare qualunque altro ACCEPT

tcp

6.8.9.0/9

G.e.Q.0/0

multipari

dports

21,25,80.119

servizio verrà bloccato da IPTables. Ciò è suffi ciente nella stragrande maggioranza dei casi a garantire alla propria Linux Box una certa auto

nomia in Internet assieme ad un maggior grado L'estensione -m multiport consente di aggiungere

di protezione.

alla nostra regola il supporto multiporta attraver

Naturalmente in base alle circostanze potrebbe

so il quale possiamo specificare al massimo 15

essere necessario aggiungere o rimuovere le porte

porte separate da virgola (,) utilizzando l'opzione

relative ai servizi desiderati o stringere/allargare li

- -dports.

range di porte rese accessibili all'esterno per risol

Il risparmio in termini di prestazioni è evidente!

vere il manifestarsi di problematiche legate ad una regola troppo restrittiva. Per esempio il servizio VNC

Restrizioni in uscita

sta in ascolto sulla porta 5900 o ancora alcuni servi

Fino ad ora ci siamo preoccupati solo ed esclusiva

zi di web cache stanno in ascolto sulle porte 3128 o

mente di proteggere la nostra Linux Box bloccando

8080. Non sarebbe possibile usufruire di essi con le

o abilitando in ingresso {attraverso la chain INPUT)

regole inserite precedentemente!

il traffico che ci sembrava più o meno congruo.

potrebbe essere invece risolto allargando il range di

Il problema

Tuttavia potrebbe tornarci utile limitare il traffico in

porte contattabili in OUTPUT o aggiungendo l'abilita

uscita dalia nostra postazione abilitando per

zione alle singole porte desiderate in testa alla

esempio tutti quei protocolli e quei servizi che

chain OUTPUT.

siamo soliti utilizzare e bloccando il resto.

Inoltre le tre regole poc'anzi inserite potrebbero

La chain su cui lavorare in questo caso è OUTPUT.

causare problemi di comunicazione con altri ipotetici

Essa ci consente di prendere decisioni sui pacchetti

PC presenti nella propria rete privata. Infatti queste

che sono in uscita e che vengono generati local

regole si applicano a qualsiasi indirizzo IP assegnato

mente dalla nostra postazione Linux.

alla propria Linux Box e ciò può inficiare con la cor

Naturalmente bisogna conoscere con esattezza

retta comunicazione tra la propria postazione Linux

quali porte relative a quali servizi devono essere

ed altri PC interni.

rese accessibili in uscita pena il corretto funziona

Fortunatamente con IPTables è possibile specificare

mento di certi applicativi. Per esempio se si fa un

l'interfaccia di uscita a cui le regole vanno applicate

utilizzo "classico" di Internet il traffico in uscita

attraverso l'opzione -o.

potrebbe essere regolamentato in questo modo:

Per esempio per far si che le tre regole inserite siano applicate solo all'indirizzo IP assegnato

# iptables

-A OUTPUT

-p tcp

all'interfaccia connessa alla rete Internet e non a

s 0/6 ■■dport

1:3099

■]

ACCEPT

tutti gii indirizzi IP della propria Linux Box è possi bile digitare:

#

iptabl.es

-A

OUTPUT

-p

udp

-s

G/G

-s 9/9

■]

DROP

dport

53

•]

ACCEPT

#

# iptables

-A OUTPUT

Nel primo caso (regola 1) si indica chiaramente

ìptables

-A OUTPUT

-p

tcp

-o

pppG

s

--dport

#

iptables

-A OUTPUT

-p

udp

-o pppfl

che a qualsiasi indirizzo assegnata alla Linux Box

s

9/6 1:3999

-j

ACCEPT

■]

ACCEPT

0/0

■■dport

53

(-s 0/9) viene data la possibilità di collegarsi {■]

ACCEPT) alle porte tcp (-p

tcp) nei range che va

#

iptables

-A OUTPUT

-s

0/G

-o

pppO

-)

DROP

dalla numero 1 alla numero 3000 ( - - dport 1:3000). In questo modo si dovrebbe poter garantire la cor

In questo caso l'unica differenza tra questo set di

retta consultazione della maggior parte dei servizi

regole e quello specificato precedentemente risie

oggi esistenti, compresi quelli che gestiscono lo

de nell'interfaccia alla quale le regole stesse si

scambio di dati attraverso l'allocazione dinamica

riferiscono (-0 pppO).

delle porte {come fa il protocollo FTP).

Conclusione

Nel secondo caso (regola 2) si indica che a qualsia si indirizzo assegnato alla Linux Box <-s 0/0) viene

Che dire! ìptables è proprio uno strumento facile ed

data la possibilità di collegarsi (j ACCEPT) alla

allo stesso tempo avanzato che ci consente di confi

porta udp (-p

gurare un firewall sicuro e funzionale in pochissimo

udp) 53 (relativa al servizio dns) di

qualsiasi indirizzo di destinazione. In questo modo

tempo.

si evitano problematiche dì navigazione o consulta

Pensate che le sorprese siano finite qui? Seguiteci

zione di risorse poste in Internet

ancora nella prossime pagine e rimarrete sempre

Nel terzo caso (regola 3) viene specificato di bloc

più sbalorditi dalla sua versatilità e dalla sua

care (-j

potenza.

DROP) qualsiasi connessione verso qualsiasi

destinazione.

©te


iptables: ecco come

blindare la rete Approfondiamo l'argomento iptables: è la volta dell'impostazione di

regole per la prolezione della rete locale, filtrando il Ira/fico anche in metta e introducendo la tecnica per rendere pubblici i server interni Marco Ortisi <m.ortisi@linuxpratico.com>

Andrea DeSantis <a.desantis@Unuxpratico.con>

Nelle pagine precedenti abbiamo imparato a

conoscere i rudimenti di iptables. abbiamo visto come impostare regole capaci di pro

teggere la nostra rete da attacchi diretti quali

con lo stesso indirizzo IP pubblico di uscita e non

Scanning e Fingerprinting ed abbiamo compreso

comunicano il proprio IP privato - che comunque

come può essere gestito e regolamentato tutto il

non sarebbe direttamente raggiungibile. La comuni

traffico in uscita dalla nostra Linux Box.

cazione avviene senza sovrapposizioni nella rete

Una delle problematiche più ricorrenti, soprattutto

privata in quanto l'host che esegue la procedura di

per chi possiede una piccola rete casalinga o

NAT mantiene lo stato attivo delle connessioni in

comunque in generale diversi computer collegati in

essere, riuscendo a sapere perfettamente chi ha

LAN, è certamente la possibilità di condividere una

richiesto cosa.

singola linea di collegamento ad Internet tra più PC

iptables implementa il mascheramento con l'ausilio

e di rendere pubblico un servizio disponibile su una

di un'apposita tabella (definita appunto nat) ed uno

delle

specifico target MASQUERADE: all'interno di tale

di

macchine

posta

FTP

protette

oppure

un

(ad

web

esempio

server

o

un

server

ancora

un

server).

tabella possono essere utilizzate tre chain, ognuna per uno specifico compito:

iptables è in grado di aiutarci a risolvere questi ed altri problemi con l'ausilio di poche regole e senza la necessità di ulteriore software.

Network Address

OUTPUT: utilizzata per analizzare/alterare i pacchetti che stanno per uscire, generati localmen te dalla Linux Box;

Translation

PREROUTiNG: utilizzata per analizzare/alterare i

Vi sono due possibilità, in generale, per rendere

decisioni riguardo il loro smistamento (percorso di

possibile la navigazione ai ctient della propria LAN:

routing);

a) assegnando ad ogni PC un indirizzo IP

POSTROUTING: utilizzata per analizzare/alterare i

pacchetti in ingresso prima che vengano prese

pubblico diverso;

pacchetti che sono già pronti per essere smistati

b) condividendo lo stesso IP pubblico.

verso l'esterno.

Il primo caso è spesso impraticabile per gli utenti

I! target MASQUERADE è invece utilizzabile sola

casalinghi che possono disporre di un solo indirizzo

mente con la tabella nat nella chain POSTROUTING

IP pubblico assegnato dal provider e, in ogni caso, è

ed il suo scopo è quello di consentire il maschera

una pratica sconsigliata anche quando possibile,

mento ai client/server posti in Internet degli indirizzi

principalmente perché gestire la sicurezza di più PC

IP privati presenti nella propria LAN. Prima di prose

direttamente visibili dall'esterno è estremamente

guire ulteriormente svuotiamo il contenuto delle

più difficile che gestire un singolo punto di ingres

eventuali regole presenti nelle chain della tabella

so/uscita dei dati.

nat, per evitare che queste vadano ad interferire

La soluzione naturale al problema è, pertanto, quel

con gli esempi che proporremo:

la relativa alla condivisione di un unico IP pubblico che viene posta in essere grazie ad iptables e ad

9

iptables

-F

-t

nat

una procedura nota come NAT.

NAT è l'acronimo di Network Address Translation ed

Assumiamo ora che il range di indirizzi IP assegnati

è principalmente un meccanismo che permette agli

all'interno della

host di una rete locale di utilizzare i servizi di

192.168.0.0/24 e che la postazione Linux che funge

Internet come se fossero direttamente connessi alla

da firewall abbia 2 interfacce: pppO che acquisisce

propria rete corrisponda a

stessa, con in più la possibilità di occultare il proprio

l'indirizzo IP pubblico dal provider (una connessione

indirizzo privato.

via rnodem ADSL o analogico, ad esempio) ed ethO

Tali host, infatti, si presentano alla risorsa su

con IP 192.168.0.1 che è in diretto contatto con le

Internet, sia essa un web server o una chat, tutti

postazioni interne. Su questo PC digitiamo:


# ìptables

-A POSTROUTING

-t nat

da agire come router per la propria rete, ossia per

-s 192.168.9.0/24 -j

mettere che i pacchetti provenienti dalie varie

MASOUERADE

interfacce possano transitare attraverso la stessa. Questa regola consentirà, ai client della rete privata

Di defauit questa impostazione è disabilitata e va

che hanno impostazioni TCP/IP corrette (per esem

attivata direttamente dal filesystem /proc. Il file

pio nel nostro caso gateway d'uscita impostato a

che determina in tal senso il comportamento del

192.168.0.1. server DNS configurati in modo esatto,

sistema è /proc/sys/net/ipv4/ip

etc), di accedere ad Internet.

contenere al suo interno 2 valori:

forward e può

Accertiamo che questo sia vero: 0: disabilita questa opzione

AVerifichiamo che la Linux Box che funge da

1: attiva questa opzione

gateway/firewall/router riesca a navigare, in modo da evitare la presenza di problemi di connet-

*

tività che niente hanno a che fare con iptables.

0

cat

/proc/sys/net/ipv4/ip forward

BVerifichiamo che la regola sopra evidenziata sia stata inserita in testa alla chain POSTROUTING nella tabella nat:

# iptables

-L

POSTROUTING

Chain POSTROUTING target

prot

MASQUERADE

RIQUADRO 1

ali

-t nat

Attiva IP Forwarding

-n

al boot del sistema

(policy ACCEPTì opt

source

destination

■-

192.168.Q.9/2a

O.Q.G.e/Q

RedHat & Fedora Aprire il file /etc/sysctl.tonf ed aggiungere al suo

Nel nostro esempio è l'unica ad essere presente

interno la direttiva:

nella chain e nella tabella interessata.

net .lpv4.ip_forward

CDigitiamo il seguente comando in una shell

della Linux Box che acquisisce l'indirizzo IP pubblico:

#

tcpdump

- 1

SuSE Linux Aprile il file /etc/rc.config e specificare a! suo interno la direttiva:

-1

any

-n

port

IP FORWARD="yesM

80

Così facendo verranno intercettati e stampati a

Debian GNU/Linux

video tutti i pacchetti relativi a collegamenti http

Aprire il file /etc/network/options e specificare al suo

provenienti/destinati da/verso qualsiasi indirizzo.

interno la direttiva: ip

forward=yes

DDa un client qualsiasi della LAN apriamo un

browser http e proviamo a collegarci ad un sito web (esempio http://www.google.com). Da questo

Mandrake Linux Aprire il file /etc/sysctl.conf ed aggiungere al suo

momento in poi lasciamo il tcpdump in esecuzione

interno la direttiva:

perché ci servirà ancora per esempi successivi.

net.ipv4.ip_forward =

1

Il sito non verrà aperto! Dopo qualche secondo

l'output ottenuto dalla shell in cui è stato eseguito tcpdump mostrerà un risultato simile al seguente

ripetuto più volte: 14:03:33.855982

IP

192.168.0.10.60470

66.249.85.104.89: <rr.ss

>

S 2319097123:231009712319) win 5840

146Q,5ackOK,timestamp 3213999171 |tcp]>

La stringa è interpretabile in questo modo: il client interno 192.168.0.10 ha provato ad iniziare una

connessione (S corrisponde al flag TCP SYN) con la destinazione 66.249.85.104. Vengono fatti diversi tentativi di connessione ma nessun dato torna indietro al client.

L'errore

che è

stato

commesso

è

uno

dei

più

comuni e non risiede nei modo in cui è stata impo stata/dichiarata la regola di iptables, che risulta esatta. Il problema risiede nella configurazione della Linux Box che acquisisce l'indirizzo IP pubbli co: essa, infatti, deve essere configurata in modo

client si connette al server Web su internet

tramite il gateway della propria rete

~


_

3 Nel passo 3 l'interfaccia della Linux Box che ha

E' chiaro che c'è la necessità di attivarla. E' possibi

acquisito l'indirizzo IP pubblico dal provider

le compiere questa operazione scrivendo diretta

riceve una risposta al pacchetto inviato nel passo 2

mente il valore desiderato nel file, come segue:

(da IP mittente 66.249.85.104 a IP destinatario 8 echQ

1

>

/proc/sys/net/ipv4/ip

62.121.13.119). Analizzando al suo interno la tabel

forward

la dei pacchetti che sono già stati mascherati, il

Cosi facendo al riavvio del sistema tale impostazio

sistema comprende che questo deve essere in

ne ritornerà al suo valore originario, cioè "0". Per

realtà smistato al client interno 192.168.0.10, che è

rendere permanente tale modifica consultare il

stato l'host a richiedere lo stabilimento della

riquadro 1.

connessione.

Proviamo nuovamente a navigare da un qualsiasi client interno. La pagina web verrà adesso mostrata

Per questo motivo nel passo 4 l'indirizzo IP di

a video dopo qualche attimo. In questo modo siamo

'destinazione del passo 3 (62.121.13.119) viene

in grado di navigare in Internet da postazioni che

variato a 192.168.0.10 ed il pacchetto viene inviato

possiedono indirizzi IP privati grazie alla tecnica del

così al giusto destinatario.

Network Address Translation. C'è da comprendere più a fondo in cosa consista

D'ora in poi tutti i pacchetti relativi alla specifica

però il mascheramento operato dal NAT. Il riquadro

connessione operata dal client interno verranno ad

1 indica lo scambio dei pacchetti relativi alla prima

esso smistati dal sistema che pratica NAT.

parte dell'inizio di una connessione tra il client di una LAN con indirizzo IP privato ed un host residen te in Internet. Le informazioni salienti dovrebbero

Firewail per tutta la rete II Network Address Translation va configurato nella

corrispondere alle prime righe dell'output catturato

Linux Box che fungerà, in pratica, da router/firewall

dalla sessione di tcpdump avviata in precedenza che

per i PC di tutta la LAN e sarà l'unico punto di

è adesso possibile sospendere premendo i tasti

ingresso/uscita dei dati. La comunicazione tra la

Ctrl+C. Analizziamo il contenuto del riquadro 2:

rete interna e le reti esterne potrà essere corretta mente garantita in quanto la Linux Box sarà dotata

INel passo 1 la Linux Box riceve un pacchetto da

di un'interfaccia direttamente visibile ai client della rete locale (es. ethX) e di una interfaccia diretta

uno dei client della LAN (192.168.0.10) destina to all'indirizzo 66.249.85.104 (www.google.com). Il

mente visibile da Internet {es. pppO).

pacchetto reca con sé il flag tcp 5YN (S) il che signi

Grazie a questo tipo di configurazione è possibile

fica che si sta cercando di stabilire ex-novo una

estendere le caratteristiche di iptables ad altri usi.

connessione.

Vediamo assieme i più diffusi.

2 Se il sistema lasciasse inalterato l'indirizzo IP

Regolamentare le

mittente del passo 1 non sarebbe possibile

connessioni verso Internet

comunicare correttamente con la destinazione (gli indirizzi privati non sono raggiungibili dall'esterno),

L'utilizzo della tecnica del mascheramento delle

per questo motivo nello passo 2 tale indirizzo viene

connessioni fa si che la Linux Box preposta alla

modificato

dal

scopo possa fungere da firewail non solo per pro

pravider (nell'esempio 62.121.13.119). Tutti gli altri

teggere se stessa ma anche, e soprattutto, per pro

campi {porte, opzioni e valori del pacchetto) vengo

teggere t client interni. Per poter garantire una vera

con

quello

pubblico

acquisito

no lasciati inalterati. Da questo momento in poi la

protezione è necessario aumentare il controllo sul

Linux Box memorizza in una sorta di tabella ì dati

traffico che passa attraverso gii host delta rete per

relativi alla connessione dietro NAT.

evitare che l'operazione di mascheramento dia solo una falsa sicurezza. Ecco quindi che può essere

m ■ RIQUADRO 2

1 Sessione di tcpdump relativa ali 'inizio

J^di una connessione w

13:56:35.188403 <mss

2) 3) 4)

IP

13:56:35.188454 IP <mss

321351154

> 66.249.85.1B4.89:

5

1989238142:1909238142(6)

win

5S40

S

19B923B142:1909238142(e>

win

584G

S.nop wscale Q>

62.121.13.119.60465

> 66.249.85.1B4.8e:

146O,sackOK,timestamp 321351154 9,nop wscale 9>

13:56:35.311652 IP win

192.168.0.1B.60465

146e,sackOK,timestamp

TCP

8190 <mis

13:56:35.311673 IP win 819Q

<mss

66.249.85.104.80

>

62.121.13.119.68465:

s

2813525196:2813525196(9)

ack

1909238143

66.249.85.104.80

>

192.168.B.10.60465:

s

2813525196:2813525196(9)

ack

1909238143

1460>

1468>

^3


utile, in certi ambiti, limitare

le

risorse

che

i

#

iptables

-t

nat

computer all'interno della rete possono contattare

-A PREROUTING ■s

-p

udp

192.168.9.6/2'!

--dport

53

-]

ACCEPT

su Internet, circoscrivendo il tutto solo a quelli stret tamente necessari. Questo modo di impostare il

* iptables

-t

nat

-A PREROUTING

proprio firewall aiuta certamente a dare maggiore

-s

192.168.S.G/24

-j

DROP

sicurezza alla propria infrastruttura di rete. Per contro, è necessaria la conoscenza esatta di

Nel primo caso (regola 1)

quali porte devono poter essere raggiunte dai client

ip nel range 192.168.0.0/24

per evitare un possibile fermo di servizio.

la possibilità di collegarsi {-j

Prendiamo in considerazione queste 3 regole:

(-P

diamo, a tutti gli indirizzi (-s

192.168.0.G/24) ,

ACCEPT) alle porte tcp

tcp) 20,21,22.25,80,110,443 di qualsiasi indi

rizzo fP di destinazione. » iptables

-t nat

192.lea.o.a/24

-A PREROUTING

--dports

-p tcp

-m muUiport

20,21,22,25,39.110,443

In questo modo si da ai client la possibilità di utiliz

-5

zare rispettivamente i servizi di trasferimento file

-j accept

RIQUADRO 3

Regole per IPTABLES Ecco un piccolo script che raccoglie la maggior parte delle regole sin qui mostrate. Con esso sarà possibile creare un firewall efficace e capace di proteggerci dai più comuni attacchi diretti oggi perpetrabili (Scanning, Fingerprint, etc). All'utente viene lasciato naturalmente il compito di apportare le modifiche/migliorie necessarie per adattarlo slla propria infrastruttura di rete ed alla propria distribuzione Linux. Potete scaricarlo da http://www.linuxpratico.com/ risorse/sicurezza/ regolefw.sh

# Interfaccia esterna della propria linux box. n ette si possiede

(modero o

Variare in base al

tipo di

apparato

router ethernet),

EXT_INTERFACE="pppB"

* Inserimento dei moduli di » caricati nel

sistema.

connection-tracking.Le seguenti

righe vanno decomentate se

Ciò può essere veriflcato utilizzando il

ì moduli non sono già

comando "Ismod".

S /sbin/modprobe ip_conntrack

* inserimento dei moduli per

i collegamenti

ftp dietro nat.

Oecommentare se il

sistema pratica masquerading.

t

# /sbin/modprobe ìp_conntrack_ftp 9 /sbin/modprobe ip^ftp_nat

# Questa

regola blocca tutto

iptables

-I INPUT -p tcp -i

# Si

blocca tutto il

il

traffico

tcp

SEXT_IHTERFACE

non

richiesto proveniente da

-m State -S 0/0

--dport 1:65535

Internet

e

destinato direttamente alla

--State INVALID,NEW -j

linux

box;

DROP

traffico ìcmp non richiesto proveniente da Internet e destinalo direttamente alla

linuK box;

s

iptables

-I INPUT -p iemp -i SEXT_INTERFACE

-ra state -s 0/fl

--state INUALID.NEW -j

DROP

ti Questa regola blocca tutto il traffico udp non richiesto proveniente da Internet e destinato direttamente alla linux box; s

iptables

-1 INPUT -p udp -i $EXT_INTERFACE

-ra state -s 0/0

S Questa regola attiva il masquerade delle connessioni. a

fornire la connettiwità Internet ai

# iptables

--state INVALID.NEW -j

DROP

Decommentare e configurare opportunamente se si desidera

PC della propria LAN.

-A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE

9 Limitazioni dei

servizi Internet ai

client/server della

# si desidera inporre delle limitazioni all'operato dei

rete interna.

Decomtnentare e configurare opportunamente se

client/server della propria LAM verso

Internet.

#_

# iptables

-t nat

-A PREROUTING -p tcp -m multiport -s 192.168.8.8/24 --dports 20,21,22,25,80,110,443

# iptables

-t nat

-A PREROUTING -p udp -s

8 iptables

-t nat

-A PREROUTING -S 192.168.0.0/24 -j DROP

e Port

Forwardìng.

« iptables -t nat

192.16B.8.0/24

--dport 53

-j

-j ACCEPT

ACCEPT

Decommentare e configurare opportunamente la regola se si desidera praticare port

forwarding.

-I PREROUTIHG -p tcp -s 0/8 -i SEXTINTERFACE --dport porta_dest_fw -j

DNAT

--to-destination

11server_interno:porta"


^

RIQUADRO 4

o qualsiasi tentativo di contattare qualunque altro

servizio non elencato ai punti 1 e 2 verrà bloccato dal firewail.

FTP e NAT Quando si condivide lo stesso collegamento ad Internet attra

verso la tecnica del masquerading. i client della rete interna

Ciò è sufficiente, nella maggioranza dei casi, a garantire ai PC della propria Intranet una certa

potrebbero avere problemi ad effettuare delle transazioni FTP

autonomia e un buon controllo durante la naviga

con server posti in Internet.

zione in Internet. Naturalmente si è liberi di aggiun

Questi problemi sono dovuti alla natura stessa del protocollo

gere o rimuovere le porte relative ai servizi deside

FTP che non opera su una porta singola, bensì su più porte

rati, ad esempio quelli relativi alla chat oppure ai

che possono essere allocate anche in modo dinamico e che pertanto potrebbero indurre il firewall in inganno. La conse

guenza diretta di questo problema sarebbe il blocco di con nessioni lecite.

file sharing.

Port Fnrwarding

Per risolverlo in modo indoìore e pulito è possibile aggiungere

Talvolta, anche in presenza di reti casalinghe o di

un paio di moduli kernel nella propria Linux Box digitando da

ufficio, potrebbe essere necessario rendere visibile

linea di comando:

all'esterno un servizio ospitato da un client/server

# modprobe

ip

della propria LAN: ad esempio potremmo desidera

# modprobe

ip nat ftp

conntrackftp

re di rendere visibile un sito web in sviluppo su una Linux Box interna che ancora non è stato spostato

Così facendo i PC della propria LAN intraprenderanno e termi

neranno correttamente le sessioni FTP avviate. Entrambi i moduli sopra indicati possono essere inseriti nell'elenco dei

moduli da caricare al boot, presente nel file /etc/modules

sul server web principale. Il mascheramento effettuato dal NAT non rende

possibile l'accesso diretto ai vari host; ecco quindi

(solo il nome del modulo) così da non doverli lanciare

che bisogna ricorrere ad una nuova tecnica detta di

manualmente ad ogni riavvio.

port forwarding, che permette, sempre grazie ad iptables. alla chain PREROUTING e al target DNAT, il collegamento ad un computer altrimenti non rag giungibile da Internet.

via FTP (20 e 21), shell remota (22), posta in uscita

Il target DNAT è valido solamente nella tabella "nat"

(25), http (80), posta in entrata via pop3 (110),

e consente di modificare a piacimento l'indirizzo 1P

https (443).

e la porta di destinazione dei pacchetti relativi ad

In questa regola abbiamo usufruito dell'estensione

una connessione. La sua opzione più utilizzata è

multiport (-m

infatti --to-destination con la quale è possibile

multiport) e della sua opzione

"dports" {--dports 20,21,22,25,80,110,443) per

modificare i parametri di destinazione di un collega

evitare di inserire nel sistema sette distinte regole.

mento: la stringa passata a questa opzione è in pra

La chain utilizzata è PREROUTING. che ci consente di

tica formata dall'indirizzo IP e dalla porta, separate

analizzare i pacchetti in ingresso nella nostra Linux

dai due punti, a cui la connessione dovrà essere

Box prima che vengano prese decisioni riguardo il

dirottata.

Per

loro smistamento e, per questo, è la chain più indi

visibile

Internet

cata per filtrare il traffico in uscita dalla nostra rete

con

interna: ne! caso un pacchetto soddisfi una delle

re la seguente regola:

in

esempio il

se

volessimo

nostro

rendere

server web

interno

indirizzo IP 192.168.0.2 basterebbe aggiunge

condizioni elencate, si procede nell'inoltro verso la

destinazione, ignorando le regole che seguono.

#

ìptabtes

-t

nat

Con il secondo comando diamo la possibilità di col legarsi <-j

ACCEPT) alla porta UDP (-p

-d

-I

PREROUTING

-p

tcp

proprio ip pubblico

udp) 53

--dport 88

--to-destination

-j

DNAT

"192.168.8.2:89*

(relativa al servizio dns), a tutti gli indirizzi IP nel

range 192.168.0.0/24

{-s

192.168.0.0/24) con

qualsiasi indirizzo di destinazione. In questo modo

oppure, se TIP non è noto ma solo l'interfaccia di rete dal quale proviene la connessione:

eviteremo problematiche di navigazione o consulta zione di risorse poste in Internet dovute alla manca ta interrogazione dei

server DNS. Anche qui la

# iptables --dport

-t

nat

80

-]

-I PREROUTING DNAT

-p tcp

- - to-Oestination

-i

pppo

"192.166.6.2:80"

chain utilizzata è PREROUTING. Nel terzo caso specifichiamo di bloccare (-j

DROP)

In entrambi i casi presentati, tutte le connessioni in

qualsiasi connessione verso qualsiasi destinazione

ingresso sulla porta 80 verranno redirette alla porta

da parte del range di indirizzi IP 192.168.0.0/24 {-s

80 del server 192.168.0.2.

192.168.0.0/24): in questo modo solo il traffico

Ecco quindi che l'utente proveniente dall'esterno

indicato esplicitamente e autorizzato può essere

che voglia collegarsi al server web, dovrà digitare

effettuato, altrimenti tutto il restante verrà bloccato

nel proprio browser l'indirizzo

da questa regola. Ricapitoliamo:

http://a.b.c.d dove, al posto di a, b. e. d andranno indicate le cifre

o diamo ai client interni la possibilità di contattare i

dell'IP pubblico da raggiungere.

servizi tcp "ftp-data, ftp, ssh, smtp posta in

E' anche possibile utilizzare porte diverse da quelle

uscita, http, pop3 posta in entrata, https";

classiche: ad esempio, se sulla porta 80 esiste già

o diamo ai client interni la possibilità di contattare il servizio udp "dns";

un server web e noi vogliamo rendere visibile una versione ancora in sviluppo è possibile ridirigere le


* RIQUADRO 5

tcpdump relativo ad un part-fnrward 1)

13:54:38.135966 IP

151.38.31.246.55967

> 62.121.13.119.39:

S 2236072530:2286972530(8]

2) 13:54:38.136618 IP

151.38.31.246.55957

> 192.168.0.10.80:

S 2286072538:2236672536(9)

3) 13:54:38.136190 IP

192.168.6.18.88

> 151.3B.31.246.55967:

S 1295163523:1295163523(8)

ack 2286672531

4)

62.121.13.119.80

> 151.38.31.246.55967:

S 1295163523:1295163523(0)

ack 2286072531

13:54:38.136208 IP

L'analisi viene effettuata sul gateway/firewall della rete locale: si suppone che 62.121.13.119 sia l'indirizzo IP pubblico con la quale naviga la rete locale e che 151.38.31.246 sia l'host remoto che effettua la connessione:

1) 151.38.31.246 contatta sulla porta 80 l'indirizzo IP pubblico della propria rete (figura 2). 2) a causa della regola di port (orwarding il sistema smista il pacchetto verso il web server interno 192.168.0.10. 3) il web server interno risponde al pacchetto utilizzando il suo gateway d'uscita di default.

4) il mascheramento della connessione permette la modifica dell'indirizzo IP mittente da 192.168.0.10 a 62.121.13.119 (cioè l'indirizzo IP pubblico). 151.38.31.246 può in questo modo essere raggiunto dal pacchetto e rispondere di conseguenza.

essere configurato in modo che effettui a sua volta port forwarding per le porte interessate verso l'interfaccia a lui direttamente visibile (ad esempio ethO) della Linux Box interna che agirà da gateway per tutta la rete.

Attivare il redirect delle porte nel modo che abbia mo appena detto è un processo che varia in base I

Inumai

alla marca ed al modello del router che si possiede, anche se, normalmente, questi apparati sono confi gurabili attraverso un pannello web: le voci interes

sate da ricercare, nella maggioranza dei casi, sono Port Forwarding, Virtual Server o semplicemente Port

192.166.C.10

Forward. Il router, quindi, praticherà port

forwarding verso il firewall Linux che, a sua volta, praticherà port forwarding verso le postazioni della server web è interno alia rete locale, e il client riesce a connettersi grazie al port forwarding

rete interna.

Ovvio che potete effettuare port forwarding anche direttamente dal router verso il server web, igno rando la presenza di una Linux Box con iptables: il

risultato sarà lo stesso, anche se perderete qualco connessioni da un'altra porta verso la 80 interna, in questo modo:

sa sia in flessibilità che nell'approccio didattico. Un altro esempio per chiarire le possibilità offerte dal port forwarding:

#

iptables

-t

--dport

8801

nat -j

-I

PREROUTING

DNAT

-p

tcp

--to-destination

-i

pppO

"192.168.B.2:86*

*

iptables

-t

nat

-I

PREROUTING -i

In questo caso il client, quindi, dovrà puntare il

-p eth9

tcp

-5

y.y.y.y

--dport

-to-destination

86B6

-j

DNAT

"192.168.8.2:443"

browser all'indirizzo http://a.b.c.d:8001

La richiesta, però, avverrà sempre sulla porta 80:

In questo caso solo l'host esterno "y.y.y.y" potrà

quindi il server web andrà configurato come di con

contattare la porta "8080" dell'interfaccia "ethO"

sueto e sarà compito dell'host che effettua NAT

della postazione Linux che funge da firewall. A quel

modificare le richieste affinchè risultino standard e

punto la connessione verrà rigirata alla porta "443"

non su una porta particolare.

del server "192.168.0.2". In questo caso l'indirizzo

Perché tutto funzioni a dovere è però necessario

IP pubblico non è acquisito dalla Linux Box. bensì da

che chi riceve la connessione da Internet provveda

un router ethernet che pratica, come detto in prece

alla giusta redirezione della connessione: quando è

denza, port forwarding verso l'interfaccia "ethO" del

la Linux Box ad ottenere l'indirizzo pubblico, con

firewall Linux.

l'interfaccia pppO ad esempio, non si verificano pro

La Linux Box naturalmente dovrà essere equipag

blemi di sorta.

giata con un'altra scheda di rete (ad esempio l'in

Ovviamente il sito web dovrà essere progettato

terfaccia ethl) il cui indirizzo IP sarà visibile a tutti i

secondo gli standard, in modo da far riferimento

client interni che avrà per gli stessi ruolo di

sempre ad uri relativi e non assoluti.

gateway di uscita.

Qualche difficoltà in più potrebbe sorgere quando il

Con quest'ultima regola abbiamo mostrato come

collegamento viene effettuato da un router ADSL: in

sia possibile praticare port forwarding in tutta sicu

questa particolare circostanza, per poter praticare

rezza, permettendo l'accesso ai servizi desiderati

correttamente port forwarding, tale router deve

solamente a specifici indirizzi IP.

~


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.