1/13/13

Mengamankan komunikasi data dengan enkripsi menggunakan stunnel

8:07 PM
Komunikasi Data
Komunikasi data adalah proses pengiriman/penerimaan data atau informasi antara dua atau lebih device, Tujuan dari komunikasi data sebagai pertukaran informasi maupun sumber daya dari berbagai sistem operasi,bahasa,media transmisi,serta lokasi. Kita ambil contoh simple pada konektivitas Local Area Network (LAN), dimana dengan jaringan LAN kita bisa saling berbagi sumber daya, baik itu layanan, bertukar data, menggunakan printer bersama, dll.

Protokol
Protokol adalah sebuah aturan yang mengatur dan mendefinisikan terjadinya hubungan komunikasi dan perpindahan data antar dua atau lebih perangkat komputasi elektronik dalam sebuah jaringan komputer. Aturan disini berkaitan dengan metode akses,sinyal,autentikasi,deteksi error,kemampuan perbaikan error, dll. Jadi secara umum fungsi protokol adalah menghubungkan pengirim dan penerima dalam berkomunikasi serta bertukar informasi dengan menggunakan bahasa yang sama.

Enkripsi & Dekripsi
Enkripsi adalah sebuah usaha pengacakan data/informasi dari bentuk text asli (plaintext) ke dalam bentuk yang sulit untuk dibaca (chipertext) dengan menggunakan algoritma pengacakan (Contoh: rot13,md5,Caesar Cipher,DES,RSA). Sedangkan Dekripsi adalah proses kebalikan dari Enkripsi. Secara umum metode algoritma enkripsi terbagi menjadi 2 jenis, yaitu symmetric & asymmetric.

Symmetric Enkripsi
Proses enkripsi dan dekripsi menggunakan kunci key yang sama.
+------------+      +----------+      +-------------+
| Plain Text | -->  | Enkripsi | -->  | Chiper Text |
+------------+      +----------+      +-------------+
     ^                 /                     |
     |               key ()->                |
     |                 \                     |
     |              +----------+             |
     +------------- | Dekripsi | ------------+
                    +----------+
Contoh: DES,AES,Blowfish,RC4,dll.

Asymmetric Enkripsi
Proses enkripsi dan dekripsi menggunakan kunci yang berbeda, Satu kunci untuk enkripsi (Public Key) dan satu kunci lagi untuk dekripsi (Private Key).
+------------+      +----------+      +-------------+
| Plain Text | -->  | Enkripsi | -->  | Chiper Text |
+------------+      +----------+      +-------------+
     ^                 /                     |
     |               key 1 ()->              |
     |                                       |
     |               key 2 ()->              |
     |                 \                     |
     |              +----------+             |
     +------------- | Dekripsi | ------------+
                    +----------+
Contoh: RSA,DSS,dll.
Protokol jaringan yang menggunakan metode asymmetric enksripsi di antaranya GPG,SSH,SSL,TLS, dll.

Stunnel
Stunnel adalah sebuah program berbasis client-server yang menyediakan enkripsi untuk keamanan komunikasi data menggunakan protokol SSL/TLS, Stunnel berjalan di berbagai sistem operasi umum seperti Unix,Linux,BSD,Windows,dll. Tujuan aplikasi ini adalah membungkus protokol komunikasi yang di kategorikan tidak aman, tidak aman disini maksudnya adalah tidak terenkripsi (Misalnya: HTTP,IMAP,POP3,SMTP,Samba,MYSQL,Telnet) ke dalam koneksi yang lebih aman seperti Secure Socket Layer (SSL) atau Transport Layer Security (TLS) agar data yang dikirim tidak bisa di sadap (mengamankan data dari eavesdropping atau sniffing attack) dan kerahasian data tetap terjaga tentunya. :D
Berikut diagram cara kerja dari stunnel:
   --------------                      --------------
   STUNNEL SERVER                      STUNNEL CLIENT
   --------------                      --------------

  [ Application Server ]           [ Application Client ]
            |                                |
            |                                |
[ Application Service Port ][ Connecting Local Port Service
            |                                      (LPORT) ] 
            |                                |
            |                                |
[ Stunnel Server Service Port ] Connect to Stunnel Server
            |                       Service Port (RPORT) ]
            |                                |
            |                                |
            +--****************************--+
        ENCRYPTED PROTOCOL:  SSLv2, SSLv3, TLSv1

Jika di simpulkan aplikasi akan berada di belakang service port dari stunnel, baik dari sisi client ataupun server.

Tutorial
Dalam tutorial ini saya mengamankan komunikasi data untuk protokol samba (Server menggunakan Slackware). So jangan lupa jalankan dulu server/daemon samba.
Download http://mirrors.zerg.biz/stunnel/stunnel-4.53.tar.gz
Install
  $ tar zxf stunnel-4.XX.tar.gz
  $ cd stunnel-4.XX
  $ ./configure
  $ make
  $ make install   (as root)
Buat SSL sertifikat & key (Khusus Server untuk client optional)
  $ openssl req -new -nodes -x509 -out /etc/ssl/certs/stunnel.pem -keyout /etc/ssl/certs/stunnel.pem
Config File:
#### Server ####
    $ nano /etc/stunnel/stunnel.conf
      cert = /etc/ssl/certs/stunnel.pem
      [samba]
      accept =  1399
      connect = 139
    $ stunnel
    $ netstat -an | grep 1399
#### Client ####
$ nano /etc/stunnel/stunnel.conf
  client = yes
  [samba]
  accept = localhost:139
  connect = {IP Server stunnel}:1399
$ stunnel
$ netstat -an | grep 139
Uji coba akses samba server
    
$ smbclient -L localhost
$ smbclient -U  "//localhost/share-name"
Untuk membuktikan enkripsi paket silakan capture menggunakan tcpdump atau wireshark.
Atau silakan saja sniff dengan teknik Monkey in The Middle.:D

Kesimpulan
Dengan metode enkripsi komunikasi data menjadi lebih aman, Pada tutorial diatas merupakan contoh implementasi untuk mengamankan protokol samba, anda bisa mengamankan protokol lainnya yang dianggap belum aman.

Thanks To
ALLAH SWT

RNDC Bekasi
Maxindo
SJ, Dru, d.m0nk3y, mad17, p0nkdbyt3, dan semua teman2 di RNDC
Referensi
rndc.or.id/wiki: Mengamankan komunikasi data dengan enkripsi menggunakan stunnel
Stunnel: stunnel - multiplatform SSL tunneling proxy
Wikipedia: Encryption
Wikipedia: Transport Layer Security
Wikipedia: Public-key cryptography
Openssl: Welcome to the OpenSSL Project
SSL certificates HOWTO

Never Give Up

ALLAH SWT Doesn't Leave Us, So Don't Give Up With Your Problems ^_^
Thanks To ALLAH SWT