Archive for March, 2013

Prove di linux firewall – parte seconda

Saturday, March 9th, 2013

Secondo appuntamento di studio con la creazione di un firewall linux. Nel primo post abbiamo visto una soluzione (funzionante ma incompleta) su come implementare un firewall a protezione per esempio di un server Debian.

C’è però un piccolo problema con quella soluzione: tutto il traffico di controllo icmp verso il server è scartato (drop) perché non è stata creata nessuna regola che permetta questo tipo di traffico in ingresso. Per esempio se volessimo controllare che il server è attivo con il comando Ping non funzionerebbe perché il firewall del server scarterebbe i pacchetti in quanto ping funziona con il protocollo icmp.

Ecco allora la necessità di inserire nuove regole di filtraggio nella catena di INPUT che permettano il traffico icmp:

IPTABLES -A INPUT -p icmp –icmp-type echo-reply -m state –state ESTABLISHED,RELATED -j ACCEPT
IPTABLES -A INPUT -p icmp –icmp-type echo-request -m limit –limit 5/s -m state –state NEW -j ACCEPT
IPTABLES -A INPUT -p icmp –icmp-type destination-unreachable -m state –state NEW -j ACCEPT
IPTABLES -A INPUT -p icmp –icmp-type time-exceeded -m state –state NEW -j ACCEPT
IPTABLES -A INPUT -p icmp –icmp-type timestamp-request -m state –state NEW -j ACCEPT
IPTABLES -A INPUT -p icmp –icmp-type timestamp-reply -m state –state ESTABLISHED,RELATED -j ACCEPT

Con queste regole permettiamo il traffico icmp nuovo (NEW) o che è già stabilito o ha relazioni (ESTABLISHED, RELATED) con traffico già richiesto. Una nota importante è il secondo comando con limit 5/s che stabilisce appunto un limite di 5 pacchetti/secondo oltre il quale il traffico viene scartato. Questa regola ci protegge in parte da attacchi di tipo DoS (Denial of Service) su Ping.

Ecco che il nostro firewall inizia a prendere forma. Mancano ancora delle regole per proteggere adeguatamente il nostro server da attacchi DoS e sicurezze varie.

Insomma: ci sarà sicuramente una terza puntata.

 

Links 08/03/2013

Friday, March 8th, 2013

La storia del gioco Monopoly

Problemi di diritti per il cloud

Opendata Twitter e public utilities

e buon otto marzo a tutte le donne…

8marzo

Prove di linux firewall

Thursday, March 7th, 2013

Approfittando della forzata pausa lavorativa mi sono messo a studiare il comando Iptables in Linux. Con questo comando (e ovviamente con quello che ci sta dietro) è possibile implementare un vero e proprio firewall usando una qualunque distribuzione linux.

Il lavoro per fare un firewall usando linux è ovviamente molto complesso, tantè che esistono delle vere e proprie distribuzioni, per esempio IPcop o Smoothwall o Zeroshell che facilitano non poco il compito di creazione delle regole di filtraggio, fornendo una interfaccia grafica molto più amichevole della semplice riga di comando.

Un semplice esercizio per iniziare a capire come funziona iptables potrebbe essere quello di virtualizzare un server linux (io uso per esempio la versione 6.0 di Debian virtualizzata con VirtualBox) abilitando la connessione ssh per il controllo remoto e poi iniziare a “giocare” con iptables.

Di default Linux Debian permette tutto il traffico in entrata, in uscita e in transito o come identifica iptables: INPUT, OUTPUT, FORWARD.

1) Come chiudersi fuori dal server:

IPTABLES -P INPUT DROP

IPTABLES -P OUTPUT DROP

IPTABLES -P FORWARD DROP

con questi semplici 3 comandi il server è isolato: non trasmette e non riceve traffico ovvero tutto il traffico che arriva alla scheda di rete è scartato (drop) indipendentemente che arrivi dall’esterno o dal server stesso.

2) Abilitare alemeno il traffico localhost e in uscita dal server:

IPTABLES -P INPUT DROP

IPTABLES -P FORWARD DROP

IPTABLES -P OUTPUT ACCEPT

IPTABLES -A INPUT -i lo -j ACCEPT

IPTABLES -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

come si vede leggermente più complesso. Vediamo nel dettaglio: catena di INPUT e di FORWARD droppo (scarto) tutto il traffico significa che tutto il traffico in arrivo al server o che deve transitare dal server è scartato. Catena di OUTPUT accetpt (accetto) significa che tutto il traffico che dal server esce viene accettato cioè inviato sulla rete. Ci sono però le ultime due regole che in pratica non fanno altro che aggiungere delle eccezioni al traffico in ingresso (INPUT) vediamo cosa sono: con iptables è possibile capire da quale interfaccia arriva il traffico di rete e decidere di conseguenza cosa farne. Ecco spiegato cosa significa il quarto comando: se il traffico in ingresso arriva dalla scheda di rete locale (localhost) allora esso viene accettato. Non solo iptables permette di distinguere il traffico in base all’interfaccia di rete, ma anche in base allo “stato”. Ecco spiegato il quinto comando: se il traffico di rete in ingresso arriva perchè sono stati io server a richiederlo (established) o ha qualche relazione (related) con del traffico già precedentemente accettato allora lo accetto.

In soldoni: tutto il traffico in uscita è permesso, tutto il traffico in transito è negato, tutto il traffico in ingresso è negato tranne quello generato come localhost o che io server ho richiesto.

3) abilitare il traffico localhost, in uscita e il servizio ssh in ingresso

IPTABLES -P INPUT DROP

IPTABLES -P FORWARD DROP

IPTABLES -P OUTPUT ACCEPT

IPTABLES -A INPUT -i lo -j ACCEPT

IPTABLES -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

IPTABLES -A INPUT -p tcp –dport 22 -m state –state NEW -j ACCEPT

tutto identico all’esempio 2 con l’aggiunta dell’ultimo comando. Iptables filtra il traffico anche in base alle porte ip, quindi la spiegazione dell’ultima riga è: se il traffico in ingresso al server è tcp sulla porta 22 (la porta standard del servizio ssh) ed è una nuova connessione (new) allora lo accetti.

Con 6 semplici (semplici?) comandi abbiamo costruito un  firewall (non perfetto manca ancora molto ma è già buono)  a protezione del nostro server che scarta tutte le connessioni in ingresso tranne quelle ssh (sulla porta 22), ma può navigare su internet per esempio per scaricarsi gli aggiornamenti.

Ma questo non può che essere un inizio di studio. La strada è ancora lunga.

Malanni di stagione

Tuesday, March 5th, 2013

Questo è il mio quinto giorno a casa causa una tosse trascurata peggiorata in brutta influenza con 39 di febbre.Il mio sistema immunitario, già di suo depresso, sta faticando non poco e allora sono dovuto intervenire questi:

Ceftibuten

Antibiotici a base di Cefalosporine

Per la cronaca le Cefalosporine sono state scoperte dall’italiano Giuseppe Brotzu. Come al solito misconusciuto in patria e osannato all’estero.