-
Firewall: IP Tables un esempio su Linux
Un firewall (dall’inglese muro anticendio) è necessario perché le reti sono contigue l’una all’altra tramite dispositivi di rete router o switch. Se una rete viene attaccata, dobbiamo trovare un meccanismo che ci permetta di impedire che tale l’attacco si propaghi anche nella altre reti.
Il punto dove si posiziona un firewall non è tra internet e la vostra rete (questo è uno dei possibili punti) ma in termini più generali si posiziona tra due reti con due livelli di sicurezza differenti.
La rete con maggior sicurezza viene chiamata “rete interna” mentre quella con minor livello di sicurezza “rete esterna“.
Quindi un firewall si posiziona in tutti i punti in cui ci siano due livelli di sicurezza differenti.
Attenzione che un firewall ci protegge solo dove è chiuso, dove è aperto non ci protegge per niente.
Ingress vs Egress Firewall
Un firewall controlla una comunicazione di tipo bidirezionale. Spesso si distingue la funzionalità di “ingress” ed “egress” firewall.
L’ingress firewall gestisce i collegamenti “incoming” (attenzione collegamenti non pacchetti) – è il tipico caso che si verifica quando dall’esterno vogliano comunicare con la nostra macchina. Ad esempio, aprire un canale TCP verso il mio server WEB è INGRESS.
Nell’egress firewall si gestiscono i collegamenti “outgoing” e si controlla l’attività del personale.
Questa per le aziende, è un attività importante perché è anche responsabile civile l’amministratore delegato dell’azienda stessa.La distinzione tra INGRESS / EGRESS firewall è molto semplice per tutti quei servizi orientati ai client. In tutte le applicazioni basati su TCP (connection oriented), chi inizia il collegamento è colui che manda il pacchetto SYN. Se invece si utilizza un protocollo connectionless come UDP, determinare la direzione del collegamento non è banale. Inoltre, siccome UDP non è affidabile, non è detto che cisano tutti i datagrammi e risulta molto più complicato determinare il termine della comunicazione.
I tre comandamenti del firewall (D.Cheswick e S.Bellowin)
- Il FIREWALL deve essere l’unico punto di contatto della rete interna con quella esterna
- Solo il traffico autorizzato può attraversare il FIREWALL
- Il FIREWALL deve essere un sistema altamente sicuro esso stesso
Il primo “comandamento” ci indica che il firewall deve essere l’unico punto di contatto tra la rete interna ed esterna. Si pensi al caso in cui i dipendenti usano le chiavette per collegarsi ad internet per navigare su siti come Facebook. Questo per il gestore della sicurezza aziendale è un vero incubo perché quel traffico non è protetto da firewall e quindi potenzialmente attaccabile dai “cattivi”. Un altro caso comune, è collegarsi a una rete wifi vicina che non è protetta per navigare su internet.
Il secondo “comandamento” ci dice che solo il traffico autorizzato può attraversare il FIREWALL – ma cosa vuol dire esattamente “autorizzato” ? Non è semplice definirlo.
Il terzo comandamento dice che il firewall deve essere un sistema altamente sicuro esso stesso,nel senso che DEVE avere SOLO quel compito. Su un firewall non bisogna mettere su altri software che non è quello di sicurezza, perché se quel software ha un baco, l’attaccante entra nel FIREWALL stesso.
I componenti del firewall devono essere elementi dedicati e sicuri.L’indicie della sicurezza
Più aumenta la sicurezza e meno abbiamo la funzionalità.
Più aumenta la funzionalità meno abbiamo la sicurezza.Politiche di autorizzazione
Esistono due politiche di autorizzazione:
- Tutto ciò che non è espressamente permesso è vietato
- Tutto ciò che non è espressamente vietato è permesso
Nella prima si ha maggior sicurezza ma è più difficile da gestire.
Nella seconda si ha minor sicurezza (porte aperte) ma è più facile da gestire.Tra le due, la migliore è la prima: questa cosa è permessa e tutto il resto è vietato. Se non ci serve una porta, perché aprirla? Potrebbe essere fonte di problema.
Considerazioni sui Firewall
In generale è consigliabile creare un sistema semplice applicando la regola KISS (Keep It Simple Stupid) poiché più un sistema è complicato più è difficile da verificare.
Ad esempio, l’inventore di DJBDNS ha usato la regola KISS applicandola anche alle librerie. Nel momento in cui ad esempio in c utilizziamo la funzione strcopy, in realtà includiamo la string.h (ma tutte le altre funzione della string.h non ci servono!!!). Questa è una buona regola di programmazione sicura.
Un software contiene certamente dei bachi. Se il programma viene mandato in esecuzione, diventa un processo e di conseguenza un problema di sicurzza.
Sul firewall bisogna far girare i processi essenziali. Questo è un lavoro molto importante difficile da applicare su sistemi operativi come Windows poiché è complicato capire cosa fanno i processi.
Per questo motivo i firewall si fanno con Linux.Un firewall non è una macchina general purposte, quindi no software e no utenti.
Il principio è che ognuno è colpevole finché non si dimostra che è innocente (per le persone il principio è il contrario
)IPTABLES
IP Tables fornisce funzionalità di manipolazione e filtraggio di pacchetti IP. IPtables si basa sul concetto di “chain”.
Ma che cos’è una chain? Una chain non è altro che una lista ordinata di regole a cui è associata una politica di default.
Esistono, per il filtraggio dei pacchetti, tre catene predefinite:- INPUT, contiene le regole che devono essere applicate ai pacchetti diretti alla macchina su cui è installato IPtables che si sta configurando;
- OUTPUT, contiene le regole che devono essere applicate ai pacchetti in uscita dalla macchina su cui è installato IPtables che si sta configurando;
- FORWARD, contiene le regole che devono essere applicate ai pacchetti che non provengono e non sono diretti alla macchina su cui e` installato IPtables ma che, se l’IP forwarding è abilitato, verranno inoltrati verso una specifica interfaccia.
Come configurare IPTABLES
IPtables può essere configurato con il comando iptables (man iptables per maggiori informazioni). Di seguito una lista dei principali comandi:
- l’opzione -P chain target permette di modificare la politica di autorizzazione di default della cate- na chain (INPUT, OUTPUT, FORWARD o personalizzate) impostandola al valore target
- -A chain e -I chain permettono di aggiunge una nuova regola rispettivamente in coda e in testa alla
catena chain; - -D chain e -R chain permettono di cancellare o sostituire una regola in chain (tramite l’ordinale, se e`
noto, o tramite un indirizzo IP); -
-F [chain] cancella tutte le regole presenti in chain o tutte le catene, se non viene specificato il valore
di chain (attenzione: la politica di default non viene pero` modificata). - -N chain crea una nuova catena di nome chain;
- -X chain cancella la catena chain, creata dall’utente.
Si mostra di seguito l’utilizzo del comando necessario a re-inizializzare tutte le catene:
iptables -Foppure solo una, quella passata come parametro (in questo caso quella di OUTPUT):
iptables -F OUTPUTQuando si specifica una regola di filtraggio, è necessario fare riferimento a diverse porzioni del pacchetto IP.
Per questo IP Tables mette a disposizione una serie di comandi (la lista completa disponibile tramite man):- -s IP source, indirizzo IP sorgente;
- -d IP dest, indirizzo IP destinazione;
- –sport porta, porta sorgente;
- –dport porta, porta destinazione;
- -i interfaccia, interfaccia di invio/ricezione del pacchetto (catena di INPUT);
- -o interfaccia, interfaccia di invio/ricezione del pacchetto (catena di OUTPUT);
- -p proto, protocollo (es. tcp, udp);
- -j azione, azione da intraprendere (il target in terminologia IP Tables);
- -y o –syn, nel caso di opzione -p tcp, identifica un pacchetto con (solo) il flag SYN abilitato;
- –icmp-type tipo, equivalente a -p icmp, tipo specifica il tipo di pacchetto ICMP
- -l, abilita il log del risultato della valutazione di una regola in tramite syslog in /var/log/messages
Azioni sui pacchetti
Le azioni da intraprendere, in terminologia IP Tables i “target” sono i seguenti:
- ACCEPT, accetta il pacchetto;
- DROP, scarta il pacchetto e non invia notifica;
- REJECT, scarta il pacchetto ma invia una notifica, sconsigliato nella maggior parte dei casi perché accelera
le procedure di scanning. Di default, viene inviato un pacchetto di tipo “ICMP port unreachable”, tuttavia
questo pu`o essere cambiato impostando l’opzione –reject-with; - RETURN, impone l’applicazione della default action anche se non `e stata esaminata tutta la catena.
Visualizzare lo stato del Firewall
Per visualizzare lo stato del firewall:
iptables -L -n -vdove -L sta per List rules, -v per ottenere delle informazioni dettagliate mentre -n visualizza gli indirizzi ip e le porte in formato numerico senza usare un server DNS per risolvere i nomi.
Esempi di configurazione IP TABLES
Per bloccare un’indirizzo ip (esempio un attaccante):
iptables -A INPUT -s 1.2.3.4 -j DROPdove 1.2.3.4 è l’indirizzo ip della macchina che vogliamo bloccare.
Per bloccare un dominio (es. Facebook.com):
iptables -A OUTPUT -p tcp -d www.facebook.com -j DROP
iptables -A OUTPUT -p tcp -d facebook.com -j DROPPer bloccare le richieste ICMP:
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROPAprire un range di porte:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPTAprire / Chiudere porte comuni:
Replace ACCEPT with DROP to block port:
## open port ssh tcp port 22 ##
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
## open cups (printing service) udp/tcp port 631 for LAN users ##
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT
## allow time sync via NTP for lan users (open udp port 123) ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT
## open tcp port 25 (smtp) for all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
# open dns server ports for all ##
iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
## open http/https (Apache) server port to all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
## open tcp port 110 (pop3) for all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT
## open tcp port 143 (imap) for all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
## open access to Samba file server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT
## open access to proxy server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT
## open access to mysql server for lan users only ##
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
Lascia un Commento
Link consigliati
Categorie
- Actionscript 3 – Trucchi e Segreti (9)
- Algoritmi e Programmazione Avanzata (3)
- Analisi di Basi di Dati (10)
- Assembler 8086 (2)
- Base di dati (1)
- Codifiche (1)
- Data Mining (4)
- E-learning (4)
- Flash (9)
- Grafica 3D (1)
- HTML5 (1)
- Intelligenza Artificiale (1)
- Lego Mindstorms NXT (6)
- Linguaggio C++ (1)
- Linux (8)
- Microsoft Office (7)
- news (1)
- Objective C (3)
- PHP (8)
- Progetti Politecnico (11)
- Programmazione ad Oggetti (Java) (1)
- Programmazione in C (16)
- Realtà Aumentata (1)
- Red5 (6)
- Seminari (3)
- SEO (3)
- Server (3)
- Sicurezza dei Sistemi Informatici (17)
- Siti Amici (1)
- Strategia e Innovazione (19)
- Tecnologie delle Basi di Dati (2)
- Utilità (11)
- web design (2)
Articoli Recenti
- LMS – An Elearning Platform with Online activation and 5 free users forever
- LMS – Piattaforma di E-learning gratis per i primi 5 utenti….
- Gli Active Record di Yii: un design pattern per rappresentare le tabelle del database in un modo orientato agli oggetti.
- Come creare un pulsante dinamicamente in Objective-c – Iphone SDK
- Actionscript 3 versus Objective-C: vediamo le principali differenze a livello di sintassi del codice
- Firewall: IP Tables un esempio su Linux
- Una piccola introduzione al framework php Yii (Yes It Is!) – installazione e creazione di una semplice applicazione web 2.0
- NetBeans IDE: JVM Creation Failed vediamo come risolverlo
- I sistemi esperti basati su regole
- I protocolli in Objective C sono molto simili alle interfacce di Java
- 19 – Strategia e Innovazione – Benefici della diversificazione: matrice BGC
- 18 – Strategia e Innovazione – Scelta del tempo di ingresso nel mercato – I FIRST MOVER
- 17 – Strategia e Innovazione – I mercati “WINNER TAKE ALL”
- 16 – Strategia e Innovazione – Standard e Disegno Dominante
- 15 – Strategia e Innovazione – Ciclo di vita dell’innovazione tecnologica e affermazione di un disegno dominante
Tags
Acrobat Writer Gratis
Actionscript 3
addEventListener
API disegno flash
appunti del corso di strategia e innovazione
AS3
Audio Streaming
Cancellare un'immagine da un PDF
cicli ed iterazioni in c
context free grammar
esercitazioni svolte in linguaggio c
esercitazioni svolte sui trigger oracle
esercizi svolti assembler 8086
eventi in actionscript 2
eventi in actionscript 3
file system linux
Formati Video HTML5
forward-chaining
gestione della memoria dinamica in c
gestione delle liste in c
getURL
Guida Visual Basic For Application - VBA
HTML5
indicizzare un sito sui motori
jflex
LEGO MINDSTORMS NXT 2.0 - BLUETOOTH - C#
linguaggi e traduttori
Modificare un file PDF
moveTo
navigateToURL
Oracle Database 10g Express Edition
Primo programma in c
programmare robot
root
scelte ed alternative in c
setChildIndex
streaming real time
swapDepths
TextField buttonMode
vettori in c
video in as2
video in as3
Video Streaming
XML
XMLList