Sabtu, 25 Februari 2012

Tutorial Port Knocking


I. Pendahuluan

Pada saat penulis membahas tentang Dasar-Dasar Iptables, ada seseorang yang bertanya kepada penulis tentang Port Knocking. Karena pada saat itu penulis tidak mengetahui sama sekali tentang port knocking, maka penulis menjawab bahwa penulis tidak tahu. Namun karena penasaran ingin mengatahui apa itu sebenarnya port knocking, penulis segera mencari tahu tentang port knocking di Internet. Setelah memakan waktu yang cukup lama, Alhamdulillah penulis mengetahui konsep dasar tentang port knocking dan penerapannya. Setelah itu penulis segera menulis artikel ini agar penulis tidak lupa tentang port knocking dan bermaksud membagi ilmu kepada para pembaca sejauh yang diketahui oleh penulis tentang port knocking.

II. Port knocking

Kita mengetahui bahwa sistem administrator ditantang untuk membuat sebuah sistem keamanan jaringan komputer yang mengkombinasikan antara fleksibilitas dan keamanan. Jika berbicara soal keamanan jaringan komputer, mungkin komponen yang akan sering dibicarakan adalah seputar firewall beserta celah-celah keamanan jaringan itu sendiri.  Dengan menggunakan firewall, maka kita dapat mendefinisikan user yang dapat dipercaya dan yang tidak dapat dipercaya dengan menggunakan alamat IP dan port sebagai kriteria filter. Kelemahan dari firewall ialah bahwa firewall tidak mampu membedakan user yang dapat dipercaya dan yang tidak dapat dipercaya. Firewall hanya mampu membedakan alamat IP dan port yang diasumsikan digunakan oleh orang yang dapat dipercaya. Maka dari itulah para ahli keamanan jaringan membuat sistem keamanan baru yang disebut dengan port knocking.
Port knocking adalah sebuah metode untuk membangun komunikasi dengan perangkat komputer yang tidak membuka port komunikasi apapun secara bebas. Dengan kata lain, perangkat komputer ini tidak memiliki port komunikasi yang terbuka bebas untuk dimasuki, tetapi perangkat ini masih tetap dapat diakses dari luar. Koneksi dapat terjadi dengan menggunakan metode pengetukan port-port komunikasi yang ada. Pengetukan port-port ini dilakukan dengan kombinasi tertentu secara berurutan dalam satu rentang waktu tertentu. Jika dilihat sesaat, Port Knocking memang tidak terlalu banyak gunanya dan tidak terlalu istimewa. Hanya melakukan buka tutup port komunikasi saja tentu tidaklah terlalu banyak gunanya bagi pengguna jaringan lokal. Namun bagi para pekerja telekomuter, para pengguna komputer yang sering bekerja di luar kantor atau para administrator jaringan dan server yang harus mengurusi server-server mereka 24 jam dari mana saja, Port Knocking merupakan metode yang luar biasa sebagai sebuah jalan penghubung ke perangkat-perangkat komputer mereka. Port knocking cocok untuk mereka yang masih ingin memperkuat sistem keamanan komputer dan perangkat jaringannya, sementara tetap pula ingin memiliki koneksi pribadi ke dalamnya secara kontinyu dan dapat dilakukan dari mana saja.

III. Bagaimana Cara Kerja Port Knocking?

Port knocking bekerja seperti halnya brankas dengan kunci kombinasi angka putar. Pada brankas tersebut, Anda diharuskan memutar kunci kombinasi beberapa kali hingga tepat seperti yang ditentukan. Sebenarnya Anda memutar lapisan-lapisan kunci di dalam brangkas. Dalam lapisan-lapisan kunci tersebut terdapat sebuah lubang kunci. Jika sebuah putaran tepat, maka sebuah lubang terbuka. Jika seluruh putaran dilakukan dengan kombinasi yang benar, maka seluruh lubang terbuka dan menciptakan sebuah jalur khusus yang bebas tidak ada hambatan sama sekali. Jalur lubang kunci tadi tidak lagi menjadi penghalang pintu brankas untuk dibuka, sehingga pintu dapat terbuka dengan mudah.

Port knocking juga menggunakan sistem yang hampir sama, yaitu menggunakan kombinasi lapisan-lapisan kunci untuk dapat mengamankan sebuah port komunikasi. Perbedaannya ada pada lapisan kunci yang digunakannya. Kunci dari sistem port knocking adalah port-port komunikasi itu sendiri. Cara membuka kuncinya adalah dengan mengakses dengan sengaja beberapa port komunikasi yang memang tertutup.  Ketika beberapa port komunikasi tadi diakses dengan kombinasi tertentu, maka akan terbuka sebuah port komunikasi baru yang bebas Anda masuki. Sebagai contoh, untuk membuka port 22 yang merupakan port komunikasi untuk aplikasi remote login SSH, Anda diharuskan “mengetuk” port 450, 360, 270, 180. Ketika kombinasinya benar dalam suatu waktu tertentu, maka akan terbuka port 22 yang Anda inginkan. Sistem seperti ini dapat tercipta dengan bantuan sebuah program firewall. Program firewall biasanya memiliki fasilitas untuk melakukan logging terhadap setiap proses komunikasi yang keluar-masuk melaluinya. Dari membaca log inilah, sistem Port knocking dapat mengetahui kombinasi ketukan. Ketika sistem Port knocking membaca sebuah kombinasi yang tepat pada log, maka sebuah proses otomatis menjalankan aplikasi yang akan membuka port komunikasi yang ditentukan. Setelah terbuka, maka jadilah sebuah pintu masuk kedalam perangkat Anda.

IV. Implementasi Port Knocking

Ada banyak cara untuk mengimplementasikan port knocking. Di situs portknocking.org, tersedia berbagai macam paket untuk implementasi port knocking. Penulis menggunakan paket knockd di dalam artikel ini dan menggunakan distro centos 5.4. Untuk menginstal paket knockd ke dalam sistem kita, ada 3 cara yaitu dengan menggunakan tarball, atau dengan paket rpm atau dengan menggunakan yum. Jika pembaca mau menginstal menggunakan tarball atau rpm, maka ambil paketnya disini dan didalam sistem sudah terinstal paket libpcap. Penulis menggunakan perintah yum untuk menginstal paket knockd di dalam sistem penulis. Namun, untuk menginstal paket knockd tersebut, penulis harus menginstalnya melalui dag wieers. Jika dag wieers sudah selesai ketikkan perintah berikut:

# yum -y install knockd libpcap*

Maka paket knockd sudah terinstal dalam sistem. Untuk mengkonfigurasi knockd, tulis perintah berikut:

# vi /etc/konckd.conf
Setelah itu kita konfigurasi paket tersebut. Karena iptables di centos 5.4 berada dalam direktori /sbin dan bukan di /usr/bin maka pada file knockd.conf pada folder /etc rubah pada bagian command dari /usr/sbin/iptables menjadi /sbin/iptables.

Untuk menyalakan knockd tuliskan perintah berikut:
# /usr/sbin/knockd -d
dan di /var/log/knockd.log ada tulisan seperti berikut:


dan ketika mengetikkan perintah ps aux, maka akan ada tulisan sebagai berikut:


dan untuk mematikan knock tuliskan perintah berikut:
# pkill knock
dan di /var/log/knockd.log ada tulisan seperti berikut:


Kemudian penulis mencoba menggunakan port knocking untuk aplikasi telnet dan ftp. Untuk aplikasi ssh, silahkan pembaca mencobanya sendiri. Penulis menggunakan 2 komputer yang berbasis linux dan windows. Komputer linux yang menjadi client juga diinstal paket-paket knockd di dalamnya sedangkan untuk komputer windows, penulis menggunakan aplikasi yang sudah disediakan.

a. Port knocking untuk FTP
FTP atau File Transfer Protocol digunakan untuk mentransfer file antara server dengan klien. Secara asal, port yang digunakan oleh ftp adalah port 21. Kita ingin menggunakan port knocking untuk aplikasi ftp ini, maka dari itu port 21 harus kita tutup terlebih dahulu.


Cobalah lakukan ftp dari komputer lain. Jika tidak bisa, maka kita berhasil membuat iptables untuk menutup port ftp. Kemudian kita konfigurasi file knockd.conf sehingga seperti berikut:


Kemudian matikan terlebih dahulu knockd jika knockd sudah menyala kemudian nyalakan kembali dengan cara:
 # /usr/sbin/knockd -d
Pada komputer client, install knockd dengan menggunakan yum seperti pada di server knockd. Kemudian jika sudah selesai, ketikkan perintah dengan format berikut:
 # knock -v alamatip port1 port2 port3
Dalam kasus kita, format di atas menjadi:
 # knock -v 192.168.0.2 7000 8000 9000

Maka di log server knockd akan ada log sebagai berikut:

dan di iptables server akan muncul rantai baru seperti berikut:

Kalau sudah begitu, berarti port 21 sudah dibuka. Masukkan perintah ftp di komputer klien dan seharusnya perintah ftp tersebut sudah dapat dilakukan di komputer klien.


Dari gambar di atas dapat dilihat bahwa ketika dari sisi klien mengetikkan ftp untuk pertama kali, maka clien tidak bisa mengakses server 192.168.0.2. Kemudian setelah server menyalakan knockd, maka client mengetikkan perintah knock -v untuk mengakses server tersebut. Lalu client mengetikkan ftp lagi, dan ternyata client dapat mengakses server tersebut.

Jika sudah selesai, maka tutup kembali dengan perintah:

 # knock -v 192.168.0.2 9000 8000 7000

dan lihatlah di log server knockd, maka akan ada muncul log sebagai berikut:


dan di iptables server rantai port 21 akan hilang dan dengan begitu port 21 akan kembali terkunci. Untuk meyakinkan kembali, cobalah ftp kembali di komputer klien dan seharusnya ftp tidak bisa dilakukan. Dengan begitu port knocking sudah berhasil kita lakukan pada aplikasi ftp.

b. Port Knocking untuk Telnet
Telnet digunakan untuk meremote client dengan menggunakan port 23. Pada contoh ini, kita akan menggunakan port knocking untuk aplikasi telnet. Sebelumnya tutuplah terlebih dahulu port 23.


Setelah itu, konfigurasikan file konfigurasi knock sebagai berikut:


Kemudian cobalah telnet dari komputer lain dan seharusnya telnet tidak bisa digunakan. Kemudian matikan terlebih dahulu knockd jika knockd sudah menyala kemudian nyalakan kembali dengan cara:
 # /usr/sbin/knockd -d
Pada komputer client, install knockd dengan menggunakan yum seperti pada di server knockd. Kemudian jika sudah selesai, ketikkan perintah dengan format berikut:
 # knock -v alamatip port1 port2 port3
Dalam kasus kita, format di atas menjadi:
 # knock -v 192.168.0.2 7000 8000 9000

Maka di log server knockd akan ada log sebagai berikut:


dan di iptables server akan muncul rantai baru seperti berikut:


Kalau sudah begitu, berarti port 23 sudah dibuka. Masukkan perintah telnet di komputer klien dan seharusnya perintah telnet tersebut sudah dapat dilakukan di komputer klien.


Jika sudah selesai, maka tutup kembali dengan perintah:

# knock -v 192.168.0.2 9000 8000 7000

dan lihatlah di log server knockd, maka akan ada muncul log sebagai berikut:


dan di iptables server rantai port 23 akan hilang dan dengan begitu port 23 akan kembali terkunci. Untuk meyakinkan kembali, cobalah telnet kembali di komputer klien dan seharusnya telnet tidak bisa dilakukan. Dengan begitu port knocking sudah berhasil kita lakukan pada aplikasi telnet.

IV. Konfigurasi Lebih Dari Satu Konfigurasi

File konckd.conf dapat mengeksekusi lebih dari 2 konfigurasi yang ada di dalamnya. Namun harus diperhatikan bahwa jika kita menggunakan lebih dari satu konfigurasi port knocking, maka port-port tersebut harus berbeda satu dengan yang lainnya. Contoh konfigurasi file di bawah ini merupakan contoh file knockd.conf untuk aplikasi ftp dan telnet.



IV. Knock Client di Windows

Untuk mengakses server yang menggunakan port knocking dari windows, maka kita bisa menggunakan aplikasi yang sudah disediakan oleh pengembang  knockd. Untuk mendownloadnya, silahkan ke sini. Cara penggunaannya pun sangat mudah. Setelah mendownload tools tersebut, ekstrak tools tersebut lalu buka command prompt di windows. Untuk lebih jelasnya, perhatikan gambar berikut. Penulis mengekstrak tools tersebut di drive G dan ingin menggunakan aplikasi ftp ke server yang menggunakan port knocking.


V. Kelebihan dan Kelemahan port Knocking

Dari konsep dasar dan contoh-contoh yang diterangkan diatas, kita dapat melihat bahwa port knocking mempunyai kelebihan dan kelemahan.

a. Keunggulan Port Knocking
• Port knocking merupakan metoda yang terselubung untuk melakukan otentifikasi dan perpindahan informasi menuju sebuah sistem yang terhubung dengan jaringan, namun tidak memiliki port yang terbuka. Akan sulit bagi siapapun untuk mengetahui apakah port dimonitor atau tidak. Selain itu, percobaan yang dilakukan untuk menebak urutan ketukan yang dilakukan secara ‘kasar’ akan terdeteksi dan alamat IP yang melakukannya dapat diblok.
• Informasi mengalir dalam bentuk percobaan koneksi dan bukannya paket data. Tanpa mengetahui keberadaan sistem ini dan metoda yang digunakan, maka akan sulit mendeteksi penggunaan otentifikasi dengan memonitor traffic.
• Karena otentifikasi dibangun ke dalam urutan ketukan, aplikasi yang ada tidak lagi perlu dirubah.

b. Kelemahan port Knocking
• Untuk menggunakan metoda ini diperlukan program tersendiri untuk melakukan ketukan.
• Dalam penggunaan metoda ini dibutuhkan sejumlah port yang perlu dialokasikan secara khusus untuk digunakan oleh sistem sehingga port tersebut tidak dapat digunakan untuk keperluan lain
• Metoda ini memodifikasi rule dari firewall secara otomatis. Hal tersebut memerlukan penanganan yang hati-hati. Bila terjadi kegagalan dimana system tidak mampu mengenali atau mendengar ketukan yang telah dilakukan, maka tidak ada yang mampu melakukan koneksi dari luar.

Referensi:

http://fitranto-avtbluesky.blogspot.com/
http://merycute.blogspot.com/
http://alouche.net/
http://www.zeroflux.org/
http://beginlinux.com/
http://www.portknocking.org

Tidak ada komentar:

Posting Komentar