Port knocking: Ide keamanan yang waktunya telah tiba

Banyak, banyak inovasi datang dari dunia Linux dan Unix. Beberapa lebih menarik bagi saya daripada port knocking. Sebagai plug-in keamanan global untuk melindungi layanan, ia memiliki banyak manfaat dan sedikit kerugian. Namun, karena satu dan lain alasan, itu menderita karena kurangnya penggunaan dan pemahaman. Banyak administrator mungkin pernah mendengarnya, tetapi sedikit yang tahu bagaimana menerapkannya. Bahkan lebih sedikit yang menggunakannya.

Port knocking bekerja pada konsep bahwa pengguna yang ingin melampirkan ke layanan jaringan harus memulai urutan koneksi port yang telah ditentukan sebelumnya atau mengirim string unik byte sebelum klien jarak jauh dapat terhubung ke layanan akhirnya. Dalam bentuk yang paling dasar, perangkat lunak klien pengguna jarak jauh harus terlebih dahulu terhubung ke satu atau lebih port sebelum menghubungkan ke port tujuan akhir.

Misalnya, klien jarak jauh ingin terhubung ke server SSH. Administrator mengonfigurasi persyaratan pengetukan port sebelumnya, mengharuskan menghubungkan klien jarak jauh terlebih dahulu terhubung ke port 3400, 4000, dan 9887 sebelum menghubungkan ke port tujuan akhir, 22. Administrator memberi tahu semua klien yang sah “kombinasi” yang benar untuk terhubung ; peretas jahat yang ingin terhubung ke layanan SSH akan ditolak aksesnya tanpa kombinasi. Port knocking bahkan akan menggagalkan pemindaian port dan penggemar yang mengambil spanduk.

Karena kombinasi port dan protokol transport dapat digunakan, jumlah kemungkinan urutan yang harus ditebak oleh penyerang tinggi. Bahkan jika peretas tahu hanya ada tiga ketukan port yang terlibat, seperti dalam contoh yang sangat sederhana di atas, dengan 64.000 kemungkinan port TCP, UDP, dan ICMP (Internet Control Message Protocol) untuk dipilih, kumpulan kemungkinan kombinasi yang dihasilkan untuk peretas untuk dipilih. mencoba mencapai jutaan. Pemindai port akan frustrasi karena port knocking menggunakan port tertutup untuk mendengarkan (lebih lanjut tentang ini di bawah).

Keuntungan terbesar dari semuanya adalah bahwa port knocking adalah platform-, layanan-, dan aplikasi-independen: OS apa pun dengan perangkat lunak klien dan server yang benar dapat memanfaatkan perlindungannya. Meskipun port knocking pada dasarnya adalah implementasi Linux / Unix, ada alat Windows yang dapat melakukan hal yang sama. Dan serupa dengan IPSec dan mekanisme perlindungan lainnya, tidak ada layanan atau aplikasi yang terlibat harus waspada terhadap port-knocking.

Perangkat lunak server Port-knocking bekerja dengan memantau log firewall dan mencari koneksi ke port tertutup, atau dengan memantau tumpukan IP. Metode sebelumnya mengharuskan semua upaya koneksi yang ditolak ditulis dengan cepat ke log firewall, dan layanan port-knocking (daemon) memantau dan menghubungkan kombinasi port-knocking yang sah. Untuk kombinasi knocking yang diautentikasi, layanan server port-knocking kemudian memberi tahu firewall untuk membuka port yang diminta terakhir hanya untuk klien port-knocking yang sah - biasanya dilacak berdasarkan alamat IP.

Implementasi yang lebih maju dari port knocking bekerja pada IP stack dan mendengarkan dan merekam ke koneksi ke port tertutup, atau menggunakan mekanisme yang lebih canggih. Beberapa implementasi mencari rangkaian byte tertentu dalam upaya koneksi pertama. Byte ini bahkan dapat "disembunyikan" dalam ping permintaan echo ICMP sederhana. Metode negosiasi yang lebih kuat melibatkan enkripsi atau otentikasi asimetris.

Port knocking juga dapat berfungsi sebagai lapisan keamanan tambahan untuk melindungi layanan manajemen jarak jauh berisiko tinggi, seperti SSH dan RDP (Remote Desktop Protocol). Sayangnya, port knocking telah digunakan oleh lebih dari beberapa Trojan rootkit karena pencipta peretas mereka berusaha untuk tetap mengontrol kreasi jahat mereka sendiri.

Kritikus sering menunjuk pada fakta bahwa peretas penyadap mungkin dapat menangkap dan memutar ulang urutan atau rangkaian byte yang berhasil mengetuk port. Meskipun ini mungkin benar dengan implementasi dasar, serangan seperti ini akan dihancurkan dengan menggunakan metode otentikasi yang lebih canggih atau diminimalkan dengan menggunakan alamat IP yang diizinkan dengan kode keras sekunder seperti pembungkus TCP.

Jika seorang peretas berhasil mengumpulkan kombinasi Anda, skenario terburuknya adalah bahwa penyusup melewati perlindungan yang mengetuk port dan sekarang harus menghadapi langkah-langkah keamanan layanan normal Anda - meminta kata sandi masuk, dan seterusnya. Sejauh yang saya tahu, penggunaan port knocking hanya dapat memperkuat strategi pertahanan yang mendalam dan tidak melakukan apa pun untuk melukainya.

Saya berharap Windows memiliki mekanisme port-knocking yang dibangun secara default. Ini akan menjadi pelengkap yang bagus untuk implementasi IPSec dan Kerberos yang diuji di pasar Microsoft. Dunia Linux / Unix memiliki banyak sekali implementasi port knocking untuk dipilih, tidak ada yang membutuhkan keahlian luar biasa untuk dikonfigurasi atau digunakan.

Untuk informasi lebih lanjut tentang port knocking, kunjungi www.portknocking.org atau en.wikipedia.org/wiki/Port_knocking. Untuk detail konfigurasi dari satu contoh implementasi, lihat gentoo-wiki.com/HOWTO_Port_Knocking.

Koleksi yang sangat baik dari perangkat lunak dan utilitas pemukul port dapat ditemukan di www.portknocking.org/view/implementations, dan server dan klien pemukul port berbasis Windows lainnya dapat ditemukan di www.security.org.sg/code/portknock1 .html.