implementasi remote server menggunakan metode port

advertisement
MAKALAH SEMINAR TUGAS AKHIR PERIODE Januari 2010
IMPLEMENTASI REMOTE SERVER MENGGUNAKAN
METODE PORT KNOCKING DENGAN
ASYMMETRIC ENCRYPTION
M. Fahru Rozi – Royyana Muslim I., S.Kom, M.Kom., Radityo Anggoro, S.Kom, M.Eng.Sc.
Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember,
Email: [email protected]
Abstrak Seorang Administrator harus
menyeimbangkan
antara
fleksibilitas
dan
keamanan ketika membuat rule firewall. Sebuah
firewall seharusnya mampu memberi perlindungan
terhadap pihak-pihak yang tidak berhak
mengakses
suatu
sumber
daya.
Namun
mengizinkan pihak yang dapat dipercaya untuk
mengakses sumber daya yang ada.
Tetapi, pihak tersebut bisa berasal dari
alamat IP yang dipercaya, karena alamat IP tidak
menggambarkan pihak yang melakukan koneksi.
Siapapun pihak yang melakukan koneksi melalui
IP yang bisa dipercaya tersebut akan diizinkan
oleh firewall. Oleh karena itu, usaha untuk
memfilter pihak yang dapat dan tidak dapat
mengakses sumber daya pada suatu komputer
kurang baik jika menggunakan IP filtering.
Solusi untuk mengatasi masalah di atas
adalah port knocking. Port knocking metode untuk
mengakses remote computer dengan mengirim
paket pada port-port tertentu. Ketika urutan port
tersebut sesuai dengan urutan port di server,
server akan meng-overwrite aturan firewall dan
client bisa terkoneksi. Adanya tugas akhir ini
diharapkan administrator dapat mengatur siapa
yang dapat mengakses komputer.
Kata Kunci : Port Knocking, Socket, Firewall,
UFW
kelemahan yang ada. Perluasan dari penggunaan
firewall ini salah satunya dengan menggunakan
metode port knocking.
Port Knocking adalah suatu bentuk
komunikasi host-to-host dimana informasi tersalur
melalui port yang tertutup. Pada dasarnya port
knocking dapat didefinisikan sebagai suatu metode
komunikasi antara dua komputer, dimana
informasi yang dikirimkan di-encode dalam bentuk
usaha koneksi ke port-port dalam urutan tertentu.
Usaha membangun koneksi ini bisa disebut juga
ketukan-ketukan (knocks)
2.
Firewall dan UFW
Firewall adalah istilah yang biasa
digunakan untuk menunjuk pada suatu komponen
atau sekumpulan komponen jaringan, yang
berfungsi membatasi akses antara dua jaringan,
lebih khusus lagi, antara jaringan internal dengan
jaringan global Internet.[1]
Tugas firewall antara lain :
Harus
dapat
mengimplementasikan
kebijakan security di jaringan (site
security policy). Jika aksi tertentu tidak
diperbolehkan oleh kebijakan ini, maka
firewall harus meyakinkan bahwa semua
usaha yang mewakili operasi tersebut
harus gagal atau digagalkan. Dengan
demikian, semua akses ilegal antar
jaringan (tidak diotorisasikan) akan
ditolak.
Melakukan filtering: mewajibkan semua
traffik yang ada untuk dilewatkan melalui
firewall bagi semua proses pemberian dan
pemanfaatan layanan informasi. Dalam
konteks ini, aliran paket data dari/menuju
firewall, diseleksi berdasarkan IP-address,
nomor port, atau arahnya, dan disesuaikan
dengan kebijakan security.
Firewall
juga
harus
dapat
merekam/mencatat
even-even
mencurigakan
serta
memberitahu
administrator terhadap segala usaha-usaha
menembus kebijakan security.
UFW adalah packet-filtering semacam
iptables yang hanya terdapat pada Ubuntu 8.04 ke
atas. Alasan penggunaan UFW adalah untuk
mengkonfigurasi packet-filter pada firewall
menjadi lebih mudah dan lebih aman bagi user
1.
Pendahuluan
Saat ini keamanan telah menjadi hal yang
sangat penting, terutama dalam bidang Teknologi
Informasi. Statistik tingkat eksploitasi keamanan
terhadap banyak server dan jaringan makin hari
semakin meningkat. Hal tersebut dapat terjadi
seiring dengan maraknya public vulnerable
disclosure. Bahkan seseorang yang tidak memiliki
pengetahuan yang cukup dalam masalah keamanan
jaringan dapat melakukan penetrasi terhadap
sebuah sistem jaringan dengan hanya mendownload exploit untuk sistem yang diserangnya
dan
kemudian
menggunakannya
untuk
kepentingan sendiri.
Salah satu upaya yang dilakukan untuk
mengamankan sebuah server adalah dengan
menggunakan firewall. Penggunaan firewall saat
ini masih memiliki kelemahan. Sehingga dicari
suatu cara atau metode untuk mengurangi
1
M. FAHRU ROZI - 5105100164
MAKALAH SEMINAR TUGAS AKHIR PERIODE Januari 2010
awam. UFW sama dengan iptables linux pada
umumnya, namun sintaks-nya lebih “manusiawi”
dari pada iptables. Oleh karena itu UFW dibuat
untuk memudahkan mengkonfigurasi firewall.
UFW merupakan tool front-end iptables
yang secara default terinstall pada Ubuntu. Ubuntu
yang mengintegrasikan UFW ke dalam paket
instalasinya dimulai dari Ubuntu 8.04(Hardy
Heron) sampai saat ini (Ubuntu 9.10[Karmic
Koala]). Jadi, UFW ini tidak akan ditemui pada
ubuntu versi 7.10 ke bawah.
UFW lebih mudah digunakan daripada
IPTABLES karena menggunakan command-line
yang sangat sederhana dan mudah diingat. Namun,
back-core dari UFW adalah iptables-restore yang
ada pada iptables. UFW hanya bisa dijalankan
melalui previlege root. Selain IPv4, UFW juga
mendukung IPv6.
Sintaks dari UFW :
root@sapphire:~# ufw COMMAND
COMMAND
enable | disable
Turn the firewall ON or
OFF
default allow|deny
Set the default policy,
allow is open, whereas
deny is restricted
logging on|off
Turn logging on or off
allow service
Allow or deny access
deny service
by service. Services are
defined in /etc/services
which spesifies the
ports for that service.
allow
port- Allow or deny access
number/protocol
on a particular port
deny
port- using
specified
number/protocol
protocol
delete rule
Delete an installed rule,
use allow or deny and
include rule specifies.
status
Display status along
with services allowed
or denied
version
Display
version
information
proto protocol
Specify protocol in
allow or deny rule
from address
Specify source address
in allow or deny
to address
Specify
destination
address in allow or
deny
port port
Specify port in allow or
deny rule for from and
to address operations
dimana cryptos memiliki arti rahasia, sedangkan
graphien berarti gambar atau tulisan. Jadi, secara
etimologi atau berdasarkan asal katanya,
kriptografi berarti tulisan rahasia. Namun, jika
dilihat lebih jauh, definisi kriptografi adalah ilmu
dan seni untuk menjaga kerahasiaan pesan dengan
cara menyandikan kedalam benuk yang tidak dapat
dimengerti lagi maknanya, sehingga pesan menjadi
aman dan tidak dapat dibaca oleh orang yang tidak
berkepentingan.
Macam-macam sistem kriptografi :
1. Kriptografi Kunci – Asimetris
2.
Kriptografi Kunci – Simetris
3.
Python
Python
adalah
sebuah
bahasa
pemrograman berbasis object yang dinamis dan
dapat digunakan dalam berbagai pengembangan
software. Python menawarkan dukungan yang kuat
terhadap berbagai bahasa pemrograman lain dan
alat-alat pengembangan software[5].
Python didesain untuk mempertinggi
produktivitas programmer dan kemudahan kode
program untuk dibaca. Meski syntax python dibuat
minimalis, dukungan berupa standart librarinya
sangat luas dan lengkap. Python menggunakan
cara yang unik untuk memisahkan satu blok
program dengan blok program yang lain, yaitu
dengan menggunakan spasi atau tab. Hal ini sangat
berbeda dengan bahasa-bahasa pemrograman yang
lain.
Python mendukung banyak paradigma
pemrograman, utamanya pemrograman berbasis
object, pemrograman terstrurktur dan berbasis
fungsi. Python adalah bahasa yang umum dipakai
dalam bentuk script (tanpa harus melalui proses
kompilasi terlebih dulu).
Seperti halnya bahasa lain yang berbentuk
script, python menggunakan dynamic type
(penggunaan variable tanpa harus menentukan tipe
variabel secara eksplisit) dan secara unik juga
mengatur penggunaan memori secara otomatis
seperti pada Java Virtual Machine (JVM).
3.
Kriptografi
Kriptografi (Cryptography) berasal dari
bahasa Yunani yaitu dari kata cryptos + graphien,
2
M. FAHRU ROZI - 5105100164
MAKALAH SEMINAR TUGAS AKHIR PERIODE Januari 2010
Dalam sejarahnya, python pertama kali
dipublikasikan pada tahun 1991 oleh Van Rossum
dengan versi 0.9.0. Python mencapai versi 1.0
pada Januari 1994 [6]. Sekarang python telah
dipublikasikan pada dua versi, yaitu versi 2.x dan
3.x. Hal ini dilakukan karena sejak versi 3.0,
python melakukan perubahan yang sebagian
diantaranya tidak compatible dengan versi
sebelumnya.
Oleh
karena
itu,
python
dipublikasikan dengan dua versi bersamaan karena
untuk masalah kompabilitas dengan programprogram yang telah dibuat menggunakan python
sebelumnya. Python versi 3.0 mulai dilepas ke
publik sejak tanggal 3 Desember 2008[7].
integer pada string. Tipe-tipe yang dikenal oleh
python, antara lain str, bytes, list, tuple, set, dict,
int, float, complex, bool[38].
Python menggunakan whitespaces (spase
dan tabulasi) sebagai indent (jarak dari tepi kiri
penulisan) untuk memisahkan satu blok program
dengan blok program lainnya. Fitur tersebut juga
dikenal dengan aturan off-side. Kenaikan indent
setelah suatu statement tertentu dan penurunan
indent untuk mengakhiri blok program tersebut.
4.
import sys
def print_tulisan():
print „hello world‟
if __name__ == “__main__” :
print_tulisan()
sys.exit(0)
Gambar 1 Contoh Kode Python
DESAIN DAN IMPLEMENTASI
Tugas akhir ini dirancang untuk
mengimplementasikan metode port knocking pada
proses autentikasi host yang akan mengakses
server. Seperti dikatakan pada bab sebelumnya
bahwa pada dasarnya port knocking dapat
didefinisikan sebagai suatu metode komunikasi
antara dua komputer, dimana informasi yang
dikirimkan di-encode dalam bentuk usaha koneksi
ke port-port dalam urutan tertentu. Jadi metode
port knocking ini didasarkan pada urutan port yang
ada di server.
Sistem ini terdiri dari client dan server.
Client hanya bertugas untuk mengirim paket
melalui port yang diinginkan. Apabila urutan port
yang dipilih client sesuai dengan urutan port yang
telah dispesifikasikan di server, maka server akan
melakukan perubahan ke aturan firewall melalui
daemon yang sebelumnya berjalan di server untuk
memonitor urutan port dimana data itu dikirim
oleh client. Client minimal harus memasukkan
jumlah port sebanyak 2 buah.
Untuk statement-statement yang bersifat
flow-control, python menggunakan keyword
seperti, if, for dan while. Python tidak mengenal
case atau switch-case, seperti halnya dikenal dalam
bahasa lain yang merupakan keturunan C, untuk
melakukan branching. Keyword class digunakan
untuk mendifinisikan sebuah class yang dapat diinstance menjadi suatu objek. Tentunya sudah
sangat jelas jika keyword ini digunakan ketika
python menggunakan object-oriented.
Python menggunakan keyword def untuk
mendefinisikan suatu fungsi. Sepert halnya dalam
defnisi variabel yang tidak menyebutkan tipe
variabel secara eksplisit, fungsi juga tidak
memiliki return value yang didefinisikan secara
eksplisit. Oleh karena itu, tipe suatu fungsi, baik
void atau tidak memberikan return, apakah integer,
double atau yang lain, sangat bergantung pada isi
fungsi tersebut.
4.1. Desain Sistem Secara Umum
Secara garis besar seperti yang terlihat
pada gambar 6.1, aplikasi ini dibagi menjadi tiga
bagian, bagian yang terhubung dengan database
(eksekusi query), bagian yang berhubungan
dengan file system (contoh : penambahan folder,
penghapusan file, dll), dan aplikasi itu sendiri
(contoh : parser untuk query yang diberikan).
Python dapat menggunakan keyword with
untuk menutup suatu blok program tertentu dengan
suatu konteks. Hal ini dapat terjadi pada kondisikondisi tertentu, misalnya mendapatkan lock
sebelum menjalankan suatu blok kode program
yang mengakses suatu resource yang digunakan
bersama sebelum melepasnya ketika selesai
running.
Service:port
Service:p
LUNELESS [isolated server]
Secara umum, python memiliki tipe-tipe
objek meski python mengizinkan deklarasi
variable secara untyped. Pengecekan tipe-tipe
objek ini dilakukan saat melakukan kompilasi
terhadap
source
code.
Meskipun
tidak
memaksakan pemberian tipe secara statis, python
tetap menggunakan tipe-tipe objek untuk
memproses objek-objek yang didefinisikan.
ort
data:port
data:port
data:port
data:port
UFW firewall
Destrarastra
Some
Actions
Altering
firewall rule
daemon
Gambar 2. Desain Umum
Cara kerja aplikasi ini secara umum,
pertama server menjalankan daemon, kemudian
menunggu usaha koneksi dari luar. Pihak luar
melakukan usaha-usaha koneksi ke server dengan
mengirim paket ke urutan port tertentu. Apabila
Python juga mengingkari operasi-operasi
yang tidak mungkin, seperti halnya penambahan
3
M. FAHRU ROZI - 5105100164
MAKALAH SEMINAR TUGAS AKHIR PERIODE Januari 2010
urutan port yang dikirim pihak luar sesuaia dengan
yang urutan port di server, maka pihak luar akan
dapat terkoneksi dengan server.
status server yang telah mengubah rule
firewall
. Gambar 6. daemon running
Gambar 7. client melakukan knocking
Berikut hasil dari enkripsi server dan
aturan yang telah diubah pada firewall .
Gambar 3. Cara Kerja Aplikasi Secara Umum
5.2. Uji Performansi
5.
UJI COBA
Pada bab ini akan dibahas mengenai
pengujian terhadap sistem. Pertama-tama akan
dibahas mengenai uji fungsionalitas dan uji
kecepatan, kemudian dijabarkan pula bagaimana
penulis melakukan pengujian tersebut. Setelah itu
pembahasan berlanjut ke hasil pengujian.
Performansi sistem bisa dilihat dari waktu
eksekusi pada jalannya fungsionalitas sistem atau
bisa juga dilihat dari seberapa besar resource yang
diperlukan CPU ketika menjalankan aplikasi
tersebut.
Pada ujicoba ini, setelah menjalankan
daemon server akan menunggu setelah selang
waktu tertentu client akan melakukan knocking .
Pada saat client melakukan knocking tersebut diliat
apakah resource yang digunakan server bertambah
atau malah berkurang, stabil atau tidak. Dari
serangkaian uji coba yang dilakukan diperoleh data
sebagai berikut :
5.1. Uji fungsionalitas
Dalam uji coba fungsionalitas, aplikasi
diuji sedemikian rupa sehingga bisa menjalankan
semua fungsi yang telah diuraikan di pada bab
sebelumnya.
Untuk melakukan pengujian tersebut
tersebut penulis melakukan hal-hal berikut :
1.
2.
Menjalankan daemon pada server.
3.
Menunggu
usaha
koneksi
yang
dialamatkan
kepadanya
dengan
memonitor interface yang ada.
4.
5.
Table 1 Tabel hasil ujicoba
Menyediakan server yang bersifat isolated
(semua port tertutup).
Selang waktu (detik)
VITR (KB)
RES
(KB)
0.45
8388
4944
0.55
24780
5116
0.7
24780
5132
Mengecek urutan port client dengan
server
0.89
24780
5176
1.02
25036
5184
Kalau sama dilanjutkan dengan mengirim
pesan konfirmasi ke client. Pesan tersebut
telah dienkripsi. Pesan tersebut berisi
1.15
25036
5184
1.31
25036
5184
1.57
25036
5184
4
M. FAHRU ROZI - 5105100164
MAKALAH SEMINAR TUGAS AKHIR PERIODE Januari 2010
Dari tabel 1 dapat diketahui bahwa
aplikasi yang dijalankan bersifat stabil dalam
penggunaan resource server (tidak fluktuatif)
meski dilakukan secara terus menerus. Resource
disini adalah jumlah memori yang digunakan
(RES) dalam satuan KiloByte, dan ukuran virtual
dari aplikasi (VIRT) yang meliputi proses
pengeksekusian file binary, data area dan semua
share-library yang digunakan aplikasi tersebut.
6.
KESIMPULAN
Dari
hasil
pengamatan
selama
perancangan, implementasi dan proses uji coba
perangkat lunak yang dilakukan, dapat diambil
kesimpulan sebagai berikut:
1. Metode port knocking bisa menjadi
sebuah security-layer tambahan pada
suatu host.
2. Tingkat penggunaan sumber daya oleh
server ketika menjalankan daemon relatif
stabil, sehingga kinerja server tidak
terganggu.
3. Aplikasi ini memungkinkan administrator
mampu melakukan koneksi server
meskipun server memblok semua port
yang ada.
7.
DAFTAR PUSTAKA
[1] http://www.klikkanan.com/fokus/firewall.shtml
[2] Krzywinski, M. (2003). Port Knocking:
Network Authentication Across Closed
Ports. SysAdmin Magazine 12: 12-17.
[3] Port Knocking : A Stealthy System for
Network Authentication Across Closed
Ports http://www.portknocking.org, 2003.
(Januari 2010).
[4] KrzywinskiM. (2003). „PortKnocking‟.
Linux
Journal,
June2003.
http://www.linuxjournal.com/article/6811
(Januari 2010)
[5] "What is Python Good For?". General
Python FAQ. Python Foundation.
http://www.python.org/doc/faq/general/#
what-is-python-good-for. 2008-09-05.
[6] "A Brief Timeline of Python". Guido van
Rossum. http://pythonhistory.blogspot.com/2009/01/brieftimeline-of-python.html. 2009-01-20.
[7] Guido Van Rossum. 2006. “Python
Documentation”. Release 2.5
5
M. FAHRU ROZI - 5105100164
Download