Keamanan Remote Server SSH Dengan Metode Port Knocking

blogger templates
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.

Untuk membangun sistem keamanan dengan metode port knocking ini yang perlu disiapkan adalah :
  • Firewall yang mampu mencatat setiap koneksi ke dalam port tertutup,memonitor logfile secara real time, dan mampu merubah aturannya secara dinamis.
  • IPChains atau IPTables akan sangat membantu.
  • Program utama saya yang menjalankan algoritma port knocking. (Berbasis Bahasa C) download disini.
Beginilah bentuk topologi  sisitem kerja portknoking pada gambar di atas

di atasa adalah flowchart prosesnya.

oke sekarang kita lansung implementasikan, disini saya menggunakan linux backtrack R5 pada komputer server dan linux umbuntu pada komputer client. *(untuk client nya bisa juga menggunakan windows dengan menggunakan commentprom (CMD)). 

langkah pertama adalah menginstall program yang sudah di download pada komputer server dan client.

Cara instal untuk komputer server :

# gcc –o knockd knockd.c list.c –lcap   

menginstal  data knockd.c dan list.c,  -lcap merupan sebuah librarynya yang berfungsi untuk menangkap paket yang dikirimkan oleh komputer client pada saat melakukan pengiriman urutan port.

setelah proses instal selesai akan menghasilkan file eksekusi yang bernama knockd. File knockd ini yang nantinya akan dijalankan dan berfungsi untuk mendengarkan urutan port yang dikirimkan oleh komputer client.

Cara instal untuk komputer server :

 # gcc –o knock knock.c

pada komputer client hanya menginstal knock.c saja yang akan menghasilkan file eksekusi yang bernama knock. File knock ini berfungsi untuk melakukan pengiriman paket urutan port terhadap komputer server.


langkah selanjutnya melakukan konfigurasi pada komputer server agar komputer client dapat melakukan pengiriman urutan port dan komputer server dapat mendengarkan urutan port dari komputer client, maka dilakukan konfigurasi terlebih dahulu pada komputer server. Untuk melakukan konfigurasi, dibuat dua buah file yaitu knockd.log yang berfungsi untuk menyimpan log file yang berupa aktifitas yang terjadi pada server port knocking. File knockd.log dibuat dan diletakan pada direktori /var/log yang merupakan direktori pada sistem operasi Linux yang berfungsi untuk menyimpan log sistem operasi. Perintah untuk membuat file knockd.log ini adalah :

# touch /var/log/knockd.log

File yang kedua yang perlu dibuat adalah knockd.conf yang berfungsi untuk menentukan urutan port dan menentukan printah iptables yang berfungsi sebagai firewall dan digunakan untuk membuka dan menutup port tujuan. File knockd.conf dibuat dan diletakan pada direktori /etc yang merupakan direktori pada sistem operasi Linux yang berfungsi untuk menampung file-file konfigurasi sistem. Perintah untuk membuat file knockd.conf ini adalah 

#touce /etc/knockd.conf

Setelah terbentuk file knockd.conf, maka langkah selanjutnya adalah mengisi file knockd.conf tersebut dengan beberapa baris teks konfigurasi. Perintah dan isi dari file knockd.conf ini adalah :

# gedit /etc/knockd.conf

akan muncul gambar tab seperti dibawah ini :

keterangan gambar :
  • Bagian option yang merupakan bagian yang berfungsi untuk menunjukan letak file log  yang berfungsi untuk mencatat semua aktifitas port knocking.
  • Sequence pada [openSSH] berfungsi untuk menentukan urutan port yang dilakukan untuk membuka port tujuan dan Sequence pada [closeSSH] berfungsi untuk menentukan urutan port yang dilakukan untuk menutup port tujuan.
  • Seq_timeout pada [openSSH] berfungsi untuk menentukan batas waktu yang digunakan untuk melakukan pengiriman urutan port untuk membuka port tujuan dan Seq_timeout pada [closeSSH] berfungsi untuk menentukan batas waktu yang digunakan untuk melakukan pengiriman urutan port untuk menutup port tujuan.
  • Command  pada [openSSH] berfungsi untuk menentukan perintah iptables yang dijalankan, yaitu perintah untuk membuka port tujuan jika terjadi pengiriman urutan port yang benar pada komputer server dan Command pada [closeSSH] berfungsi untuk menentukan perintah iptables yang dijalankan, yaitu perintah untuk menutup port tujuan jika terjadi pengiriman urutan port pada komputer server.
  • Tcpflag pada [openSSH] dan [closeSSH] sama-sama untuk menunjukan header paket yang dikirimkan sebagai urutan port


Role (aturan) yang saya pakai adalah :



port yang saya gunakan untuk membuka akses SSH adalah (300,402,502) dan untuk menutup akses SHH adalah dengan menggunak port (502,402,300)*untuk portnya terserah kalian aja mau port berapa aja. untuk waktunya saya buat 5 detik*untuk waktu juga terserah minimal saya sarankan 3detik,  untuk command di openSSH adalah /sbin/iptables –I INPUT –s %IP% -p tcp –dport 22 –j ACCEPT  dan di close SSH adalah –D INPUT –s %IP% -p tcp –dport 22 –j ACCEPT *ini wajib pakai yang saya tulis karna ini adalah role pada iptable si linux.  pada tcpflags adalah syn.

sekarang kita lakukan ujicoba :

langkah pertama untuk uji coba ini adalah menutup semua akses port remote yang ada di komputer server dengan peritah :

# iptables –A INPUT –p tcp –j DROP 
untuk pengecekan dan memastikan bawasannya port remote sudah di tutup adalah dengan  peritah 

#iptables –L 

dan pengecekan dari komputer client dengan peritah :

# nmap -sS (Ip Address Server) 

Langkah kedua adalah menjalankan file knockd pada komputer server. Perintah yang digunakan adalah # ./knockd –d untuk menjalankan daemon untuk rule di iptables kemudian menggunakan perintah  #./knockd -v  untuk menjalankan sistem port knocking.


Langkah ketiga adalah menjalankan program knock pada client yang berfungsi untuk melakukan pengiriman urutan port komputer client ke  komputer server pada port 300, 402, 502 yang bertujuan agar komputer server membuka port 22 dan mengijinkan komputer client untuk mengakses atau meremote komputer server melalui layanan SSH. Perintah yang digunakan adalah 

# ./knock –v (ip address server)  (urutan port sesuai role untuk membuka akses ssh) 


Setelah Komputer client melakukan pengiriman paket urutan port 300, 402, 502 pada komputer server, maka komputer server akan melakukan monitoring port apakah urutan port yang dikirim sesuai dengan format urutan port openSSH


kalau hasil yang di dapat seperti gambar di atas berarti kita sukses untuk membuka port 22 (remote SSH) dan coba lakukan remote dari komputer client dengan SSH  dengan perintah # ssh (ip address server) setelah itu apa bila muncul untuk masukan "password"  berarti kita berhasil membuka layanan remote SSH masukan password ssh untuk akses lebih lanjut.

Langkah keempat adalah kita coba untuk menutup kembali akses SSH tersebut dengan perintah di bawah ini pada komputer client :

# ./knock –v (ip address server)  (urutan port sesuai role untuk menutup akses ssh) 


kalau hasil yang di dapat pada komputer server seperti gambar di atas berarti kita berhasil menutup port 22 (remote SSH) pada komputer server. kita dapat memastikannya dengan cara mencoba akses remote ssh pada komputer client. apabila hasil yang di dapat "ssh: connect to host (ip address server) port22 : Connection time out" artinya kita berhasil menutup kembali akses port di server.


artikel ini adalah ringkasan dari skripsi saya dahulu, dan saat implementasi juga saya menggunakan 2 komputer dengan koneksi peer to peer, artikel dan aplikasi yang saya buat masih bisa dan dapat di kembangkan lagi.

sekian dan terimakasih.

APA BILA INGIN COPAS BUAT SUMBERNYA YA GAN


Referensi :
Krzywinski : Port Knocking: Network Authentication Across Closed Ports
Michael Rash : Linux Firewalls Attack Detection and Response with Iptables psad and fwsnort
D. Dwianto : Membuka Akses Firewall Melalui Networks
Hasan Budi Santoso : Tutorial Mastering Iptables Seri 1 dan Seri 2

0 Response to "Keamanan Remote Server SSH Dengan Metode Port Knocking"

Post a Comment