IAX criptato con ctunnel
by admin on Jun.11, 2010, under Asterisk, Hacking, Linux, Networking, Sicurezza, Telefonia, VoIP
ctunnel è un software, da poco (il 4 Giugno 2010) aggiornato alla versione 0.4, in grado di effettuare proxying e/o forwarding di connessioni TCP o UDP attraverso un tunnel crittografato.
ctunnel può venire usato per rendere sicuro ogni protocollo esistente basato su TCP o UDP, come HTTP, Telnet, FTP, RSH, MySQL, e incpasulare lo stesso SSH.
ctunnel opera rimanendo in ascolto sulla macchina client, criptando il traffico TCP o UDP, e quindi inoltrando il traffico così criptato al server, dove un’altra istanza di ctunnel decritterà quel traffico e lo inoltrerà alla porta di destinazione, in sostanza ad una diversa applicazione.
Il software si rivela in pratica una ottima soluzione per la messa in sicurezza del protocollo IAX tra un server Asterisk ed un certo numero di voip phones, sia hardware che software, che ne facciano uso, indipendentemente dal fatto che ciò avvenga in rete locale oppure da remoto.
Nell’ esempio il peer utilizzato è un softphone Zoiper installato sulla macchina locale con indirizzo 192.168.1.10 (tunnel client), mentre il pbx server Asterisk si trova all’indirizzo 192.168.1.100 (anche tunnel server).
Vorremmo che tutto il traffico tra 192.168.1.10 e 192.168.1.100 venisse criptato.
Server (192.168.1.100)
# ctunnel -U -H 127.0.0.1 -s -l 8569 -f 4569 -C aes256 -M cfb
Client (192.168.1.10)
# ctunnel -U -H 192.168.1.100 -c -l 4569 -f 8569 -C aes-256 -M cfb
Ecco ottenuto il nostro tunnel criptato.
Il server Asterisk, anch’esso posizionato su 192.168.1.100 è configurato così:
iax.conf:
[iaxline]
username=iaxline
type=friend
context=default
secret=secret_tunnel
allow=alaw
host=127.0.0.1
port=4569
qualify=yes
extensions.conf:
[default]
exten => 100,1,Playback(demo-congrats)
exten => 100,2,Goto(1)
mentre da parte sua il softphone zoiper, su 192.168.1.10 è configurato come di seguito:

fa cioè riferimento all’istanza locale del tunnel anziche all’indirizzo del server Asterisk, che pure, da parte sua, vede il peer sull’indirizzo di loopback. Infatti, dal momento che abbiamo indicato a ctunnel che l’endpoint locale del nostro tunnel IAX2 è 127.0.0.1, possiamo utilizzare il nostro softphone sul tunnel lato client, con questo stesso endpoint locale come sua destinazione:
*CLI> iax2 show peers
Name/Username Host Mask Port Status
iaxline/iaxline 127.0.0.1 (S) 255.255.255.255 4569 OK (6 ms)
1 iax2 peers [1 online, 0 offline, 0 unmonitored]
Il fenomeno è chiaramente verificabile attraverso una serie di tool che evidenziano come il traffico criptato tra softphone e pbx corrisponda
precisamente all’equivalente traffico IAX non criptato passante per l’interfaccia di loopback, come risulta dai pacchetti catturati da wireshark:

o dalla rappresentazione grafica offerta da etherape a chiamata in corso (extesion 100):

Ancora wireshark evidenzia come sia facile ottenere l’analisi dello stream IAX:

e sia altrettanto semplice salvare i corrispondenti file audio mono e bidirezionali, cosa impossibile da ottenere a partire dal traffico criptato, visto come generico UDP:

Quello che segue è invece il riscontro della chiamata da parte del client zoiper sulla console Asterisk:
*CLI> [Jun 10 18:17:58] NOTICE[23268]: chan_iax2.c:6159 register_verify: Peer 'iaxline' is not dynamic (from 127.0.0.1)
-- Accepting AUTHENTICATED call from 127.0.0.1:
> requested format = alaw,
> requested prefs = (),
> actual format = alaw,
> host prefs = (alaw),
> priority = mine
-- Executing [100@default:1] Playback("IAX2/iaxline-3186", "demo-congrats") in new stack
-- Playing 'demo-congrats.alaw' (language 'en')
-- Executing [100@default:2] Goto("IAX2/iaxline-3186", "1") in new stack
-- Goto (default,100,1)
== Spawn extension (default, 100, 1) exited non-zero on 'IAX2/iaxline-12023'
-- Hungup 'IAX2/iaxline-12023'
2 Comments for this entry
1 Trackback or Pingback for this entry
-
IAX criptato con ctunnel | IlTuoWeb.Net News
June 11th, 2010 on 3:02 am[...] Fonte: IAX criptato con ctunnel Tecnologia, VoIP [...]


June 11th, 2010 on 6:05 pm
Però se io tengo un server * oportunamente protetto (da firewall o se esposto direttamente, da regole iptables) dove per esempio apro solo le porte sip, aix2 e 10000-20000 (o meno, dipende del traffico che genero), dovró anche aprire la porta necesaria al collegamento criptato che nell’esempio è la 8659. Se il server * deve connetersi con el mondo esterno, IPKall, otro server sip o aix2 o clienti VoIP e devo necessariamente tenere aperte le porte canoniche (non posso obbligare i server di MagicJack o VoIPStunt a tunnellarmi), a che serve tutto questo?
La classica domanda della botte piena e la moglie ubriaca…
June 12th, 2010 on 10:16 am
Se l’utilizzo di Asterisk è solamente personale, e lo vuoi adoperare per sfruttare un servizio pubblico IAX, il tunnel non è utilizzabile.
Con SIP non sarebbe utilizzabile comunque, a causa delle sue caratteristiche protocollari.
Se il server Asterisk viene invece utilizzato in un ambiente aziendale, pur continuando a voler usare lo stesso provider VoIP (IAX) per le chiamate dirette all’esterno, il tunnel avrebbe senso per evitare l’intercettazione sulla rete locale. In tal caso non ci sarebbe alcun bisogno di aprire la porta UDP 8569 all’esterno.
Nel caso in cui l’utente si trovasse in un paese a libertà limitata, potrebbe utilizzare il tunnel per raggiungere una macchina proxy, della quale lui stesso (o chi per lui), dovrebbe avere il controllo, localizzata in una nazione più democratica, che tradurrebbe il traffico criptato in normale traffico, da utilizzarsi ovviamente per raggiungere destinazioni non appartenenti al paese di origine.