Friday, December 28, 2007

Port Knocking dan SSH

PORT KNOCKING

Untuk mendapatkan suatu system yang seratus persen aman dari gangguan dari

luar ialah dengan memutuskan hubungan dengan system eksternal. Tapi dengan

menutup system tersebut dari system luar, maka system tersebut tidak akan ada lagi

gunanya sebab system tersebut tidak dapat lagi diakses dan dipergunakan bahkan

oleh yang berhak dan membutuhkan.

Sebuah system yang baik harus memiliki keseimbangan antara keamanan dan

fleksibilitas dari system tersebut. Salah satu cara mencapai system komputer seperti

demikian ialah dengan menggunakan firewall. Dengan menggunakan firewall, maka

kita dapat mendefinisikan user yang dapat dipercaya dan yang tidak dapat dipercaya

dengan menggunakan alamat IP sebagai kriteria filter.


Kelemahan dari firewall ialah bahwa firewall tidak mampu membedakan user

yang dapat dipercaya. Firewall hanya mampu membedakan alamat IP yang

diasumsikan digunakan oleh orang yang tidak dapat dipercaya.

Untuk mendapatkan keamanan yang diperlukan dan kemampuan untuk

mengizinkan user yang bisa dipercaya untuk mengakses server maka diperlukan

suatu metoda yang memenuhi kedua kriteria tersebut. Salah satu metoda baru yang

dianggap memiliki kemampuan untuk memenuhi kedua kriteria tersebut adalah port

knocking.

Port knocking adalah suatu metoda dimana komputer remote (client)

berkomunikasi dengan sebuah server melalui port yang tertutup. Komunikasi ini

sendiri berlangsung secara satu arah, yaitu dari client menuju server. Server tidak

memberikan respons apapun terhadap client.

Perlengkapan yang Dibutuhkan

Implementasi dari port knocking membutuhkan beberapa perlengkapan

tambahan, yaitu:

· Firewall yang mampu mencatat setiap koneksi ke dalam port tertutup,

memonitor logfile secara real time, dan mampu merubah aturannya secara

dinamis


Firewall berfungsi salah satunya untuk melindungi home network

· IPChains atau IPTables akan sangat membantu

· Program utama yang menjalankan algoritma port knocking

Cara Kerja Port Knocking

Untuk mengaplikasikan metoda port knocking ini, pertama-tama semua port

yang ada ditutup terlebih dahulu. Meskipun port ditutup, layanan yang disediakan

tetap berjalan. Hal ini akan menyebabkan tidak ada orang dari luar yang mampu

mengakses layanan tersebut.


Seluruh port ditutup sehingga tidak ada yang dapat mengakses

Setelah semua port ditutup, maka beberapa port dicatat segala aktivitas yang

terjadi pada port tersebut, termasuk percobaan yang dilakukan untuk mengakses

port-port tersebut.

Oleh karena ditutupnya seluruh port ini, metoda port knocking ini tidak cocok

untuk melindungi semua jenis layanan. Hal ini disebabkan karena koneksi yang

dibangun menuju layanan yang dilindungi membutuhkan semacam ‘password´untuk

mengaksesnya. Sementara itu, koneksi menuju layanan-layanan publik dapat datang

dari mana saja sehingga metoda ini kurang cocok untuk melindungi layanan bersifat

publik.


Apabila ada suatu saat ada seorang user yang ingin mengakses layanan tertentu,

misalnya SSH, user tersebut akan mengawali koneksi dengan melakukan percobaan

koneksi ke port-port tertentu yang dimonitor dengan urutan tertentu juga. Urutan

‘ketukan’ ini hanya diketahui oleh orang-orang tertentu yang dipercaya (menjadi

semacam password untuk menggunakan layanan tertentu). Dengan menggunakan

ketukan ini, maka alamat IP seseorang yang oleh firewall sebelumnya dianggap

sebagai user yang tidak dapat dipercaya akan berubah status menjadi user yang

dapat dipercaya, sehingga user akan diizinkan untuk mengakses atau melakukan

koneksi terhadap layanan yang disediakan.


Seorang user melakukan ketukan rahasia

Fase mengetuk ini dapat dianalogikan sebagai ketukan pada pintu yang tidak

terlihat. Fase ini disebut demikian karena user tidak dapat mengetahui port-port

mana yang sedang dimonitor dan dicatat, dan demikian juga dengan orang lain

(terutama yang tidak dipercaya).

Setelah firewall mendeteksi adanya ketukan dengan urutan ketukan yang benar

pada port yang benar pula, maka aturan (rule) dari firewall akan diubah sehingga

alamat IP yang sesuai dengan yang ada pada log dari firewall akan diizinkan untuk

melakukan koneksi dengan port tertentu. Seperti terlihat pada gambar 2.4.


Seorang user diizinkan melakukan koneksi

(Diambil dari http://www.portknocking.org/)

Meskipun sebuah port telah dibuka untuk melakukan koneksi dengan user

tertentu, alamat IP yang lain tetap diblok sehingga tidak dapat mengakses port

tersebut seperti terlihat pada gambar di atas. Setelah user selesai dalam melakukan

koneksi dan menyelesaikan sesinya, maka user tersebut melakukan lagi ketukan

pada port yang dimonitor untuk memberi tanda pada firewall untuk menutup port

yang sebelumnya dibuka.

Format Ketukan

Format ketukan yang digunakan dalam metoda port knocking ini bergantung

pada seberapa banyak informasi yang ingin disampaikan melalui ketukan kepada

server. Berikut ini adalah beberapa contoh ketukan yang dapat diaplikasikan

berdasarkan keperluan tertentu:

· Port tunggal dengan pemetaan tetap ( f ixed )


Apabila koneksi yang diperlukan (layanan yang disediakan) hanya

bersumber pada satu port saja (misalkan port 22 untuk SSH), maka format

ketukan yang diperlukan hanya melibatkan tiga port saja. Sebagai contoh, port

100, 101, dan 102 dimonitor. Ketukan yang dapat dipakai dan fungsinya adalah

sebagai berikut:

Port yang diketuk Aksi yang dilakukan

100,102,101 Membuka port 22 untuk alamat IP yang

bersangkutan

101,102,100 Menutup port 22 untuk alamat IP yang

bersangkutan

101,100,102 Menutup port 22 dan mengabaikan

ketukan berikutnya dari alamat IP yang

bersangkutan.

Ketukan untuk port tunggal dengan pemetaan tetap

Dari tabel di atas dapat dilihat contoh ketukan yang dipakai untuk membuka

dan menutup port 22. Sedangkan port ketiga dapat digunakan apabila seorang

user melakukan port knocking dari komputer yang bukan miliknya sendiri dan

tidak dipercaya. Ketukan ketiga ini berfungsi untuk penduplikasian port

knocking oleh administrator dari host tersebut. Hal ini dengan asumsi bahwa

ketukan tidak di-‘tangkap’ oleh orang lain dan diduplikasikan sebelum sesi

berakhir. Hanya saja, kelemahan dari ketukan ketiga ini ialah bahwa orang masih

mampu mengetuk dengan menggunakan alamat IP yang lain sehingga ketukan

ketiga tersebut akan menjadi tidak berguna.

Kelemahan dari ketukan ini ialah port yang digunakan sangat sedikit,

sehingga apabila ada orang yang telah mengetahui port yang dimonitor maka

akan mudah bagi orang tersebut untuk mencoba ketukan yang tepat.


· Multiple port dengan pemetaan dinamis

Apabila sebuah server menyediakan beberapa jenis layanan, maka ketukan

seperti pada point pertama sudah tidak dapat lagi digunakan. Salah satu bentuk

ketukan yang dapat diaplikasikan adalah sebagai berikut:

Header Payload Checksum Footer

format ketukan dapat ditulis menjadi:

510,503,507 50a, 50b, 50c, 50d 50{(a+b+c+d) mod 10} 510,501,509

Tabel 3

Bagian payload merupakan bagian yang menyatakan port mana yang diminta

untuk dibuka, yaitu port abcd. Bagian checksum akan memastikan port yang

diminta benar dan tidak ada kesalahan dalam pengetukan. Sebagai contoh,

seorang user ingin mengakses port 150, maka ketukan yang dilakukan adalah

sebagai berikut:

510,503,507 500,501,505,500 506 510,501,509

Ketika ketukan ini dideteksi untuk alamat IP tertentu maka port 150 akan

dibuka. Apabila port 150 sudah dibuka untuk alamat IP tersebut, maka dengan

adanya ketukan ini akan menutup port tersebut untuk alamat IP tersebut.


Beberapa informasi dapat ditambahkan pada ketukan, seperti panjang sesi yang

diperkirakan, alamat IP yang diinginkan untuk memiliki akses, dan sebagainya.

Salah satu cara untuk mempersulit peniruan ketukan ini, dapat digunakan

beberapa range port secara bersamaan, sebagai contoh port 401-405,506-510.

Dengan range port ini dapat diselipkan beberapa port (yang tidak dimonitor)

pada ketukan sehingga orang yang berusaha meniru ketukan akan tertipu.

Sebagai contoh, pada kasus di atas ialah:

510,403,407 400,501,401,505,405,500,400 406,506 510,401,409

Dapat dilihat pada contoh di atas bahwa jumlah ketukan menjadi bertambah

namun informasi yang disampaikan tetap sama. Hal tersebut terjadi karena portport

diluar range yang telah ditentukan tidak dimonitor dan tidak dianggap

sebagai suatu ketukan. Meskipun demikian ada sedikit perubahan pada aturan

pengetukan, dimana digit 1 sampai 5 menggunakan port 400-405, sedang digit 6

sampai 10 menggunakan port 506 sampai 510. Tentu saja user yang dapat

dipercaya harus mengetahui port mana saja yang dimonitor.

· Pemetaan dengan menggunakan enkrips i

Untuk menambah keamanan dari port knocking maka dapat digunakan

enkripsi pada bagian informasinya. Dengan enkripsi, maka ketukan yang

dilakukan akan semakin sulit untuk ditebak.

Misalkan akan dikirim 10 nomor (k1, k2, ..., k10) dengan menggunakan port

knocking. Asumsikan server menyediakan port 400-655 untuk dimonitor.

Pertama, nomor tersebut akan dienkripsikan dengan menggunakan algoritma

tertentu (misalkan RSA atau Blowfish), lalu dilakukan byte encoding. Kemudian

hasilnya dipetakan untuk menghasilkan ketukan yang sebenarnya. Server lalu

membalik langkah yang telah dilakukan oleh user.

hanyalah beberapa ide yang

tertuang, mengenai aplikasinya sendiri dalam jaringan akan sangat tergantung dari

desain administrator masing-masing jaringan dan kebutuhan dari jaringan tersebut.

Keunggulan dan Kelemahan Port Knocking

Setiap sistem keamanan yang didesain oleh manusia tidak ada yang sempurna.

Setiap sistem pasti memiliki kelebihan dan kelemahan masing-masing, demikian

juga dengan port knocking. Berikut ini akan dibahas beberapa mengenai keunggulan

dan kelemahannya.

Keunggulan Port Knocking

Ada beberapa hal yang membuat port knocking lebih unggul daripada sistem

keamanan yang biasa, yaitu:

· 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.


Kelemahan Port Knocking

Ada beberapa hal yang menjadi kelemahan dalam pengaplikasian metoda port

knocking ini:

· 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 sistem

tidak mampu mengenali atau mendengar ketukan yang telah dilakukan, maka

tidak ada yang mampu melakukan koneksi dari luar.

No comments: