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

Cancellare veramente i dati

Cancellare-dati-navigazioneSiete sicuri di aver davvero cancellato quel file ?

Alla base di questo articolo c’è un semplice fatto: molto spesso capita di comprare un nuovo PC, o un nuovo disco esterno/chiavetta di memoria ecc…, e di vendere/regalare/prestare il device fino a prima utilizzato; molti credono, erroneamente, che basti svuotare le directory e, successivamente, svuotare il “cestino” per eliminare i dati che non vogliamo altri vedano.

Beh! non e’cosi, un dato scritto su di un supporto rimarra’ per sempre al suo posto a meno che non distruggiate fisicamente il supporto stesso.

Cosa fare allora oltre a passare sopra al disco con uno schiaccia sassi, smagnetizzarlo e bruciarlo, per porre fine all’esistenza di quei dati ?
Esistono per fortuna alcuni tool che sono in grado di “sovrascriverli” piu’ e piu volte, questo perche’ per rendere un dato quasi irrecuperabile ci vogliono almeno dalle 20 alle 35 sovrascritture. un semplice rm di un file o l’eliminazione tramite qualsiasi file manager non è sufficiente per rimuoverlo davvero dal vostro hard disk.

Quindi se si vuole veramente eliminare un file da un computer è necessario utilizzare comandi più sofisticati quali :

Dban: Darik’s Boot and Nuke (comunemente conosciuto come DBAN) è un progetto open source ospitato su SourceForge. Il programma è progettato per cancellare in modo sicuro un hard disk fino a quando i dati sono permanentemente rimossi e non più recuperabili, questo avviene sovrascrivendo i dati con numeri casuali generati da Mersenne twister o ISAAC (un PRNG).

Shred : Sovrascrive il file specificato più volte, al fine di rendere più difficile anche per l’hardware molto costoso recuperare i dati.

Oggi daremo un’occhiata al pacchetto secure-delete contenente alcuni programmi utili per eliminare in maniera “più sicura” un file, la memoria, lo spazio libero e/o lo spazio di Swap.

Per installare secure-delete in Debian, Ubuntu e Mint eseguire:

sudo apt-get install secure-delete

Il pacchetto dovrebbe essere disponibile anche in altre distribuzioni, controllate il vostro gestore di pacchetti cercando secure-delete o srm, o se non è disponibile si può prendere il pacchetto sorgente da sourceforge .

Il pacchetto di secure-delete viene fornito con quattro comandi:

  • srm Rimozione sicura; utilizzato per l’eliminazione di file o directory attualmente presenti sul disco rigido;
  • smem Ripulitura sicura della memoria; utilizzato per cancellare le tracce dei dati dalla memoria del computer (RAM);
  • sfill Ripulitura sicura dello spazio libero; utilizzato per cancellare tutte le tracce di dati dallo spazio libero su disco;
  • sswap Ripulitura sicura dello swap; utilizzato per cancellare tutte le tracce di dati da una partizione di swap.

SRM

SRM è stato progettato per eliminare i dati in maniera sicura, in modo che non possano essere recuperati da ladri, forze dell’ordine o altre minacce. L’algoritmo di cancellazione si basa sul documento :
Secure Deletion of Data from Magnetic and Solid-State Memory “,
presentato al 6° Usenix Security Symposium da Peter Gutmann, uno dei leader tra i crittografi civili.Il processo di cancellazione sicuro dei dati di srm avviene in questo modo:

  • 1 passaggio con 0xff
  • 5 passaggi casuali. /dev/urandom è utilizzato se disponibile come fonte RNG sicura.
  • 27 passaggi con valori speciali definiti da Peter Gutmann.
  • 5 passaggi casuali. /dev/urandom è utilizzato se disponibile come fonte RNG sicura.
  • Truncate del file

Come ulteriore misura di sicurezza, il file viene aperto in O_SYNC mode e dopo ogni passaggio viene invocata una chiamata di tipo fsync().

srm inoltre scrive i blocchi a 32k allo scopo di avere una maggiore velocità, di riempire i buffer di cache del disco per costringerli a svuotarsi e sovrascrivere i dati vecchi che appartenevano al file.

Opzioni di srm:

  • -d ignora i due file speciali costituiti con i punti . e .. dalla linea di comando. (così si può eseguirlo come “srm -d .* *”)
  • -f fast (ed insicuro): no viene usato /dev/urandom, e non viene utilizzato il modo sincronizzato.
  • -l diminuisce la sicurezza. Solo due passaggi sono scritti: uno con 0xff ed i valori in modalità casuale.
  • -l -l per una seconda volta per abbassare ulteriormanete la sicurezza: viene fatto solo un passaggio casuale.
  • -r modalità ricursiva, cancella le sottodirectory.
  • -v modalità dettagliata
  • -z pulisce l’ultima scrittura con zeri invece che con dati casuali

Alcuni esempi con srm:

1) Cancellare un file usando srm:

# srm /tmp/myfile.txt

2) Cancellare una directory usando srm:

# srm -r /tmp/mydir

Gli altri strumenti della suite

smem è stato progettato per cancellare i dati che possono trovarsi ancora nella memoria (RAM) in modo sicuro. Si noti che con le memorie SDRAM, i dati non si perderanno subito allo spegnimento del computer, ma saranno tenuti staticamente e questo può consentire cold boot attacks

sfill è stato progettato per eliminare i dati che si trovano su spazio disco non utilizzato in modo sicuro

sswap è stato progettato per cancellare i dati che possono trovarsi ancora sull’aread di swap in modo sicuro

Conclusioni

IMPORTANTE: Ricordatevi che quando si utilizzano questi strumenti bisogna sempre tenere presente che essi aggiungono un po’ di sicurezza in piu’, ma non garantiscono che i dati siano irrecuperabili.