BAB IV IMPLEMENTASI SISTEM
4.1 Lingkungan Implementasi
Aplikasi pengaman jaringan komputer dengan menggunakan metode Port Knocking diimplementasikan pada sistem komputer dengan spesefikasi
sebagai berikut : a
Processor Intel Pentium 4 atau lebih. b
Memory 1 Gb atau lebih. c
Harddisk 40 Gb atau lebih. d
Sistem operasi Linux Ubuntu 8.04. e
PHP 5, PHP CLI Command Line Interface, IPTABLES. f
SSH Server Secure Shell Server
4.2 Implementasi Program
Berikut ini merupakan tampilan dari pseudeu code dan form yang digunakan pada aplikasi pengaman jaringan komputer dengan menggunakan
metode Port Knocking.
4.2.1 Implementasi index.html
Dari perancangan diperoleh 3 tiga menu yaitu pengaturan user, proses, dan report. Setiap menu yang ada pada aplikasi tersebut memiliki form sendiri.
Berikut potongan dari pseudeu code dari fungsi index.html yang membangun 2 dua menu tersebut.
47
a href=processip.php img src=imagesbpls_17.png width=286 height=100
alt= onClick=javascript:window.open processip.php,_parent;atd
img src=imagesbpls_21.png width=284 height=100 alt= onClick=javascipt:window.open
reportindex.php,_parent
Proses Port Knocking dijalankan ketika pengguna memilih menu proses, sedangkan untuk memilih aktifitas yang dicatat oleh log file
pengguna dapat memilih menu report. Terdapat 2 dua menu, setiap menu mempunyai form yang berbeda. Form tersebut adalah form untuk proses
dan form report.
4.2.2 Implementasi Proses
Pada implementasi proses terdapat 4 empat file yang dijalankan agar metode port knocking dapat berjalan. 4 empat file tersebut adalah :
1. Fle ip.php
File ip.php adalah file yang menjalankan aplikasi dari metode port knocking, fungsi untuk cek alamat IP pengguna,
rule knocking, aksi yang dijalankan, dan mencatat waktu dan alamat IP kedalam sebuah log file . Berikut pseudeu code dari
fungsi tersebut.
a. Fungsi mendapatkan alamat IP pengguna,
Function getIP { ip;
if getenvHTTP_CLIENT_IP ip = getenvHTTP_CLIENT_IP;
else ifgetenvHTTP_X_FORWARDED_FOR ip = getenvHTTP_X_FORWARDED_FOR;
else ifgetenvREMOTE_ADDR ip = getenvREMOTE_ADDR;
else ip = UNKNOWN;
return ip; }
client_ip=getIP;
Pada function getIP, fungsi inilah yang membaca alamat IP dari seorang pengguna saat pengguna menggunakan aplikasi Port Knocking. Fungsi ini yang
nantinya menentukan pengguna dapat melakukan aksi untuk membuka atau menutup sebuah port. Karena setiap IP memiliki hak yang berbeda.
b. Fungsi Rule Knocking,
if_SESSION[hitung]=2 {
_SESSION[hitung]++; _SESSION[input_._SESSION[hitung]]=_POST[textjumlah]
; input1=_SESSION[input_1];
input2=_SESSION[input_2]; input3=_SESSION[input_3];
_SESSION[hitung]==0; session_unregisterhitung;
ifinput1==100 input2==200 input3==300 {
}
Fungsi rule knocking adalah fungsi dari salah satu rule knocking ketukan. Setiap ketukan yang dilakukan pengguna akan dijadikan session, yang dimana
aplikasi ini menggunakan 3 tiga session. Setiap alamat IP yang terdaftar memiliki fungsi rule untuk knocking ketukan yang berbeda, baik untuk
membuka ataupun menutup sebuah port. Jika dari alamat IP yang telah terdaftar tidak dapat melakukan knocking ketukan secara benar yang telah ditentukan
maka pengguna tersebut tidak dapat melakukan aksi yang diinginkan. c.
Fungsi buka port,
{ shell_execvarwwwsave2file1.sh TRUE;
echo SUKSES BUKA PORT 22; }
Fungsi buka port adalah salah satu aksi untuk membuka sebuah port. Agar pengguna dapat membuka port yang pengguna tuju, terlebih dahulu menjalankan
suatu file DAEMON untuk mengubah kondisi menjadi TRUE yang sebelumnya kondisi awalnya adalah FALSE. Setelah kondisi berubah menjadi TRUE maka
secara otomatis akan merubah perintah IPTABLES sebelumnya. Yaitu untuk membuka port yang dituju agar dapat diakses oleh pengguna yang telah
melakukan knocking ketukan secara benar.
d. Fungsi tutup Port
{ shell_execvarwwwsave2file1.sh CLOSE ;
echo SUKSES TUTUP PORT 22; }
Fungsi tutup port adalah salah satu aksi untuk menutup sebuah port. Agar pengguna dapat menutup port yang pengguna tuju, terlebih dahulu menjalankan
suatu file DAEMON untuk mengubah kondisi menjadi CLOSE yang sebelumnya kondisi awalnya adalah FALSE. Setelah kondisi berubah menjadi CLOSE maka
secara otomatis akan merubah perintah IPTABLES sebelumnya. Yaitu untuk menutup port yang dituju agar tidak dapat diakses oleh pengguna lainnya yang
tidak memiliki hak untuk mengaksesnya.
e. Fungsi mencatat alamat IP dan waktu
entry_line = ---------------------------
Waktu: dtime Alamat IP : client_ip
Port : port Status : status
--------------------------- ; fp = fopenlog.txt, a;
fputsfp,
entry_line; fclosefp;
Fungsi untuk mencatat alamat IP, waktu, port, status port kedalam log.txt. sehingga nanti dapat dilihat alamat ip mana saja yang telah berhasil melakukan
aksi untuk membuka atau menutup sebuah port.
2. File sekerip.sh
file sekerip.sh adalah file yang menjalankan perintah IPTABLES, semua perintah IPTABLES sudah disimpan dalam
file ini. Perintah yang dijalankan dalam file sekerip.sh sesuai
dengan kondisi yang didapat dari state.txt. Berikut pseudeu code untuk file sekerip.sh,
binbash while [ 1 ];do
STATE1=`cat state1.txt`;
if [ STATE1 = TRUE ]; then iptables -I INPUT -p tcp -m tcp -s 192.168.1.11 –
dport 22 -j ACCEPT echo iptables -I INPUT -p tcp -m tcp -s 192.168.1.11
--dport 22 -j ACCEPT; echo FALSE state1.txt;
fi STATE7=`cat state1.txt`;
if [ STATE7 = CLOSE ]; then iptables -I INPUT -p tcp --dport 22 -j REJECT
echo iptables -I INPUT -p tcp -m tcp -s 192.168.1.11 --dport 22 -j REJECT;
echo FALSE state1.txt; fi
3. File savefile.sh
File save2file.sh adalah sebuah file DAEMON, file yang berfungsi untuk merubah kondisi file state.txt yang kondisi
tersebut didapat dari file ip.php. Berikut pseudeu code untuk file save2file.sh
binsh echo 1 state1.txt
binsh echo 1 state2.txt
4. File state.txt
File state.txt adalah sebuah file yang menyimpan suatu kondisi untuk menjalankan perintah IPTABLES yang disimpan
dalam file sekerip.sh. Kondisi yang ditulis di file state.txt dicatat oleh file save2file.sh. Berikut contoh salah satu kondisi
yang dicatat kedalam file state.txt,
CLOSE
4.2.3 Implementasi Report