|
7.1
Firewall
Il firewall è uno strumento hardware e/o
software mirato a filtrare tutto quello che entra ed esce da una rete
secondo un insieme di regole dette "regole". In parole povere
il firewall è un semplice filtro. Esistono diversi tipi di
firewall in commercio dai meno costosi come un firewall Linux a quelli
dispendiosi come i firewall hardware pix di Cisco Systems. I firewall
sostanzialmente si dividono in due categorie: proxy e packet
filtering.
Il firewall di tipo proxy è implementato a livello applicazione
dello standard ISO/OSI. Il firewall di tipo packet filtering è
implementato a livello di trasporto dei pacchetti dello standard ISO/OSI.
Il kernel Linux può essere configurato come un packet filtering, un
proxy o entrambi. Un pacchetto che permette a Linux di essere un
firewalling proxy è squid. Lo squid riceve tutte le richieste
web e ftp da parte dei client sulla rete lan e provvede personalmente
a reperire le informazioni richieste in internet per poi consegnarle
ai client, impedendo a questi di venire in contatto diretto con la
rete globale internet.
Il pacchetto che permette di comportarsi come packet filtering è,
invece, Netfilter noto anche come come iptables. In
merito al comportamento di Linux come packet filtering è necessario
sottolineare che con l’avvento del nuovo kernel 2.4.x è stato creato
il pacchetto iptables ma col vecchio kernel 2.2.x viene utilizzato il
comando ipchains. La tipologia di funzionamento di ipchains e
iptables è differente, quindi gli script creati ad hoc per una delle
due tipologie diventa incompatibile con l’altra. Entrambe le tipologie
mirano, però, alla creazione di un insieme di regole che permettono di
filtrare tutto il traffico che passa in entrata o in uscita da un
determinato punto della rete. Questo punto, tipicamente, è
rappresentato dal server di routing, ossia dal calcolatore che
ha il compito di instradare i pacchetti dalla rete privata alla rete
globale internet e viceversa.
7.2 Tcp-wrapper
Il demone TCPD, chiamato anche tcp wrapper, è
utilizzato per agevolare l’accesso dei client ai servizi internet come
telnet, ftp, finger ecc. Questo demone usa due file di configurazione
per stabilire chi ha il permesso per utilizzare un determinato
servizio internet. Il primo file di configurazione e’ /etc/hosts.allow
che serve per definire chi e’ abilitato all’uso di un determinato
servizio internet.
Questo file è strutturato in tre campi separati ognuno dal
carattere ":". Facciamo un esempio:
in.ftpd:192.168.0.15:allow
in.telnetd:192.168.0.0/255.255.255.0:allow
in.fingerd:*.madeinlinux.com:allow
Nell’esempio il servizio internet ftp rappresentato dalla stringa
in.ftpd, è concesso al calcolatore con indirizzo IP
192.168.0.15 tramite la parola chiave allow. Il servizio telnet
è concesso a tutti i client della rete di classe C 192.168.0 ed il
servizio finger a tutti i client del dominio madeinlinux.com.
Il secondo file di configurazione è /etc/hosts.deny che
serve per definire chi non è abilitato all’uso di un determinato
servizio internet. Questo file è strutturato in tre campi separati
ognuno dal carattere ":". Ad esempio:
in.ftpd:192.168.0.0/255.255.255.0:deny
in.telnetd:192.168.0.40:deny
in.finger:*.madeinlinux.com: deny
in.rlogind:*.ideainformatica.com
EXCEPT 192.168.0.18:deny
Nell’esempio il servizio internet ftp rappresentato dalla stringa
in.ftpd, è negato a tutti i client della rete di classe C
192.168.0 tramite la parola chiave deny. Il servizio telnet è
negato al calcolatore con indirizzo IP 192.168.0.40. Il servizio
finger è negato a tutti i client del dominio madeinlinux.com. Il
servizio rlogin è negato a tutti i client del dominio ideainformatica
ad eccezione del calcolatore con indirizzo IP 192.168.0.18 grazie alla
parola chiave EXCEPT. Modificati i files hosts.allow ed
hosts.deny è necessario che il tcpd rilegga la nuova
configurazione tramite il comando:
\# killall -HUP inetd
La definizione del servizio Internet tramite il demone tcpd è nel
file /etc/inetd.conf appartenente al superdemone inetd;
quindi per fare in modo che il tcpd si aggiorni con la nuova
configurazione è necessario che venga riletta la definizione dei
servizio Internet da parta di inetd.
7.3 Port
scanning, sniffer e cracking di password
La sicurezza informatica è un aspetto che al giorno d’oggi assume
una importanza fondamentale per garantire l’integrità di un sistema
informatico aziendale. In internet sono reperibili gratuitamente una
serie di utility che permettono di pesare il grado di sicurezza di una
generica rete.
7.3.1 Nmap
Nmap è una di queste utility: essa permette di visionare i servizi
che girano su un generico calcolatore dando indicazione delle porte di
comunicazione impiegate tramite un processo di scansione delle porte.
nmap deve essere utilizzato dagli amministratori di sistema per
cercare vulnerabilità sulle proprie macchine. La scansione di reti è
un’attività ai limiti della legittimità e per questo motivo bisogna
essere autorizzati a farlo. Un esempio dell’utilizzo di nmap è
nell’effettuare la scansione di porte di un indirizzo IP (ad esempio
192.168.10.22 della intranet di Madeinlinux):
nmap -v -sS -O 192.168.10.22
Adding open port 21/tcp
Adding open port 443/tcp
Adding open port 22/tcp
Adding open port 25/tcp
Adding open port 80/tcp
Adding open port 110/tcp
Adding open port 873/tcp
Da questo tipo di analisi è facile capire quali sono i servizi base
che sono utilizzati, ossia il servizio ftp che lavoro sulla porta 21,
il servizio pop3 che lavora sulla porta 110, il servizio smtp che
lavora sulla 25, il servizio ssh che lavora sulla 22, il servizio http
che lavora sulla porta 80, il servizio https che lavora sulla 443 ed
altri due servizi che usano rispettivamente la porta 110 e la porta
873. Tutti questi servizi usano il protocollo tcp. Nmap effettua la
scansione di porte usando una serie di modalità. L’esempio precedente
usa la modalità tcp syn stealth grazie al flag -sS. Una
scansione effettuata con questa modalità non è rilevabile se non con
l’uso di particolari tools come scanlogd. Potete scaricare Nmap
direttamente dal nostro sito a questi link:
7.3.2 Tcpdump
Tcpdump è una utility che analizza le intestazioni dei pacchetti
che passano da una scheda di rete. Un esempio dell’uso di tcpdump è il
seguente:
\# tcpdump -i eth0
Col flag -i si specifica l’interfaccia di rete sulla quale
sono analizzati tutti i pacchetti: in questo caso il device è eth0.
7.3.3 Ethereal
Ethereal è una utility che analizza i protocolli di rete, ossia è uno
sniffer. Questa utility si appoggia ad un'altra serie di tools
come tcpdump per poter svolgere una analisi accurata della rete. Un
esempio dell’uso di ethereal è il seguente:
\# ethereal -i eth0
Col flag -i si specifica l’interfaccia di rete sulla quale
sono analizzati tutti i pacchetti, in questo caso il device è eth0. Il
risultato a video e’ il seguente:
gp1 -> ns.dnet.it DNS Standard
query PTR 94.0.10.10.in-addr.arpa ns.dnet.it -> gp1 DNS Standard
query response, No such name gp1 -> ns.dnet.it DNS Standard query
PTR 254.0.10.10.in-addr.arpa ns.dnet.it -> gp1 DNS Standard query
response, No such name gp1 -> ns.dnet.it DNS Standard query PTR
2.192.242.194.in-addr.arpa
Quello che si intuisce è che è stata effettuata una richiesta al
servizo internet DNS. Ethereal è molto simile al tcpdump, ma con
qualche particolarità in più.
7.3.4 John the ripper
John the ripper è una utility che permette di effettuare il crack
delle password del file che ospita le password criptate. Nei sistemi
GNU/Linux il file delle password criptate è /etc/shadow, nel
caso sia implementato il meccanismo delle shadow, ed usa un algoritmo
di tipo DES. Prima di procedere ad un esempio è bene effettuare
una copia di sicurezza del file delle password criptate tramite il
seguente comando:
\# cp /etc/shadow /etc/shadow.originale
Un esempio dell’uso di John the ripper è il seguente:
john -single /etc/shadow
Il risultato a video è il seguente:
Loaded 4 password with 4
differents sales (FreeBSD MD5 [32/32])
pippo (pippo)
oracle (oracle) guesses: 2 time 0:00:00:02 100% c/s: 2601 trying:999991969
E’ evidente che l’utility è riuscita a decriptare le password degli
utenti "pippo" ed "oracle" che, per esempio pratico, sono state poste
uguali al nome utente. La password è racchiusa tra le due parentesi
tonde. Per l’utente root è stata utilizzata una password molto lunga
composta da caratteri numerici ed alfanumeirci e come si nota l’utility
non è riuscita a scoprirla. John the ripper usa un dizionario delle
password con il quale effettua il confronto con la password criptata
contenuta in questo caso nel file /etc/shadow. E’ buona norma per un
amministratore di sistema impostare un livello di sicurezza delle
password che garantisca un minimo di protezione contro queste utility.
|