È possibile ottimizzare un sistema Linux per la sua implementazione come firewall o IDS (Intrusion Detection System) in un nodo di una LAN. tuttavia si ricorda che le soluzioni più professionali sono quelle costituite da hardware dedicato (anche molti dei router in commercio incorporano tali funzioni e sono in grado di assicurare una maggiore efficienza del servizio).
In una rete informatica, le informazioni scambiate possono essere di varia natura e non sempre si vuole che un dato nodo renda disponibili in lettura queste informazioni (o ne riceva altre) agli altri nodi della rete.
Firewall
Un firewall è un sistema che consente di filtrare le informazioni scambiate tra due reti. Il suo compito è quello di filtrare le informazioni uscenti ed entranti da o verso un nodo, stabilendo quali informazioni vengono accettate da quali nodi e quali informazioni condividere con altri nodi della rete.
Tale filtro opera su ogni pacchetto di dati in ingresso o uscita da un dato sistema, mediante l'applicazione di regole specifiche su cosa far passare e cosa escludere. Pertanto il compito dell'utente amministratore consiste nello stabilire delle regole di filtraggio, in base, ad esempio, a criteri di sicurezza.
IDS
Un IDS, o sistema anti-intrusione, è un sistema in grado di ispezionare tutti i pacchetti che transitano per un dato sistema (sfruttando lo stack TCP-IP) e selezionare quelli potenzialmente sospetti in base ad un insieme di regole stabilite internamente al software. Il programma più comunemente diffuso in Linux è snort.
Tale sistema IDS avverte l'amministratore dell' host (sistema residente in un nodo della rete) degli eventuali tentativi di intrusione in una rete. Questo ha infatti l'abilità di catturare tutti i pacchetti che transitano attraverso un'interfaccia di rete, o che sono a questa destinati. Questa modalità viene chiamata promiscua e consente di rilevare i tentativi di intrusione su tutto il perimetro che delimita la LAN. Pertanto se un host viene violato, l'IDS rileva tale violazione registrandola in un file di log (/var/log/snort/alert).
Cosa configurare
Le regole dei filtri possono basarsi su:
*
Indirizzo IP del mittente
*
Indirizzo IP del destinatario
*
Porta sorgente
*
Porta di destinazione
*
Flags
*
Interfaccia di ingresso del pacchetto
*
Interfaccia di uscita del pacchetto
Tipi di firewall:
*
Packet filter: lavora a livello 3 modello OSI (network)
*
Proxy firewall: lavora a livello 7 modello OSI (application)
In questa sede ci si occuperà della tipologia packet filter.
Strategie di base
Cosa serve per costruire un sistema di difesa:
*
Fare un elenco completo dei servizi che devono essere accessibili dalla rete.
*
Fare un elenco di situazioni particolari.
La migliore strategia di difesa è:
*
Bloccare tutti i pacchetti che non siano diretti verso servizi pubblici.
Installazione e configurazione dell'IDS
Per installare il software IDS, aprire un terminale e al prompt dei comandi digitare:
sudo apt-get install snort
questo installerà i pacchetti necessari per il servizio anti-intrusione.
Alla fine dell'installazione del pacchetto snort, verrà avviato il sistema anti-intrusione nella sua configurazione predefinita.
Durante la configurazione di snort è necessario rispondere alle seguenti richieste di informazione:
*
quale sia l'interfaccia di rete in ascolto (eth0 per host con un'interfaccia di rete locale)
*
quale rete considerare trusted (ovvero fidata). In caso di dubbio, immettere «any» , in tal modo il servizio IDS considererà come sospetti anche i pacchetti provenienti dall'interno della LAN.
*
a chi indirizzare i report dell'IDS via email (di norma dovrebbe essere l'utente root)
A questo punto il sistema IDS è configurato e perfettamente funzionante. Per configurare correttamente il firewall passare al paragrafo successivo.
Abilitazione del firewall
Non è necessario installare sul sistema pacchetti specifici poiché il cuore stesso del firewall è il pacchetto iptables, che è parte integrante del kernel di ogni sistema Linux. Tuttavia è bene conoscere quali moduli caricare nel kernel, affinché vengano abilitate le funzionalità di firewalling con iptables.
Come impostare un firewall in modo semplice e veloce
Seguite la guida per Firestarter
Moduli da caricare nel kernel
*
IP: advanced router
*
IP: policy routing
*
IP: netfilter
*
IP: TCP syncookie support
*
Connection tracking
*
IP tables support
*
Netfilter MARK match support
*
Connection state match support
*
Packet filtering
*
Full NAT
*
Packet mangling
I seguenti sono i nomi dei moduli da caricare manualmente nel kernel utilizzando il comando modprobe:
*
Ip_tables
*
Iptable_nat
*
Ip_conntrack
*
Ip_conntrack_ftp
*
Ip_nat_ftp
*
Ipt_MASQUERADE
Configurazione del firewall con iptables
Il comando principale per la configurazione del vostro firewall è iptables.
La struttura di un comando iptables è la seguente:
iptables -t table command chain rule-specification [options]
Per esaminare le regole presenti sul proprio sistema utilizzare l'opzione -L come segue:
sudo iptables -L
comparirà l'elenco delle regole del vostro firewall.
Fare attenzione alle policy di ogni regola (le catene di default sono 3 , INPUT, FORWARD e OUTPUT corrispondenti ai 3 flussi di dati in ingresso, attraverso e in uscita dal sistema). Se il sistema non ha firewall, le policy dovrebbero essere impostate su ACCEPT (ovvero che tutto il traffico è permesso da, verso e attraverso il sistema).
Un'altra opzione utile è -F:
sudo iptables -F
che azzera tutte le regole presenti nel firewall , anche se non reimposta al valore di default le policy (pertanto se la vostra policy è DROP resterà DROP anche dopo l'applicazione del comando).
Comandi e opzioni di iptables
*
Comandi di iptables:
-A: append
-D: delete
-C: check
-I: insert
-R: replace
-F: flush
-L: list
-N: new
-X: erase user-defined chain
-P: policy
-E: chain renaming
-h: help
*
Opzioni di iptables:
-p protocol
-s address
-d address
-i inputinterfacename
-o outputinterfacename
-j target (ACCEPT,DROP.QUEUE,RETURN)
-v
--sport
--dport
--tcp-flags
--syn
--icmp-type ICMP type
--mac-source mac-address
--limit rate
--limit-burst number
--port
--state state
--tos tos
*
Iptables targets:
MARK
LOG
REJECT
TOS
MIRROR
SNAT
DNAT
MASQUERADE
REDIRECT
Esempio di configurazione di un firewall
A questo punto si esaminano le regole di un semplice firewall.
*
Le regole richieste sono le seguenti:
Rete interna : 209.191.169.128/25
Rete esterna : 209.191.169.0/25
Bastion host : foo con eth0 (209.191.169.1) e eth1(209.191.169.129)
*
Progettazione :
Criterio predefinito: DENY
Anonymous FTP: interno (port forward attraverso firewall verso 209.191.169.135)
http: interno (port forward attraverso firewall verso 209.191.169.136 alla porta 8080 https sulla porta 443 non viene offerto)
Ssh: rifiuto e logging di telnet
Smtp: interno (port forward attraverso firewall verso 209.191.169.137)
Popd: interno (port forward attraverso firewall verso 209.191.169.137)
DNS: solo interno
nntp: no accesso dall'interno
Ping in ingresso eliminato
*
Implementazione dei criteri:
o
Esame regole esistenti e reset. I comandi da eseguire come root sono i seguenti
iptables -F
iptables -t mangle -F
iptables -t nat -F
iptables -X
iptables -t mangle -X
iptables -t nat -X
o
Per effettuare il blocco del ping in ingresso vengono eseguiti i comandi:
iptables -N scans
iptables -A scans -m state -state INVALID -j DROP
iptables -A scans -m unclean -j DROP
iptables -A scans -p icmp -icmp-type echo-request -i eth1 -j DROP
iptables -A INPUT -j scans
iptables -A FORWARD -j scans
o
Passare traffico dall'interno all'esterno:
iptables -N passthis
iptables -N blockthis
iptables -A passthis -s 209.191.169.1/25 -p icmp -i eth0 -j ACCEPT
iptables -A passthis -s 209.191.169.1/25 -p tcp -sport ! 119 -d 0/0 -i eth0 -j ACCEPT
iptables -A blockthis -s 209.191.169.1/25 -p tcp -sport 119 -j REJECT -reject-with-icmp-port-unreachable
iptables -A FORWARD -j passthis
iptables -A OUTPUT -j passthis
o
Blocco servizi telnet e imap:
iptables -A blockthis -i eth1 -s 0/0 -d 209.191.169.1/25 -p tcp -sport 23 -j DROP
iptables -A blockthis -i eht1 -s 0/0 -d 209.191.169.1/25 -p tcp -sport imap -j DROP
iptables -A FORWARD -j blockthis
o
Accetta DNS, ssh:
iptables -I passthis 1 -m state -state ESTABLISHED,RELATED -j ACCEPT
iptables -A passthis -i eht0 -p tcp -s 209.191.169.1/25 -d 0/0 -dport domain -j ACCEPT
iptables -A passthis -i eth0 -p udp -s 209.191.169.1/25 -d 0/0 -dport domain -j ACCEPT
iptables -N passthisin
iptables -I passthisin blockthis
iptables -A passthisin -p tcp -dport 22 -j ACCEPT
iptables -A blockthis -i eht1 -p tcp -dport 6000:6010 -j DROP
iptables -A blockthis -i eht1 -p udp -dport 111 -j DROP
iptables -A passthis -p tcp -m multiport -dport 25,110 -i !eth1 -j ACCEPT
o
Criteri predefinit per DROP:
iptables -P FORWARD DROP
iptables -P INPUT DROP
o
Inoltro traffico a server mail e http:
iptables -t nat -A PREROUTING -p tcp -dport 21 -j DNAT -to-destination 209.191.169.135
iptables -t nat -A PREROUTING -p tcp -dport 80 -j DNAT -to-destination 209.191.169.136:8080
iptables -t nat -A PREROUTING -m multiport -p tcp -dport 25,110 -j DNAT -to-destination 209.191.169.137
Ottimizzazioni
*
Minimo ritardo per traffico http, telnet e ssh:
iptables -t mangle -A PREROUTING -m multiport -p tcp -dport 80,23,22 -j TOS -set-tos 16
iptables -t mangle -A PREROUTING -m multiport -p tcp -sport 80,23,22 -j TOS -set-tos 16
*
Massima velocità trasmissione per FTP:
iptables -t mangle -A PREROUTING -p tcp -dport ftp-data -j TOS -set-tos 8
*
Massima affidabilità per SMTP:
iptables -t mangle -A PREROUTING -p tcp -dport smtp -j TOS -set-tos 4
*
Minimo costo per pop3:
iptables -t mangle -A PREROUTING -p tcp -dport 110 -j TOS -set-tos 2
*
Anti-spoofing rules:
iptables -I FORWARD -i eth1 -s 192.168.0.0/24 -j DROP
iptables -I FORWARD -i eht1 -s 127.0.0.0/8 -j DROP
iptables -I INPUT -i ! Lo -s 127.0.0.1 -j DROP
*
È necessario abilitare il forwarding altrimenti niente potrà passare attraverso il firewall. Per farlo usare i seguenti comandi:
Echo 1 > /proc/sys/net/ipv4/ip_forward
Echo 1 > /proc/sys/net/ipv4/conf/rp_filter/all
Traduzione e mascheramento indirizzi LAN
Gli hosts di una LAN possono navigare in Internet pur avendo indirizzi IP privati (ovvero non ufficialmente validi nella rete mondiale).
Questo è possibile attraverso il meccanismo di natting , ovvero di traduzione degli indirizzi degli hosts privati in un indirizzo IP pubblico, e precisamente quello dell'host che fa da gateway verso Internet per la vostra LAN.
Il "natting" interviene anche quando un server Web aziendale debba essere visibile e raggiungibile anche da Internet pur stando su LAN (ed avendo pertanto indirizzo IP privato). L'indirizzo IP del destinatario viene modificato da quello del gateway a quello (privato) del server Web interno alla LAN.
Il primo meccanismo prende il nome di SNAT ( Source Network Address Translation , ovvero traduzione degli indirizzi dei mittenti), mentre il secondo prende il nome di DNAT (Destination NAT , oovvero traduzione degli indirizzi dei destinatari).
SNAT
Problema: è necessario fare in modo che tutto il traffico della LAN sembri originato dall'interfaccia eth0 dell'host con indirizzo IP 209.127.112.150.
Il comando da eseguire per effettuare il SNAT è:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT -- to 209.127.112.150
Tutto il traffico proveniente dalla intranet appare agli hosts su Internet come generato dall'IP 209.127.112.150
Quando si esegue il SNAT va utilizzata la chain POSTROUTING (il pacchetto viene modificato dopo essere stato processato dal kernel).
DNAT
Problema: è necessario fare in modo che tutti i pacchetti indirizzati verso la porta 80 del gateway vengano reindirizzati al server Web interno alla LAN (indirizzo IP 192.168.0.2).
Il comando da eseguire per effettuare il DNAT è:
iptables -t NAT -A PREROUTING -p tcp -dport 80 -i eth0 -j DNAT - - to 192.168.0.2:80
Tutto il traffico in ingresso verso la LAN diretto sulla porta 80 appare come generato dalla porta 80 dell'IP 192.168.0.2
In caso di DNAT è necessario applicare sempre la chain PREROUTING (il pacchetto viene modificato prima di venire processato dal kernel).
IP masquerading
L'IP masquerading è un sistema che permette agli hosts di una LAN di navigare in Internet attraverso la traduzione del loro indirizzo IP privato in quello pubblico del gateway.
E' pertanto un caso particolare di SNAT:
iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0 -s 192.168.0.0/24 -d 0/0
Questo comando dice al firewall di mascherare l'IP del mittente (host appartenenti alla subnet 192.168.0.0/24) con quello del gateway per tutto il traffico diretto all'esterno che passa attraverso l'interfaccia esterna del gateway (indicata qui con ppp0, ovvero un modem ADSL).
martedì 5 febbraio 2008
Abilitare un firewall su linux
Pubblicato da
neehoh
a
3:04:00 PM
0
commenti
mercoledì 5 dicembre 2007
domenica 19 agosto 2007
Anonimato in rete e hidden service
Una rete publica, anche se, ancora sperimentale può fornire un anonimato in rete, cioè non si lascia ip a tutti coloro che sono a caccia di dati, molte volte per fini di marketing; con Tor e Privoxy questo viene eliminato. Ed inoltre si può accedere ai cosidetti hidden service della rete. Ciao a presto
Pubblicato da
neehoh
a
6:57:00 PM
0
commenti
mercoledì 1 agosto 2007
preferenze musicali
Adoro Fabrizo De Andrè, l'acid jazz e naturalmente il blues.
La musica è la colonna sonora della nostra vita, dei nostri ricordi.
Pubblicato da
neehoh
a
9:59:00 PM
0
commenti
lunedì 30 luglio 2007
COPYLEFT
L'espressione inglese copyleft, gioco di parole su copyright, individua un modello alternativo di gestione dei diritti d'autore basato su un sistema di licenze attraverso le quali l'autore (in quanto detentore originario dei diritti sull'opera) indica ai fruitori dell'opera che essa può essere utilizzata, diffusa e spesso anche modificata liberamente, pur nel rispetto di alcune condizioni essenziali. Nella versione pura e originaria del copyleft (cioè quella riferita nell'ambito informatico) la condizione principale obbliga i fruitori dell'opera a rilasciare eventuali modifiche apportate all'opera a loro volta sotto lo stesso regime giuridico (e generalmente sotto la stessa licenza). In questo modo, il regime di copyleft e tutto il fascio di libertà da esso derivanti sono sempre garantiti
Pubblicato da
neehoh
a
2:12:00 PM
1 commenti
![Validate my Atom 1.0 feed [Valid Atom 1.0]](valid-atom.png)
