Hi everyone. Assalamu'alaikum
huhaaa *baru keluar dari bertapa*

Kalo postingan sebelum ini saya membahas cara membuat server VoIP yaitu Voice over Internet Protocol dengan Asterisk server. Sekarang saya bahas bagaimana cara mengamankan agar percakapan dari VoIP tidak bisa disadap.

Internet adalah jalur dimana para hacker beraktifitas, mulai dari ngehack password facebook (contohnya) bisa dilakuin karena media facebook ada pada jalur internet atau jalur berbasis IP sehingga hacker mampu menyadap pembicaraan via IP juga bisa ditangkap oleh sniffer. Secara kasat mata, penerapan VoIP ini seperti aplikasi Skype.


Lalu bagaimana paket-paket VoIP bisa ditangkap oleh para sniffer? Coba pahami dulu informasi dari website ini. Mudah bukan untuk menyadap percakapan VoIP? Namun perlu dimengerti juga, menurut Anton Raharja, developer voiprakyat yang disebutkan pada salah satu postingan pada forum voiprakyat "Kita hanya bisa menyadap komunikasi yang ada di subnet kita".

Metode pengamanan paket VoIP bisa dilakukan dengan dua metode yaitu metode Secure Real-time Transport Protocol (SRTP) dan metode Virtual Private Network. (VPN)

Server Asterisk 1.8 sebenarnya mendukung SRTP, tetapi ada beberapa hal yang perlu Anda lakukan pertama. SRTP hanya mengenkripsi aliran suara berdasarkan media yang digunakan, tapi key yang digunakan untuk enkripsi dipertukarkan menggunakan SIP / SDP (signaling), sehingga TLS diperlukan untuk mengenkripsi sinyal SIP.

Requirement:

  • Fedora 14 64bit
  • Asterisk Server 1.8.X
  • Softphone
Pre-Implementation:
Lengkapi dulu package yang dibutuhkan untuk asterisk dan SRTP
yum -y install gcc gcc-c++ pkgconfig zlib-devel openssl openssl-devel ncurses-devel

yum -y install bison autoconf automake libtool

Implementation:
Download module pendukung SRTP http://srtp.sourceforge.net/download.html  dan Saya menggunakan SRTP-1.4.2.tgz


Pada CLI, masuk sebagai root dan pindah file SRTP-1.4.2.tgz yang telah di download ke direktor /usr/src dengan perintah mv

Masuk pada direktori /usr/src:
tar -xvzf srtp-1.4.2.tgz
cd srtp
./configure CFLAGS=-fPIC --prefix=/usr

make && make runtest && make install

Oke module SRTP sudah terinstall di pc yang akan digunakan untuk server. Selanjutnya kita install Asterisk server seperti pada postingan saya sebelumnya, mulai dari step 1 hingga step 8. Untuk step 9 ikuti step dibawah ini. Jika sebelumnya anda telah menginstall Asterisk sebelum SRTP, maka anda perlu menginstall ulang Asterisk anda.

Step 9:
Untuk install asterisk di Fedora 64bit
Maximize your Terminal window, then type in

./configure --libdir=/usr/lib64 --disable-xmldoc && make menuselect 
Scroll down till you see "resource modules", hit enter, then ensure res_srtp is selected. Press x to save and exit from menuselect. Then
make && make install
make samples && make config

Oke implemantasi SRTP-Asterisk berhasil. Selanjutnya membuat Certificate Authority (CA) Transport Layer Protocol (TLS). Tahap ini seperti membuat CA sesuai postingan saya, hanya saja ini diimplementasikan pada real server dan OS fedora 14 64bit.


sh /usr/src/asterisk-1.8.11.0/contrib/scripts/ast_tls_cert -C pbx.mycompany.com -O "My Super Company" -d /etc/asterisk/keys
Anda akan diminta untuk memasukkan kalimat sandi untuk /etc/asterisk/key/ca.key, dimasukkan ke dalam sesuatu yang mudah anda ingat nanti. Ini akan menciptakan /etc/asterisk/key/ file ca.crt. Anda akan diminta untuk memasukkan kalimat sandi lagi, dan kemudian /etc/asterisk/key/ file asterisk.key akan dibuat. /etc/asterisk/key/  file asterisk.crt akan otomatis dihasilkanAnda akan diminta untuk memasukkan kalimat sandi untuk ketiga kalinya, dan /etc/asterisk/key/asterisk.pem akan dibuat, kombinasi dari file asterisk.key dan asterisk.crt.

cat /etc/asterisk/key/asterisk.pem





Selanjutnya, kita menghasilkan CA client untuk perangkat SIP dengan perintah:


sh /usr/src/asterisk-1.8.11.0/contrib/scripts/ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C 100.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o 100
100 ini bisa dikondisikan sesuai user yang anda gunakan. Perintah diatas bisa anda ulangi sebanyak client yang anda buat, misalnya:


sh /usr/src/asterisk-1.8.11.0/contrib/scripts/ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C 200.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o 200


Now, let's check the keys directory to see if all of the files we've built are there. You should have:
asterisk.crt
asterisk.csr
asterisk.key
asterisk.pem
100.crt
100.csr
100.key
100.pem
ca.cfg
ca.crt
ca.key
tmp.cfg


let's configure Asterisk to use TLS. In the sip.conf configuration file, set the following:
tlsenable=yes
tlsbindaddr=0.0.0.0 ;your ip server
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1
Di sini, kita mengaktifkan TLS. Saya telah mengatur file sertifikat TLS dengan yang saya buat di atas. Saya telah menetapkan Otoritas Sertifikat dengan yang saya buat di atas. TLS Cipher telah diatur untuk SEMUA, karena itu yang paling permisif. Dan saya telah menetapkan metode TLS TLSv1, karena itulah salah satu pilihan untuk RFC dan untuk sebagian semua client.

Then, configuring TLS-enabled SIP peers with Asterisk
sip.conf

[general]
disallow=all
allow=alaw
allow=ulaw
context=my-phones
bindport=5061
bindaddr=0.0.0.0 ;your IP server
srvlookup=yes
;BEGIN 100
[100]
type=friend
context=my-phones
secret=100
host=dynamic
username=100
allow=all
dtmfmode=rfc2833
mailbox=100
nat=yes
canreinvite=no
qualify=yes
transport=tls
encryption=yes
;END 100
;BEGIN 100
[100]
type=friend
context=my-phones
secret=100
host=dynamic
username=100
allow=all
dtmfmode=rfc2833
mailbox=100
nat=yes
canreinvite=no
qualify=yes
transport=tls
encryption=yes
;END 100

Now we're making secure calls with TLS (signaling) and SRTP (media).
Untuk media atau softphone yang digunakan, anda harus tahu apakah softphone yang anda gunakan support TLS-SRTP atau tidak, untuk mengecek, coba baca wikipedia ini. Namun ada beberapa yang softphone yang free dan tetap bermasalah, saya sarankan coba gunakan Blink yang tekah sukses saya implementasikan.

Selamat mencoba teman-teman
Good luck yah
best regards
pennyka


25 Comments

  1. kalo tutorial di sisi client menggunakan blinknya gimana kk?

    ReplyDelete
  2. mudah saja, tinggal ganti srtp: mandatory dan masukkan ca.certf yang uda dibuat pada tab advanced :)

    ReplyDelete
  3. mau tanya lagi mba kalo studi kasus berupa topologi yang cocok digunakan untuk voip menggunakan srtp dan tls itu gimana mba?

    ReplyDelete
  4. bebas mas angga, menurut saya topologi tidak berbengaruh terhadap srtp-tls nya :)

    ReplyDelete
  5. mba penny boleh minta settingan di blinknya kok yang certificate yang di account settingny ngga bisa ya ?

    ReplyDelete
  6. bisaa, coba dikonfigurasi servernya dikasi bindport servernya, nat pada clientnya.. coba dicek lagi dari sisi server. semangat ya

    ReplyDelete
  7. maaf banget mba penny mau tanya lagi nih yang sertifikat itu yang diimport ke blink nya yang ca.crt saja atau ada yg lain? terima kasih

    ReplyDelete
  8. yang ca.crt ajaa
    oke no problemo :)

    ReplyDelete
  9. terima kasih mba penny sebelumnya mba penny sudah mencoba dengan serangan apa saja dan hasilnya gimana mba?

    ReplyDelete
  10. Sebelumnya ak nyoba serangan nyadap pake wireshark, yg pake SRTP hasil suaranya kayak tv lagi rusak, jadi suaranya gak bisa didengan.
    annga mau nyoba serangan apa? bisa di share nih buat referensi :)

    ReplyDelete
  11. Mbak Pennya, sy dah nyoba SRTP-TLS ini, dah sy capture menggunakan wireshark juga sama sekali ga tercapture paket SIPnya, biasanya kalo yg non SRTP-TLS tercapture... tapi pertanyaan saya, letak SRTPnya itu dimana ya, sy lihat dari server dan softphone cliennya (Blink) kok cuman TLS ya, trus penerapan SRTP ada dimananya?
    Makasih...

    ReplyDelete
  12. @sipiyuku : unt liat SRTP nya setau saya ada dua cara,
    pertama wiresharkny compatible gak sama protokol SRTP, maksud saya ada beberapa versi wireshark yg bisa menangkap protokol SRTP seperti gambar ini http://atsip.ru/images/stories/Yalink/T20/srtp-wireshark.png dan versi baru sepertinya wireshark tidak bisa menangkap SRTP, namun dianggap RTP.
    kedua, pastikan terlebih dahulu blink disetting srtp=mandatory setelah itu ketika terjadi komunikasi client, lihat dari sisi terminal server dengan klik sip set debug on. Dari situ akan terlihat keterangan seperti m=audio ... RTP/SAVP ... dan a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:...

    selamat mencoba

    ReplyDelete
  13. Ok dah aku coba, ini hasil debug di asterisknya

    v=0
    o=root 7771222 7771222 IN IP4 192.168.0.150
    s=Asterisk PBX 1.8.23.1
    c=IN IP4 192.168.0.150
    t=0 0
    m=audio 16840 RTP/SAVP 0 8 9 98 96
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:9 G722/8000
    a=rtpmap:98 speex/16000
    a=rtpmap:96 telephone-event/8000
    a=fmtp:96 0-16
    a=ptime:20
    a=sendrecv
    a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:QmEQketLQX/D6jXGKw9K42QYRBR4lr0v6WAZ/hrF

    kayaknya udah fungsi TLS dan SRTP

    ReplyDelete
  14. untuk yg serangan dengan wireshark sudah saya coba dan works mba penny terima kasih, nah untuk serangan wireshark tadi itu serangannya pada protokol media rtp/srtp nah untuk serangan yang dapat membuktikan sistem keamanan pada protokol sip yaitu tls itu kira kira serangannya seperti apa mba penny?
    maaf dan terima kasih mba

    ReplyDelete
  15. @SIPIYUKU: Yap selamat

    @ANGGA PRATOMO: hmm begini kalo menurut yg saya baca dari http://goalbound.blogspot.com/2012/05/configure-asterisk-18110-on-centos-55.html di web itu bilang kalo 'SRTP only encrypts the voice stream, but the keys used for encryption are exchanged using SIP/SDP (signalling), so TLS is needed to encrypt the SIP signalling' jadi menurut saya TLS itu juga untuk mengamankan serangan penyadapan pada rtp. :)

    ReplyDelete
  16. mba penny mau tanya lagi untuk yang srtp saat saya coba menelepon antara 2 client kok suaranya kresek kresek ya? mohon pencerahannya mba

    ReplyDelete
  17. mba penny saat diimplementasikan srtp dan tls pada asterisk bener bener ga bisa melakukan calling dan hanya keluar suara noise mohon solusinya mba penny
    terima kasih

    ReplyDelete
  18. @angga : Maaf sebelumnya baru bisa balas hehe, iyaa beberapa memang ada kasus pada implementasi SRTP, sebelumnya saya pernah nyoba client 1 bisa kirim dan dengar paket suara tapi client lainnya cuma bisa kirim saja. mungkin kasus seperti yg anda alami bisa dipengaruhi banyak faktor misalnya jaringan yg memang sedang sibuk (?). itu bisa diteliti dengan kualitas VoIPnya.

    ReplyDelete
  19. terima kasih mba penny tapi kalo yang saya kok itu bener bener tidak bisa didengar mba karena hanya terdengar suara loud noise saya implementasinya pake 2 client mba dan dua duanya tidak dapat melakukan calling seperti implementasi voip normal tanpa srtp mba kira kira gimana ya mba? saya benar benar stuck dan bingung pada masalah ini mba

    ReplyDelete
  20. This comment has been removed by the author.

    ReplyDelete
  21. @angga: pake softphone blink kan? seharusnya bisa paling gak masalahnya gak jauh beda dengan saya.. kalo diimplementasikan di vm-ware bisa saja jadi masalah karena vm-ware sendiri kan ada kekurangan. semangat!

    ReplyDelete
  22. Terima Kasih mba penny semangat terus pasti mba haha oiya mba untuk konfigurasi dial plannya gimana mba?

    ReplyDelete
  23. maaf ya mba sebelumnya kalau nanya terus. mudah - mudahan bisa bertelepon dengan menerapkan srtp dan tls ini mba AMIN :D

    ReplyDelete
  24. Mau tanya mbak,
    Meski saya pake Ubuntu, tapi mungkin sama prosesnya.
    Nah, saya udah generate key nya. Terus saya configure sip.conf nya. Saya copy ca dan pem nya ke computer client. Tapi anehnya clietnya masih blm bisa aktif/ belum registered.
    Saya cek port 5061 di server tapi ga ada di listnya. Apa ini yang bikin client ga bisa register?
    Makasih mbak ^^

    ReplyDelete
  25. siang mau nanya dong beda srtp ma zrtp apa ya ?
    trimakasih

    ReplyDelete

Pennyka Trifikta Rimbi. Powered by Blogger.