Sei sulla pagina 1di 80

1

Network security
La sicurezza deve tener conto dell'infrastruttura di rete
dell'organizzazione, delle relazioni dei flussi e delle
interazione tra mondi trusted" ed untrusted"
2
Network Security
Un piano di sicurezza sulle informazioni accessibili dalla rete deve
prevedere:
Valutazione del pericolo
Controlli distribuiti
Stesura di norme di sicurezza
Scelta e gestione delle password
Controllo nelle applicazioni
Monitoraggio di sicurezza
Limitazione degli accessi
Controllo sugli accessi
3
Valutazione del pericolo
Il Requests of Comment RFC 1244 identifica tre tipi distinti di pericoli
per la sicurezza associata alla connettivit in rete:
Accesso non autorizzato
irruzione di estranei non autorizzati
Divulgazione di informazioni
problemi che favoriscono l'accesso a informazioni riservate a persone
non autorizzate
Rifiuto di servizi
problemi che rendono impossibile al sistema di fornire un certo servizio
4
Controlli distribuiti (1)
Un approccio alla sicurezza sulle reti quello di distribuire la
responsabilit e il controllo su segmenti di una grossa rete. In questo
modo la sicurezza coinvolge un numero di persone pi elevato,
garandendo controlli pi particolareggiati.
Usare sottoreti per distribuire il controllo
Eleggere un amministratore della sottorete non appena questa viene
creata. L'amministratore deve essere responsabile della sicurezza della
sottorete e dell'assegnazione degli indirizzi IP per i dispositivi collegati
alla rete.
5
Controlli distribuiti (2)
Usare Mailing List per distribuire informazioni
Per distribuire informazioni sulla sicurezza ai singoli gruppi, relativi ai livelli di
amministrazione, si possono utilizzare le mailing list. L'amministratore di rete
riceve informazioni sulla sicurezza da autorit esterne, filtra il materiale
irrilevante e invia quello interessante agli amministratori delle sottoreti, i quali
possono inviare altre parti interessanti ai loro amministratori di sistema o ai
singoli utenti.
Tra le mailing list che trattano principalmente sulla sicurezza ricordiamo:
Computer Emergency Response Team (CERT) Advisories. Il
CERT distribuisce informazioni sui problemi conosciuti in ambito di sicurezza
e mette a disposizione le fixes (soluzioni sw) a questi problemi. Per essere
inserito a questa mailing list occorre inviare un mail a cert@cert.sei.cmu.edu.
Vecchi avvisi di problemi possono essere scaricati via anonymous ftp da
cert.sei.cmu.edu dalla directory /pub/cert_advisories.
6
Controlli distribuiti (3)
DDN Security Bulletins.
Questi bollettini sono molto simili agli advisories del CERT, ci si pu
iscrivere ai DDN Bulletins inviando una mail di richiesta a
nic@nic.ddn.mil. Bulletins precedenti possono essere recuperati via
anonymous ftp dalla directory scc di nic.ddn.mil.
Risks forum.
Il risks forum discute ad ampio raggio sui rischi alla sicurezza dei
computer. Per agganciarsi a questa mailing list inviare una mail di
richiesta a risks-request@csl.sri.com.
Computer Virus Information.
La lista VIRUS-L tratta essenzialmente i virus sui
computer. Per essere aggiunti a tale lista inviare un mail a
listserv%lehiibm1.bitnet@mitvma.mit.edu con solo la seguente linea
nel corpo del messaggio: SUB VIRUS-L tuo indirizzo IP completo.
7
Stesura di norme di sicurezza (1)
Le norme di sicurezza devono definire:
Responsabilit dell'utente
Occorre prevedere che gli utenti cambino la loro password a certi
intervalli di tempo, usino password che rispettino certe precauzioni e
infine controllino spesso i loro account per vedere se sono stati acceduti
da estranei.
Responsabilit dell'amministratore di sistema
Le norme devono richiedere che siano prese specifiche misure di
sicurezza, che siano sempre presenti i messaggi di login del sistema, e
che vengano utilizzate procedure di monitoraggio e di accounting su
ogni host. Prevedere quelle applicazioni che non devono girare su tutti
gli host della rete.
8
Stesura di norme di sicurezza (2)
Uso corretto delle risorse di rete
Definire chi pu usare le risorse di rete, che cosa pu fare e che
cosa non pu fare. Se l'organizzazione prevede che l'e-mail, i file e la
history dell'attivit del sistema vengano tutti sottoposti al
monitoraggio di sicurezza, occorre avvertire l'utente che questa la
norma.
Azioni da prendere alla comparsa di un problema
Cosa bisogna fare quando viene rilevato un problema di sicurezza?
Che cosa deve essere notificato? L'utente che scopre il problema
non deve toccare nulla e chiamare il responsabile della sicurezza di
rete. Basta quindi rendere nota questa semplice informazione a tutti
gli utenti.
9
Gestione password (1)
Molti problemi di sicurezza sono causati da un uso scorretto delle
password:
account che usano come password lo stesso nome di account!
account di demo o di ospiti che non richiedono password o una
password ben pubblicizzata!
account di sistema con password di default!
Controllare che il file /etc/passwd non possa essere scaricato via
anonymous ftp.
10
Gestione password (2)
Come scegliere una password:
non usare il login name
non usare di nessuno e di nessuna cosa
non usare parole o abbreviazioni di una lingua specie l'inglese
non usare informazioni personali del possessore dell'account (numero di
telefono, iniziali, ecc)
non usare una sequenza di tasti vicini es: qwerty
non usare parole scritte all'indietro o tutte in maiuscolo o altro..
non usare password tutte numeriche
non usare password semplici o che riguardano specifici argomenti o prese da un
libro sulla sicurezza
Usare un insieme ben mescolato di numeri e lettere maiuscole e minuscole
Usare almeno sei cifre
Usare usa selezione apparentemente casuale di lettere e numeri
11
Gestione password (3)
E' possibile usare programmi che forzano l'utente a specifiche
caratteristiche nella scelta della password. I programmi npasswd e
passwd+ fanno questo.
npasswd un programma che forza le password a sottostare a certe
regole prima di essere inserite nel file /etc/passwd. Non un generatore
di password.
npasswd disponibile via anonymous ftp da ftp.cc.utexas.edu nel file tar
compresso /pub/npasswd/npasswd.tar.Z.
passwd+ analogo a npasswd.
12
Controllo nelle applicazioni
Molte applicazioni di rete hanno insiti i propri meccanismi di controllo,
ma occorre controllare se sono stati configurati bene alcuni file. In
particolare:
i comandi UNIX di tipo r usano i file di sicurezza /etc/hosts/equiv, /
etc/hosts.lpd e
~
/.rhosts. Controllare che nessuno di questi contenga
un segno +.
sendmail : cancellare dal file /etc/aliases gli alias uudecode e
decode.
NFS : controllare i filesystem inseriti nel file /etc/exports e chi ha
libero accesso a questi. Usare l'opzione -access per limitarne
l'accesso e usare -root per evitare che utenti root di sistemi remoti
accedano ai filesystem esportati.
13
Altre precauzioni
Togliere i terminali "secure" non necessari. I terminali "secure" sono
quei terminali da cui possibile collegarci direttamente come root. Tali
terminali devono avere la propriet secure presente nel file /etc/ttys o /
etc/ttytab.
Togliere il software non necessario: eliminare systat, tftp e link da /
etc/inetd.conf a meno che non sia strettamente necessario.
Prendere software aggiornato di prodotti tipo: sendmail, fingerd e ftpd.
14
Monitoraggio di sicurezza (1)
Usare frequentemente i comandi UNIX:
ps -aux (o ps -ef per System V) per controllare i vari processi attivi
nel sistema e quale utente o comando li ha generati.
who per avere informazioni su chi attualmente collegato al sistema
ls -lR per creare una lista che mostra i possessori, i diritti di accesso,
la data di creazione e la dimensione di ogni file del sistema.
Periodicamente creare una nuova lista e confrontarla con la
precedente (usando diff) per controllare cambiamenti strani nei
filesystem.
15
Monitoraggio di sicurezza (2)
ls -a grep '^\.' per controllare tutti i file che cominciano con un punto
(.). Alcuni file punto sono normali, controllarne l'inserimento di nuovi .
last per vedere il contenuto del file /usr/adm/wtmp che registra i
collegamenti al sistema avvenuti.
grep -i root /usr/adm/message per controllare nel file /
usr/adm/message da cui e da dove sono state effettuate le
richieste di superuser.
16
Limitazione degli accessi (1)
Encryption una tecnica per limitare gli accessi ai dati
trasportati sulle reti: il testo viene prima crittografato tramite un
codice, poi spedito e in ricezione decrittografato e reso in
chiaro.
E' necessaria per
prevenire la vista di dati riservati a utenti occasionali
prevenire aperture accidentali di dati riservati
impedire a utenti privilegiati di vedere dati riservati
Complicare molto le cose a intrusi che cercano di entrare dentro file
di sistema
Due comandi di encription molto usati in UNIX sono:
crypt e des, dei due des pi affidabile.
17
Limitazione degli accessi (2)
Pi recentemente sono stati introdotti i cosiddetti Firewalls
(muri taglia-fuoco) che vengono a sostituire i router per reti
che non devono far passare pacchetti internamente. In un
router i pacchetti vi transitano liberamente, mentre in un
firewall i pacchetti sono processati localmente dalla
macchina firewall.
18
Controllo sugli accessi
Il controllo sugli accessi una tecnica meno restrittiva di
firewall, i router e gli host che usano questo controllo
verificano se l'host che richiede un certo servizio risulta
presente in una access control list. Se non presente la
richiesta viene rifiutata.
Alcuni router, come il CISCO, forniscono una facility sul
controllo degli accessi.
Su host abbiamo il programma wrapper che attua due funzioni
base: registra le richieste ai servizi internet e fornisce un
meccanismo di controllo sugli accessi.
19
Protocolli e software di gestione reti
Negli ultimi anni sono stati prodotti alcuni ottimi sw per la gestione e il
controllo delle reti che si basano sul protocollo SNMP.
Tra questi sw ne ricordiamo due in particolare:
Tivoli Management System
Unicenter TNG
entrambi validi e di grande ausilio agli amministratori di reti
Scenderemo in dettaglio sul primo di questi.
Sicurezza delle reti di computer
Le network sono nate e cresciute con lo scopo di incrementare la variet e
la fruibilit dei servizi, mentre gestire la sicurezza delle reti ha come fine
limitare e controllare gli accessi.
Ogni host connesso ad una rete sottoposto ad un largo numero di miacce.
Una classificazione dei rischi di sicurezza associati al networking pu essere la
seguente:
Accesso non autorizzato

persone non autorizzate accedono ai servizi della rete


Accesso ad informazioni

accesso ad informazioni personali e riservate o di importanza strategica per


enti pubblici o governativi
Negazione di Servizi (Denial Of Service)

l'utente autorizzato non riesce pi ad accedere alle risorse della rete (ad es.
impossibile raggiungere un sito web, ...)
Gerarchia nella gestione della sicurezza
All'interno di una network si pu definire una gerarchia nella
gestione della sicurezza e nelle responsabilit connesse:
Livello Responsabilit
Rete
Sottorete
Host
Amm. di rete
Amm. di sistema
Amm. di sottorete
Utente
Come proteggere la rete
Esistono diversi modi per proteggere una network, il buon senso
dovrebbe consigliare una loro integrazione:
Nascondere le risorse della rete (Oscuramento)

NAT, IP Masquerading, Trasmissioni Crittografate


Gestire la sicurezza a livello del singolo host (hardening)

Crittografia e buone password utente

Aggiornare i software utilizzati

Selezionare i servizi offerti

Istruire gli utenti alle basilari nozioni di sicurezza

TCP - wrapper
Gestire la sicurezza a livello di rete/sottorete (Firewalling)
Il Firewall
E' composto da diverse parti HW e SW
E' uno strumento per:
Separare la rete dal mondo esterno (internet)
Restringere l'accesso a servizi e risorse da e soprattutto verso l'interno
Analizzare il traffico e le prestazioni di servizi
Permette di:
definire e gestire regole di sicurezza in modo centralizzato nella rete
limitare l'esposizione della rete da attacchi esterni
loggare efficientemente il traffico di rete
Non in grado di:
proteggere la rete da attacchi interni
proteggere da virus
proteggere da attacchi condotti attraverso linee non controllate da lui
Il packet filtering
Un firewall opera analizzando e filtrando (in base a delle regole
definite dall'amministratore di rete) il traffico di rete a livello
internet (Liv. 3 della pila OSI)
Tale metodo prende il nome di PACKET FILTERING
Un firewall consente di limitare il traffico di rete rifiutando i pacchetti in
base ad informazioni presenti nel loro datagramma o relative alle
interfaccie su cui viaggiano. Alcuni criteri sono:
il tipo di protocollo
il socket number (solo nei protocolli TCP/UDP)
il tipo di datagramma (SYN/ACK, data,...)
l'idirizzo di provenienza e destinazione nel datagramma
l'interfaccia alla quale arriva il pacchtto o verso la quale sta andando
Una precisazione importante
Il packet-filtering non si preoccupa delle applicazioni che
generano il traffico di rete, quindi a priori non si pu impedire che
un utente utilizzi ad esempio il programma telnet su una porta
aperta (ad es. la 80:HTTP) usata da un altro servizio.
Per impedire questa eventualit il firewall deve poter lavorare
anche a livello applicazione (Liv. 7), ad esempio come server proxy
Il server Proxy
Uno dei metodi pi efficaci per limitare attacchi maliziosi quello
di utilizzare un Proxy server
Un server Proxy opera come un application Firewall:
intercetta le richieste di servizi internet fatte dalle applicazioni e le reindirizza
al giusto servizio in accordo con le regole impostate
si interpone come gateway di comnicazione tra gli utenti (applicazioni) interne
e quelle esterne alla rete
totalmente trasparente all'utente che richiede il servizio
in grado di operare un controllo sull'operato dell'utente, ad esempio
possibilie negare il metodo GET o PUT del servizio FTP per un determinato
sito
il proxy un prodotto software (ad es. SQUID) che lavora in congiunzione con
il packet filtering
Architetture di Firewalling
E' possibile configurare un sistema firewall in diverse
modalit:
Screening-router

la pi semplice configurazione possibile


Dual-homed host

il pkt-filtering attuato da un host con almeno 2 interfacce che


fornisce anche dei servizi essenziali
Screened-host

l'host che fornisce i servizi collocato nella rete da proteggere


Screened sub-net

fa uso della topologia di rete DMZ



Screening-router
Screening-router
Il firewall-system opera solo un routing filtrato sul traffico di pacchtti tra gli
host interni e quelli esterni basandosi sulle regole impostate.
In genere usato nel livello di sicurezza sottorete con delle apparecchiature
che fungono da router-firewall configurabili
Dual-homed host
In questa configurazione un host con almeno due interfacce di rete divide il
traffico di rete e garantisce i servizi base di rete.
E' una soluzione economica e semplificata, facile da gestire, ma che
presenta un single point of failure
Screened-host
Oltre alla presenza di un firewall-router, tutto il traffico tra la rete interna e
quella esterna passa attraverso un host particolare della rete interna detto
Bastion Host il quale fornisce i servizi di base.
Il Bastion Host inserisce un secondo livello di sicurezza oltre al pkt-filtering
Screened-host (2)
Il packet filtering sullo screening-router impostato in modo da accettare solo
pacchetti da e verso il Bastion Host
Il Bastion Host rimane comunque esposto agli attacchi esterni ed essendo
situato nella rete interna rappresenta comunque un single point of failure,
quindi deve essere bene configurato mantenendo solo i servizi indispensabili
Con questa configurazione l'hardening del Bastion Host deve essere
particolarmente curato
Screened sub-net (DMZ)
Questa la architettura pi complessa utilizzata nelle grandi infrastrutture di
rete.
Viene creata una rete intermedia (De-Miltarized Zone) utilizzando due
router, uno esterno ed uno interno, il o i Bastion Host risiedono nella rete
intermedia rimanendo isolati dalla rete interna.
Screened sub-net (DMZ) (2)
Essendo i Bastion Host isolati nella rete perimetrale non rappresentano pi
un punto critico per la sicurezza.
Essendo naturalmente possibili configurazioni con pi BH questi possono
fornire alla rete interna un pi largo numero di servizi.Grande importanza ha
il loro hardening essendo protetti solo dal router esterno.
I servizi pi vulnerabili e potenzialmente insicuri vengono posti nella DMZ
lontano dalla rete interna
Il firewall-router esterno in genere implementa delle regole di accesso meno
restrittive, limitandosi ad un filtraggio di base in modo da garantire una
grande fruibilit dei servizi offerti (sia in input che in output)
Il firewall interno invece quello che opera il controllo maggiore essendo
l'ultima linea di difesa oltre alla sicurezza dei singoli host.
Pianificare le regole per i servizi di rete
Una parte molto importante della progettazione di un firewall
quella della pianificazione. Si deve decidere quali servizi lasciare
passare e quali invece bloccare, ma soprattutto in quali aree della
rete devono essere posti.
I servizi base:

Alcuni servizi come l'NFS, il NIS o LDAP, l'X-Server ecc. sono da


considerarsi dei servizi interni rivolti agli utenti della sottorete interna e
saranno quindi delegate a macchine a valle del firewall.
I servizi di networking:

I servizi come DNS, SMTP, FTP, WEB-SERVER, ecc. sono dei servizi
che devono essere esposti sia agli utenti interni che a quelli esterni e
presentano sempre una minaccia, vanno quindi delegate ai Bastion Host
nella DMZ dove eventuali falle di sicurezza sono ancora controllabili.
Pianificare le regole per i servizi di rete (2)
Alcune regole fondamentali per limitare le possibili minacce sono:
Bloccare a livello host e rete i servizi di vecchia generazione che non
garantiscono un adeguato livello di riservatezza e sicurezza (telnet, rsh, ...)
Utilizzare per l'accesso agli host sistemi di centralizzazione delle informazioni
dell'account e delle risorse (NIS, LDAP, ..., NFS, ...) in modo da poter
aggiornare in modo centralizzato l'intera rete.
Utilizzare protocolli crittografati per le connessioni (SSH) e per la validazione
degli utenti e dei servizi (GPG, Certificati di Autenticit, Firme digitali, ecc...)
Se possibile utilizzare filesytem criptati e controllarne periodicamente la
conformit ad una copia di backup sicura (ad es. per la /bin, /sbin, /usr/bin,
ecc...).
Utilizzare un server proxy anche per accedere dalla rete interna ai servizi
critici nella DMZ, oltre che per gli altri servizi della rete esterna.
Devolvere al proxy il compito di assolvere alle richieste di servizi dall'esterno
Il TCP/IP: datagramma IP e TCP
Vers Hlen TOS Length
Identification Flags Offset
TTL Protocol CRC
Source Address
Destination Address
Options
Payload
Source Port Destination port
Sequence Number
Acknowledgement Number
Offste Res.
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
Window
Checksum Urgent pointer
Payload
IP
TCP
TCP: 3 Way Handshake
Il protocollo TCP un protocollo con connessione, ossia prima
che inizi la comunicazione deve essere stabilita una connessione
basata sui seguenti 3 passi :
Il client (la parte attiva)invia un pacchetto con il SYN settato e specificando
oltre al numero di porta del server, il proprio Initial Sequential Number
Il server (la controparte reattiva)risponde con un pacchetto con la SYN
settata, con il psoprio ISN e con quello del client incrementato di uno (dando
cos un ack al client)
Il client rispedisce al server il proprio ISN incrementato di uno in un pacchetto
con il flag SYN false dando cos un secondo ack al server e stabilendo cos la
connesione alla quale segue la trasmissione dei dati
La connessione verr chiusa con lo scambio di pacchetti con le
flag FIN e RST inviate dal client e dal server rispettivamente
I servizi Internet
L'applicazione che offre un servizio rimane in attesa passiva di
richieste da parte di un client mettendosi in ascolto su una
determinata porta identificata da un numero di 16 bit(TCP,UDP)
I servizi principali hanno associato uno o pi numeri di porta ben
noti (well-known port number) a tutta internet
Un client che vuole chiedere un servizio internet deve quindi
sapere l'indirizzo IP e il numero di porta relativi al server ed al
servizio specifico.
Dovr anche specificare il proprio numero di porta, scelto in
genere a caso tra quelli non well-known (# > 1023), tale numero
viene definito come ephemeral e deve essere unico per quell'host.
I servizi Internet (2)
Ecco alcuni Well-Known Port Number:
Porta Protocollo Servizio
20 tcp/udp FTP Data
21 tcp/udp FTP Control
22 tcp/udp SSH
23 tcp/udp Telnet
25 tcp/udp SMTP
43 tcp/udp WhoIs
53 tcp/udp DNS
69 tcp/udp TFTP
79 tcp/udp Finger
80 tcp/udp HTTP
110 tcp/udp POP3
119 tcp/udp NNTP
137 tcp/udp NetBios
138 tcp/udp NetBios
139 tcp/udp NetBios
143 tcp/udp IMAP
161 tcp/udp SNMP
389 tcp/udp LDAP
443 tcp/udp HTTP/TLS-LSS
546 tcp/udp DHCP Server
547 tcp/udp DHCP Client
TCP Wrappers: system hardening
I TCP Wrappers consentono di limitare l'accesso ai servizi
basandosi sull'indirizzo IP e sull'hostname del client.
Le richieste dei client verso l'host su cui gira un wrapper TCP vengono
intercettate ed Inglobate in un servizio di autenticazione
La funzionalit di wrapping si ottiene compilando i servizi di sistema quali
xinetd,ssh e portmap lincandoli alla libreria libwrap.a
I client che richiedono un servizio non si accorgono dell'utizzo dei wrapper:
l'utente non nota differenze nell'uso di tale servizio e l'intruder (inesperto) non
riesce a capire perch il servizio rifiutato
Il controllo sugli accessi controllato da 2 file:
/etc/hosts.allow
/etc/hosts.deny
Wrapper: Formato dei file di configurazione
Le regole specificate nei due file hanno effetto dal basso verso l'alto e
quelle specificate in /etc/hosts.allow hanno la precedenza su quelle in
/etc/hosts.deny.
Il formato dei file deve rispettare la sefuente struttura:
#commento
<elenco-servizi> : <elenco-client> [: spawn <comando-shell>]
...
<elenco-servizi> : <elenco-client> [: spawn <comando-shell>]
Le seguenti keywords vengono usate per specificare host o gruppi di host:
- ALL: tutti i client o tutti i servizi
- LOCAL: gli host che non contengono il carattere '.'
- KNOWN: quando l'host o l'utente vengono riconosciuti dal sistema
- UNKNOWN: quando l'host o utenti non vengono riconosciuti
- PARANOID: l'hstname non corrisponde con l'indirizzo
Wrapper: Esempi di configurazione
#/etc/hosts.allow
in.ftpd: .unipg.it EXCEPT dipmat.unipg.it
Autorizza l'ingresso di richieste per il servizio ftp da parte di tutti gli host del
dominio unipg.it tranne quelli del dominio dipmat.unipg.it
#/etc/hosts.allow
in.telnetd: 141.250.7.129
in.ftpd: 141.250.7. EXCEPT 141.250.7.129
Tutti gli host della rete 7 hanno accesso in ftp tranne l'host 129 che ha per
accesso con telnet
#/etc/hosts.deny
in.ftpd: ALL
in.ftpd: 141.250.7.129
#/etc/hosts.allow
in.ftpd: ALL
?
Vale la regola della precedenza
dell'ultima regola immessa e delle
precedenze tra i due file di
configurazione!
Wrapper: spawn
La direttiva spawn permette di eseguire dei comandi da shell
qualora una richiesta entrante soddisfa una regola
#/etc/hosts.deny
in.tenetd: /bin/date %c >> /var/log/in.telnet.log
Immette nel file /var/log/in.telnet.log una entry con la data del tentativo di entrare
ed alcune informazioni sul client quli hostname o indirizzo IP e nome-utente
Altre espansioni supportate sono:
%a(%A): indirizzo IP del Client (server)
%h(%H): hostname del client (server)
%u: username del client
%p: PID del processo server
%s: informazioni generali sul server
Wrappers: funzionalit avanzate
Per specificare l'insieme di host si pu specificare il nome
completo di un file che contenga la host-list desiderata
Quando una regola viene utilizzata possibile mostrare un banner
di avvertenza al client:
in.ftpd: ALL : banners /etc/banners/
verr mostrato il messaggio contenuto nel file /etc/banners/in.ftpd
E' possibile utilizzare e configurare il logging-service del sistema
usando la keyword severity:
in.telnetd: ALL : severity warning #(defoult info)
nel log di sistema verr riporato un warning
xinetd
xinetd un demone che estende le funzionalit del internet daemon
inetd aggiungendo nuove ed avanzate metodologie di controllo dei
servizi internet, ma non si sostituisce completamente a lui.
Se si usano congiuntamente la libwrap.a e il demone xinetd si riesce a
raggiungere un livello di sicurezza abbastanza elevato sul server da
proteggere.
xinetd non si incarica soltanto di gestire l'accesso ai servizi di rete da
parte di client che soddisfano o meno determinate regole, ma
permette anche di controllare il servizio stesso a livello applicazione.
xinetd viene configurato usando il file /etc/xinetd.conf ed altri file
specifici per ogni servizio da controllare contenuti di solito nella
directory /etc/xinetd.d
/etc/xinetd.conf
E' il file principale di configurazione del demone e definisce le
regole di validit generale:
defaults{
#numero massimo di istanze per ogni servizio
instances = 60
#tipo di logging
log_type = SYSLOG authpriv
#informazioni da riportare nei log delle connessioni
log_on_success = HOST PID
log_on_failure = HOST
#max connessioni per sec wait time
cps =25 30
}
#directory per leggere i file di conf. dei singoli servizi
includedir /etc/xinetd.d
le opzioni di log_on_succes e log_on_failure vengono spesso modificate dal singolo
servizio registrando ulteriori informazioni
Opzioni di registrazione
xinetd permette di impostare diverse informazioni da registrare
nei file di log:
ATTEMPT: registra i tentativi falliti di accesso (log_on_failure).
DURATION: registra il tempo di utilizzo di un servizio da parte di un sistema
remoto (log_on_success).
EXIT: registra il segnale di chiusura del servizio (log_on_success).
HOST: registra lindirizzo IP dellhost remoto (log_on_failure e log_on_success).
PID: registra lID del server che riceve la richiesta (log_on_success).
RECORD: registra informazioni relative al sistema remoto nel caso in cui il
servizio non si possa avviare. Solo alcuni servizi, quali login e finger, possono
usare questopzione (log_on_failure).
USERID: registra lutente remoto usando il metodo definito in RFC 1413 per tutti i
servizi stream multi-thread (log_on_failure e log_on_success).
Configurazione dei singoli servizi
Nella directory indicata dalla direttiva includedir vanno posti i file
di configurazione dei singoli servizi, le cui impostazioni andranno
eventualmente ad imporsi su quelle pi generiche.
Ad esempio se si vuole che xinetd controlli il servizio ftp si deve creare in
/etc/xinetd.d/ il file wu-ftp che avr la seguente struttura:
service ftp
{
socket_type = stream
wait = no
user = ftp
server = /usr/sbin/in.ftpd
server_args = -l -a
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
disable = yes
}
Impostazioni principali
Le modifice ai file di configurazione sono attive solo dopo aver riavviato
xinetd ed i servizi per cui abbiamo cambiato la configurazione
l'utilizzo di file diversi per ogni servizio peemette di cambiare il livello di
controllo su di un servizio indipendentemente dagli altri
Le principali propriet sono:
service ftp -> imposta il nome del servizio che si vuole configurare
socket_type -> specifica il tipo di socket utilizzato (stream/dgram)
user -> specifica con quali privilegi deve girare il servizio
server -> file binario del server
server_args -> argomenti passati al programma server
per_source -> numero massimo di connesioni da un singolo IP
max_load -> utilizzo max di CPU quando non si accettano altre
conness.
Controllo dell'accesso con xinetd
Oltre che sfruttare le restrizioni di accesso imposte dalle regole contenute
nei file hosts.allow/.deny si possono impostare delle regole di accesso
direttamente nei file di configurazione dei singoli servizi attraverso le
seguenti opzioni:
only_from: permette agli host specificati di usare il servizio.
no_access: impedisce a questi host di usare il servizio.
access_times: specifica la fascia oraria in cui un particolare servizio pu
essere utilizzato. La fascia oraria deve essere specificata nel formato
HH:MM-HH:MM e utilizzare le 24 ore della giornata.
Esempio di restrizione d'accesso e log
Combinando insieme il TCP-wrapper e xinetd si possono impostare delle
regole di controllo e notifica degli accessi molto flessibili.
service telnet{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
no_access = 141.250.7.100/200
log_on_success += PID HOST EXIT
access_times = 09:45-16:15
}
Quando ad es l'host 141.250.7.129 prova ad accedere in telnet riceve un messaggio
di Connection closed by foreign host e in /var/log/secure saranno appese:
May 19 19:35:47 serv xinetd[16188]: START: telnet pid=16191 from=141.250.7.129
May 19 19:38:49 serv xinetd[16252]: START: telnet pid=16256 from=141.250.7.129
May 19 19:38:49 serv xinetd[16256]: FAIL: telnet address from=141.250.7.129
May 19 19:38:49 serv xinetd[16252]: EXIT: telnet status=0 pid=16256
Redirezione e collegamento dei servizi
xinetd offre delle funzionalit molto avanzate per la gestione dei
servizi consentendo di impostare per la macchina server una
configurazione firewall-like attraverso le direttive:
bind: collega un servizio ad un determinato IP, ossia vengono accettate le
richieste per il servizio inoltrate solo a quel dato IP
Redirect: accetta come parametri o un hostname, o un IP seguiti o meno
da un numero di porta; le richieste per questo servizio saranno redirette verso
la posizione specificata.
Queste due opzioni possono essere definite separatamente per ogni servizio.
xinetd in grado di fare questo reindirizzamento creando sul server che ha
accolto la richiesta un processo che rimane attivo durante la connessione tra il
client e l'effettivo server trasferendo i dati tra i due sistemi a differenza del
processo wrapper
Esempio bind-redirect:
service telnet
{
socket_type = stream
wait = no
server = /usr/sbin/in.telnetd
log_on_success += DURATION USERID
log_on_failure += USERID
bind = 141.250.7.12
redirect = 141.250.5.100 21 23
}
xinetd-firewall
INTERNET
client
SERVER
telnet
h1 h2
141.250.7.12 : 20 141.250.5.100 : 20
Le richieste per telnet provenienti da internet
vengono reindirizzate al server sulla .5.100
mentre gli host che si trovano sulla rete 5
accedono direttamente al servizio.
Questo tipo di configurazione pu essere utile quando
pi di una machina condivide lo stesso accesso ad internet
tramite il NAT per poter configurare i servizi di rete su
macchine distinte.
141.250.5.13
141.250.5.110
141.250.5.111
Trips
Alcune semplici feature di xinetd consentono di prendere delle
precauzioni contro alcuni dei principali attacchi al sistema:
Port-Scanning: SENSORS
DoS: RESOURCES CONTROL
In particolare modo molto utile la capacit di poter aggiungere un client alla lista dei
no_access a runtime e di poter impostare dei limiti alle richieste di risorse da parte
dei client
Trips: SENSORI
Per evitare dei port-scanning basta definire dei sensori su dei servizi che non si
intende mantenere attivi sul server (telnet, rlogin, tftp,...) ed impostare sul
relativo file di configurazione le righe:
flags = SENSOR
deny_time = 20
disable = no
In questo modo al client che intende connettersi (verificare) alla porta telnet
verr rifiutata la connessione per i prossimi 20 minuti su tutte le porte!
Il campo deny_time pu anche valere FOREVER (non si potr pi
connettere fino al riavvio di xinetd) o NEVER (accetta la connessione e la
logga).
I SENSORS possono anche essere una via per un attacco di tipo DoS se
l'attacker falsifica l'IP di un host della rete all'atto della richiesta.
Non funziona con sthealth-scan (vengono modificati i flag SYN del dg)
Trips: limitare le risorse disponibili
Ci sono molte opzioni che permettono di impostare dei limiti per
le risorse impegnate dalle connesioni con i client, alcune sono:
cps = <number_of_connections> <wait_period>. Dictates the connections
allowed to the service per second. This directive accepts only integer values.
instances = <number_of_connections>. Dictates the total number of connections
allowed to a service. This directive accepts either an integer value or
UNLIMITED.
per_source = <number_of_connections>. Dictates the connections allowed to a
service by each host. This directive accepts either an integer value or
UNLIMITED.
rlimit_as = <number[K|M]>. Dictates the amount of memory address space the
service can occupy in kilobytes or megabytes. This directive accepts either an
integer value or UNLIMITED.
rlimit_cpu = <number_of_seconds>. Dictates the amount of time in seconds that
a service may occupy the CPU. This directive accepts either an integer value or
UNLIMITED.
Netfilter e iptables
Il Linux kernel dalla serie 2.4.x mette a disposizione un
potentissimo strumento per il controllo del traffico di pacchetti
nella rete a livello del kernel: NetFilter.
Il programma iptables fornisce una interfaccia a NetFilter, che comunque mette
a disposizione dei programmatori anche delle API ed stato progettato per
poter integrare moduli sviluppati ad-hoc per le proprie esigenze

I kernel della serie 2.2.x inegravano il packet
filtering attraverso ipchains che risultava
essere pi complesso nella implementazione e
meno potente e flessibile.
La filosofia dell'impostazione delle regole
rimasta comune a quella di ipchains, ossia si
basa sul concetto di CHAINS
stateful & stateless firewall
Uno dei cambiamenti principali rispetto al suo predecessore
quello che iptables non uno stateless firewall come era ipchains,
ma uno stateful firewall.
Stateless firewall: questa categoria di firewall controlla se un pacchetto
parte di una connessione esistente solo controllando i flag SYN senza
controllare la coerenza con altri pacchetti ricevuti prima
Statefull firewall: tiene traccia delle connessioni attraverso l'uso di tabelle di
stato delle richieste pendenti, pu quindi stabilire il contesto di un pacchetto.
E' possibile alterare i flag SYN,FIN, ... di un pacchetto facendolo sembrare
parte di una connessione esistente, ma uno stateful firewall in grado di
intercettare questo tipo di pacchetti controllandone il contesto e quidi
rifiutandoli (reject)
Contesto del pacchetto
NetFilter quindi in grado di stabilire se un pacchetto :
NEW: appart enent e ad una nuova connessione
ESTABLISHED: appart enet e ad una connessione esist ent e
RELATED: legat o in qualche modo ad una connessione esist ent e
INVALID: pacchet t o sospet t o non legat o a nessuna connessione
st abilit a
Tavole ...
Le regole di filtraggio vengono definite applicando degli elenchi di
regole (TABLES) con collegate un gruppo di catene (CHAINS) che
corrispondono alle operazioni da fare sul pacchetto appartenente.
Le TABLES sono:
filter:
t ab. di def aul t per l a gest ione dei paccht t i di ret e
nat:
alt era i paccht t i che creano una nuova connesi one, usat o per
cambi are i campi source e/ o dest i nat ion
mangle:
alt era pacchet t i speci f i ci modif i cando i f l ag IP
... e catene
filter:
INPUT:si applica a pacchetti ricevuti da una interfaccia di rete
OUTPUT:si applica ai pacchetti inviati mediante la stessa interfaccia in entrata
FORWARD:si applica ai pacchetti ricevuti su una interfaccia ed inviati su un'altra
nat:
PREROUTING:si applica ai pacchetti ricevuti da una interfaccia di rete al loro arrivo
OUTPUT:altera i pacchetti generati in locale prima di essere instradati su una NIC
POSTROUTING:altera i pacchetti generati in locale prima di inviarli da una NIC
mangle:
PREROUTING:altera i pacchetti ricevuti attraverso uninterfaccia di rete prima
che vengano instradati.
OUTPUT:altera i pacchetti generati in locale prima che vengano instradati attraverso
uninterfaccia di rete
Elaborazione dei pacchetti
Ogni pacchetto di rete ricevuto o da inviare viene viene elaborato da almeno
una tabella e viene confrontato con una serie di regole contenute nelle tabelle.
Quando il paccheto soddisfa una determinata regola gli viene attribuito un
target i principali sono:
ACCEPT il pckt salta i successivi controlli e viene subito instradato
REJECT il pckt viene rifiutato e al mittente viene mandato un mess. di
errore
DROP il pckt viene scartato senza nessuna notifica al mittente
Ogni catena ha una policy di default per gestire i pacchetti, tale policy viene
seguita se il pckt non soddisfa nessuna regola
Per impostare gli elenchi di regole si usa il comando iptables utile anche
per definire nuove catene particolari
Network Address Translation
Il Network Address Translation consente di modificare le
informazioni di indirizzamento dei pacchetti di rete mentre sono in
transito.
La metodologia di funzionamento pi comune quella di IP-
MASQUERADING che consente di utilizzare un singolo IP privato
per affacciare una intera sottorete all'esterno (internet).
NAT: realtime translation
L'host che funge da Masquerading-Router opera una traslazione a tempo
reale degli indirizzi e delle porte:
quando riceve un datagramma dalla LAN interna, prende nota del tipo di
datagramma (TCP,UDP,ICMP,...) ricevuto
modifica l'header in modo che sembri provenire da se stesso (e memorizza
tale operazione)
instrada il pacchetto modificato verso l'interfaccia esterna.
Quando l'host remoto riceve il pacchetto crede che provenga dal router
e a lui rispedisce le risposte
quando il M-R riceve datagrammi dall'iterfaccia esterna controlla la sua tavola
delle connessioni mascherate per vedere se quel datagramma appartiene a
connessioni verso un host della LAN
se cos lo modifica e lo indirizza all'host sulla LAN
iptables
Un comando per la configurazione di iptables po essere di
lunghezza e complessit molto varie, ma la sua struttura base la
seguente:
iptables [-t < nome_t ab> ] < comando> < nome_cat > < par amet r o> < opzi one>
...
L'opzione -t permette di specificare una tabella diversa da quella di default alle
catene della quale aggiungere o modificare delle regole.
L'utilizzo di alcuni comandi ed alcune opzioni impone di dover specificare
ulteriori opzioni e parametri, affinch una regola sia valida tutte le opzioni
richieste devono essere ben specificate.
Il comando iptables -h visualizza un elenco esauriente di tutte le possibili
opzioni.
iptables: i comandi (1)
Per ogni stringa di comando iptables possibile specificare un
solo comando contraddistinto dalla lettera maiuscola.
I comandi iptables sono:
-A: aggiunge la regola di iptables alla fine della catena specificata.
-C: verifica una particolare regola prima di aggiungerla alla catena specificata dallutente.
-D: cancella una regola da una determinata catena in base al numero (per esempio il 5 per
cancellare la quinta regola contenuta nella catena). Potete anche digitare lintera regola e
iptables canceller la regola nella catena corrispondente.
-E: rinomina una catena definita dallutente.
-F: svuota la catena selezionata, cancellando di fatto tutte le regole in essa contenute. Se
non viene specificata alcuna catena, questo comando cancella tutte le regole di ogni catena.
-I: inserisce una nuova regola in un determinato punto di una catena. Assegnando un
numero alla regola da inserire, indicherete a iptables di collocarla nella posizione
corrispondente. Se non specificate alcun numero, iptables inserir il vostro comando allinizio
dellelenco.
iptables: i comandi (2)
-L: elenca tutte le regole contenute nella catena specificata dopo il comando. La sintassi :
iptables -L <nome-catena> -t <nome-tabella>
-N: crea una nuova catena con un nome specificato dallutente.
-P: imposta la policy di default per una determinata catena: se un pacchetto arriva alla fine di
una catena e nessuna delle regole soddisfatta, la policy di default fa in modo che gli
venga attribuito un particolare target, per esempio ACCEPT o DROP.
-R: sostituisce una regola presente in una certa posizione di una catena indicata da un
numero che segue il comando.
-X: cancella una catena specificata dallutente. In nessun caso permesso cancellare una
catena integrata di una tabella.
-Z: azzera i contatori dei byte e dei pacchetti in tutte le catene di una determinata tabella.
iptables: le opzioni
Queste sono le principali opzioni per definire le regole:
-c: azzera i contatori per una particolare regola.
-d: imposta lhost, lindirizzo IP o la rete di destinazione del pacchetto che soddisfer la regola.
-i: serve per impostare linterfaccia di rete per i pacchetti in ingresso (per esempio eth0 o
ppp0), da utilizzare con una particolare regola (solo per le catene INPUT e FORWARD nella
tabella filter e con la catena PREROUTING nat e mangle).
Questo parametro presenta varie opzioni molto utili, che si possono anteporre al nome di uninterfaccia:
! -> indica al parametro di "non corrispondere", ovvero fa in modo che tutte le interfacce cos specificate
vengano escluse da questa regola.
+ -> serve per indicare tutte le interfacce che corrispondono a una determinata stringa.
Per esempio: -i eth+, tutte le ethernet eth0, eth1, ...
-j: indica a iptables di saltare direttamente a un particolare target (ACCEPT, DROP, QUEUE,
RETURN, ...)
-o: serve per impostare linterfaccia di rete per i pacchetti in uscita, da utilizzare con un
regola (solo con le catene OUTPUT e FORWARD nella tabella filter e con la catena
POSTROUTING nelle tabelle nat e mangle)
-p: imposta il protocollo IP per la regola (tcp icmp, udp, ..., all).
-s: imposta lindirizzo sorgente per un particolare pacchetto.
iptables: i moduli
Utilizzando l'opzione -m <nome_modulo> possibile utilizzare dei moduli
aggiuntivi per definire delle regole in base ad altri paramteri. Di default
sono disponibili un gran numero di moduli aggiuntivi, ma anche
possibile sviluppare dei moduli personaliizzati.
Oltre ai moduli principali, quali quelli che includono opzioni per i vari
protocolli, sono interessanti i moduli:
limit: permette di porre dei limiti sul numero di pacchetti da controllare
(evitando ad esempio di riempire lo spazio disco in /var/log/)
state: consente di impostare delle regole in base allo stato di un
pacchetto (new, established, related, invalid)
mac: permette di controllare l'indirizzo mac di provenienza
iptables: le opzioni estese del TCP (-p tcp)
Di seguito sono invece riportate delle opzioni relative al protocollo TCP:
--dport: definisce la porta di destinazione per il pacchetto (accetta il nome di un
servizio, un numero di porta od un range di num. di porta; si pu
usare la flag '!').
--sport: determina la porta sorgente del pacchetto(si pu anche usare source-
port con le stesse opzioni).
--syn : rende la regola applicabile a tutti i pacchetti TCP adibiti allapertura di
una connessione (pi noti come pacchetti SYN).
--tcp-flags mask comp : mask una lista separata da virgole che indica quali
flag devono essere esaminati; comp indica quali flag devono essere
settati affinch il pacchetto rispetti la regola.
Es:
--tcp-flags ACK,SYN,FIN,URG FIN considera solo i pacchetti con il flag
FIN settato
--tcp-option: cerca la corrispondenza con un particolare pacchetto in cui sono
impostate delle opzioni TCP specifiche.
iptables: i target
Dopo che un pacchetto ha soddisfatto una determinata regola gli si
attribuisce un target in base al quale possibile scegliere cosa fare con
quel pacchetto. Eccone alcuni:
ACCEPT: accetta il pacchetto e lo fa uscire dalla catena
REJECT: rifiuta il pacchetto e manda una risposta al client
DROP: rifiuta il pacchetto senza risposta al client
DNAT: il pacchetto mandato al Destination Address Translation
SNAT: il pacchetto mandato al Source Address Translation
MASQUERADE: come SNAT ma non richiede l'opzione to-source,
l'indirizzo preso automaticamente
REDIRECT: consente di reindirizzare i pacchetti cambiando il
destinatario ad esempio per quei pacchetti inoltrati sulla rete
verso un servizo, in modo da implementare un transparent-
proxy
LOG: le informazioni sul pacchetto vengono inviate al syslogd o su un
file in user-space (ULOG)
RETURN: l'attraversamento della catena viene interrotto e si riprende dal
livello pi alto
iptables: esempio conf. FILTER
Configurazione di base:
# ripuliamo la catena FORWARD ed impostiamo il default a
# deny, ogni pacchetto proveniente dall'esterno cancellato
iptables -F FORWARD
iptables -P FORWARD deny
iptables -A INPUT -i eth1 -j drop
# accettiamo in input le connessioni ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# evitiamo lo spoofing
iptables -A input FORWARD -i eth1 -s 141.250.5.0/24 -j drop
# blocchiamo il traffico in uscita per il p2p
iptables -A OUTPUT -p tcp sport 6699 -j REJECT
# eliminiamo i pacchetti che non sono collegati o
# apparteneti a connessioni esistenti
iptables -A FORWARD -m state -state ESTABLISHED,RELATED -j/
ACCEPT
...
iptables: esempio conf. DNAT - SNAT
# tutti i pacchetti uscenti dalla eth1 prendono l'IP del firewall
iptables -t nat -A POSTROUTING -o eth1 -j snat to-source 141.250.7.155
#tutte le richieste http vengono dirottate trasparentemente a web-server
iptables -t nat -A PREROUTING -i eth0 -d 141.250.7.155 -p tcp dport 80 -j
dnat to-destination 141.250.5.5
#redirezione di porta (transparent-proxy)
iptables -t nat PREROUTING -p tcp dport 80 -j REDIRECT -to-ports 8080
INTERNET
eth1: 141.250.7.155
eth0: 141.250.5.5
eth1: 141.250.5.101
Web Server
iptables: esempio conf. IP MASQUERADING
INTERNET
H1
ppp0: 141.250.7.155
eth0: 192.168.10.02
eth1: 192.168.10.12
# gli indirizzi della rete privata vengono
mascherati # automaticamente senza specificarli con
--to-source
iptables -t nat -P POSTROUTING DROP
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Monitoring e IDS
Per garantire la sicurezza, l'affidabilit e l'integrita di una rete
indispensabile effettuare un monitoraggio continuo utilizzando dei
Sistemi di Intercettazione delle Intrusioni (Intrusion Detecting
Syistem).
Esistono due categorie principali di IDS:
Host-based IDS
Network-based IDS
Host-based IDS
I compiti fondamentali di un hb-IDS sono:
Verificare periodicamnte i log dei servizi di rete (TCP-wrapper) e di
sistema
semplici editor di testi
strumenti evoluti con opzioni di filtraggio avanzate (SWATCH)
Verificare l'integrit dei dati e dei filesystem
diff
rpm -V
md5sum (Tripwire,LIDS)

Network-based IDS
Un nb-IDS ha il compito di scandire tutto il traffico di rete alla
ricerca di pacchetti sospetti e segnalarli assegnando in modo
automatico un livello di pericolo in base a database di attacchi
conosciuti.
Generalmente questo tipo di IDS lavorano impostando in modalit
promisqua l'interfaccia di rete.
Alcuni degli strumenti pi diffusi sono:
tcpdump
snort
Nmap
etheral

nmap
Nmap un port-scanner che supporta molti tipi di scansione,
ognuno con svariate opzioni e permette quindi di individuare quali
sono i punti deboli della rete. Alcuni tipi di scansione sono:
-sS TCP SYN scan: viene mandato un pacchetto SYN come se si volesse
instaurare una nuova connessione, se si riceve un RST la conn. rifiutata, se si
riceve un SYN ACK la porta aperta e si manda un RST.
-sF Stealth FIN: vine mandato un pacchetto FIN per aggirare eventuali
firewall
-sA ACK scan: utile per capire se c' un firewall a protezione della rete e
come sono impostate alcune regole
nmapfe
Esercizio
Configurare i firewall di una rete aziendale che prevede le seguenti
componenti insieme all'utilizzo di una DMZ:
server web ftp con accesso da internet
server web per applicativi aziendali
server mail
diversi host della rete interna che usufruiscono di:
file sharing NFS
accesso tramite SSH
accesso ad internet
servizio ftp aziendale
mail aziendale
accesso al serwer web per applicativi aziendali