Firehol il firewall flessibile

fireholSi parla spesso di come proteggere il proprio PC/Server e la parola che sicuramente ricorre piu’ spesso e’ FIREWALL, non c’e’ dubbio.

Il problema che salta all’occhio di chiunque si sia mai cimentato con la “scrittura” delle regole di IPtables e derivati, e’ la non immediata semplicita’ nel comprendere la giusta sintassi da utilizzare e dunque nel capire il corretto posizionamento delle tante/tantissime variabili che rendono questi strumenti ottimi nel tenere lontani la maggior parte dei malintenzionati .

Uno strumento che potra’ certamente darvi una mano e’ il tool FireHol.

FireHOL è un linguaggio per esprimere le regole del firewall, non semplicemente uno script che produce un qualche tipo di firewall.” I file di configurazione di FireHOL sono script shell (ma di fatto non lo sembrano poiche’ sono semplici che più semplici non si può).

FireHOL viene fornito con firehol-wizard, che crea un file di configurazione che è poi necessario modificare a mano.

Il suggerimento migliore che posso dare rimane quello di utilizzare sempre, soprattutto all’inizio, le macchine virtuali, per  riuscire a prendere dimestichezza con la nuova tecnologia.

Si tratta dunque di un particolare software che, tramite un “semplice” file di configurazione, permette di impostare velocemente le regole del firewall per proteggere l’accesso dalla LAN verso Internet e viceversa. Il file in questione si trova in /etc/firehol/firehol.conf, quindi apriamolo con sudo vim /etc/ firehol/firehol.conf, cancelliamone il contenuto pre esistente e scriviamo quanto segue:

Anche l’installazione e’ semplice come bere un bicchier d’acqua

sudo apt-get install firehol

Questo e’ un piccolo esempio utile per dare un’idea della metodologia di configurazione del file:

#Imposto la LAN eth0 scheda di rete verso internet

interface eth0 internet

# Di default non accettare nessun pacchetto

policy reject

protection strong

#Accetta solamente questi servizi

server ssh accept

server ping accept

server http accept

server https accept

server dns accept

client ping accept

client http accept

client https accept

#Imposto eth1 come rete interna lan

interface eth1 lan

#Accetta tutto il traffico nella LAN interna

policy accept

#Imposto le tabelle di routing

#Il traffico dalla LAN (eth1) reindirizzato verso eth0

router lan2internet inface eth1 outface eth0

# Regola per il masquerade

masquerade

#Accetta tutto il traffico

router all accept

#In ingresso, invece, fai il contrario...

router internet2lan inface eth0 outface eth1

** Le righe precedute dal simbolo # sono commenti che possono essere omessi, ma che possono essere sempre di grande aiuto nel rileggere vecchie configurazioni. Dopo aver inserito tutte le regole, salviamo e usciamo dall’editor.

A questo punto, bastera’ impostare il firewall in modo che si attivi automaticamente all’avvio del server. Apriamo dunque il file firehol con sudo vim /etc/default/firehol e cambiamo la riga START_FIREHOL=NO in START_FIREHOL=YES.

Infine, avviamo il firewall con il comando sudo /etc/init.d/firehol start. Il nostro lavoro è quasi finito, ma mancano ancora alcuni passi.

Buone configurazioni!

Firewall apriamo un passaggio segreto

fwknop_spaPort-knoking – II Episodio

Poco tempo fa abbiamo affrontato il concetto di sicurezza utilizzando la tecnologia del port-knoking . Oggi affronteremo una seconda metodologia legata al port knoking.

Facciamo un passo indietro considerando il firewall il miglior sistema di difesa in nostro possesso. Il port-knoking e’ in pratica una tecnica di autorizzazione che agisce sul firewall e che puo’ essere realizzato con diverse metodologie; la “bussata” dipendera’ dal software di port-knoking utilizzato, ma in tutti i casi si compone di pacchetti TPC/IP appositamente forgiati dall’utente.

Le tipologie piu’ frequenti sono due:

  • sequenza affinche’ l’utente venga riconosciuto , il client deve inviare alcuni pacchetti secondo una sequenza creata al momento della configurazoine su diverse porte TCP o UDP;
  • payload tutto il necessario per il riconoscimento dell’utente e’ contenuto nel payload dei pacchetti

a) la prima tipologia e’ di facile realizzazione e utilizzo, ma e’ relativamente fragile perche’ basta uno sniffer di pacchetti per ascoltare la sequenza la sequenza inviata al server, replicarla e ottenere cosi’ l’accesso;

b) se il nostro desiderio di sicurezza e’ piu’ paranoico, allora soltanto il port-knoking basato sui payload potranno soddisfarci, inqunato questi sono al sicuro dai tentativi di replay-attack.

PARANOIA

Il mondo e’ bello ma e’ pericoloso, se questo e’ assodato anche per voi possiamo passare alla visione piu’ paranoica per provare una nuova configurazione tramite il software fwknop, un sistema di port-knoking che pone la sua forza nel criptare i payload del pacchetto di autorizzazione.

Fwknop va oltre al semplice sistema di port-knoking, esso in realta’ e’ il prototipo di una nuova tecnologia chiamata : Single Packet Authorization o (SPA) che si differenzia proprio per la possibilita’ di autorizzare l’utente utilizzando un’unico pacchetto TCP/IP.

SPA si comporta alla stessa maniera del port-knoking, solo che  invia un singolo pacchetto criptato verso il server di destinazione.
Questo comporta una migliore velocità nell’accedere al servizio che decidiamo di nascondere (esempio SSH), ed un maggiore livello di discrezione sulla rete (al contrario il Port Knocking classico può essere scambiato per un tentativo di port scanning da un IDS) e soprattutto protegge dai tentativi di connessioni replicate ( il singolo pacchetto criptato viene creato tutte le volte con valore casuale e non può essere riutilizzato!).

Fwknop è composto da un client ed un server.
Il demone fwknopd installato sul server sniffa le connesioni che arrivano sull’interfaccia di rete tramite la libreria libpcap, appena riceve dal client il pacchetto criptato e firmato con la chiave giusta abilita la connessione dell’indirizzo IP sorgente verso il servizio prestabilito (iptables).
Una volta inviato il pacchetto tramite il client fwknop si ha un lasso di tempo per stabilire la connessione verso il servizio protetto (di default 30 sec.), sfiorata questa tempistica il server chiude la connessione.

INSTALLAZIONE

sudo apt-get install fwknop-server libpcap-dev

sudo apt-get install fwknop-client

Oltre ai pacchetti vanno inserite due regole iptables fondamentali per il funziomaneto di fwknop:

iptables -I INPUT 1 -i eth0 -p tcp --dport 22 -j DROP
iptables -I INPUT 1 -i eth0 -p tcp --dport 22 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

La prima blocca tutte le connessioni in entrata per il servizio SSH, la seconda invece accetta le connessioni già stabilite (questa servirà quando fwknop server ci autorizzerà a collegarsi verso il demone ssh).
ATTENZIONE!!!
Così facendo chiuderete tutte le connessioni verso ssh, accertatevi di poter accedere al server
dalla console locale o abilitate la connessione a un singolo ip.
Esempio:

iptables -I INPUT -i eth0 -s 3.3.3.3 -p tcp --dport 22 -j ACCEPT

In questo caso le configurazioni sul server remoto le eseguirò da una connessione con ip 3.3.3.3 , che avra’ libero accesso.

Configurazione fwknop server/client

Immaginiamo lo scenario:

ServerSPA: 2.2.2.2

ClientSPA: 1.1.1.1

UserClientSPA: pippo

*** Geneare le chiavi sul client e prenderne nota:

pippo@clientspa:~$ fwknop -A tcp/22 -D 2.2.2.2 --key-gen --use-hmac --save-rc-stanza
[*] Creating initial rc file: /home/pippo/.fwknoprc.
[+] Wrote Rijndael and HMAC keys to rc file: /home/pippo/.fwknoprc
pippo@clientspa:~$
pippo@clientspa:~$ grep KEY /home/pippo/.fwknoprc
KEY_BASE64                  NPhe11+ORlK1Yfr4ipzW+ngQxzRt8kjI6UTDXLZYSv0=
HMAC_KEY_BASE64             SypMEUIhiAKTjeHlHoWR5dfu7hrLVvLnoIXINPbGTOowST1vUIs+tOtMc/XlKl6+JcVw7qc2jrpqmKujZxvnqw==
pippo@clientspa:~$

*** Creare sul serverspa (2.2.2.2) il file “/etc/fwknop/access.conf” inserendo le chiavi del client:

SOURCE                     ANY
REQUIRE_SOURCE_ADDRESS     Y
KEY_BASE64                  NPhe11+ORlK1Yfr4ipzW+ngQxzRt8kjI6UTDXLZYSv0=
HMAC_KEY_BASE64             SypMEUIhiAKTjeHlHoWR5dfu7hrLVvLnoIXINPbGTOowST1vUIs+tOtMc/XlKl6+JcVw7qc2jrpqmKujZxvnqw==

*** Controllare che sul file di configurazione del serverspa (2.2.2.2) sia configurata l’interfaccia di rete (WAN) corretta su cui fwknopd starà in ascolto:

[root@serverspa]# grep PCAP_INTF /etc/fwknop/fwknopd.conf
# the PCAP_INTF setting.
PCAP_INTF                   eth0;

***  Far partire il demone fwknop sul serverspa (2.2.2.2):

[pippo@serverspa]$ sudo /etc/init.d/fwknop-server start
Avvio di fwknopd:                                          [  OK  ]
[pippo@serverspa]$

Test di connessione

Controllare che il serverspa (2.2.2.2) blocchi di default le connessioni verso il servizio SSH:

pippo@clientspa:~$ nmap 2.2.2.2 -p22

Starting Nmap 6.40 ( http://nmap.org ) at 2014-04-30 23:21 CEST
Nmap scan report for 2.2.2.2
Host is up (0.0011s latency).
PORT   STATE    SERVICE
22/tcp filtered ssh

Nmap done: 1 IP address (1 host up) scanned in 1.97 seconds

*** Spedire il pacchetto SPA al serverspa ed abilitare l’accesso SSH al clientspa:

pippo@clientspa:~$ fwknop -n 2.2.2.2 -a 1.1.1.1 # in assenza di ip statico 1.1.1.1 dovrà essere sempre sostituito dall’ip pubblico assegnato dal vostro ISP.

 

*** Collegarsi dal clientspa verso il serverspa tramite ssh client entro 30 secondi :

pippo@clientspa:~$ fwknop -n 2.2.2.2 -a 1.1.1.1
pippo@clientspa:~$ ssh root@2.2.2.2
root@2.2.2.2's password:
Last login: Wed Apr 30 23:06:51 2014 from 5.5.5.5
[root@serverspa ~]#

Conclusioni

Fwknop non puo’ garantire una sicurezza assoluta (come nessun altro software) ma integrato nel vostro sistema insieme ad altri tool puo’ aumentarne notevolmente il livello.

Pro:

  • Protegge i servizi da eventuali 0-day
  • Riduce i tempi di risposta del Port Knocking
  • Cripta il playload
  • Disponibilità del client per vari dispositivi

Contro:

  • Non è utilizzabile con tutti i servizi (soprattutto quelli pubblici a cui devono accedere qualsiasi utente)
  • Devi sempre avere un client disponibile

 

*** Leggi anche Portknoking & Honeypot SSH

TransferWise – scacco alle Banche

money_transferRicordo ancora quando, pochi mesi fa, il “Top Manager” Flavio Briatore, durante un incontro con i giovani Bocconiani, aveva loro suggerito di aprire una pizzeria invece di imbarcarsi nel progetto di una start-up. Per fortuna il “verbo” secondo Briatore non dev’essere arrivato fino in Estonia che, ad oggi, invece, vanta il piu’ alto numero di start-up in divenire, considerando il suo esiguo numero di abitanti (1.300.000 circa). Questo perche’ dopo la crisi del 2008, hanno investito sulla diffusione della “banda larga”.

Infatti in Estonia non esiste il problema della diffusione della banda larga, perché semplicemente c’è solo quella e raggiunge chiunque. Su di una cosa aveva ragione Briatore quando ha detto che l’Italia è 7 punti sotto la media europea per diffusione della banda larga.

E’ proprio in questo humus d’innovazione che nascono anche nuove idee quali quella venuta in mente ai ragazzi (ex skype ed ex paypal) quando loro stessi si sono trovati con la necessita’ di poter spostare soldi con una certa facilita’ ma anche senza dover pagare i gravosi dazi che impongono le banche.

TransferWise

Ma di cosa si tratta? TranserWise e’ un servizio peer-to-peer per il trasferimento di denaro nato nel gennaio del 2011, con sede a Londra, che “aggira” le commissioni bancarie sul cambio valuta, ossia, se voglio trasferire 1000 euro su un conto in Gran Bretagna in sterline, le banche applicano una commissione pari al 5% (a volte fino al 10%): circa 50 euro finiscono cosi’ nelle tasche della banca. Se faccio quest’operazione mensilmente, in un anno sono 600 euro che la banca si mette in tasca, mica bruscolini.

Con TranferWise, invece, la commissione che si applica al trasferimento di denaro è di 1 euro (per importi fino a 200 euro) e 0,5% (per importi superiori). Non c’è che dire, un bel risparmio. La procedura che si esegue per effettuare un bonifico estero tramite TransferWise è molto semplice, in quanto ogni transazione non verrà effettuata direttamente tra i due conti utenti, ma con l’intermediazione di TranferWise.
  • L’utente A italiano che vuole mandare 1000 euro in Inghilterra (ad esempio), dovrà prima effettuare un bonifico nazionale e depositare l’importo sul conto bancario Transferwise. Il servizio convertirà la somma depositata in sterline e, tramite il conto TranferWise inglese, verrà fatto il bonifico sul conto dell’utente B, applicando una commissione dello 0,5%.

Questa ottima idea ha tra gli investitori anche Sir Richard Branson , patron della Virgin, e altri importanti nomi come quello di Peter Thiel  (PayPal), 25 milioni di dollari di munizioni per battere le banche, che hanno gia investito 25 milioni di dollari.

Insomma, che le banche inizino a tremare  😉

Abinsula sbarca in Argentina

linux_sardoAbinsula, azienda Sarda, sigla un accordo con la Sudamericana Kinray Group

Sara’ un accordo di collaborazione tecnologica e commerciale per arricchire l’offerta con nuove soluzioni e veicolare la propria attività nel mercato sudamericano. È quanto stipulato nei giorni scorsi tra Abinsula, l’azienda sarda leader in Italia nella progettazione di sistemi embedded su piattaforme Linux, e l’argentina Kinray Group.

 

La firma dell’accordo tra le due aziende è avvenuta pochi mesi fa a Cagliari, nella splendida cornice del Poetto. A rappresentare l’azienda sudamericana era presente il Ceo di Kinray Group, José Luis Fernández Ausinaga.

La Kinray Group è un’azienda specializzata in soluzioni digitali ad alto contenuto tecnologico per la brand strategy come chioschi interattivi, realtà aumentata, soluzioni su Large Video Wall LCD e opera nei mercati di  Argentina, Puerto Rico, Italia, Spagna e Israele.

Grazie all’accordo di collaborazione sia tecnologica che commerciale quindi, Abinsula potrà aggiungere alla propria offerta tecnologica le soluzioni di Kinray e potrà commercializzarle in Europa. La Kinray Group dal canto suo potrà veicolerà l’offerta Abinsula nel mercato sudamericano.

«Si tratta di una nuova opportunità per la nostra azienda – hanno detto Pierluigi Pinna e Antonio Solinas in rappresentanza di Abinsula – che, grazie al contributo di Pubblicitas che ha permesso questo incontro, ci consente un confronto con una realtà d’oltre oceano. L’accordo poi ci permette di inserire un ulteriore tassello per l’internazionalizzazione dell’azienda che, fedele al proprio nome “ab insula”, intende creare innovazione nell’isola da esportare in tutto il mondo».

In questo grave momento di crisi mondiale non possiamo che fare gli auguri ad un’azienda italiana che cerca di tenere la testa alta e di varcare i confini nazionali portando il proprio ingegno ed il proprio know-how.

Antivirus su Linux ?

ClamavAvrete sicuramente sentito dire che non serve un antivirus per linux perché i virus vengono creati per Windows e perché, qualora vengano scritti anche per Linux, sarebbe molto difficile che riescano a fare danni.
Questo in buona parte è vero perché Linux, oltre ad essere per sua natura meno vulnerabile di Windows, adotta da sempre tecniche che non permettono l’esecuzione di codice critico da parte degli utenti “piu’ esperti“.
E allora che senso ha produrre un antivirus per Linux?
I motivi per i quali è consigliabile installare un antivirus per linux possono essere molti. In genere quando c’è una condivisione di dati tra sistemi operativi diversi è buona norma installare un antivirus su entrambi i sistemi; quindi è consigliabile installarlo in presenza di server di rete dove sono presenti condivisioni di rete verso computer Windows, oppure nei sistemi dual-boot che condividono una partizione per i dati o in tutti i sistemi linux nei quali si utilizza un cloudstore come dropbox.
Detto questo vediamo di parlare di quello piu’ storico ed utilizzato.

ClamAV
In ambito Linux è il più conosciuto perché è completamente open source e si integra benissimo con altri programmi come server email, proxy ecc. E’ disponibile nei repository delle principali distribuzioni, ed è quindi facilmente installabile. Per gli utenti desktop esiste anche frontend grafico ClamTK che ne facilita l’utilizzo da parte degli utenti meno esperti.

INSTALLAZIONE
In questo articolo viene indicato come installare e utilizzare l’antivirus clamav,  che nasce come applicativo da linea di comando.

:~# sudo apt-get install clamav clamav-freshclam

* Quindi inizializzare clavam scaricando i files delle definizioni con il comando freshclam

:~# clamscan --infected --remove --recursive /tmp

possiamo testare l’installazione eseguendo ad esempio

clamscan ~

Possiamo effettuare un primo controllo antivirus di tutta la home con l’opzione -r

clamscan -r /home

Se vogliamo visualizzare  solo i file infetti e il sommario evitando di visualizzare l’elenco dei files possiamo usare l’opzione -i

clamscan -i ~

Aggiornare i database delle definizioni dei virus

Per aggiornare i database delle definizioni dei virus come detto  si può usare

sudo freshclam

E’ decisamente più comodo effetture questa operazione in backgroud sfruttando il demone di freshclam. Freshclam, infatti, si installa anche come servizio con ad esempio:

sudo freshclam -d

si può controllare con

#~$ sudo sysv-rc-conf --list | grep clam
clamav-fresh 0:off 1:off 2:on 3:on 4:on 5:on 6:off

per impostare il demone in modo che effettui, ad esempio, due check al giorno per nuovi database delle definizioni si puo’ usare il comando

sudo freshclam -d -c 2

Per effettuare lo scan di tutto il sistema evidenziando solo i file infetti e producendo un allarme acustico in caso di rilevazione di virus si può utilizzare il comando

#~$ clamav -r --bell -i /home

Per registrare una scansione di tutto il sistema salvando i dati relativi ai file infetti si può usare un comando del tipo:

sudo clamscan -r / | grep FOUND >> /path/clamav-data-scan.txt

Clamav non effettua le disinfezione dei file. I file infetti possono essere post

Clamav PPA

Per disporre sempre della versione più recente di ClamAV si può utilizzare il ppa specifico che si installa con

sudo add-apt-repository ppa:ubuntu-clamav/ppa
sudo apt-get update
sudo apt-get install clamav nautilus-clamscan

Primo Test

# clamscan --infected --remove --recursive /home
----------- SCAN SUMMARY -----------
Known viruses: 4167603
Engine version: 0.98.1
Scanned directories: 13
Scanned files: 10
Infected files: 0
Data scanned: 0.03 MB
Data read: 0.03 MB (ratio 1.00:1)
Time: 52.978 sec (0 m 52 s)

in questo caso come si puo’ vedere nel sommario, non sono stati trovati virus, adesso per poter fare un test “reale” possiamo effettuare questo secondo test :

Secondo Test

# download test virus
Scaricate da questo link il file (virus) in questione
cd /home/<nime utente>/Scaricati/
wget http://www.eicar.org/download/eicar.com

adesso possiamo effettuare nuovamente la scansione

clamscan --infected --remove --recursive /home

il risultato finale dovrebbe essere come questo

./eicar.com: Eicar-Test-Signature FOUND
./eicar.com: Removed.

Buona caccia!