keamanan cyber 3
kategorikan menjadi dua jenis:
pencegahan (preventif) dan pengobatan (recovery). Usaha pencegahan
dilakukan agar sistem informasi tidak memiliki lubang keamanan,
sementara usaha-usaha pengobatan dilakukan apabila lubang keamanan
sudah dieksploitasi.
Pengamanan sistem informasi dapat dilakukan melalui beberapa layer yang
berbeda. Misalnya di layer “transport”, dapat dipakai “Secure Socket
Layer” (SSL). Metoda ini umum dipakai untuk server web. Secara fisik,
sistem anda dapat juga diamankan dengan memakai “firewall” yang
memisahkan sistem anda dengan Internet. penakai an teknik enkripsi
dapat dilakukan di tingkat aplikasi sehingga data-data anda atau e-mail anda
tidak dapat dibaca oleh orang yang tidak berhak.
Mengatur akses (Access Control)
Salah satu cara yang umum dipakai untuk mengamankan informasi
yaitu dengan mengatur akses ke informasi melalui mekanisme
“authentication” dan “access control”. Implementasi dari mekanisme ini
antara lain dengan memakai “password”.
Di sistem UNIX dan Windows NT, untuk memakai sebuah sistem atau
komputer, pemakai diharuskan melalui proses authentication dengan
menuliskan “userid” dan “password”. Informasi yang diberikan ini
dibandingkan dengan userid dan password yang berada di sistem. Apabila
keduanya valid, pemakai yang bersangkutan diperbolehkan memakai
sistem. Apabila ada yang salah, pemakai tidak dapat memakai sistem.
Informasi tentang kesalahan ini biasanya dicatat dalam berkas log.
Besarnya informasi yang dicatat bergantung kepada konfigurasi dari sistem
setempat. Misalnya, ada yang menuliskan informasi apabila pemakai
memasukkan userid dan password yang salah sebanyak tiga kali. Ada juga
yang langsung menuliskan informasi ke dalam berkas log meskipun baru
satu kali salah. Informasi tentang waktu kejadian juga dicatat. Selain itu asal
hubungan (connection) juga dicatat sehingga administrator dapat
memeriksa keabsahan hubungan.
Setelah proses authentication, pemakai diberikan akses sesuai dengan level
yang dimilikinya melalui sebuah access control. Access control ini biasanya
dilakukan dengan mengelompokkan pemakai dalam “group”. Ada group
yang berstatus pemakai biasa, ada tamu, dan ada juga administrator atau
super user yang memiliki kemampuan lebih dari group lainnya.
Pengelompokan ini disesuaikan dengan kebutuhan dari penakai an sistem
anda. Di lingkungan kampus mungkin ada kelompok mahasiswa, staf,
karyawan, dan administrator. Sementara itu di lingkungan bisnis mungkin
ada kelompok finance, engineer, marketing, dan seterusnya.
Password di sistem UNIX
Akses ke sistem UNIX memakai password yang biasanya disimpan di
dalam berkas /etc/passwd. Di dalam berkas ini disimpan nama, userid,
password, dan informasi-informasi lain yang dipakai oleh bermacammacam program. Contoh isi berkas password dapat dilihat di bawah ini.
root:fi3sED95ibqR7:0:1:System Operator:/:/sbin/sh
daemon:*:1:1::/tmp:
rahard:d98skjhj9l:72:98:Budi Rahardjo:/home/rahard:/bin/csh
Pada sistem UNIX lama, biasanya berkas /etc/passwd ini “readable”,
yaitu dapat dibaca oleh siapa saja. Meskipun kolom password di dalam
berkas itu berisi “encrypted password” (password yang sudah terenkripsi),
akan tetapi ini merupakan potensi sumber lubang keamanan. Seorang
pemakai yang nakal, dapat mengambil berkas ini (karena “readable”),
misalnya men-download berkas ini ke komputer di rumahnya, atau
mengirimkan berkas ini kepada kawannya. Ada program tertentu yang
dapat dipakai untuk memecah password tersebut. Contoh program ini
antara lain: crack (UNIX), viper (perl script), dan cracker jack (DOS).
Program “password cracker” ini tidak dapat mencari tahu kata kunci dari
kata yang sudah terenkripsi. Akan tetapi, yang dilakukan oleh program ini
yaitu melakukan coba-coba (brute force attack). Salah satu caranya yaitu
mengambil kata dari kamus (dictionary) kemudian mengenkripsinya.
Apabila hasil enkripsi tersebut sama dengan password yang sudah
terenkripsi (encrypted password), maka kunci atau passwordnya ketemu.
Selain melakukan “lookup” dengan memakai kamus, biasanya
program “password cracker” tersebut memiliki beberapa algoritma
heuristic seperti menambahkan angka di belakangnya, atau membaca dari
belakang (terbalik), dan seterusnya. Inilah sebabnya jangan memakai
password yang terdapat dalam kamus, atau kata-kata yang umum dipakai
(seperti misalnya nama kota atau lokasi terkenal).
Shadow Password
Salah satu cara untuk mempersulit pengacau untuk mendapatkan berkas
yang berisi password (meskipun terenkripsi) yaitu dengan memakai
“shadow password”. Mekanisme ini memakai berkas /etc/shadow
untuk menyimpan encrypted password, sementara kolom password di
berkas /etc/passwd berisi karakter “x”. Berkas /etc/shadow tidak
dapat dibaca secara langsung oleh pemakai biasa.
Latihan 9. Perhatikan sistem UNIX anda. Apakah sistem itu
memakai fasilitas shadow password atau tidak?
Memilih password
Dengan adanya kemungkinan password ditebak, misalnya dengan
memakai program password cracker, maka memilih password
memerlukan perhatian khusus. Berikut ini yaitu daftar hal-hal yang
sebaiknya tidak dipakai sebagai password.
• Nama anda, nama istri / suami anda, nama anak, ataupun nama kawan.
• Nama komputer yang anda gunakan.
• Nomor telepon atau plat nomor kendaran anda.
• Tanggal lahir.
• Alamat rumah.
• Nama tempat yang terkenal.
• Kata-kata yang terdapat dalam kamus (bahasa Indonesia maupun bahasa
Inggris).
• Password dengan karakter yang sama diulang-ulang.
• Hal-hal di atas ditambah satu angka.
Menutup servis yang tidak dipakai
Seringkali sistem (perangkat keras dan/atau perangkat lunak) diberikan
dengan beberapa servis dijalankan sebagai default. Sebagai contoh, pada
sistem UNIX servis-servis berikut sering dipasang dari vendornya: finger,
telnet, ftp, smtp, pop, echo, dan seterusnya. Servis tersebut tidak semuanya
dibutuhkan. Untuk mengamankan sistem, servis yang tidak diperlukan di
server (komputer) tersebut sebaiknya dimatikan. Sudah banyak kasus yang
menunjukkan abuse dari servis tersebut, atau ada lubang keamanan dalam
servis tersebut akan tetapi sang administrator tidak menyadari bahwa servis
tersebut dijalankan di komputernya.
Latihan 10. Periksa sistem UNIX anda, servis apa saja yang
dijalankan di sana? Dari mana anda tahu servis-servis yang
dijalankan?
Servis-servis di sistem UNIX ada yang dijalankan dari “inetd” dan ada yang
dijalankan sebagai daemon. Untuk mematikan servis yang dijalankan
dengan memakai fasilitas inet, periksa berkas /etc/inetd.conf,
matikan servis yang tidak dipakai (dengan memberikan tanda komentar
#) dan memberitahu inetd untuk membaca berkas konfigurasinya (dengan
memberikan signal HUP kepada PID dari proses inetd).
unix# ps -aux | grep inetd
105 inetd
unix# kill -HUP 105
Untuk sistem Solaris atau yang berbasis System V, gunakan perintah “ps -
eaf” sebagai pengganti perintah “ps -aux”. Lebih jelasnya silahkan baca
manual dari perintah ps.
Untuk servis yang dijalankan sebagai daemon dan dijalankan pada waktu
startup (boot), perhatikan skrip boot dari sistem anda.
• SunOS: /etc/rc.*
• Linux Debian: /etc/init.d/*
Memasang Proteksi
Untuk lebih meningkatkan keamanan sistem informasi, proteksi dapat
ditambahkan. Proteksi ini dapat berupa filter (secara umum) dan yang lebih
spesifik yaitu firewall. Filter dapat dipakai untuk memfilter e-mail,
informasi, akses, atau bahkan dalam level packet. Sebagai contoh, di sistem
UNIX ada paket program “tcpwrapper” yang dapat dipakai untuk
membatasi akses kepada servis atau aplikasi tertentu. Misalnya, servis
untuk “telnet” dapat dibatasi untuk untuk sistem yang memiliki nomor IP
tertentu, atau memiliki domain tertentu. Sementara firewall dapat
dipakai untuk melakukan filter secara umum.
Untuk mengetahui apakah server anda memakai tcpwrapper atau tidak,
periksa isi berkas /etc/inetd.conf. Biasanya tcpwrapper dirakit
menjadi “tcpd”. Apabila servis di server anda (misalnya telnet atau ftp)
dijalankan melalui tcpd, maka server anda memakai tcpwrapper.
Biasanya, konfigurasi tcpwrapper (tcpd) diletakkan di berkas /etc/
hosts.allow dan /etc/hosts.deny.
Firewall
Firewall merupakan sebuah perangkat yang diletakkan antara Internet
dengan jaringan internal (Lihat Figure 4.1 on page 83). Informasi yang
keluar atau masuk harus melalui firewall ini.
Tujuan utama dari firewall yaitu untuk menjaga (prevent) agar akses (ke
dalam maupun ke luar) dari orang yang tidak berwenang (unauthorized
access) tidak dapat dilakukan. Konfigurasi dari firewall bergantung kepada
kebijaksanaan (policy) dari organisasi yang bersangkutan, yang dapat dibagi
menjadi dua jenis:
• apa-apa yang tidak diperbolehkan secara eksplisit dianggap tidak
diperbolehkan (prohibitted)
• apa-apa yang tidak dilarang secara eksplisit dianggap diperbolehkan
(permitted)
Firewall bekerja dengan mengamati paket IP (Internet Protocol) yang
melewatinya. Berdasarkan konfigurasi dari firewall maka akses dapat diatur
berdasarkan IP address, port, dan arah informasi. Detail dari konfigurasi
bergantung kepada masing-masing firewall.
Firewall dapat berupa sebuah perangkat keras yang sudah dilengkapi
dengan perangkat lunak tertentu, sehingga pemakai (administrator) tinggal
melakukan konfigurasi dari firewall tersebut. Firewall juga dapat berupa
perangkat lunak yang ditambahkan kepada sebuah server (baik UNIX
maupun Windows NT), yang dikonfigurasi menjadi firewall. Dalam hal ini,
sebetulnya perangkat komputer dengan prosesor Intel 80486 sudah cukup
untuk menjadi firewall yang sederhana.
Firewall biasanya melakukan dua fungsi; fungsi (IP) filtering dan fungsi
proxy. Keduanya dapat dilakukan pada sebuah perangkat komputer (device)
atau dilakukan secara terpisah.
Beberapa perangkat lunak berbasis UNIX yang dapat dipakai untuk
melakukan IP filtering antara lain:
• ipfwadm: merupakan standar dari sistem Linux yang dapat diaktifkan
pada level kernel
• ipchains: versi baru dari Linux kernel packet filtering yang diharapkan
dapat menggantikan fungsi ipfwadm
Fungsi proxy dapat dilakukan oleh berbagai software tergantung kepada
jenis proxy yang dibutuhkan, misalnya web proxy, rlogin proxy, ftp proxy
dan seterusnya. Di sisi client sering kalai dibutuhkan software tertentu agar
dapat memakai proxy server ini, seperti misalnya dengan
memakai SOCKS. Beberapa perangkat lunak berbasis UNIX untuk
proxy antara lain:
• Socks: proxy server oleh NEC Network Systems Labs
• Squid: web proxy server
Informasi mengenai firewall secara lebih lengkap dapat dibaca pada
referensi [29, 37] atau untuk sistem Linux dapat dilakukan dengan
mengunjungi web site berikut: <http://www.gnatbox.com>.
Satu hal yang perlu diingat bahwa adanya firewall bukan menjadi jaminan
bahwa jaringan dapat diamankan seratus persen. Firewall tersebut sendiri
dapat memiliki masalah. Sebagai contoh, Firewall Gauntlet yang dibuat
oleh Network Associates Inc. (NAI) mengalami masalah
1
sehingga dapat
melewatkan koneksi dari luar yang seharusnya tidak boleh lewat. Padahal
Gauntlet didengung-dengungkan oleh NAI sebagai “The World’s Most
Secure Firewall”. Inti yang ingin kami sampaikan yaitu bahwa meskipun
sudah memakai firewall, keamanan harus tetap dipantau secara
berkala.
Pemantau adanya serangan
Sistem pemantau (monitoring system) dipakai untuk mengetahui adanya
tamu tak diundang (intruder) atau adanya serangan (attack). Nama lain dari
sistem ini yaitu “intruder detection system” (IDS). Sistem ini dapat
memberitahu administrator melalui e-mail maupun melalui mekanisme lain
seperti melalui pager.
Ada berbagai cara untuk memantau adanya intruder. Ada yang sifatnya aktif
dan pasif. IDS cara yang pasif misalnya dengan memonitor logfile. Contoh
software IDS antara lain:
• Autobuse, mendeteksi probing dengan memonitor logfile.
• Courtney dan portsentry, mendeteksi probing (port scanning) dengan
memonitor packet yang lalu lalang. Portsentry bahkan dapat
memasukkan IP penyerang dalam filter tcpwrapper (langsung
dimasukkan kedalam berkas /etc/hosts.deny)
• Shadow dari SANS
• Snort, mendeteksi pola (pattern) pada paket yang lewat dan
mengirimkan alert jika pola tersebut terdeteksi. Pola-pola atau rules
disimpan dalam berkas yang disebut library yang dapat dikonfigurasi
sesuai dengan kebutuhan.
Pemantau integritas sistem
Pemantau integritas sistem dijalankan secara berkala untuk menguji
integratitas sistem. Salah satu contoh program yang umum dipakai di
sistem UNIX yaitu program Tripwire. Program paket Tripwire dapat
dipakai untuk memantau adanya perubahan pada berkas. Pada mulanya,
tripwire dijalankan dan membuat database mengenai berkas-berkas atau
direktori yang ingin kita amati beserta “signature” dari berkas tersebut.
Signature berisi informasi mengenai besarnya berkas, kapan dibuatnya,
pemiliknya, hasil checksum atau hash (misalnya dengan memakai
program MD5), dan sebagainya. Apabila ada perubahan pada berkas
tersebut, maka keluaran dari hash function akan berbeda dengan yang ada di
database sehingga ketahuan adanya perubahan.
Audit: Mengamati Berkas Log
Segala (sebagian besar) kegiatan penakai an sistem dapat dicatat dalam
berkas yang biasanya disebut “logfile” atau “log” saja. Berkas log ini sangat
berguna untuk mengamati penyimpangan yang terjadi. Kegagalan untuk
masuk ke sistem (login), misalnya, tersimpan di dalam berkas log. Untuk itu
para administrator diwajibkan untuk rajin memelihara dan menganalisa
berkas log yang dimilikinya.
Letak dan isi dari berkas log bergantung kepada operating system yang
dipakai . Di sistem berbasis UNIX, biasanya berkas ini berada di direktori
/var/adm atau /var/log. Contoh berkas log yang ada di sistem Linux
Debian dapat dilihat pada Table 7 on page 86.
.
TABLE 7. Berkas Log di sistem Debian Linux
Nama Berkas Keterangan
/var/adm/auth.log Berisi informasi yang berhubungan dengan authentication. Gagal login, misalnya, dicatat pada berkas ini.
/var/adm/daemon.log Informasi mengenai program-program daemon seperti
BIND, Sendmail, dsb.
/var/adm/mail.log Berisi informasi tentang e-mail yang dikirimkan dan
diterima oleh MTA (sendmail) serta akses ke sistem
email melalui POP dan IMAP.
/var/adm/syslog Berisi pesan yang dihasilkan oleh program syslog.
Kegagalan login tercatat di sini.
Sebagai contoh, berikut ini yaitu cuplikan baris isi dari berkas /var/adm/
auth.log:
Apr 8 08:47:12 xact passwd[8518]: password for `inet' changed
by root
Apr 8 10:02:14 xact su: (to root) budi on /dev/ttyp3
Baris pertama menunjukkan bawah password untuk pemakai “inet” telah
diganti oleh “root”. Baris kedua menunjukkan bahwa pemakai (user) yang
bernama “budi” melakukan perintah “su” (substitute user) dan menjadi
user “root” (super user). Kedua contoh di atas menunjukkan entry yang
nampaknya normal, tidak mengandung security hole, dengan asumsi pada
baris kedua memang pemakai “budi” diperbolehkan menjadi root. Contoh
entry yang agak mencurigakan yaitu sebagai berikut.
Apr 5 17:20:10 alliance wu-ftpd[12037]: failed login from
ws170.library.msstate.edu [130.18.249.170], m1
Apr 9 18:41:47 alliance login[12861]: invalid password for
`budi' on `ttyp0' from `ppp15.isp.net.id'
Baris di atas menunjukkan kegagalan untuk masuk ke sistem melalui
fasilitas FTP (baris pertama) dan telnet (baris kedua). Pada baris kedua
terlihat bahwa user “budi” (atau yang mengaku sebagai user “budi”)
mencoba masuk melalui login dan gagal memberikan password yang valid.
Hal ini bisa terjadi karena ketidak sengajaan, salah memasukkan password,
atau bisa juga karena sengaja ingin mencoba-coba masuk dengan userid
“budi” dengan password coba-coba. Cara coba-coba ini sering dilakukan
dengan mengamati nama user yang berada di sistem tersebut (misalnya
dengan memakai program finger untuk mengetahui keberadaan
sebuah user).
Contoh berikut diambil dari isi berkas /var/adm/mail.log, yang
berfungsi untuk mencatat aktivitas yang berhubungan dengan sistem mail.
Apr 9 18:40:31 mx1 imapd[12859]: Login faiure
user=^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P
^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^
P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P
host=vhost.txg.wownet.net
Apr 9 18:40:32 mx1 imapd[12859]: Success, while reading line
user=^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P
^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^
P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P^P
host=vhost.txg.wownet.net
Contoh di atas menunjukkan hal yang sedikit aneh dari akses ke servis
email melalui IMAP (ditunjukkan dengan kata “imapd” yang merupakan
server dari servis IMAP). Pertama, user yang dipakai tidak valid. Kedua,
kebetulan administrator tidak memiliki remote user yang berasal dari host
yang disebut di atas. Setelah diselidiki, ternyata memang ada lubang
keamanan dari implementasi “imapd” yang dipakai . Ini diketahui
setelah melihat informasi yang ada di web site CERT (See “Sumber
informasi dan organisasi yang berhubungan dengan keamanan sistem
informasi” on page 153.). Untuk itu administrator cepat-cepat menutup
servis imap tersebut, mengambil dan memasang versi baru dari imapd yang
tidak memiliki lubang keamanan tersebut.
Contoh-contoh di atas hanya merupakan sebagian kecil dari kegiatan
menganalisa berkas log. Untuk sistem yang cukup ramai, misalnya sebuah
perguruan tinggi dengan jumlah pemakai yang ribuan, analisa berkas log
merupakan satu pekerjaan tersendiri (yang melelahkan). Untuk itu adanya
tools yang dapat membantu administrator untuk memproses dan
menganalisa berkas log merupakan sesuatu yang sangat penting. Ada
beberapa tools sederhana yang menganalia berkas log untuk mengamati
kegagalan (invalid password, login failure, dan sebagainya) kemudian
memberikan ringkasan. Tools ini dapat dijalankan setiap pagi dan
mengirimkan hasilnya kepada administrator.
Backup secara rutin
Seringkali tamu tak diundang (intruder) masuk ke dalam sistem dan
merusak sistem dengan menghapus berkas-berkas yang dapat ditemui. Jika
intruder ini berhasil menjebol sistem dan masuk sebagai super user
(administrator), maka ada kemungkinan dia dapat menghapus seluruh
berkas. Untuk itu, adanya backup yang dilakukan secara rutin merupakan
sebuah hal yang esensial. Bayangkan apabila yang dihapus oleh tamu ini
yaitu berkas penelitian, tugas akhir, skripsi, yang telah dikerjakan
bertahun-tahun.
Untuk sistem yang sangat esensial, secara berkala perlu dibuat backup yang
letaknya berjauhan secara fisik. Hal ini dilakukan untuk menghindari
hilangnya data akibat bencana seperti kebakaran, banjir, dan lain
sebagainya. Apabila data-data dibackup akan tetapi diletakkan pada lokasi
yang sama, kemungkinan data akan hilang jika tempat yang bersangkutan
mengalami bencana seperti kebakaran.
penakai an Enkripsi untuk meningkatkan
keamanan
Salah satau mekanisme untuk meningkatkan keamanan yaitu dengan
memakai teknologi enkripsi. Data-data yang anda kirimkan diubah
sedemikian rupa sehingga tidak mudah disadap. Banyak servis di Internet
yang masih memakai “plain text” untuk authentication, seperti
penakai an pasangan userid dan password. Informasi ini dapat dilihat
dengan mudah oleh program penyadap atau pengendus (sniffer).
Contoh servis yang memakai plain text antara lain:
• akses jarak jauh dengan memakai telnet dan rlogin
• transfer file dengan memakai FTP
• akses email melalui POP3 dan IMAP4
• pengiriman email melalui SMTP
• akses web melalui HTTP
penakai an enkripsi untuk remote akses (misalnya melalui ssh sebagai
penggani telnet atau rlogin) akan dibahas di bagian tersendiri.
Telnet atau shell aman
Telnet atau remote login dipakai untuk mengakses sebuah “remote site”
atau komputer melalui sebuah jaringan komputer. Akses ini dilakukan
dengan memakai hubungan TCP/IP dengan memakai userid dan
password. Informasi tentang userid dan password ini dikirimkan melalui
jaringan komputer secara terbuka. Akibatnya ada kemungkinan seorang
yang nakal melakukan “sniffing” dan mengumpulkan informasi tentang
pasangan userid dan password ini1
.
Untuk menghindari hal ini, enkripsi dapat dipakai untuk melindungi
adanya sniffing. Paket yang dikirimkan dienkripsi dengan algoritma DES
atau Blowish (dengan memakai kunci session yang dipertukarkan via
RSA atau Diffie-Hellman) sehingga tidak dapat dibaca oleh orang yang
tidak berhak. Salah satu implementasi mekanisme ini yaitu SSH (Secure
Shell). Ada beberapa implementasi SSH ini, antara lain:
• ssh untuk UNIX (dalam bentuk source code, gratis,
mengimplementasikan protokol SSH versi 1 dan versi 2)
• SSH untuk Windows95 dari Data Fellows (komersial, ssh versi 1 dan
versi 2)
http://www.datafellows.com/
• TTSSH, yaitu skrip yang dibuat untuk Tera Term Pro (gratis, untuk
Windows 95, ssh versi 1)
http://www.paume.itb.ac.id/rahard/koleksi
• SecureCRT untuk Windows95 (shareware / komersial)
• putty (SSH untuk Windows yang gratis, ssh versi 1). Selain
menyediakan ssh, paket putty juga dilengkapi dengan pscp yang
mengimplementasikan secure copy sebagai pengganti FTP
Email merupakan aplikasi yang paling utama di jaringan Internet. Hampir
setiap orang yang memakai Internet memiliki alamat email. Saat ini
akan aneh jika anda tidak memiliki alamat email. Kemampuan
memakai email sama esensialnya dengan kemampuan memakai
telepon.
Sistem email sudah sangat pentingnya sehingga banyak orang akan
mengeluh jika sistem email tidak dapat bekerja. Bahkan banyak bisnis yang
dilakukan dengan memakai email. Dapat dibayangkan jika sistem
email tidak dapat bekerja dalam waktu yang lama.
Ada beberapa masalah keamanan yang terkait dengan sistem email, yaitu:
• disadap
• dipalsukan
• disusupi (virus)
• spamming
• mailbomb
• mail relay
Sebelum mendiskusikan permasalahan email, ada baiknya kita kenali dulu
sistem email. Sistem email terdiri dari dua komponen utama, yaitu Mail
User Agent (MUA), dan Mail Tranfer Agent (MTA).
MUA merupakan komponen yang dipakai oleh penakai email.
Biasanya dia yang disebut program mail. Contoh MUA yaitu Eudora,
Netscape, Outlook, Pegasus, Thunderbird, pine, mutt, elm, mail, dan masih
banyak lainnya lagi. MUA dipakai untuk menuliskan email seperti
halnya mesin ketik dipakai untuk menulis surat jaman dahulu.
MTA merupakan program yang sesungguhnya mengantar email. Biasanya
dia dikenal dengan istilah mailer. MTA ini biasanya bukan urusan
penakai , akan tetapi merupakan urusan dari administrator. Contoh MTA
antara lain postfix, qmail, sendmail, exchange, MDaemon, Mercury, dan
seterusnya.
Format Email
Agar sistem email dapat berjalan dengan sempurna dan tidak bergantung
kepada vendor atau program tertentu, didefinisikan beberapa standar.
Standar pertama yaitu RFC 822 yang mendefinisikan format dari email.
Standar ini kemudian diperbaharui menjadi RFC 2822.
Email memiliki dua komponen, yaitu header dan body. Header ini seperti
amplop pada penakai an surat biasa. Dia berisi alamat tujuan, alamat
pengirim dan hal-hal yang perlu diketahui untuk mengantarkan email
tersebut. Body berisi isi dari surat itu sendiri. Header dan body ini
dipisahkan minimal oleh satu baris yang kosong. Berikut ini yaitu contoh
format dari sebuah email.
From: Budi Rahardjo <br@paume.itb.ac.id>
To: budi@hotmail.com
Subject: Ujian diundur
Ujian kuliah saya akan diundur sampai ada pengumuman
berikutnya. Mohon maaf atas ketidaknyamanan.
--
Dosen kuliah XYZ
Bagaian atas, yang tercetak miring, merupakan bagian dari header.
Kemudian ada satu baris kosong dan diikuti dengan body.
Kembali ke masalah standar. Dalam sistem surat konvensional pun ada
standar penulisan amplop. Biasanya alamat tujuan dari surat dituliskan di
depan, agak ke kanan bawah. Sementara itu alamat pengirim dapat
dituliskan di bagian belakang amplop atau di kiri atas. Jika anda langgar
aturan ini maka surat anda bisa tidak sampai ke tujuan. Coba anda tuliskan
nama anda (pengirim) di bagian depan dari amplop, agak ke sebelah kanan.
Sementara alamat yang anda tuju anda tuliskan di belakang amplop. Surat
akan sampai ke anda, bukan ke alamat yang dituju.
Demikian pula pada sistem email, ada standar header. Header dapat
memiliki beberapa field yang baku, seperti “From:”, “To:”, “Subject:”, dan
seterusnya. Nama field tersebut langsung disambung dengan tanda titik dua
dan minimal sebuah spasi sebelum diisi dengan datanya. Sebagai contoh,
alamat pengirim dicatat dengan field “From:”. Alamat tujuan email tercatat
dalam field “To:”, dan seterusnya.
Ada banyak field-field lain yang biasanya juga dipakai seperti “Date:”,
“Cc:”, “Bcc:”. Tapi, ada juga field yang ada di email namun biasanya tidak
terlihat, seperti “Message-ID:”, “Recevied:”, dan masih banyak lainnya
lagi.
Kita juga dapat mendefinisikan field kita sendiri, yang biasanya dimulai
dengan huruf “X” dan garis (dash). Misalnya, saya bisa membuat field “XKota:” untuk menyatakan kota saya, yang kemudian saya isi dengan kata
Bandung sehingga menjadi “X-Kota: Bandung”.
Berikut ini yaitu contoh header sebuah email, lengkap dengan field-field
lainnya.
Received: from nic.cafax.se (nic.cafax.se [192.71.228.17])
by alliance.globalnetlink.com (8.9.1/8.9.1) with ESMTP
id QAA31830 for <budi@alliance.globalnetlink.com>;
Mon, 26 Mar 2001 16:18:01 -06
Received: from localhost (localhost [[UNIX: localhost]])
by nic.cafax.se (8.12.0.Beta6/8.12.0.Beta5)
id f2QLSJVM018917 for ietf-provreg-outgoing;
Mon, 26 Mar 2001 23:28:19 +0200 (MEST)
Received: from is1-55.antd.nist.gov (is1-50.antd.nist.gov
[129.6.50.251])by nic.cafax.se (8.12.0.Beta5/
8.12.0.Beta5) with ESMTP id f2QLSGiM018912
for <ietf-provreg@cafax.se>;
Mon, 26 Mar 2001 23:28:17 +0200 (MEST)
Received: from barnacle (barnacle.antd.nist.gov
[129.6.55.185])
by is1-55.antd.nist.gov (8.9.3/8.9.3) with SMTP
id QAA07174
for <ietf-provreg@cafax.se>;
Mon, 26 Mar 2001 16:28:14 -0500 (EST)
Message-ID: <04f901c0b63b$16570020$b9370681@antd.nist.gov>
From: "Scott Rose" <scottr@antd.nist.gov>
To: <ietf-provreg@cafax.se>
Subject: confidentiality and transfers
Date: Mon, 26 Mar 2001 16:24:05 -0500
MIME-Version: 1.0
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
Sender: owner-ietf-provreg@cafax.se
Precedence: bulk
Dapat dilihat pada contoh di atas ada field-field yang belum diuraikan.
Penjelasan lebih lengkap mengenai field apa saja yang dianggap standar,
dapat dilihat di RFC 822.
Body dari email diletakkan setelah header dalam bentuk teks (ASCII).
Bagaimana dengan berkas biner (surat.doc, file.zip, gambar.jpg, lagu.mp3)
yang sering kita kirimkan dalam bentuk attachment? Pada prinsipnya berkas
ini dikodekan ke dalam bentuk ASCII, misalnya dengan memakai
UUDECODE/UUENCODE, base64, dan beberapa coding lainnya.
Pemilihan kode ini biasanya terkait dengan efisiensi saja.
Mekanisme untuk menyisipkan berkas yang sudah dikodekan ini ke dalam
body dari email dijabarkan dalam RFC yang terkait dengan MIME.
sendiri dengan sebuah attachment (bisa berupa berkas
gambar ataupun berkas yang di-zip). Kemudian gunakan
mekanisme program MUA anda untuk menampilkan email
dalam format mentah (raw). Encoding apakah yang
dipakai oleh program email anda? uudecode? base64?
Setelah kita mengerti mengenai standar email, mari kita mulai
mendiskusikan permasalahan keamanan dari sistem email.
Penyadapan
Email sering dianalogikan dengan surat di dunia komunikasi konvensional.
Akan tetapi sebetulnya email lebih cocok dianalogikan sebagai kartu pos,
yaitu terbuka. Pengantar surat (Pak Pos), pada prinsipnya dapat membaca
apa yang tertulis di sebuah kartu pos. Demikian pula sistem email pada
prinsipnya dia terbuka dapat siapa saja yang dilalui sistem email tersebut.
Email dikirimkan dari komputer kita ke “kantor pos” terdekat, yaitu mail
server (sering juga disebut SMTP server) yang kita gunakan. Oleh server
mail kita, email tersebut diproses dan dikirimkan ke server berikutnya, dan
seterusnya sampai ke server email yang dituju, dan kemudian ke mailbox
dari penakai email yang dituju.
Setiap server yang dilalui membubuhi tanda dengan menambahkan header
“Recevied:”. Perhatikan contoh email pada bagian sebelumnya. Anda bisa
melihat banyaknya baris yang berisi field “Received:” tersebut. Urutan
penambahan stempel ini yaitu dari bawah ke atas. Dengan kata lain, mail
server yang baru saja menerima email tersebut membubuhkan tanda
Recived di bagian teratas. Potensi penyadapan dapat terjadi pada setiap
jalur yang dilalui, termasuk pada server yang menjadi perantara email
tersebut.
Potensi penyadapan ini dapat terjadi karena pengiriman email
memakai protokol SMTP (Simple Mail Transport Protocol)1
yang
tidak memakai enkripsi sama sekali. Jika kita berada pada satu jaringan
yang sama dengan orang yang mengirim email, atau yang dilalui oleh email,
maka kita bisa menyadap email dengan memantau port 25, yaitu port yang
dipakai oleh SMTP.
Demikian pula untuk mengambil email, biasanya dipakai protokol POP
(Post Office Protocol)1
. Protokol yang memakai port 110 ini juga tidak
memakai enkripsi dalam transfer datanya. Ketika seorang penakai
mengambil email melalui POP ke mail server, maka kita bisa menyadap
data yang melewati jaringan tersebut.
Agar email aman dari penyadapan maka perlu dipakai enkripsi untuk
mengacak isi dari email. Header dari email tetap tidak dapat dienkripsi
karena nanti akan membingungkan MTA. (Bayangkan jika anda
menyandikan tulisan tujuan surat yang akan anda kirim. Pak Pos pun akan
kebingungan.)
Dahulu, proses enkripsi dari email harus dilakukan secara manual oleh
penakai . Dia harus mengenkripsi pesan atau data yang ingin dia kirimkan
dengan sebuah program, kemudian menyisipkan (attach) berkas tersebut ke
dalam email. Ini sangat merepotkan. Saat ini sudah ada beberapa program
(tools) yang dapat mempermudah atau mengotomasi ini semua. Contoh
program tersebut antara lain Pretty Good Privacy (PGP), GnuPG, dan PEM.
Email Palsu
Membuat surat palsu tidak terlalu sukar. Kita tinggal tuliskan nama dan
alamat pengirim sesuka kita. Bahkan kita dapat berpura-pura berasal dari
kota lain. Surat palsu ini kemudian bisa kita kirimkan melalui kantor pos
terdekat.
Demikian pula membuat email palsu tidak terlalu sukar. Kita tinggal
menuliskan informasi yang salah di header dari email. (Misalnya kita
konfigurasikan sistem email kita dengan mengatakan bahwa kita yaitu si-
doel@hotmail.com.) Email yang palsu ini kemudian kita serahkan kepada
MTA untuk dikirimkan ke tempat yang dituju. Maka MTA akan melakukan
perintah tersebut. Namun perlu diingat bahwa aktivitas kita tercatat oleh
MTA. Misalnya anda membuat sebuah berkas “email-palsu.txt” dengan isi
sebagai berikut.
To: siapasaja@dimanasaja.com
From: si-doel@hotmail.com
Subject: email palsu
Saya akan coba kirim email palsu. Perhatikan
header dari email ini.
Setelah berkas tersebut kita tuliskan, maka bisa kita panggil MTA (dalam
contoh di bawah ini kita memakai sendmail sebagai MTA-nya) dan
kita katakan MTA untuk mengantarkan email ke alamat “user01@training”.
Email akan dikirimkan ke “user01@training”, tanpa memperdulikan isi
field “To:” yang ada dalam berkas tersebut.
/usr/sbin/sendmail user01@training < email-palsu.txt
Hal yang sama bisa kita lakukan dengan langsung berbicara ke MTA yang
dituju dengan memakai protokol SMTP.
Bagaimana upaya kita untuk melindungi dari email palsu? Sebagai
penerima email, kita bisa melihat header dari email. Kita lihat tempattempat yang dilalui oleh email tersebut. Sayangnya jarang sekali penakai
email melihat isi dari header email sehingga mereka mudah tertipu dengan
email palsu.
Cara lain untuk memastikan bahwa email berasal dari orang yang
bersangkutan yaitu dengan memakai digital signature. Sayangnya
mekanisme ini jarang dilakukan karena tidak banyak orang yang
memakai digital signature.
Sebagai administrator, kita harus rajin membaca log untuk melihat
keanehan atau anomali dengan penakai an email. Misalnya kita dapat lihat
apakah ada orang mengirimkan email dengan identitas (From:) yang tidak
sama dengan domain dari organisasi kita. Demikian pula server mail kita
harus dibatasi agar tidak ditumpangi oleh orang yang tidak berhak. Untuk
yang ini akan kita bahas pada bagian “mail relay”.
Penyusupan Virus
Email sering dijadikan medium yang paling efektif untuk menyebarkan
virus. Hal ini disebabkan email langsung menuju penakai yang umumnya
merupakan titik terlemah (weakest link) dalam pertahanan sebuah
perusahaan atau institusi. Orang seringkali dengan mudah membuka atau
menjalankan program yang terkait dengan attachment yang dia terima
melalui email. Ada sebuah gosip yang mengatakan bahwa 70% orang akan
menjalankan (meng-klik) email yang memiliki attachment dengan judul
“BIRAHI.EXE”.
Untuk membuat penakai email nyaman dalam memakai email,
program mail (MUA) dahulu sering dikonfigurasi untuk secara otomatis
menjalankan program aplikasi yang sesuai dengan attachment yang
diterima. Misalnya attachment yang diterima berupa berkas Microsoft
Word, maka program mail tersebut langsung menjalankan Microsoft Word.
Akibatnya berkas yang memiliki virus dapat langsung dijalankan. Untuk itu
seharusnya program mail tidak menjalankan program secara otomatis.
penakai harus mengambil inisiatif sendiri.
Pengamanan sistem biasanya memakai firewall. Namun firewall
biasanya bergerak di layer yang lebih rendah, bukan layer aplikasi, sehingga
tidak dapat melihat isi atau data dari email. Firewall yang baru sudah dapat
menguji isi email terhadap tanda-tanda virus.
Solusi untuk mengurangi impak terhadap penyusupan virus yaitu dengan
memakai anti-virus dengan data (signature) yang terbaru. Program
anti-virus ini harus diperbaharui secara berkala. Disarankan untuk
melakukannya sekali dalam seminggu.
Pengamanan lain yaitu dengan melakukan pemeriksaan terhadap virus
pada level mail server. Namun hal ini sering membuat suasana tidak
nyaman karena penakai sering mengeluh tidak mendapat email dari
kawan korespondensinya. Seolah-olah mail hilang. Padahal bisa jadi email
dari kawannya tersebut mengandung virus dan sudah difilter di server mail.
Spam
Spam1
yaitu didefinisikan sebagai “unsolicited email”, yaitu email yang
tidak kita harapkan. Spam ini berupa email yang dikirimkan ke banyak
orang. Biasanya isi dari email ini yaitu promosi.
Masalah spam ini berdasarkan pada kenyataan bahwa biaya (cost) untuk
mengirimkan email ke satu orang dan 1000 orang tidak jauh berbeda.
Barrier untuk melakukan mass mailing sangat rendah. Hal ini berbeda
dengan melakukan pemasaran konvensional dimana untuk mengirimkan
sebuah kartu pos atau surat akan jauh berbeda untuk satu orang dan 1000
orang.
Spam ini tidak terfilter oleh anti-virus karena memang dia bukan virus.
Filter terhadap spam harus dilakukan secara khusus. Namun mekanisme
untuk melakukan filtering spam ini masih sukar karena kesulitan kita dalam
membedakan antara email biasa dan email yang spam.
Pada mulanya proses filter spam dilakukan dengan mencari kata-kata
tertentu di email yang diterima. Kata-kata yang populer digunaka sebagai
subyek dari email antara lain “Make money fast”, “viagra”, dan seterusnya.
Namun ternyata hal ini tidak efektif karena para spammer mengubah katakata tersebut menjadi kata-kata plesetan. Misalnya huruf “i” dari kata
“viagra” diganti dengan angka “1” menjadi “v1agra”. Hebatnya manusia
yaitu kita masih dapat mengerti bahwa yang dimaksudkan yaitu viagra.
Namun program komputer masih kesulitan dalam membedakan
(menyamakan) kedua hal tersebut. Akibatnya jika kita memasukkan kata
“viagra” ke dalam filter, maka kata “v1gra” akan lolos dari filter kita dan
email spam tersebut masih tetap masuk ke mailbox kita.
Pendekatan berikutnya dalam melawan spam yaitu dengan memakai
statistik (Bayesian) yang menghitung kata-kata di dalam email. Jika ada
banyak kata yang merupakan kata kunci dari spammer, maka statistik akan
menunjukan probabilitas bahwa email tersebut merupakan spam. Namun
lagi-lagi spammer lebih pintar, yaitu dengan menambahkan kata-kata yang
tidak bermakna di dalam email yang dikirimkan sehingga mengacaukan
hasil statistik. (Semakin banyak kata-kata yang tidak beraturan semakin
tinggi nilai entropi dari signal, semakin jauh dari label spam.)
Jumlah email spam ini sudah sangat banyak sehingga dapat melumpuhkan
server email. Banyak tempat yang tidak menjalankan filtering terhadap
spam karena tidak mampu.
Masalah spam masih menjadi masalah utama dalam sistem email saat ini.
Ada organisasi yang bernama CAUCE (Coalition Against Unsolicited
Commercial Email) yang menggalang upaya-upaya untuk membendung
spam.
Mailbomb
Mailbomb yaitu mengirim email bertubi-tubi ke satu tujuan. Dampaknya
mailbox yang dituju akan menjadi penuh. Dampak kepada sistem juga
hampir sama, yaitu direktori yang dipakai untuk menampung email (mail
spool) menjadi penuh sehingga penakai lain tidak dapat menerima email
juga.
Pembuatan mailbomb dapat dilakukan dengan mudah, misalnya dengan
memakai shell script di sistem UNIX. Skrip yang mungkin hanya 3
baris ini melakukan loop, dimana pada setiap loopnya dia memanggil MTA
dan memberinya email yang harus dikirimkan ke target. Seperti pada spam,
cost untuk mengirimkan email sangat rendah sehingga untuk melakukan
mailbomb juga sangat mudah. Untungnya kegiatan ini tercatat dalam logfile
sehingga memudahkan untuk melakukan pelacakan.
Proteksi terhadap mailbomb yaitu dengan membatasi quota email dari
penakai , misalnya dibatasi 20 MBytes, sehingga jika dia kena mailbomb
tidak mengganggu penakai lainnya. Cara lain yang dapat dilakukan
yaitu menjalankan program yang mendeteksi mailbomb. Program ini
menganalisa isi email (dengan memakai checksum) dan
membandingkan dengan email-email sebelumnya. Jika email sama persis
dengan email sebelumnya maka email ini dapat dihilangkan. Namun kinerja
program khusus ini masih dipertanyakan, khususnya untuk server mail yang
banyak menerima email.
Mail Relay
Mail relaying yaitu mengirimkan email dengan memakai server mail
milik orang lain. Aktivitas ini biasanya dilakukan oleh para pengirim spam.
Mereka mendompleng server mail milik orang lain yang konfigurasi kurang
baik dan memperkenankan orang lain untuk memakai server itu untuk
mengirim email. Akibatnya bandwidth dari server itu bisa habis dipakai
untuk mengirim email spam, bukan email dari penakai yang sah.
Abuse terhadap server mail yang terbuka ini biasanya dilakukan oleh
pengirim spam. Banyak tempat yang melakukan filtering terhadap server
mail yang dipakai oleh pengirim spam. Jika server mail anda termasuk
yang memperkankan mail relay, maka server anda dapat masuk ke dalam
daftar tercela (blacklist) dan kena filter juga. Oleh sebab itu harus
dipastikan bahwa server mail kita tidak memperkenankan mail relay.
Pada awal perkembangan Internet, masalah kepercayaan sangat tinggi
sehingga kebanyakan orang tidak memperhatikan masalah keamanan ini.
Server email disetup tanpa adanya pembatasan siapa saja yang boleh
memakai nya. Namun saat ini hal tersebut sudah tidak bisa dilakukan
lagi. penakai server email - siapa-siapa yang dapat memakai nya
untuk mengirim email - harus dibatasi. Misalnya, server email hanya dapat
mengirimkan email jika nomor IP dari penakai ada dalam rentang nomor
IP internal.
Kita juga dapat melakukan proteksi terhadap spam dengan melakukan
filtering terhadap server mail yang terbuka. MTA kita dapat kita konfigurasi
untuk menolak email yang berasal dari server mail yang memperkenankan
mail relay (karena kemungkinan email yang dikirim yaitu spam).
TABLE 8. Daftar Database Mail Relay
Tempat-tempat database server yang memperkenankan mail relay
Mail Abuse Prevention System: http://mail-abuse.org
ORBZ – Open Relay Blackhole Zone: http://www.orbz.org/
ORDB – Open Relay Database: http://www.ordb.org/
RBL-type services: http://www.ling.helsinki.fi/users/
reriksso/rbl/rbl.html
World Wide Web (WWW atau Web1
) merupakan salah satu “killer
applications” yang menyebabkan populernya Internet. WWW
dikembangkan oleh Tim Berners-Lee ketika bekerja di CERN (Swiss).
Sejarah dari penemuan ini dapat dibaca pada buku karangan Tim BernersLee ini [3]. Kehebatan Web yaitu kemudahannya untuk mengakses
informasi, yang dihubungkan satu dengan lainnya melalui konsep hypertext.
Informasi dapat tersebar di mana-mana di dunia dan terhubung melalui
hyperlink. Informasi lebih lengkap tentang WWW dapat diperoleh di web
W3C <http://www.w3.org>.
Pembaca atau peraga sistem WWW yang lebih dikenal dengan istilah
browser dapat diperoleh dengan mudah, murah atau gratis. Contoh browser
yaitu Netscape, Internet Explorer, Opera, kfm (KDE file manager di
sistem Linux), dan masih banyak lainnya. Kemudahan penakai an program
browser inilah yang memicu populernya WWW. Sejarah dari browser ini
dimulai dari browser di sistem komputer NeXT yang kebetulan dipakai
oleh Berners-Lee. Selain browser NeXT itu, pada saat itu baru ada browser
yang berbentuk text (text-oriented) seperti “line mode” browser. Kemudian
ada lynx dan akhirnya muncul Mosaic yang dikembangkan oleh Marc
Andreesen beserta kawan-kawannya ketika sedang magang di NCSA.
Mosaic yang multi-platform (Unix/Xwindow, Mac, Windows) inilah yang
memicu popularitas WWW.
Berkembangnya WWW dan Internet menyebabkan pergerakan sistem
informasi untuk memakai nya sebagai basis. Banyak sistem yang tidak
terhubung ke Internet tetapi tetap memakai basis Web sebagai basis
untuk sistem informasinya yang dipasang di jaringan Intranet. Untuk itu,
keamanan sistem informasi yang berbasis Web dan teknologi Internet
bergantung kepada keamanan sistem Web tersebut.
Arsitektur sistem Web terdiri dari dua sisi: server dan client. Keduanya
dihubungkan dengan jaringan komputer (computer network). Selain
menyajikan data-data dalam bentuk statis, sistem Web dapat menyajikan
data dalam bentuk dinamis dengan menjalankan program. Program ini
dapat dijalankan di server (misal dengan CGI, servlet) dan di client (applet,
Javascript). Sistem server dan client memiliki permasalahan yang berbeda.
Keduanya akan dibahas secara terpisah.
Ada asumsi dari sistem Web ini. Dilihat dari sisi penakai :
• Server dimiliki dan dikendalikan oleh organisasi yang mengaku
memiliki server tersebut. Maksudnya, jika sebuah server memiliki
domain www.bni.co.id dan tulisan di layar menunjukkan bahwa situs itu
merupakan milik Bank BNI maka kita percaya bahwa server tersebut
memang benar milik Bank BNI. Adanya domain yang dibajak
merupakan anomali terhadap asumsi ini.
• Dokumen yang ditampilkan bebas dari virus, trojan horse, atau itikad
jahat lainnya. Bisa saja seorang yang nakal memasang virus di web nya.
Akan tetapi ini merupakan anomali.
• Server tidak mendistribusikan informasi mengenai pengunjung (user
yang melakukan browsing) kepada pihak lain. Hal ini disebabkan ketika
kita mengunjungi sebuah web site, data-data tentang kita (nomor IP,
operating system, browser yang dipakai , dll.) dapat dicatat.
Pelanggaran terhadap asumsi ini sebetulnya melanggar privacy. Jika hal
ini dilakukan maka pengunjung tidak akan kembali ke situs ini
Asumsi dari penyedia jasa (webmaster) antara lain:
• penakai tidak beritikad untuk merusak server atau mengubah isinya
(tanpa ijin).
• penakai hanya mengakses dokumen-dokumen atau informasi yang
diijinkan diakses. Seorang penakai tidak mencoba-coba masuk ke
direktori yang tidak diperkenankan (istilah yang umum dipakai
yaitu “directory traversal”).
• Identitas penakai benar. Banyak situs web yang membatasi akses
kepada user-user tertentu. Dalam hal ini, jika seorang penakai “login”
ke web, maka dia yaitu penakai yang benar.
Asumsi kedua belah pihak:
• Jaringan komputer (network) dan komputer bebas dari penyadapan
pihak ketiga.
• Informasi yang disampaikan dari server ke penakai (dan sebaliknya)
terjamin keutuhannya dan tidak dimodifikasi oleh pihak ketiga yang
tidak berhak.
Asumsi-asumsi di atas bisa dilanggar sehingga mengakibatkan adanya
masalah keamanan.
Keamanan Server WWW
Keamanan server WWW biasanya merupakan masalah dari seorang
administrator. Dengan memasang server WWW di sistem anda, maka anda
membuka akses (meskipun secara terbatas) kepada orang luar. Apabila
server anda terhubung ke Internet dan memang server WWW anda
disiapkan untuk publik, maka anda harus lebih berhati-hati sebab anda
membuka pintu akses ke seluruh dunia!
Server WWW menyediakan fasilitas agar client dari tempat lain dapat
mengambil informasi dalam bentuk berkas (file), atau mengeksekusi
perintah (menjalankan program) di server. Fasilitas pengambilan berkas
dilakukan dengan perintah “GET”, sementara mekanisme untuk
mengeksekusi perintah di server dapat dilakukan dengan “CGI” (Common
Gateway Interface), Server Side Include (SSI), Active Server Page (ASP),
PHP, atau dengan memakai servlet (seperti pernggunaan Java Servlet).
Kedua jenis servis di atas (mengambil berkas biasa maupun menjalankan
program di server) memiliki potensi lubang keamanan yang berbeda.
Adanya lubang keamanan di sistem WWW dapat dieksploitasi dalam
bentuk yang beragam, antara lain:
• informasi yang ditampilkan di server diubah sehingga dapat
mempermalukan perusahaan atau organisasi anda (dikenal dengan istilah
deface1
);
• informasi yang semestinya dikonsumsi untuk kalangan terbatas
(misalnya laporan keuangan, strategi perusahaan anda, atau database
client anda) ternyata berhasil disadap oleh saingan anda (ini mungkin
disebabkan salah setup server, salah setup router / firewall, atau salah
setup authentication);
• informasi dapat disadap (seperti misalnya pengiriman nomor kartu kredit
untuk membeli melalui WWW, atau orang yang memonitor kemana saja
anda melakukan web surfing);
• server anda diserang (misalnya dengan memberikan request secara
bertubi-tubi) sehingga tidak bisa memberikan layanan ketika dibutuhkan
(denial of service attack);
• untuk server web yang berada di belakang firewall, lubang keamanan di
server web yang dieksploitasi dapat melemahkan atau bahkan
menghilangkan fungsi dari firewall (dengan mekanisme tunneling).
Sebagai contoh serangan dengan mengubah isi halaman web, beberapa
server Web milik pemerintah Indonesia sempat menjadi target serangan dari
beberapa pengacau (dari Portugal) yang tidak suka dengan kebijaksanaan
pemerintah Indonesia dalam masalah Timor Timur. Mereka mengganti
halaman muka dari beberapa server Web milik pemerintah Indonesia
dengan tulisan-tulisan anti pemerintah Indonesia. Selain itu, beberapa
server yang dapat mereka serang diporakporandakan dan dihapus isi
disknya. Beberapa server yang sempat dijebol antara lain: server
Departemen Luar Negeri, Hankam, Ipteknet, dan BPPT. Penjebolan ini
masih berlangsung terus oleh crackers yang berbeda-beda.
Membatasi akses melalui Kontrol Akses
Sebagai penyedia informasi (dalam bentuk berkas-berkas), sering
diinginkan pembatasan akses. Misalnya, diinginkan agar hanya orang-orang
tertentu yang dapat mengakses berkas (informasi) tertentu. Pada prinsipnya
ini yaitu masalah kontrol akses. Pembatasan akses dapat dilakukan
dengan:
• membatasi domain atau nomor IP yang dapat mengakses;
• memakai pasangan userid & password;
• mengenkripsi data sehingga hanya dapat dibuka (dekripsi) oleh orang
yang memiliki kunci pembuka.
Mekanisme untuk kontrol akses ini bergantung kepada program yang
dipakai sebagai server. Salah satu caranya akan diuraikan pada bagian
berikut.
Proteksi halaman dengan memakai password
Salah satu mekanisme mengatur akses yaitu dengan memakai
pasangan userid (user identification) dan password. Untuk server Web yang
berbasis Apache1
, akses ke sebuah halaman (atau sekumpulan berkas yang
terletak di sebuah directory di sistem Unix) dapat diatur dengan
memakai berkas “.htaccess”. Sebagai contoh, isi dari berkas
tersebut dapat berupa:
AuthUserFile /home/budi/.passme
AuthGroupFile /dev/null
AuthName “Khusus untuk Tamu Budi”
AuthType Basic
<Limit GET>
require user tamu
</Limit>
Dalam contoh di atas, untuk mengakses direktori tersebut dibutuhkan userid
“tamu” dan password yang sama dengan entry userid budi di berkas “/
home/budi/.passme”. Ketika direktori tersebut diakses, akan muncul
sebuah pop-up window yang menanyakan userid dan password.
Password di dalam berkas “/home/budi/.passme” dapat dibuat dengan
memakai program “htpasswd”.
unix% htpasswd -c /home/budi/.passme budi
New password: *****
Secure Socket Layer
Salah satu cara untuk meningkatkan keamanan server WWW yaitu dengan
memakai enkripsi pada komunikasi pada tingkat socket. Dengan
memakai enkripsi, orang tidak bisa menyadap data-data (transaksi)
yang dikirimkan dari/ke server WWW. Salah satu mekanisme yang cukup
populer yaitu dengan memakai Secure Socket Layer (SSL) yang
mulanya dikembangkan oleh Netscape.
Selain server WWW dari Netscape, beberapa server lain juga memiliki
fasilitas SSL juga. Server WWW Apache (yang tersedia secara gratis) dapat
dikonfigurasi agar memiliki fasilitas SSL dengan menambahkan software
tambahan (SSLeay - yaitu implementasi SSL dari Eric Young - atau
OpenSSL1
- yaitu implementasi Open Source dari SSL). Bahkan ada sebuah
perusahaan (Stronghold) yang menjual Apache dengan SSL.
penakai an SSL memiliki permasalahan yang bergantung kepada lokasi
dan hukum yang berlaku. Hal ini disebabkan:
• Pemerintah melarang ekspor teknologi enkripsi (kriptografi).
• Paten Public Key Partners atas Rivest-Shamir-Adleman (RSA) publickey cryptography yang dipakai pada SSL.
Oleh karena hal di atas, implementasi SSLeay Eric Young tidak dapat
dipakai di Amerika Utara (Amerika dan Kanada) karena “melanggar”
paten RSA dan RC4 yang dipakai dalam implementasinya. SSLeay
dapat diperoleh dari:
• http://www.psy.uq.oz.au/~ftp/Crypto
Informasi lebih lanjut tentang SSL dapat diperoleh dari:
• http://home.netscape.com/newsref/std
• http://www.openssl.org
Mengetahui Jenis Server
Informasi tentang web server yang dipakai dapat dimanfaatkan oleh
perusak untuk melancarkan serangan sesuai dengan tipe server dan
operating system yang dipakai . Seorang penyerang akan mencari tahu
software dan versinya yang dipakai sebagai web server, kemudian
mencari informasi di Internet tentang kelemahan web server tersebut.
Informasi tentang program server yang dipakai sangat mudah diperoleh.
Cara yang paling mudah yaitu dengan memakai program “telnet”
dengan melakukan telnet ke port 80 dari server web tersebut, kemudian
menekan tombol return dua kali. Web server akan mengirimkan respon
dengan didahuli oleh informasi tentang server yang dipakai . Program
Ogre (yang berjalan di sistem Windows) dapat mengetahui program server
web yang dipakai . Sementara itu, untuk sistem UNIX, program lynx
dapat dipakai untuk melihat jenis server dengan menekan kunci “sama
dengan” (=).
Keamanan Program CGI
Common Gateway Interface (CGI) dipakai untuk menghubungkan
sistem WWW dengan software lain di server web. Adanya CGI
memungkinkan hubungan interaktif antara user dan server web. CGI
seringkali dipakai sebagai mekanisme untuk mendapatkan informasi dari
user melalui “fill out form”, mengakses database, atau menghasilkan
halaman yang dinamis.
Meskipun secara prinsip mekanisme CGI tidak memiliki lubang keamanan,
program atau skrip yang dibuat sebagai CGI dapat memiliki lubang
keamanan (baik secara sengaja dibuat lubang keamanannya ataupun tidak
sengaja). Pasalnya, program CGI ini dijalankan di server web sehingga
memakai resources web server tersebut. Potensi lubang keamanan
yang dapat terjadi dengan CGI antara lain:
• Seorang pemakai yang nakal dapat memasang skrip CGI sehingga dapat
mengirimkan berkas password kepada pengunjung yang mengeksekusi
CGI tersebut.
• Program CGI dipanggil berkali-kali sehingga server menjadi terbebani
karena harus menjalankan beberapa program CGI yang menghabiskan
memori dan CPU cycle dari web server.
• Program CGI yang salah konfigurasi sehingga memiliki otoritas seperti
sistem administrator sehingga ketika dijalankan dapat melakukan
perintah apa saja. Untuk sistem UNIX, ada saja administrator yang salah
seting sehingga server web (httpd) dijalankan oleh root.
• CGI guestbook yang secara otomatis menambahkan informasi ke dalam
halaman web seringkali disalahgunakan oleh orang yang nakal dengan
mengisikan link ke halaman pornografi atau diisi dengan sampah (junk
text) sehingga memenuhi disk pemilik web.
• Teks (informasi) yang dikirimkan ke CGI diisi dengan karakter tertentu
dengan tujuan untuk merusak sistem. Sebagai contoh, banyak search
engine yang tidak melakukan proses “sanitasi” terhadap karakter yang
dituliskan oleh user. Bagaimana jika user memasukkan “abcd; rm -rf /”
atau “%; drop table” dan sejenisnya. (Tujuan utama yaitu melakukan
attack terhadap SQL server di server.)
Keamanan client WWW
Dalam bagian terdahulu dibahas masalah yang berhubungan dengan server
WWW. Dalam bagian ini akan dibahas masalah-masalah yang berhubungan
dengan keamanan client WWW, yaitu pemakai (pengunjung) biasa.
Keamanan di sisi client biasanya berhubungan dengan masalah privacy dan
penyisipan virus atau trojan horse.
Pelanggaran Privacy
Ketika kita mengunjungi sebuah situs web, browser kita dapat “dititipi”
sebuah “cookie” yang fungsinya yaitu untuk menandai kita. Ketika kita
berkunjung ke server itu kembali, maka server dapat mengetahui bahwa kita
kembali dan server dapat memberikan setup sesuai dengan keinginan
(preference) kita. Ini merupakan servis yang baik. Namun data-data yang
sama juga dapat dipakai untuk melakukan tracking kemana saja kita
pergi.
Ada juga situs web yang mengirimkan script (misal Javascript) yang
melakukan interogasi terhadap server kita (melalui browser) dan
mengirimkan informasi ini ke server. Bayangkan jika di dalam komputer
kita terdapat data-data yang bersifat rahasia dan informasi ini dikirimkan ke
server milik orang lain.
Penyisipan Trojan Horse
Cara penyerangan terhadap client yang lain yaitu dengan menyisipkan
virus atau trojan horse. Bayangkan apabila yang anda download yaitu
virus atau trojan horse yang dapat menghapus isi harddisk anda. Salah satu
contoh yang sudah terjadi yaitu adanya web yang menyisipkan trojan
horse Back Orifice (BO) atau Netbus sehingga komputer anda dapat
dikendalikan dari jarak jauh. Orang dari jarak jauh dapat menyadap apa
yang anda ketikkan, melihat isi direktori, melakukan reboot, bahkan
memformat harddisk!
Dalam bab ini akan dibahas beberapa contoh eksploitasi lubang keamanan.
Contoh-contoh yang dibahas ada yan bersifat umum dan ada yang bersifat
khusus untuk satu jenis operating system tertentu, atau untuk program
tertentu dengan versi tertentu. Biasanya lubang keamanan ini sudah ditutup
pada versi baru dari paket program tersebut sehingga mungkin tidak dapat
anda coba. Pembahasan dalam bab ini tentunya tidak komplit dikarenakan
batasan jumlah halaman. Jika diinginkan pembahasan yang lebih komplit
ada buku “Hacking Exposed” (lihat referensi [41]) yang dapat dipakai
untuk keperluan tersebut.
Menurut “Hacking Exposed”, metodologi dari penyusup biasanya
mengikuti langkah sebagai berikut:
• Target acquisition and information gaterhing
• Initial access
• Privilege escalation
• Covering tracks
Mencari informasi
Sebelum melakukan penyerangan, seorang cracker biasanya mencari
informasi tentang targetnya. Banyak informasi tentang sebuah sistem yang
dapat diperoleh dari Internet. Sebagai contoh, informasi dari DNS (Domain
Name System) kadang-kadang terlalu berlebihan sehingga memberikan
terlalu banyak informasi kepada orang yang bermaksud jahat. DNS dapat
memberikan informasi tentang nama-nama server berserta nomor IP yang
dimiliki oleh sebuah perusahaan. Seseorang yang tidak tahu apa-apa,
dengan mengetahui domain dari sebuah perusahaan dapat mengetahui
informasi yang lebih banyak tentang server-server dari perusahaan tersebut.
Paling tidak, informasi tentang name server merupakan informasi awal
yang dapat berguna.
Informasi tentang DNS tersedia secara terbuka di Internet dan dapat dicari
dengan memakai berbagai tools seperti:
• whois, host, nslookup, dig (tools di sistem UNIX)
• Sam Spade (tools di sistem Windows)
• web dari Network Solutions inc. yang menyediakan informasi tentang
data-data gTLD (.com, .net, .org, dan seterusnya) melalui webnya di
http://www.networksolutions.com
Host, Whois, dig
Berikut ini yaitu contoh beberapa session untuk mencari informasi tentang
domain dan server-server yang dipakai oleh domain tersebut. Untuk
mencari name server, dapat dipakai program “host” dengan option “-t
ns”. Sementara itu untuk mencari nomor IP dari sebuah host, langsun
gunakan program host tanpa option.
unix$ host -t ns yahoo.com
yahoo.com NS NS3.EUROPE.yahoo.com
yahoo.com NS NS1.yahoo.com
yahoo.com NS NS5.DCX.yahoo.com
unix$ host ns1.yahoo.com
ns1.yahoo.com A 204.71.200.33
Cara yang sama dapat dilakukan dengan memakai program whois.
Contoh di bawah ini yaitu untuk mencari informasi tentang domain
yahoo.com dengan memakai server whois yang berada di Network
Solutions Inc.
unix$ whois -h whois.networksolutions.com yahoo.com
Registrant:
Yahoo (YAHOO-DOM)
3420 Central Expressway
Santa Clara, CA 95051
US
Domain Name: YAHOO.COM
Administrative Contact, Technical Contact:
Balling, Derek (DJB470) tech-contact@YAHOO-INC.COM
Yahoo!
701 First Ave
Sunnyvale, CA 94089
US
+1-408-349-5062
Billing Contact:
Billing, Domain (DB28833) domainbilling@YAHOO-INC.COM
Yahoo! Inc.
225 Broadway, 13th Floor
San Diego, CA 92101
1-408-731-3300
Record last updated on 28-Jun-2001.
Record expires on 20-Jan-2010.
Record created on 18-Jan-1995.
Database last updated on 20-Jul-2001 00:12:00 EDT.
Domain servers in listed order:
NS1.YAHOO.COM 204.71.200.33
NS5.DCX.YAHOO.COM 216.32.74.10
NS3.EUROPE.YAHOO.COM 217.12.4.71
Informasi yang diperoleh dari contoh di atas sekedar mencari informasi
mengenai server DNS. Kita juga dapat mencoba mencari informasi lebih
jauh dengan cara mengambil (dump) semua data-data DNS yang dikenal
dengan istilah zone transfer. Program “dig” dapat kita gunakan untuk
keperluan tersebut.
unix$ dig yahoo.com. axfr @ns1.yahoo.com.
Contoh di atas yaitu perintah untuk melakukan zone transfer (axfr)
terhadap domain yahoo.com dari server ns1.yahoo.com. Perhatikan tanda
titik (.) di belakang nama domain. Perlu diingat bahwa kegiatan zone
transfer di beberapa tempat dapat dikategorikan sebagai tidak ramah
(unfriendly) dan bahkan dianggak sebagai usaha untuk melakukan hacking
terhadap sistem tersebut.
Untuk sistem yang diamankan secara baik, perintah zone transfer di atas
akan gagal untuk dilakukan. Akan tetapi untuk sistem yang tidak baik,
perintah di atas akan memberikan informasi tentang nama server-server
yang berada dalam domain tersebut. Termasuk server di Intranet! (seperti
billing, terminal server, RAS, dan sebagainya). Informasi yang sensitif
seperti ini seharusnya tidak dapat di-query oleh orang atau server yang tidak
berhak. Query zone transfer ini juga dapat dijadikan DoS attack karena
dengan