38 SISTEM AUTENTIKASI PORT KNOCKING

(1)

 

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.

      


(2)

 

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 hosthost 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


(3)

 

2. Port Knocking

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


(4)

 

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


(5)

 

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 :

<user_name>:<password_hash> Contoh :

serverwb:e757fd4fedc4fe825bb81b1b466a0947 2. ipf.group

Letak : /etc

Jenis : plaintext (ANSI)

Akses : baca, tulis hanya untuk root Deskripsi :


(6)

 

Format :

<group_name>:<port1>,<port2>,...:<username1>,<username2>,... 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


(7)

 

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


(8)

 

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


(9)

 

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.


(1)

 

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


(2)

 

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 :

<user_name>:<password_hash> Contoh :

serverwb:e757fd4fedc4fe825bb81b1b466a0947 2. ipf.group

Letak : /etc

Jenis : plaintext (ANSI)

Akses : baca, tulis hanya untuk root Deskripsi :


(3)

 

Format :

<group_name>:<port1>,<port2>,...:<username1>,<username2>,... 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


(4)

 

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


(5)

 

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


(6)

 

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.