Archive for febbraio 2008

Piccolo how-to su open-vpn

Prima di parlare di openvpn e di come creare una vpn tra due host, ed i vantaggi che possono venirne fuori bisogna che venga fatto una brevissima introduzione alle VPNs.

Breve introduzione alle VPNs.

La sicurezza in rete sta diventando di giorno in giorno un elemento fondamentale per le grandi aziende che adoperano Internet come mezzo di “commercio” e “comunicazione” e che pretendono di proteggersi e scambiare informazioni in maniera sicura.
Le VPNs rappresentano un modo per risparmiare cifre elevate per le linee dedicate e per permettere ad un utente quasliasi di connettersi da ovunque si trovi ed accedere ai propri dati personali residenti su server locali.
L’acronimo VPN sta per Virtual Private Network, ossia una rete privata, crittata e passante su di un canale di comunicazione diretto che permette lo scambio di dati con la possibilità di restringere l’accesso ad gruppo di utenti autorizzati.
Un semplice esempio di VPN:

Pc_Home ————- Internet ————- Pc_Uffico
Ip:10.0.0.1 ————- x.x.x.x ————- 10.0.1.2

Tra il Pc_Home e Pc_Ufficio viene aperto un canale di comunicazione che passa per Internet, utilizzando classi di indirizzi privati. Per effettuare tali operazioni si avvale dei Protocolli dei Tunneling, e` possibile accedere ad una rete privata tramite PPtP (Point To Point Tunneling Protocol) L2TP (Layer 2 Tunneling Protocol.), IPSec (IP Security).
Dopo questa breve spolverata riguardante le VPNs possiamo passare al nocciolo della questione ed al motivo per cui stiamo scrivendo questo articolo:
OpenVpn

Stiamo parlando di un software, ovviamente free, che permette la creazione di una VPN ossia un canale di comunicazione privato tra due Hosts.La necessita` di adoperare questo software e` nata dal fatto che abbiamo sperimentato di far “runnare” un servizio ad un client abbonato Fastweb del quale sappiamo tutti i problemi legati al Nat che si presentano per tali abbonati, per i quali possedere un servizio in locale, quale Http, Ftp, ssh, diventa un’ardua impresa.
Il Software in questione e` rintracciabile con semplicita` al seguente url: http://openvpn.secureforge.net e viene descritto come “secure IP tunnel daemon”.
Questo demone gira, di default, sulla porta 5000 UDP ma tramite i flags:

--port port : TCP/UDP port # for both local and remote.
--lport port : TCP/UDP port # for local (default=5000).
--rport port : TCP/UDP port # for remote (default=5000).

Tale porta puo` venir modificata, come ogni qualsiasi servizio.
e tramite il flag: –proto puo` essere selezionato il tipo di protocollo da utilizzare.

Openvpn suopporta una crittazione convenzionale di una chiave statica condivisa oppure una chiave pubblica (SSL/TSL mode), ma va detto che supporta anche connessioni senza crittazione., se possiedi kernel Linux 2.4.7 oppure superiore molto probabilmente i drivers TUN/TAP, necessari per la creazione dell’interfacce virtuali, sono installati. Se cosi` hai bisogno di creare il device e caricare il modulo

# mknod /dev/net/tun c 10 200
# modprobe tun

Se sul tuo Pc e` presente un eventuale firewall bisogna che imposti alcune regole per attivare l’inoltro dei pacchetti sulla TUN:
iptables -A INPUT -i tun+ -j ACCEPT
Questo software e` dotato di un lato client ed un lato server, nel caso in questione un pc fungera` da client mentre l’altro fungera` da server.
Come prima cosa generiamo una chiave statica ed uguale per entrambi gli host che vogliono stabilire la sessione con il seguente comando:

openvpn –genkey –secret key

Ora scegliamo una classe di indirizzi privati che verranno utilizzati per crare la VPN, nel nostro caso abbiamo preso in considerazione la rete privata di classe C 172.17.142.0/24.
L’host che funge da client adopererà l’ip 172.17.142.22 mentre l’host che fungerà da server utilizzerà l’ip 172.17.142.23. Ora analizziamo la sintassi del comando che viene eseguito “lato client”.

openvpn –remote 80.80.80.x –dev tun1 –ifconfig 172.17.142.22 172.17.142.23 –verb 5 –secret key

Andiamo subito a chiarire il comando raffigurato.

–remote 80.80.80.x e` il comando che imposta come server l’interfaccia pubblica dell’host che fungera` da server con indirizzo privato 172.17.142.22

–dev tun1 indica l’intefaccia da utilizzare

–ifconfig 172.17.142.22 172.17.142.23 imposta per primo l’ip che avra` il client locale e per secondo l’ip dell’interfaccia tun dell’host remoto.

–verb 5 Apriamo una piccola parentesi riguardo il verbose, esistono 6 livelli ed ognuno e` caratterizzato da una funzione specifica, quella che utilizzeremo noi e` il 5 che mostra i caratteri R e W in console per ogni pacchetto che viene letto e scritto. Le lettere maiuscole indicano i pacchetti TCP/UDP, mentre le minuscole indicano i pacchetti TUN/TAP.

–secret key indica il file che contiene la chiave per permettere la sessione crittata.

p.s: e` ovvio che entrambi i client debbano avere lo stesso file contente la chiave.

Appena avviato openvpn verra` creata un interfaccia virtuale denominata tun1 che avra` nel caso del client avremo 172.17.142.22, nel caso del Server avremo 172.17.142.23.
Dopo aver avviato openvpn conviene fare un po’ troubleshooting con i comandi route e ping, semplici ma efficaci. Lato server il comando sopra descritto subisce lievi modifiche:

openvpn –dev tun1 –ifconfig 172.17.142.23 172.17.142.22 –verb 5 –secret key

1) Ovviamente viene invertito la sequenza degli IP.
2) Il comando non comprende il flag “– remote x.x.x.x”, perche` ho anlizzato che
per un utente “fastweb”(io), il pc non puo` fungere da serve per problemi di NAT, dato che tutti gli utenti di un POP di fastweb stanno dietro proxy residenzialo ergo non puo` ricevere richieste ma solo effettuarle.
Fornire un servizio tramite una macchina interna alla VPN

Mostrare un servizio caricato sulla mia macchina e` praticamente impossibile dato il problema che ho segnalato pocanzi, di conseguenza ho utilizzato openvpn come strada alternativa per mostrare un servizio al pubblico.
Entriamo nel dettaglio:
Dopo aver stabilito una connessione con le stringe mostrate precedentemente, facciamo in modo che il pc che ci funge da server funga anche da NAT per il Forwarding di pacchetti specifici di un determinato servizio. Per tale motivo abbiamo sviluppato uno script contenente tutte le regole necessarie per forwardare il servizio ssh che di default gira sulla porta 22.
In questo script il server della VPN effettua il Forward dei pacchetti destinati alla sua porta 22 verso il client della VPN.
Ecco riportato un piccolo ascii art che aiutera` alla comprensione

Internet(request_ssh_session.22) to –> Host_Pubblico(serverVPN)[Forward to 172.17.142.22:22] –> 172.17.142.22

########### SCRIPT PER IL FORWARD DELLE PORTE DI UN SERVIZIO ###########
#! /bin/bash
/sbin/iptables -t nat -F
/sbin/iptables -F INPUT
/sbin/iptables -F OUTPUT
/sbin/iptables -F FORWARD
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 22 -j DNAT --to 172.17.142.22:22
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 30000:65325 -j DNAT --to 172.17.142.22
iptables -t nat -A POSTROUTING -o ppp0 -s 172.17.142.22 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun1 -p tcp -s 172.17.142.22 -j SNAT --to Host_Pubblico
iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE
iptables -A FORWARD -i tun1 -p tcp -j ACCEPT
iptables -A FORWARD -i tun1 -p udp -j ACCEPT
iptables -A INPUT -i tun1 -p tcp -j ACCEPT
iptables -A INPUT -i tun1 -p udp -j ACCEPT
/sbin/iptables -L
/sbin/iptables -t nat -L
echo "1" > /proc/sys/net/ipv4/ip_forward

Con la collaborazione di Nazgul abbiamo creato un’interfaccia grafica per l’utilizzo di openvpn, compilata tramite Gtk 2.0 e testata su Slackware 9.x. e Debian.

E` semplice ed intuitiva comprende tutti campi che sono stati indicati precedentemente ed e` integrato nell’avvio del programma il comando

#modprobe tun

non vi resta che generare la key, che ripeto dev’essere comune.

E` stata anche realizzata una versione in bash che vi alleghiamo sempre per cercare di rendere semplice ed intuitivo questo software che se ben utilizzato porta molti vantaggi. Ricordo che tutti i software compilati, ed elencati, es: iptables, openvpn sono stati eseguiti su Slackware 9.0 la versione delle gtk era la 2.2 per la compilazione di onpenvpnGUI.c lato server e client.
Per compilare bisogna utilizzare questa stringa di esempio:

gcc -o openvpnGUI openvpn.c `pkg-confg –libs –cflags gtk+-2.0`

Di iptables abbiamo usato la versione iptables v1.2.7a.
Possibili bug presenti nei software allegati ? si .. e forse anche molti.

OpenVpn Bash Client (tar.gz)

OpenVpn Bash Server (tar.gz)

OpenVpn GUI Client (tar.gz)

Cogito ergo sum
Non c’e` nulla interamente in nostro potere, se non i nostri pensieri.
Digital Souls Research Group

[cartesio zast signal]: date

Sun Jun 6 12:15:58 UTC 2004

NOTA: Questo articolo è stato importato dal vecchio sito su cui era hostato prima…

Un ringraziamento particolare a petabyte (aka bejelith ) per il sito e l’hosting, a cartesio per la parte teorica e il test su rete nattata Fastweb, e a Nazgul per l’intefaccia grafica.

E’ strano cio che si trova in rete…..

Se avete altre “massime” da inserire nella sezione, inviate pure, non ci sono problemi :)

Inserisco qui un po di Materiale Radioamatoriale.

Aggiungo qui qualche guida/raccolta/informazione sul C

….ho trovato questo articolo…. non ci credevo ma alla fine ho notato che ha ragione….

Seocndo uon stiduo di uan univretisà inlegse l’oridne dlele letetre all’intreno di uan praola nno e’ improtatne, cio’ò ceh improta è al pirma e l’utliam letetra. Il retso nno improta motlo in qulael oridne si trvoa, lo leeggrai comnuque sezna prbloema.

Incredibile quanto contorta sia la mente umana…..

Hehe… leggevo su punto-infomatico… anche qui sono riusciti a mettere Linux….

Bellissimo il passo:

Ciò rende la piattaforma di Phoenix particolarmente adatta sia per eseguire antivirus e altri software per la sicurezza, sia per consentire agli utenti di navigare sul web senza rischiare di infettare il resto del sistema con worm o altri malware.

….ma installarsi un Linux era troppo complicato?

…ci sono rimasto di merda malissimo quando ho visto sul cellulare un messaggio che diceva:

“Ti ho lasciato un messaggio in segreteria. Chiama subito da telefono fisso al numero 8998808870 per ascoltarlo. Baci”…..

Subito ci ho creduto, ho rimproverato a me stesso di non aver disattivato la segreteria su quel numero di cellulare, ma poi penso…..

  1. Chi è quella “brava persona” che mi manda un mex e non si firma?
  2. Come mai il mittente del messaggio è “+919840011046″ e non “Segreteria” oppure un classico Recall?
  3. +91 ?!?! India ?!?!
  4. Da telefono Fisso ?!?! Come posso ascoltare un messaggio lasciato nella segreteria del mio cellulare, da telefono fisso ?!?!?
  5. 8998808870 ?! Una segreteria con un 899 ??’?

=> Tutto cio mi ha insospettito ma, essendo questo un numero di telefono “limitato” ho escluso subito lo scherzo…

Mi sono un po informato in giro ed ho trovato ad esempio “GoldLine” un servizio che, con una spesa di pochi euri iniziali ti attiva un “899″ in cui tu, intestatario del numero percepisci un guadagno per ogni telefonata ricevuta…..

Bhe, a questo punto mi sono convinto non c’e nessuna bella bionda chiamata di lavoro in segreteria…

ma la cosa peggiore è che hanno iniziato a fare spam anche via cellulare….

Ora resta solo da capire da dove hanno pescato il mio numero di cellulare…..

Ecco, da una migrazione all’altra ho scoperto -almeno- quello che mancava…. Tra tutto ciò sopprattutto la pagina su GnuPg….
Bene, ri-iniziamo…..

Allora…. A cosa serve il PGP… ma sopprattuto… COS’E?!?!

Allora, una cosa per volta… partiamo dal problema che ha fatto nascere il pgp.

Ammettiamo che mi arrivi una lettera, che, pur non avendo comprato alcun biglietto, sono stato estratto come vincitore di un viaggio attorno al mondo per 2 persone….. E’ uno scherzo…. ma…non si sa mai.
Come posso, con una prima analisi, vedere se è una lettera vera o una burla?
Bhe, posso vedere la busta, il francobollo, il timbro con la data e il luogo della spedizione, la carta della busta (uno stampato che non reca ne il mio nome ne il mio cognome difficilmente è vero), il testo della lettera, la firma (fotocopiata)….
Da tutto ciò posso capire se è una bufala o no…
Ma nel caso di una mail ?!?!?
Eh, qui le cose diventano molto difficili (se non dire impossibile)….
Il testo della mail…. bhe, non fa molta fede, dato che posso scrivere e firmarmi come voglio.
Lo stesso vale per il mittente (falsificarlo è un lavoro di 5 minuti), per la data di spedizione etc…
Quindi.. una mail che proviene da sono_il_capo_supremo@microsoft.com che mi chiede di rinnovare la licenza del mio pc e che, tramite loro la pago solo metà, sarebbe una cosa credibile/possibile (se non fosse per il fatto che NON ho Windows sul pc :D ).

Questo è un esempio MOLTO stupido, me ne rendo conto…. ma il principio è quello.
Se mi arriva una mail dalla mia banca che mi chiede di accedere al mio conto e controllare movimenti sospetti sul mio conto, che faccio? Ci credo col rischio che mi rubino utente e password -e che poi mi sparisca il conto-, oppure non controllo e corro il rischio che il mio conto sparisca sul serio ?!?!
Bhe, se avessi la possibilità di autenticare il mittente in modo sicuro sarei a posto e so se quella mail è vera o falsa, avrei risolto il problema.

Ecco per cosa nasce il PGP.
PGP (o meglio, GnuPG [la sua versione libera] ) è un sistema che permette tramite un sistema di chiave pubblica/privata di autenticare il mittente della mail. Come “opzione” aggiunta, permette anche di crittare la mail.

La stessa cosa si può applicare ai file o agli archivi (i cosiddetti “zip“) e tenerli crittati sul disco.

Per chi è interessato ad approfondire è disponibile il pdf di una mia vecchia presentazione su GnuPG.

GnuPg+Enigmail.pdf

Alla fine, mi sono deciso, ho acquistato la scheda audio nuova…..

Una scheda interna sarebbe stata più “economica”, ma mi toccava lasciarla sul fisso….

Bhe, la scheda è della M-AUDIO.

Fast Track Pro USB-Front

Fast Track Pro USB-Back

Su Windows funziona molto bene…. su Linux ci sto ancora lavorando…..

Ho provato a fare una registrazione della mi chitarra… Collegata direttamente all’ingresso della scheda.

Si, lo ammetto…. ci ho messo un equalizzatore ed un filtro rimozione rumore (chi conosce la mia chitarra sa a cosa mi riferisco….. )

Test 1 -Ogg-