SISTEM AUTENTIKASI PORT KNOCKING PADA SISTEM ... - P3M

59 downloads 5455 Views 223KB Size Report
Seminar Nasional Teknologi 2007 (SNT 2007). ISSN : 1978 – 9777. Yogyakarta, 24 November 2007. D - 1. SISTEM AUTENTIKASI PORT KNOCKING.
Seminar Nasional Teknologi 2007 (SNT 2007)  Yogyakarta, 24 November 2007   

 

ISSN : 1978 – 9777 

SISTEM AUTENTIKASI PORT KNOCKING PADA SISTEM CLOSED PORT Josefh P. Richard S.Kom.1, Budi Susanto S.Kom., MT2 1

Mahasiswa Teknik Informatika Universitas Kristen Duta Wacana 1

Dosen Teknik Informatika Universitas Kristen Duta Wacana

ABSTRAK Keamanan komputer yang terhubung ke Internet dewasa ini telah menjadi hal yang sangat diperhatikan. Berbagai teknik serangan dan usaha penetrasi pada suatu host selalu muncul tiap tahunnya. Pada umumnya serangan dilakukan dengan mengeksploitasi aplikasi yang listen pada port–port yang terbuka pada server. Membiarkan suatu port terbuka dan aplikasi listen pada port tersebut dapat membawa masalah keamanan yang cukup serius, namun menutup port berarti menutup suatu host dari dunia luar. Port knocking sebagai salah satu sistem autentikasi dapat menjadi alternatif untuk memecahkan masalah diatas. Port knocking datang dengan suatu solusi sederhana yaitu : “buka port kepada suatu client bila client itu meminta, dan tutup kembali bila client telah selesai”. Port knocking memungkinkan client untuk terkoneksi walaupun setiap port pada serverditutup. Untuk membuka dan menutup port maka client harus mengirimkan identitas pribadinya melalui jaringan yang disamarkan sebagai usaha koneksi ke server. Kemampuan port knocking ini akan menyebabkan port–port pada server tidak terlihat terbuka oleh pihak lain, namun terlihat terbuka bagi client yang telah terautentikasi. Dengan demikian port dibuka hanya kepada pihak yang sah, dalam hal ini client yang terautentikasi. Hal ini diharapkan dapat mengurangi serangan DDoS/DOS pada server serta eksploitasi terhadap aplikasi yang listen pada port–port tertentu Kata kunci: port knocking, autentikasi, closed port, keamanan komputer 1. PENDAHULUAN Pada prinsipnya komunikasi antara dua host (komputer) setidaknya membutuhkan 2 informasi dalam setiap paket data yang dipertukarkan, yaitu alamat IP:port tujuan dan IP:port sumber. Ketika paket data tersebut diterima oleh komputer tujuan, maka daemon penjadwal pada host tersebut akan membaca isi paket dan menentukan kemana paket akan diteruskan dan program apa yang bertanggung jawab untuk itu.                                                             

1 2

Mahasiswa Teknik Informatika Universitas Kristen Duta Wacana Dosen Teknik Informatika Universitas Kristen Duta Wacana

D ‐ 1   

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777  Yogyakarta, 24 November 2007    Untuk menentukan program yang bertanggung jawab atas paket data tersebut, aplikasi daemon pada host yang dituju akan membaca port number tujuan dari paket data yang diterimanya. Banyak program aplikasi umum yang memiliki standard port untuk melakukan komunikasi3. Sebagai contoh: webserver biasanya menggunakan port 80 (HTTP), secure shell menggunakan port 22 (SSH), FTP menggunakan port 21 untuk saluran kontrol dan port 20 untuk saluran datanya, SMTP menggunakan port 25 dan beberapa program aplikasi umum lainnya. Saat program–program tersebut berjalan dalam sebuah komputer dalam bentuk daemon, maka port–port yang menangani paket yang ditujukan kepada program aplikasi ini harus tetap dibiarkan terbuka. “Terbuka” disini berarti port–port tersebut siap untuk menerima dan memproses paket yang dikirimkan dari dan ke mana saja tergantung hasil filter dari firewall. Program daemon berada dalam keadaan listen state pada port – port tertentu yang harus dalam keadaan terbuka. Keadaan ini dapat menimbulkan ancaman yang serius terhadap sistem yang bersangkutan. Hampir sebagian serangan yang dirancang, merupakan exploit–exploit untuk port–port yang terbuka. Contoh paling nyata adalah serangan DdoS/DOS. Serangan ini dilakukan dengan membanjiri host target dengan paket dalam jumlah yang besar yang berasal dari host–host yang berbeda. Selain itu dalam teknik penyerangan ada suatu fase dimana penyerang harus melakukan identifikasi komputer target. Teknik ini biasanya diawali dengan sesi port scanning. Pada sesi ini penyerang mengambil informasi port–port apa saja yang terbuka pada mesin target, setelah itu diikuti dengan OS Finger Printing. Pada OS Finger Printing penyerang dapat mengetahui OS yang digunakan oleh target, cukup dengan mempelajari kelakukan port yang terbuka saat membalas paket yang ditujukan ke port tersebut. Salah satu pendekatan primitif yang cukup masuk akal adalah dengan menutup semua port atau biasa disebut juga closed portsystem. Hal ini tentu saja benar dan tidak salah, namun bila semua port ditutup maka sama saja menutup koneksi komputer atau host tersebut dari dunia luar dalam hal ini Internet dan hal ini bukan sesuatu yang diinginkan. Untuk itu diperlukan suatu jalan keluar yang tetap menjamin keamanan mesin dari exploitasi terhadap port, tanpa harus mengorbankan tingkat konektifitas sistem.

                                                             3  Standarisasi dari IANA 

D ‐ 2   

Seminar Nasional Teknologi 2007 (SNT 2007)  Yogyakarta, 24 November 2007    2. Port Knocking

 

ISSN : 1978 – 9777 

Port Knocking merupakan metoda sistem autentikasi yang secara khusus dibuat untuk jaringan. Ide dasar dari sistem autentikasi ini telah lama digunakan namun baru pada tahun 2003, dalam salah satu kolom di majalah Linux Journal, seorang pakar jaringan komputer Martin Krzywinski kembali mempopulerkan metode ini dengan beberapa terobosan–terobosan menghadapi serangan yang mungkin terjadi. Pada dasarnya port knocking dapat didefinisikan sebagai suatu metode komunikasi antara dua komputer, dimana informasi yang dikirimkan di encode dalam bentuk usaha koneksi ke port–port dalam urutan tertentu. Usaha membangun koneksi ini bisa disebut juga ketukan2. Mekanisme port knocking akan menggunakan file log yang dibuat oleh firewall untuk mengetahui apakah suatu usaha koneksi telah dibuat oleh suatu host atau tidak.

Prinsip dasar dari port knocking secara mudah dapat dijelaskan sebagai berikut : 1. client melakukan koneksi ke sistem remote yang menerapkan aturan firewall sebagai berikut : client sama sekali tidak dapat terkoneksi dengan port berapapun pada remote sistem, dengan kata lain semua port ditutup oleh firewall; 2 Krzywinski Martin, Port Knocking – Flexible Security Through Authentication Across Closed Ports, West Coast Security Forum - 2003 2. client mencoba melakukan koneksi dengan mengirimkan paket data UDP ke sistem remote melalui beberapa port secara sekuensial dalam hal ini antara 32 sampai 265 port yang tersedia; 3. client tidak akan mendapatkan response apapun dari server saat fase ini; 4. port knock daemon mencatat percobaan koneksi kemudian melakukan autentikasi terhadap percobaan tersebut bila autentikasi berhasil, dalam hal ini urutan port yang di coba untuk dikoneksikan sesuai dengan aturan tertentu pada port knock daemon, maka daemon akan melakukan overwrite terhadap file konfigurasi firewall agar mengijinkan port n untuk dibuka kepada client dengan IP Addres ter-autentikasi; 5. client melakukan koneksi ke port n menggunakan aplikasi seperti pada umumnya; 6. saat client memutuskan koneksi, maka program daemon dari port knock akan melakukan kembali overwrite terhadap isi file konfigurasi firewall sehingga port kembali tertutup bagi client tersebut.

Salah satu masalah pada port knocking adalah replay–attack yaitu penyerang berhasil sniffing port sequence untuk kemudian melakukan knocking menggunakan hasil rekaman. Untuk

D ‐ 3   

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777  Yogyakarta, 24 November 2007    mengatasi masalah tersebut maka terdapat beberapa alternatif pendekatan untuk port knocking, diantaranya: – penggunaan one time password, – menggunakan enkripsi dan fungsi tertentu untuk menghasilkan suatu sequences port.

Untuk sistem yang dibangun kali ini digunakan pendekatan cara kedua atau menggunakan enkripsi dalam hal ini RSA Public Key Cryptography dan fungsi dengan bentuk persamaan :

RSA_public( hj, ha, pj, act, prv, u, p)k = p0, p1, p2, p3, ......., p32

ha = host asal, hj = host tujuan, pj = port tujuan, act = aksi yang akan dilakukan (membuka atau mentutup port) prv = private password/private key k = public key u = username p = password p0, ..., p32 = merupakan urutan port yang akan diketuk Program port knocking pada sisi server merupakan program daemon. Daemon ini akan berjalan terus menerus dan melakukan evaluasi terhadap isi file log setiap detiknya, dengan catatan isi file log berubah. Berubah atau tidaknya isi file log dapat diketahui dengan cara membandingkan hasil MD5 hash dari file log saat ini dengan hasil MD5 hash sebelumnya.

D ‐ 4   

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777  Yogyakarta, 24 November 2007    Aturan firewall baru akan dirubah bila jumlah ketukan telah mencapai 32 dan hasil decode dari ketukan tersebut menunjukkan bahwa ketukan tersebut berasal dari pemakai yang sah. Pemakai yang sah dalam hal ini adalah pemakai yang nama serta passwordnya ada pada file ipf.passwd. Dan port yang ingin dibuka oleh pemakai tersebut merupakan port yang boleh dibuka oleh user tersebut. Penentuan boleh tidaknya membuka port didasarkan pada daftar port yang disimpan dalam file ipf.group. Deskripsi kedua file tersebut yang digunakan dalam penerapan sistem ini secara lengkap adalah sebagai berikut :

1. ipf.passwd Letak

: /etc

Jenis

: plaintext (ANSI)

Akses

: baca/tulis hanya root

Deskripsi : File ini berisi username dan MD5 hash dari password user. Username maksimal sebesar 8 byte, sedangkan password hash 33 byte. Format : : Contoh : serverwb:e757fd4fedc4fe825bb81b1b466a0947 2. ipf.group Letak

: /etc

Jenis

: plaintext (ANSI)

Akses

: baca, tulis hanya untuk root

Deskripsi : File ini berisi nama group, port yang diijinkan untuk dibuka oleh tiap group, dan username yang tergabung di group tersebut. D ‐ 5   

Seminar Nasional Teknologi 2007 (SNT 2007)  Yogyakarta, 24 November 2007    Format :

 

ISSN : 1978 – 9777 

:,,...:,,... Contoh : user:20,21,22,23,80:alice,bob,charles

Bila jumlah ketukan masih kurang dari 32, maka pemakai akan diantrikan di dalam suatu link list dalam jangka waktu tertentu, hingga jumlah ketukannya lengkap.

3. IMPLEMENTASI DAN ANALISIS Implementasi port knocking pada sistem ini menggunakan IPFILTER sebagai firewall pedukungnya, untuk penjelasan lebih lanjut mengenai cara penggunaan IPFILTER serta logging dapat mengunduh manualnya dari http://www.freebsd.org. Program server daemon port knocking ini dibangun dan dieksekusi pada sistem operasi FreeBSD 5.4. Sedangkan program pada sisi client dapat dicompile pada mesin *NIX, termasuk GNU/Linux ataupun BSD variant menggunakan gcc 2.9x dengan library openssl 0.98 ke atas.

Untuk menganalisa kemampuan server yang telah menjalankan port knocking, maka dilakukan sesi port scanning. Port scanning diharapkan memberikan gambaran bagaimana reaksi server saat port - portnya di-scan. Program scan yang digunakan adalah nmap ver. 4.0 yang dapat didownoad dari http://www.insecure.org. Sedangkan teknik scan yang digunakan adalah SYN, FIN, dan X'mas. Sedangkan jaringan yang digunakan sebagai ujicoba, terdiri dari 3 host yang dihubungkan dengan switch, seperti ditunjukkan pada gambar 1.

D ‐ 6   

Seminar Nasional Teknologi 2007 (SNT 2007)  Yogyakarta, 24 November 2007   

 

ISSN : 1978 – 9777 

Gambar 1. Topologi Jaringan untuk percobaan sistem port knocking

File-file konfigurasi server port knocking yang digunakan dalam percobaan sistem port knocking ini adalah sebagai berikut:

● ipf.rules 1: pass out quick from any to 192.168.1.2 2: pass in quick from 192.168.1.2 to any 3: block in log quick proto udp from any to any port 999 >< 1256 4: block in all ● ipf.group 1: wheel:all:root,teknik 2: user:20,21,22,23,80:alice,charles ● ipf.passwd 1: alice:27946274a201346f0322e3861909b5ff 2: charles:a319360336c8cac32102f4dffbee4260 3: teknik:ebd556e6dfc99dbed29675ce1c6c68e5

D ‐ 7   

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777  Yogyakarta, 24 November 2007    Hasil port scan dari host Cebereus dan Tyr sebelum salah satunya melakukan knocking, menunjukkan bahwa tidak ada satupun port pada server Fehnrir yang terbuka. Kemudian host Cebereus melakukan knocking untuk membuka port 23 dan terautentikasi serta server Fehnrir membuka port 23 untuk host Cebereus. Pada kondisi ini, hasil port scan dari host Cebereus menunjukkan bahwa satu port yaitu port 23 pada server Fehnrir telah terbuka. Bagaimana dengan hasil port scan di Tyr? Hasil port scan pada Tyr sekali lagi menunjukkan bahwa tidak ada satupun port yang terbuka. Hal ini disebabkan karena knock daemon mengubah aturan firewall pada Fehnrir secara spesifik hingga Firewall hanya membuka port 23 untuk alamat IP 192.168.1.2 yaitu dalam hal ini alamat IP Cebereus. Pembukaan port secara spesifik untuk suatu host, dapat menghalangi pihak lain selain host terautentikasi untuk mengakses port serta layanan yang disediakan port tersebut.

Selain port scanning, salah satu aspek untuk menguji knock port adalah kemampuannya dalam menghadapi replay attack. Dari program program knockd kami hasilkan, replay attack tidak akan akan berfungsi. Sebab knock sequence yang dikirim telah di encrypt dan didecode. Sehingga walaupun knock sequence tersebut diulangi ke server yang sama oleh pihak penyerang, server akan bereaksi sama seperti saat dilakukan oleh pihak yang sah. Yang dimaksud dengan bereaksi sama dalam hal ini adalah membuka port ke nomor IP yang telah ter-encrypt di dalam sequence, bukan kepada pengirim sequence.

Permasalahan IP spoofing ditanggulangi dengan memberikan timestamps ke setiap node yang mengantri untuk dibukakan port. Bila hingga batas waktu yang ditetapkan jumlah sequence yang masuk tidak genap 32, maka node akan dibuang. Hal ini untuk mencegah buffer overflow sebagai akibat DDoS dengan menggunakan IP Spoofing sebagai sarana penyerangan.

4. KESIMPULAN Beberapa kesimpulan yang dapat diambil dari sistem autentikasi port kocking sebagai berikut: program port knocking dapat dijadikan alternatif untuk koneksi pada server, yang ingin mempertahankan kondisi semua port tertutup sepanjang tidak dibutuhkan; proses port knocking lebih tepat digunakan

D ‐ 8   

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777  Yogyakarta, 24 November 2007    oleh standalone server. Yang membutuhkan proses login setiap kali hendak mengakses sistem; pembukaan port secara spesifik pada pihak tertentu membantu mengontrol akses port serta layanannya dari pihak yang tidak sah.

DAFTAR PUSTAKA Conoboy, Brendan., Fichtner., Erick., (2004) IP FILTER Based Firewall HowTo. ,http://www.obfuscation.org/ipf., diakses pada Juni 2007 FreeBSD Handbook, http://://www.freebsd.org , diakses pada Juni 2005 Gay, Warren W., (1999) SAMS TeachYourself Linux Programming in 24 Hours, Indianapolis : Sams Publishing. Gray, John Shapley., (2000) Interprocess Communication in UNIX : The Nooks and Crannies, New Jersey : Prentice Hall Kung Luke, Hou C. Jennifer, (2004) Network System Labs Project : Port Knocking, University of Illinois, Mansfield Nial, Practical TCP/IPjilid 1., Yogyakarta, Penerbit Andi Stevens, W. Richard., Fenner, Bill., Rudoff, Andrew M., (2004) Unix Network Programming, Boston : Addison Wesley, Stanger, James, Lane, Patrick T. (2001),Hack Proofing Linux : A Guide to Open Source Security, Massachuset : Syngress Publishing Inc. Tannenbaum S. Andrew, (2003) Computer Network, New Jersey : Prentice Hall

D ‐ 9