GnuPG dalla riga di comando


GPG è un programma per cifrare i messaggi di posta elettronica utilizzando una coppia di chiavi (pubblica e privata) generate dall’utente.

Sappiamo a cosa serve il programma GnuPG: il programma d’eccellenza per cifrare file su Linux. È molto semplice da usare anche dalla riga di comando, ad esempio all’interno di script per Bash.

Per criptare un file

gpg -c filedacrittare

Per decifrare un file precedentemente cifrato

gpg -o file_decifrato -d esempio.gpg

dove -o indica quale file verrà generato dopo la decifrazione, altrimenti il risultato viene soltanto visualizzato sul terminale comandi.

Per generare le chiavi, l’algoritmo predefinito è DSA/ElGamal

gpg -gen-key

questa funzione torna utile per esempio quando si deve impostare l’accesso SSH tra due sistemi senza dover inserire ogni volta la password.

Per esportare la chiave pubblica

gpg -export -a UID > pub.key

Per eseguire il backup della chiave privata

gpg -export-secret-key -a UID > priv.key

Per cifrare un file per il destinatario che possiede la chiave pubblica oppure per noi stessi

gpg -ear 0disse0 filediesempio

dove l’opzione -e indica che vogliamo cifrare, -a per impostare il formato file ASCII 7 bit e -r per cifrare per l’utente. L’opzione -c restituisce invece un file in formato binario.

Quando il file è giunto a destinazione si dovrà impartire

gpg -o filedadecifrare -d risultato.asc

Per importare una chiave pubblica nel proprio “portachiavi”

gpg -import public.key

Per importare la chiave da un repository pubblico (su Internet)

curl -s http://keyserver.ubuntu.com:11371/ciccopalla/pubkey.asc | gpg --import

ipotizzando nell’esempio che si voglia importare la chiave di “cicciopalla”.

Annunci

Menù contestuale per GnuPG


In questo momento sto testando la versione 9.10 di Ubuntu, in attesa di Lucid. Nella 9.04 trovavo comodo il menù contestuale (click-tasto-destro per capirsi) che permetteva di decifrare un file PGP.

Nella 9.10 non c’è di default questa funzione, ecco come attivarla:

  • entrare in Ubuntu Software Center e cercare “GnuPG”
  • selezionare il pacchetto “Decifra file”

Configurazione di un server PPPoE su PfSense 1.2.3


PfSense è una distribuzione FreeBSD orientata al firewalling molto apprezzata.
Tra le tante funzioni di base e le altre “implementabili” molto interessante (anche se poco documentata) è la possibilità di creare una autenticazione di tipo PPPoE.
Il PPPoE è, in pratica, il tipo di autenticazione dell’utente utilizzato dai provider.
Ma come si realizza un servizio del genere con PfSense ?
Partendo dalla release 1.2.3 di PfSense scegliamo dalla dashboard ed avendo come riferimento i seguenti parametri:

WAN: 192.168.1.234
LAN: 192.168.2.1

“Services” –> “PPPoE Server”

Abilitiamo il servizio cliccando su

Enable PPPoE server

e continuiamo settando:

Creiamo pure i profili degli utenti che dovranno accedere al servizio.
In questa sede possiamo pure decidere di attribuire all’utente un IP assegnato staticamente

A questo punto della configurazione l’utente può accede al servizio ma non andrà da nessuna parte in quanto ancora non sono state definite le tabelle di routing.
Selezioniamo …

“Firewall” –> “NAT” –> “Outbound” –> “Manual Outbound NAT rule generation (AON – Advanced Outbound NAT)”

e creiamo la seguente regola per quanto riguarda il NAT …

Per quanto riguarda le regole del firewall andiamo su …

“Firewall” –> “Rules” –> “PPPoE Server”

… e creiamo la seguente regola:

A questo punto possiamo configurare il router oppure creare una connessione PPPoE tramite il wizard di Microsoft Windows.

Come creare una regola per PfSense


Esempio di regola per il firewall PFsense
Tratto da Wikipedia

pfSense e’ un firewall software Open Source basato su FreeBSD; ha lo scopo di fornire un potente, sicuro e completamente configurabile firewall utilizzando l’hardware di un comune PC. Al cuore del sistema c’è FreeBSD e il firewall PF (Packet Filter) in prestito da OpenBSD da cui ne deriva appunto la sigla.
Dispone attualmente di diverse feature che fino a poco tempo fa appannaggio solo di firewall commerciali, tra cui :
– Stateful Firewall (livello 3 della pila ISO/OSI) – DHCP Server – NAT (Network address translation) – HA High Availability grazie a CARP che permette di configurare due firewall su due macchine identiche per replicarsi e autosostituirsi nel caso di guasto di una delle due (il software pfsync si occupa di replicare lo stato firewall, la tabella della connessioni e le regole del firewall permettendo di switchare al secondo firewall senza che le connessioni di rete attive cadano) – Load Balancing (Bilanciamento del carico) per distribuire il carico di lavoro tra 2 o più server. Utilizzato normalmente per web server, mail server, ecc. – VPN (Virtual Private Network) di tipo IPsec, OpenVPN e PPTP. – Grafici RRD ed informazioni in tempo reale. – DNS dinamici

Nella immagine potete trovare un esempio di regola. Nel caso specifico la regola blocca tutti le connessioni provenienti dall’interno della rete (identificata come “LAN”) verso l’esterno (“WAN”) sulla porta 3389 (“Microsoft remote desktop”).

Backup, Restore e Disaster Recovery


Il termine “Disaster Recovery” (spesso sintetizzato con “DR”) può essere tradotto nella nostra lingua come “quell’insieme di misure tecnologiche atto a ripristinare sistemi, dati e infrastrutture necessarie all’erogazione di servizi di business a fronte di gravi emergenze”.

Bacula per il backup

Recentemente mi è stato chiesto quale possa essere una valida alternativa a Tivoli Backup Manager: economica e facile da usare, ma soprattutto affidabile.

Il primo consiglio è quello più ovvio: affidarsi a chi sa fare “il mestiere” e non deve per forza venderti una scatola di software.

Queste persone sanno lavorare bene, perché di solito sono quelle che fanno il lavoro per le altisonanti “aziende in giacca e cravatta” e non sono avide di denaro, come le predette aziende, in quanto non devono foraggiare nessun rappresentante commerciale “importato” dall’ennesima dismissione di qualche reparto marketing di qualche “ex colosso” dell’informatica nazionale.

Veniamo a BACULA, un potente programma per il backup distribuito in rete che permette di centralizzare le copie verso un server centrale, in genere costituito da una macchina con hard disk ad alta velocità e/o unità a nastro.

Bacula possiede client per diversi sistemi operativi, oltre che su Unix e Linux, funziona perfettamente su Windows XP, 2000 e 2003. Il programma è potente quindi complesso. Ma una volta capita la sua logica, se ne apprezzerà la versatilità. Del resto, dopo averlo usato per qualche anno, non ho ancora capito perché continuare a sprecare soldi con Tivoli Backup Manager, quando ci sono alternative altrettanto potenti.

Bacula si basa su una struttura ad albero delle funzionalità che permettono di generare le copie di backup. Gli aspetti di sicurezza sono sempre tenuti nella giusta considerazione, come è tipico dei progetti Open Source di una certa caratura.

Il “file daemon” non è autorizzato a contattare lo “storage daemon” a meno che a questo non sia stata prima inviata una notifica da parte del “director daemon”. In questo modo si vuole evitare un attacco che possa sfruttare una qualsiasi falla del demone file per corrompere eventuali volumi collegati al demone di storage (rischio possibile, invece con Tivoli, da quanto ho letto in giro). Bacula consente tre tipologie di backup: completo; differenziale e incrementale.

Cos’altro rimane da dire? Diffidate di chi vi propone Tivoli Backup Manager e assumete, per il tempo strettamente necessario, un bravo sistemista (come me ad esempio… 🙂 e risparmiate i vostri soldi!

Riferimenti:

Dump e Restore

Il package dump, in una qualsiasi edizione Linux contiene in realtà sia il comando dump che il comando restore. Il primo serve a copiare i file di un filesystem in un disco specifico, un nastro o altro media di memorizzazione di massa non volatile.

Il secondo comando, restore, svolge la funzione inversa, cioè permette il ripristino di una copia di sicurezza, totale o incrementale partendo da un backup consistente.

La pagina ufficiale del programma è http://dump.sourceforge.net/

Rsync

Rsync è un programma per sistemi Unix che sincronizza i file e le directory da un posto ad un altro minimizzando il trasferimento dei dati, lavorando solo sulle differenze (tra i file).

Un’altra caratteristica importante di questo programma, che di solito non troviamo in altri similari (dedicati cioè alla copia), è che il mirroring si svolge con una sola trasmissione in ogni direzione; eventualmente utilizzando la compressione e la ricorsione.

In daemon mode (modalità come servizio) rsync è in ascolto sulla porta predefinita 873 /TCP permette di sincronizzare anche due directory locali (cioè sullo stesso computer) oppure di interagire con RSH e SSH. In quest’ultimo caso il client di rsync deve essere installato sia sull’host locale che su quello remoto.

MTF

MTF è un programma in licenza GPL, purtroppo non più supportato al momento, che consente la lettura, sotto Linux, del formato di backup Microsoft Tape Format. La pagina per il download è

ftp://metalab.unc.edu/pub/Linux/system/backup/

Mondo Rescue

Nel caso di perdite dei dati parziali o totali, Mondo Rescue, disponibile in licenza GPL, permette di memorizzare interi file system su CD, rendendoli avviabili per un ripristino rapido e semplice. I formati supportati sono i dual boot Linux/Window, RAID, ReiserFS, ext2, ext3, XFS, JFS e VFAT (oltre ovviamente al solo Linux).

In sintesi si tratta di uno script di shell che poggia su due strumenti: mindi e afio. La prima è una mini distribuzione Linux che genera dischi di boot partendo dal vostro kernel, i moduli, i tool e librerie. Poiché tutti i moduli che erano caricati al momento del backup con Mondo vengono copiati, in teoria viene eseguito il boot dal CD di recovery nello stesso ambiente in cui ci si trovava al momento della generazione del disco di emergenza.

Mondo può essere usato, in pratica, per clonare un’installazione tipo di Linux (per esempio quando si devono seguire sempre gli stessi setup di base su tanti client o tanti server), fare il backup di un file system non RAID e ripristinarlo su un sistema RAID inserendo la partizione di root (se il vostro kernel la supporta), fare il backup di un sistema in esecuzione su un formato e ripristinarlo su di un altro formato, ristrutturare le partizioni, ad esempio per ridurre o ingrandire, assegnare di nuovo dispositivi, aggiungere hard disk prima di partizionare e formattere, oppure fare il backup dei sistemi Linux/Window compresi i settori di boot.

Il sito di riferimento è http://www.microwerks.net/~hugo/, inoltre è possibile reperire un buon articolo in lingua italiana sul Linux Journal di settembre 2002 a pagina 46.

DAR

DAR è un’applicazione che permette di eseguire copie di sicurezza integrali o incrementali, funziona a riga di comando, e permette l’uso dei floppy disk, CD-R e unità Iomega Zip. I file così copiati sono compressi, per occupare il minor spazio possibile (è possibile scegliere anche se si vuole comprimere un file oppure lasciarlo delle dimensioni naturali); i file molto grossi possono essere suddivisi in file più piccoli.

Inoltre, viene posta particolare cura verso gli extended attributes e i link fisici, mentre un meccanismo di filtraggio permette di includere o escludere i file durante il backup o durante il restore (comodo se si vuole “ripristinare” solo un certo file o una certa directory senza “svolgere” tutto il backup).

Poiché il programma può essere utilizzato mediante una connessione remota via SSH, è abbastanza semplice lanciare uno script per masterizzare un CD o scrivere un’email di sistema per avvisare dello status delle copie.

Recentemente sono state introdotte due nuove funzionalità, relative all’oscuramento, mediante una cifratura blanda, delle informazioni sul file di configurazione. Dar_manager, infine, aiuta l’utente meno esperto a gestire in maniera semplice ed intuitiva le funzionalità racchiuse nel programma.

Il sito di riferimento è http://dar.linux.free.fr/ mentre su http://kdar.sourceforge.net/ è possibile scaricare una GUI per KDE che e facilita l’uso ai meno esperti.

SqlNinja


Quando si parla di “penetration test” e “vulnerability assessment” spesso si ha l’impressione che tali attività siano semplici perché basate sull’utilizzo di strumenti automatizzati. Il mercato italiano è sempre di più infestato da “squali pavone” e “remore” che causano solo confusione nei clienti sull’esatto significato di termini quali Vulnerability Assessment, Penetration Test ed Ethical Hacking, e sulle differenze che li contraddistinguono.

Parimenti viene prestata scarsa attenzione al fatto che l’efficacia di queste tecniche è proporzionale alle competenze delle persone che le usano. Non si tratta di prendere a noleggio a 100 euro al giorno tutto incluso il “ragazzino appassionato di Linux” e fargli lanciare un paio di scan automatici.

Standard come l’OSSTMM sono in questo senso molto utili per definire una metodologia comune e condivisa, con una terminologia chiara, e per far sì che chi richiede questo tipo di attività possa verificare che dall’altra parte ci sia qualcuno che sappia fornire un elevato livello qualitativo.

Uno di questi strumenti è SqlNinja, un programma (scritto da Alberto Revelli) usato per effettuare “sql injection” su Microsoft SQL Server. Il sito ufficiale del progetto è sqlninja.sourceforge.net/ mentre una dimostrazione pratica del suo funzionamento è visibile sul sito sqlninja.sourceforge.net/sqlninjademo.html oltre che sul blog di Scott Herbert

SqlNinja è un utile strumento per testare la sicurezza di un Microsoft SQL Server. È un piccolo programma in Perl che funziona quindi su tutte le distribuzioni Unix, Linux incluso, ovviamente. Serve principalmente per sferrare attacchi sfruttando la vulnerabilità chiama “SQL Injection”.

SqlNinja permette di ottenere una shell sul database “obiettivo”. Il programma è in grado si di effettuare una fingerprint del server SQL, un attacco forza bruta della password dell’amministratore di sistema, un port scanning per individuare porte aperte e anche un tunnel tramite la porta DNS, quando tutte le porte TCP/UDP sono chiuse ma il server risolve i nomi host esterni.

Per installare SqlNinja su Ubuntu ecco come fare:

sudo apt-get install libnet-dns-perl libnet-pcap-perl libio-socket-ssl-perl libnet-rawip-perl

perl -MCPAN -e "install NetPacket"