Melindungi Windows dari serangan Virus dengan menggunakan Linux
Poerwanto dan I Made Wiryana

Virus adalah hal yang sangat menjengkelkan bagi para pengguna komputer. Semakin lama virus makin canggih dalam memanfaatkan kelemahan sistem operasi serta kelengahan pengguna. Hal ini makin dirasakan oleh para pengguna sistem operasi yang memiliki sistem keamanan yang lemah. Virus pada awalnya menular melalui media disket dan atau melalui program yang bersifat dapat dieksekusi, kini telah beralih menjadi mampu menular melalui media Internet dan melalui dokumen yang sepintas lalu sepertinya tidak berbahaya. Penularannya makin cepat dan akibat kerusakannya makin besar pula. 
Satu demi satu virus baru bermunculan, kemungkinan kerusakan baru yang makin parah makin nyata. Bahkan di salah satu situs Internet tersedia pula program untuk membuat virus secara online, yang dikenal Virus Generator Online (VGOL). Walau sudah begitu besar dampak yang diakibatkannya, sayangnya tetap para pengguna cenderung tetap kurang peduli baik dalam kehati-hatian penggunaan komputer dan belum belum menerapkan 'good practice' dalam memanfaatkan perangkat komputasinya. Hal ini ditambah lagi dengan kenyataan ketika pengguna melakukan pemilihan sistem operasi yang jarang sekali melakukan pertimbangan akan kemungkinan kerusakan yang ditimbulkan oleh virus ini. 
Jenis pelayanan (service) sistem komputer yang makin beragam menjadikan kemungkinan virus makin besar pula pada platform yang rentan virus. Memang masih terasa sulit bagi para pengguna untuk secara langsung berganti platform yang lebih kebal terhadap virus. Akan tetapi harus ada jalan yang dapat dimanfaatkan untuk menyelamatkan data para pengguna ini terhadap serangan virus. 
Beragam cara telah dikembangkan baik dengan menggunakan program khusus seperti anti virus, ataupun dengan cara mengganti platform yang lebih kebal akan virus. Pada tulisan ini akan dijabarkan metoda pencegahan menularnya virus attachment dengan memanfaatkan sistem operasi LINUX sebagai penjaga pintu gerbang mail server. 

Gambar 1. Sistem mail yang memungkinkan penyebaran virus
1 Kemudahan yang dapat membawa bencana
Pada awalnya email hanyalah menggunakan data teks murni (pada saat inipun masih banyak pengguna yang menggunakan modus seperti ini). Perkembangan pemanfaatan email secara luas menjadikan pengguna menghendaki pemanfaatan yang lain dari email. E-mail kini telah diberi tambahan fasilitas berupa attachment yang dapat secara otomatis dijalankan, seperti gambar, sound, video dan sebagainya. Sepintas lalu fungsi ini sangat menarik dan memudahkan pengguna (walau efektifitasnya masih perlu dipertanyakan), akan tetapi ternyata hal ini membawa 'bahaya terselubung' yang sering diabaikan orang. Dan baru disadari ketika telah mengakibatkan kerugian yang tidak sedikit. Inipun belum cukup menjadi pelajaran, bahkan banyak pengguna yang walaupun telah mengalami kerugian yang berarti tetap hanya menganggapnya sebagai 'kesialan' yang tak bisa dihindari dan tak perlu dilakukan pencegahan. Masih sedikit perusahaan di Indonesia yang melakukan perhitungan kerugian ketika terjadi peristiwa kerusakan yang diakibatkan virus ini. 
Bagi para pengguna program email buatan Microsoft seperti Outlook tentu sudah maklum bahwa file attachment yang diterima akan dimunculkan sebagai icon setelah email tersebut dibuka. Biasanya pengguna akan terdorong untuk mengklik icon tersebut. Bila icon tersebut diklik maka program yang terasosiasi dengan dokumen tersebut akan langsung dijalankan. Bila document Excell maka program Excell otomatis akan dijalankan. Bila data Excell tersebut mengandung MACRO maka MACRO tersebut akan dijalankan. Di sinilah berawalnya tragedi virus-virus belakangan ini. 
Permasalahan ini sebetulnya adalah suatu fenomena klasik dalam bahasan sekuriti komputer, yaitu 'trade off' antara aksesibilitas versus sekuriti. Feature ini di satu sisi memang bertujuan mempermudah user, tapi di sisi lainnya ternyata memberikan dampak sampingan yang sangat berbahaya sekali bila implementasinya dilakukan dengan tidak hati-hati. Bayangkan, bagaimana bila attachmentnya berupa binary file yang langsung menghapus file-file penting seperti yang dilakukan oleh virus explore_zip ?? Sekali klik, hilanglah semua data yang mungkin sudah dikerjakan sekian hari, minggu atau bahkan bulan dan tahun. Kerugian sangat besar dan tidak bisa diabaikan begitu saja. 
Permasalahan attachment ini relatif tidak begitu dirasakan bagi para pengguna program pembaca email seperti PINE atau MUTT, atau para pengguna program email yang menampilkan attachment tetapi yang berbasiskan Linux. Karena ketika attachment tersebut dibuka tetap tidak akan bisa bekerja karena program yang diasosiasikannya tidak ada, serta sistem operasi Linux tidak mengijinkan virus tersebut bekerja. Pada sistem Linux suatu program yang dimiliki oleh seorang user hanya akan mampu melakukan apa yang dapat dilakukan oleh user tersebut. Metoda ini secara langsung menghambat bekerjanya virus di lingkungan Linux. 
Pada kasus virus melalui attachment, biasanya virus tersebut menipu para pengguna dengan menggunakan nama attachment yang terkesan tidak berbahaya dan bahkan menggoda pengguna untuk menjalankannya. Beberapa contoh attachment yang tergolong berbahaya adalah : 
•	zipped_files.exe 
•	prettypark.exe 
•	pretty park.exe 
•	path.xls 
•	compu_ma.exe 
•	list.doc 
•	photos17.exe 
•	happy99.exe 
•	IBMls.exe 
•	picture.exe 
•	yahoo.exe 
•	ie0199.exe 
•	aol4free.com 
Beberapa cara telah dicoba untuk dimanfaatkan untuk menghindari serangan virus ini antara lain : 
•	Tidak membuka file attachment yang dikirim dari orang yang tidak dikenal. Himbauan tersebut memang masuk akal. Akan tetapi sayangnya hal tersebut sudah diantipasi oleh para pembuat virus. Misal virus explore_zip ini, dengan cara kerjanya yang cukup rapih, ketika seseorang mengirim email ke salah satu rekannya, dan kebetulan sistem pada si penerima tersebut sudah terinfeksi virus explore_zip, maka virus tersebut secara otomatis akan me-reply email itu dan mengikut-sertakan file virus tersebut. Artinya si pengirim akan mendapat kiriman email dengan subject jawaban dari email yang dikirimkan sebelumnya, isinya menyatakan bahwa email tersebut sudah diterima dan anjuran untuk membuka file attachment tersebut.
•	Memasang anti virus di mailserver dan di setiap PC . Hal ini berarti pengeluaran biaya yang tidak sedikit lagi walaupun biasanya tidak banyak membantu. Bukan saja biaya pembelian program anti virus, tetapi juga biaya akan waktu dan tenaga yang terbuang untuk memasang program anti virus di setiap mesin. Ditambah faktor keterlambatan tersedianya anti virus, yang biasanya antivirus baru dibuat setelah ada virusnya. Setiap update anti virus akan menghabiskan biaya dan waktu tambahan, karena harus dilakukan kepada semua sistem komputer
•	Memanfaatkan sistem operasi Linux untuk mencegah penularan virus. Cara ini cukup murah dan ampuh dan telah terbukti sangat bermanfaat terutama pada sistem jaringan di perusahaan yang memiliki pengguna cukup besar. Metoda ini sebenarnya merupakan metoda pencegahan yang mengurangi kemungkinan masuknya virus lewat file attachment yang dikirim via email. Metoda terakhir inilah yang akan diterangkan pada tulisan ini secara lebih mendalam. 
2 Sistem pengiriman mail pada Linux
Untuk memahami mekanisme 'penolakan' virus ini, maka akan diterangkan secara singkat mekanisme email pada sistem Unix. Pada gambar berikut ini dijabarkan sistem email yang umum digunakan pada UNIX. 

Gambar 2. Arsitektur sistem mail
Pada sistem Linux proses pengiriman dan penerimaan mail melibakan beberapa proses. Pengiriman sendiri akan memanfaatkan protokol seperti SMTP atau UUCP. Sedangkan pengguna dapat membaca emailnya menggunakan protokol POP. Setiap pengguna memiliki 'mailbox' pada mail server. Di tempat inilah mail yang ditujukan kepada pengguna tersebut disimpan. 
Pada sistem Linux komponen mail server bisa dipasang-pasang sesuai kebutuhan, pada dasaranya sistem mail akan terbagi komponen yang terlibat sebagai : 
•	Message Tranfer Agent (MTA) 
•	Mail Delivery Agent (MDA) 
•	Mail User Agent (MUA). 
Komponen itu diluar sistem pengiriman dan penerimaan email sendiri. Pada dasarnya MTA akan menerima message yang berasal dari user di luar mesin melalui UUCP (via rmail) user di luar mesin melalui TCP/IP dengan SMTP, ataupun user di mesin lokal melalui program MUA. Oleh MTA message tersebut akan dipilah pilah berdasarkan 'rule' yang telah ditentukan, juga dengan memanfaatkan 'alias' yang telah didefinsikan. MTA akan melantukan proses tersebut hingga message tersebut apakah dikirimkan lagi melalui TCP/IP atau UUCP (misal message dari user lokal yang ditujukan kepada user di luar mesin tersebut) atau langsung dikirimkan ke mailbox user lokal (misal message dari user lokal untuk user lokal lainnya). 
Pada sistem Linux pengguna memiliki kebebasan untuk mengganti komponen tersebut sesuai kebutuhan. Pemisahan komponen sistem email ini mengakibatkan sistem mail di Linux (Unix) menjadi luwes dan tidak terikat pada suatu solusi yang bersifat proprietary. Sehingga penambahan atau perubahan komponen mudah dilakukan untuk menyesuaikan dengan kebutuhan pengguna, misal untuk pemasangan anti virus atau pencegahan attachment, ataupun spam. 

Gambar 3. Alur data pengiriman email
Ketika seorang pengguna mengetik email dengan menggunakan program mail user agent (MUA) misal mailx, PINE, ELM, atau Microsoft Outlook. Mail tersebut akan dikumpulkan dan dikirimkan oleh MUA ke MTA. Kemudian message tersebut akan ditangani oleh MTA apakah akan dikirimkan ke lokal ataupun melalui STMP ataupun UUCP. Kemudian bila mail tersebut ternyata tidak untuk pengguna lokal, maka email tersebut akan dikirimkan oleh mail tranfer agent (MTA) ke tujuannya. Setelah sampai di tujuan maka oleh MTA penerima akan dikirim untuk diproses oleh mail delivery agent (MDA) 

Gambar 4. Pemilahan alur message
Pada sendmail (yang berfungsi sebagai message tranfer agent - MTA) terjadi proses pemilahan alur message, mail yang ditujukan untuk user di luar mesin tersebut akan dikirimkan melalui TCP atau UUCP. Ini bergantung rule pada sendmail. Sedang mail yang ditujukan kepada user local akan diberikan pada mail delivery agent untuk diproses dan dimasukkan ke mailbox dari user lokal tersebut. Untuk tujuan pencegahan virus attachment ini, diterapkan proses pengolahan tambahan sebelum mail tersebut dimasukkan ke mailbox user lokal tersebut. J adi setelah sendmail menerima email maka email akan diproses terlebih dahulu sebelum dimasukkan ke mailbox tiap user. Hal ini sangat dimungkinkan untuk diterapkan dalam lingkungan Linux karena hubungan antara MTA dan MDA bersifat Open dan tidak menggunakan koneksi yang bersifat proprietary dan tidak diketahui oleh umum. 
3 Mailserver LINUX, sang penolak virus
Untuk tujuan mencegah virus attachmen ini, caranya sederhana saja. Pada mailserver dipasang filter email untuk semua email yang masuk dan ditujukan ke user pada mesin tersebut. Program filter akan memeriksa apakah email tersebut mengandung attachment atau tidak. Jika mengandung attachment, maka filter tersebut akan menjalankan skrip Perl yang tugasnya merename attachment tersebut sehingga nantinya tidak bisa langsung diklick oleh pengguna dari MS-Outlook. 
MS-Outlook menggunakan cara yang relatif primitif untuk melakukan asosiasi obyek. MS Outlook akan memilih aplikasi untuk menjalankan attachment hanya berdasarkan asosiasi nama file terhadap aplikasi yang telah didefinsisikan. Walaupun attachment memiliki format file yang sesuai, tetapi namanya tidak menunjukkan kepada suatu aplikasi, maka file tersebut tidak akan dibuka dengan aplikasi yang bersangkutan. Karena proses pengenalan file oleh MS-Outlook relatif hanya melalui asosiasi nama file maka cara pencegahan ini relatif dapat mencegah sistem MS Outlook menjalankan attachment, Tentunya tidak semua attachment akan diberlakukan seperti itu, hanya attachment tertentu saja dan bisa kita tentukan lewat satu file kecil. 

Gambar 5. Pencegahan attachment
Misalnya ada sebuah email dengan attachment virus.exe, setelah melewati filter dan program tsb, maka attachment tersebut akan berubah menjadi : virus-1234BAHAYA!!-exe. Perhatikan nama filenya, angka 1234 dibuat secara acak oleh program, sedangkan string BAHAYA!! bisa diganti dengan yang lainnya dan .exe diganti menjadi -exe sehingga tidak bisa dijalankan secara langsung oleh MS-Outlook. 
Untuk melakukan hal ini pada mailserver Linux tidaklah sulit, dan tidak membutuhkan tambahan program yang rumit. Biasanya pada mailserver yang menggunakan Linux sebagai sistem operasinya biasanya telah diinstal juga program sendmail, procmail,Perl. Jadi relatif tidak ada penambahan program baru. Pada konfigurasi seperti ini sendmail digunakan sebagai MTA (Mail Transfer Agent) dan procmail digunakan sebagai MDA (Mail Delivery Agent). Untuk mengetahui apakah pada sistem anda telah menggunakan procmail sebagai local mail delivery agent, dapat dilihat pada file /etc/sendmail, ada baris seperti berikut ini 
Mlocal,    P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30, R=20/40,
           A=procmail -Y -a $h -d $u	
Procmail adalah suatu program yang memproses email dengan melihat informasi tertentu pada header, atau body dari tiap email yang masuk serta melakukan 'aksi' berdasarkan apa yang diperolehnya dari hasil melihat informasi tersebut. Procmail bekerja berdasarkan konsep 'rule' atau 'aturan' pemrosesan yang telah ditentukan terlebih dahulu. 
Kemudian pastikan anda telah menginstall Perl pada mail server anda (biasanya hal ini telah dilakukan). Jika diinginkan melakukan scanning pada attachmen maka harus juga diinstall mimencode yang merupakan bagian dari paket metamail dan juga mktemp. Sebetulnya akan lebih baik bila Mime::Base64 dari CPAN diinstall karena akan lebih digunakan daripada mimencode. Hal ini biasanya telah dilakukan pada beberapa distribusi Linux. Bagi yang belum memiliki dapat mencari di 
CPAN: Comprehensive Perl Archive Network 
Pertama kali harus dibuat direktori /etc/procmail dengan owner dan group adalah root. Permision dari direktori ini diset sebagai rwxr-xr-x. 
Langkah selanjutnya adalah mendownload kumpulan filter procmail yang dapat ditemukan di : 
http://www.wolfenet.com/~jhardin/procmail-security.html 
Dari filter yang telah tersedia tersebut dapat dipilih yang sesuai dengan kebutuhan. Kemudian prosedur selanjutnya adalah mengatur file /etc/procmailrc Setelah itu, dibuat file /etc/procmailrc dengan owner dan group adalah root, dan permission rw-r--r--. Pada file ini diletakkan hal sebagai berikut : 
DROPPRIVS=YES
#LOGFILE=$HOME/procmail-log
LOGFILE=/dev/null
PATH="/usr/bin:$PATH"
SHELL=/bin/sh
POISONED_EXECUTABLES=/etc/procmail/poisoned
SECURITY_NOTIFY="postmaster, admin, purwanto"
SECURITY_NOTIFY_VERBOSE="sipoer@makro.co.id"
SECURITY_QUARANTINE=/var/spool/mail/security
INCLUDERC=/etc/procmail/html-trap.procmail
#VERBOSE=on
:0
* ^Subject:.*Important Message 
/dev/null
.
.
.
dan seterusnya	
Sudah barang tentu jika telah memiliki file /etc/procmailrc penambahan dapat dilakukan dengan baris INCLUDERC=/etc/procmail/html-trap.procmail pada file /etc/procmailrc yang telah ada. 
Ketika dijalankan konfigurasi diatas akan menyebabkan dihasilkannya file procmail.log di direktori home tiap pengguna yang menerima email Sehingga perlu diinformasikan pada pengguna untuk memeriksa secara rutin dan menghapus file ini, atau dapat juga dengan memanfaatkan suatu program daemon yang secara periodik melakukan pengujian dan menghapus serta memberi peringatan pada pengguna. Bila tidak ingin menggunakan file log maka baris tersebut dapat diganti menjadi : 
     LOGFILE=/dev/null 	
Perhatikan baris DROPPRIVS pada bagian awal berarti file log harus bersifat writable bagi penerima. Jika diinginkan memblok file eksekutable tertentu, atau dokument attachment tertentu, buat suatu file yang berisi nama file tersebut per baris tanpa spasi atau komentar. Lalu variable POISONED_EXECUTABLES ditentukan menunjuk pada file tersebut sebelum memanggil html-trap.procmai. Contoh di atas dapat digunakan sebagai panduan nama file yang berbahaya. Tanda wildcards (*) tidak berlaku untuk file ini. 
Sedangkan isi file /etc/procmail/poisoned adalah sebagai berikut : 
.EXE
.exe
.jpg
.JPG	
File ini menerangkan file file dengan ekstension apakah yang harus diperiksa. serta dilakukan proses filterisasi. 
Jika diinginkan agar mendapat pemberitahuan ketika filter menangkan attachment yang berbahaya maka variabel SECURITY_NOTIFY dan/atau SECURITY_NOTIFY_VERBOS diset pada suatu file yang berisi daftar alamat email yang akan menerima pemberitahuan. Bila SECURITY_NOTIFY_VERBOSE digunakan maka penerima akan menerima secara penuh pesan, dan bila SECURITY_NOTIFY yang digunakan maka penerima hanya akan menerima header email saja. 
Jika diinginkan agar pesan yang berisi attachment yang berbahaya, dikarantina (dipisahkan dan disimpan dalam file terpisah) maka variabel SECURITY_QUARANTINE diset kepada nama file untuk menyimpan attachment tersebut. Ini mencegah pengiriman email tersebut ke alamat sebenarnya. Disarankan menggunakan PROCMAIL_NOTIFY ketika menset PROCMAIL_QUARANTIN sehingga ketika ada virus attachment yang masuk dapat dilakukan pemeriksaan pada file karantina. Pada bagian awal terdapat DROPPRIV yang berarti bahwa file karantina harus memiliki permission 'writable' bagi poengguna. Jika ini merupakan masalah maka nama file untuk file karantina dapat diset menjadi /dev/null dan hanya bergantung pada option SECURITY_NOTIFY_VERBOS untuk menjaga email asli. 
Program pembersih ini (untuk mudahnya disebut 'sanitizer') akan memeriksa attachment yang berupa dokumen Microsoft atau lembar kerja yang memiliki MACRO yang mungkin bersifat 'berbahaya'. Bergantung pada macro dalam dokumen tersebut atau lembar kerja, hingga menyebabkan dokumen tersebut dianggap berbahaya (mungkin pada suatu kasus dokumen biasa dianggap berbahaya). Nilai batas untuk menentukan attachment manakah yang dianggap 'berbahaya dapat ditentukan di variabel POISONED_SCORE. Jika tidak ditentukan maka nilai default adalah 10, nilai minimum adalah 5, sedang yang direkomendasikan adalah 25. 
Jika tidak ingin melakukan pemindaian (scanning) pada macro, maka DISABLE_MACRO_CHECK diberi nilai sebarang. Jika ingin melakukan scannig, dan menghitung statistiknya tetapi tanpa memberi penandaan pada attachment yang 'berbahaya', maka dapat dilakukan dengan memberi nilai sebarang pada SCORE_ONLY atau nilai POISONED_SCORE diset pada nilai yang sangat besar (100-200 adalah nilai yang disarankan, ini akan menyebabkan menangkap sebagian besar virus yang dikenal serta melakukan profiling. Dengan menentukan SCORE_HISTORY dengan isian nama fileuntuk menyimpan hasil profiling (hasil statistik pendeteksian virus). 
Semua pengaturan harus dilakukan para skrip procmail yang memanggil program sanitizer ini sebelum program sanitizer tersebut dipanggil. Bila tidak maka tak akan memberikan pengaruh. 
4 Penutup
Cara di atas cukup ampuh untuk mencegah tersebarnya virus yang memanfaatkan attachment tanpa membutuhkan program tambahan yang memakan biaya. Akan tetapi cara tersebut saja terkadang tidak cukup, dan akan lebih baik lagi bila pengguna menerapkan langkah-langkah standard untuk mengamankan dokumen serta menggunakan perangkat sistem operasi yang lebih kebal terhadap virus. Kehandalan sistem harus lebih dipertimbangkan mengingat kerugian dari virus yang semakin lama sudah tidak bisa diabaikan lagi. Setelah kerugian yang jatuh begitu banyak, mungkin sekarang saatnya yang tepat bagi para perusahaan pengguna teknologi informasi untuk mempertimbangkan platform yang dapat melindungi data dan hasil kerja yang telah banyak menghabiskan biaya. Pasrah pada kondisi sistem operasi yang digunakan sekarang, tanpa mencari solusi alternatif yang lebih aman hanyalah merupakan solusi sementara yang dapat menjadi boomerang di kemudian hari. 
Lampiran file html-trap
Program berikut ini akan melakukan proses penggantian nama file attachment, sehingga mencegah pengguna menjalankan attachment tersebut dengan cara melakukan double click secara langsung. 
#
# 
# $Id: html-trap.procmail,v 1.56 1998-08-15 08:27:52-07 jhardin Exp $
#
# procmail snippet to defang active-content HTML tags to protect those
# people foolish enough to read their mail from a web browser or
# HTML-enabled mail client. Also mangles the attachment name on executable
# attachments to prevent the same problem, at the cost of not being able to
# run programs from within your mail client - which you shouldn't do anyway.
# And protects against excessively long filenames in attachments, which can
# cause nasty things to happen in some clients, and excessively long MIME
# Content-Type: headers, which may crash some clients.
#
# NOTES
#   This is a non-delivering filter recipe.
#
#
# INVOCATION
#   Insert
#     INCLUDERC=html-trap.procmail
#   into your .procmailrc at the beginning or end
#

LINEBUF=4096

#---------------------------------------------------------------------------
# Grab some info for logging
#
SUBJ=""

:0
* ^Subject[ 	]*:[ 	]+\/.+$
{
  SUBJ=" in \"$MATCH\""
}

:0
* ^From[ 	]*:[ 	]+\/.+$
{
  SUBJ="$SUBJ from $MATCH"
}

SUBJ="$SUBJ to $LOGNAME
"

#---------------------------------------------------------------------------
# Defang HTML active-content tags
#

:0 B
* \<(meta|app|script|object|embed|body[ 	]+.*onload|frameset)
{

  LOG="Defanging active HTML content$SUBJ"

  # Unfortunately the  filter is still pretty easy
  # to defeat. I am contemplating chucking it and just doing
  #    ->   
  # You lose link colors and the other eye candy, but you *can't* get an
  # exploit past it.

  :0 fw
  | perl -p -e '	#\
	if (/