PROMO SELL

Monday, March 07, 2005

Antivirus dengan qmail-scanner dan clam antivirus pada qmail

Diasumsikan diserver anda telah telah terpasang qmail yang sudah dipatch menggunakan qmail-queue patch dari Bruce Guenter ( http://www.qmail.org/qmailqueue-patch) . Tutorial ini disusun menggunakan distro Redhat Linux 7.3 dan mungkin juga bisa anda coba pada distro yang lain. Saran, koreksi, kritik, kesalahan ketik, maupun ucapan silakan dikirimkan ke email tersebut diatas atau langsung join ke channel #indolinux di EFnet. Terima Kasih.

Jika Anda merasa apa yang saya tulis berikut ini berguna dan ingin membuat saya gembira, Anda bisa mengirimkan satu (atau lebih) CD dari daftar wishlist saya. Tentu saja, usaha Anda akan sangat saya hargai :-).
1. Instal clam antivirus

Clam antivirus ( http://clamav.elektrapro.com) merupakan software antivirus yang berlisensi GNU GPL 2 dengan menggunakan database virus dari OpenAntiVirus ( http://www.openantivirus.org). Download, ekstrak dan ganti direktori ke source clam antivirus :


[root@wedus src]# wget http://clamav.elektrapro.com/stable/clamav-0.54.tar.gz
[root@wedus src]# tar -xzvf clamav-0.54.tar.gz
[root@wedus src]# cd clamav-0.54

Buat user dan group yang akan menjalankan daemon clam anvirus :


[root@wedus clamav-0.54]# groupadd clamav
[root@wedus clamav-0.54]# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

Lakukan kompilasi dan install :


[root@wedus clamav-0.54]# ./configure
[root@wedus clamav-0.54]# make
[root@wedus clamav-0.54]# make install

Pindah file konfigurasi standar dari clam antivirus ke nama file yang lain, karena kita akan menyusun sendiri file konfigurasi tersebut :


[root@wedus clamav-0.54]# mv /usr/local/etc/clamav.conf /usr/local/etc/clamav.conf.default

Buatlah file /usr/local/etc/clamav.conf isinya :


LogFile /tmp/clamd.log
LogFileMaxSize 2M
LogVerbose
LogTime
PidFile /var/run/clamd.pid
DataDirectory /usr/local/share/clamav
LocalSocket /tmp/clamd
MaxDirectoryRecursion 15
User clamav
ScanArchive
ArchiveMaxFileSize 10M
ArchiveMaxRecursion 5
ArchiveMaxFiles 1000

Jalankan daemon clam antivirus (clamd ) :


[root@wedus clamav-0.54]# clamd

Periksa apakah daemon tersebut sudah berjalan seperti yang kita inginkan :


[root@wedus clamav-0.54]# ps axu | grep clamd
clamav 29192 0.0 4.7 9120 5984 ? S 11:06 0:00 clamd
clamav 29193 0.0 4.7 9120 5984 ? S 11:06 0:00 clamd
clamav 29194 0.0 4.7 9120 5984 ? S 11:06 0:00 clamd

Untuk menjalankan daemon clamd setiap server di reboot :


[root@wedus clamav-0.54]# echo /usr/local/sbin/clamd >> /etc/rc.local

Tanpa berpindah dari direktori source clam antivirus, lakukan test dengan cara menscan direktori test :


[root@wedus clamav-0.54]# clamscan -r test

Kemudian download update database virus yang paling baru :


[root@wedus clamav-0.54]# freshclam

Jika sudah selesai kemudian kita jalankan daemon proses update database virus tersebut secara otomatis (akan dilaksanakan pengecekan database virus yang paling baru 2 kali dalam sehari ) :


[root@wedus clamav-0.54]# touch /var/log/clam-update.log
[root@wedus clamav-0.54]# chmod 644 /var/log/clam-update.log
[root@wedus clamav-0.54]# chown clamav /var/log/clam-update.log

Jalankan daemonnya (freshclam ):


[root@wedus clamav-0.54]# freshclam -d -c 2 -l /var/log/clam-update.log

Untuk menjalankan daemon freshclam jika server di reboot :


[root@wedus clamav-0.54]# echo "freshclam -d -c 2 -l /var/log/clam-update.log" >> /etc/rc.local
2. Instal Module Perl Time::HiRes dan DB_FIle

Anda bisa mendapatkan module perl Time::HiRes tersebut yang paling baru melalui http://search.cpan.org/search?module=Time::HiRes, atau anda bisa langsung mendownload di lokal mirror CPAN di Indonesia (terima kasih kepada ISP CBN), download, ekstrak, dan kompilasi :


[root@wedus src]# wget ftp://ftp.cbn.net.id/mirror/CPAN/authors/id/J/JH/JHI/Time-HiRes-1.42.tar.gz
[root@wedus src]# tar -xzvf Time-HiRes-1.42.tar.gz
[root@wedus src]# cd Time-HiRes-1.42
[root@wedus Time-HiRes-1.42]# perl Makefile.PL
[root@wedus Time-HiRes-1.42]# make
[root@wedus Time-HiRes-1.42]# make install

Atau, anda juga bisa menggunakan CPAN auto-install sebagai berikut untuk menginstal module perl Time::HiRes tersebut :


[root@wedus src]# perl -MCPAN -e "install Time::HiRes"

Lakukan juga langkah seperti tersebut diatas untuk module DB_File.
3. Instal maildrop

Yang dibutuhkan oleh qmail-scanner dari paket maildrop sebenarnya adalah program reformime. Download, ekstrak, kompilasi dan install :


[root@wedus src]# wget http://unc.dl.sf.net/courier/maildrop-1.5.2.tar.bz2
[root@wedus src]# tar -jxvf maildrop-1.5.2.tar.bz2
[root@wedus src]# cd maildrop-1.5.2
[root@wedus maildrop-1.5.2]# ./configure
[root@wedus maildrop-1.5.2]# make
[root@wedus maildrop-1.5.2]# make install
4. Instal tnef unpacker

Tnef unpacker digunakan untuk menguraikan attachment MS-TNEF MIME yang digunakan oleh Microsoft mail server.


[root@wedus src]# wget http://unc.dl.sf.net/sourceforge/tnef/tnef-1.2.0.tar.gz
[root@wedus src]# tar -xzvf tnef-1.2.0.tar.gz
[root@wedus src]# cd tnef-1.2.0
[root@wedus tnef-1.2.0]# ./configure
[root@wedus tnef-1.2.0]# make
[root@wedus tnef-1.2.0]# make install
5. Instal perl-suidperl

Karena pada default distribusi RedHat 7.3 tidak menyertakan program perl-suidperl, maka kita perlu menginstal program tersebut (hal ini mungkin bisa anda temui jika anda tidak menginstal program tersebut pada file /var/log/qmail/smtpd/current akan terdapat error Can't do setuid atau jika di server lokal akan anda dapatkan error 451_qq_temporary_problem_(#4.3.0) ) :


[root@wedus src]# wget ftp://rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/perl-suidperl-5.6.1-34.99.6.i386.rpm
[root@wedus src]# rpm -ivh perl-suidperl-5.6.1-34.99.6.i386.rpm
6. Instal qmail-scanner

Download, ekstrak source qmail-scanner yang paling baru :


[root@wedus src]# wget http://unc.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-1.16.tgz
[root@wedus src]# tar -xzvf qmail-scanner-1.16.tgz

Ganti direktori ke source qmail-scanner kemudian lakukan konfigurasi :


[root@wedus src]# cd qmail-scanner-1.16
[root@wedus qmail-scanner-1.16]# ./configure

Jika sukses, script configure akan menemukan path program yang dibutuhkan oleh qmail-scanner dan clam antivirus, misalnya :


....
mimeunpacker=/usr/local/bin/reformime
uudecode=/usr/bin/uudecode
unzip=/usr/bin/unzip
tnef=/usr/local/bin/tnef
clamscan=/usr/local/bin/clamscan
scanners="clamscan_scanner"
....

Buat direktori yang akan digunakan oleh qmail-scanner :


[root@wedus qmail-scanner-1.16]# mkdir -p /var/spool/qmailscan/quarantine/{tmp,cur,new}
[root@wedus qmail-scanner-1.16]# mkdir -p /var/spool/qmailscan/working/{tmp,cur,new}
[root@wedus qmail-scanner-1.16]# mkdir -p /var/spool/qmailscan/archive/{tmp,cur,new}

Salin file quarantine-attachments.txt ke direktori /var/spool/qmailscan :


[root@wedus qmail-scanner-1.16]# cp quarantine-attachments.txt /var/spool/qmailscan/

Ubah kepemilikan dari direktori /var/spool/qmailscan :


[root@wedus qmail-scanner-1.16]# chown -R qmailq:qmail /var/spool/qmailscan/

Salin file qmail-scanner-queue.pl ke direktori /var/qmail/bin :


[root@wedus qmail-scanner-1.16]# cp qmail-scanner-queue.pl /var/qmail/bin/qmail-scanner-queue.pl

Ganti kepemilikan dan mode dari file qmail-scanner-queue.pl tersebut :


[root@wedus qmail-scanner-1.16]# chown qmailq:qmail /var/qmail/bin/qmail-scanner-queue.pl
[root@wedus qmail-scanner-1.16]# chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl

Generate database perl-scanner dan membersihkan file-file sementara :


[root@wedus qmail-scanner-1.16]# /var/qmail/bin/qmail-scanner-queue.pl -z
[root@wedus qmail-scanner-1.16]# /var/qmail/bin/qmail-scanner-queue.pl -g

Edit file /var/qmail/bin/qmail-scanner-queue.pl, sesuaikan dengan konfigurasi yang anda kehendaki, misalnya :


my $V_FROM='virus-notifier@kurowo.edu';
my $QUARANTINE_CC='asfik@indolinuxefnet.org';

Test kirim email bervirus ke root@localhost :


[root@wedus qmail-scanner-1.16]# ./contrib/test_installation.sh -doit

Jika sukses, anda bisa memodifikasi file startup untuk menjalakan qmail-smtpd anda, misalnya jika anda menggunakan supervise anda bisa mengedit file /service/qmail-smtpd/run menjadi :


PATH=$PATH:/usr/local/bin:/var/qmail/bin
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export PATH QMAILQUEUE

QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=30
exec /usr/local/bin/softlimit -m 11000000 tcpserver -H -R -v -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" -u "$QMAILDUID" -g "$NOFILESGID" 0 25 qmail-smtpd 2>&1

Perhatikan perubahan tersebut diatas terutama pada path QMAILQUEUE dan angka (memory) yang digunakan softlimit, jika anda mengeset angka tersebut terlalu kecil, maka biasanya anda akan mendapatkan error perl: error in loading shared libraries: atau failed to map segment from shared object: Cannot allocate memory. Qmail-scanner tidak mendeteksi virus klez jika setting dari soflimit kurang dari 11000000 (11 juta), anda bisa lihat referensinya di http://archive.elektrapro.com/clamav.elektrapro.com/users/2002/10/msg00114.html (thanks kepada tio aka geep di #indolinux EFnet)

Restart daemon qmail anda, jika anda menggunakan supervise anda bisa menggunakan :


[root@wedus qmail-scanner-1.16]# qmailctl restart

Kemudian anda bisa mencoba mengirim email dengan attachment sebuah file eicar.com yang isinya sebagai berikut :


X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Jika anda lakukan tail -f /var/spool/qmailscan/quarantine.log, maka akan anda dapatkan file tersebut akan ditolak dan di log oleh qmail-scanner, misalnya :


04/03/2003 12:31:45 asfik@indolinuxefnet.org asfik@kurowo.edu test email mengandung virus EICAR Test Virus clamscan: 0.54.

Jika sukses, berarti mail server anda telah menggunakan software antivirus :), have fun ! Jika anda menginginkan pembacaan statistik berapa jumlah email yang masuk kedalam file /var/spool/qmailscan/quarantine.log, anda bisa menggunakan Qmail Scanner Statistics (QSS). Caranya, buat direktori qss, download source qss, dan ekstrak :


[root@wedus src]# mkdir qss
[root@wedus src]# cd qss
[root@wedus qss]# wget http://unc.dl.sf.net/sourceforge/qss/qss-2.0.2.tar.gz
[root@wedus qss]# tar -xzvf qss-2.0.2.tar.gz

Tentukan direktori dimana akan kita salin file /var/spool/qmailscan/quarantine.log, misalnya buat direktori /usr/local/httpd/logs/quarantine, kemudian cari user yang menjalankan daemon apache (anda bisa melihat dari file httpd.conf anda bagian User atau anda bisa menggunakan perintah ps axu | grep httpd untuk mencarinya), disini kita misalkan usernya adalah www. Kemudian buatlah file /etc/qss.sh (mulai dibawah ini ganti user www dengan user yang menjalankan daemon apache anda) isinya :


#!/bin/bash
cp -f /var/spool/qmailscan/quarantine.log /usr/local/httpd/logs/quarantine/quarantine.log
chown www /usr/local/httpd/logs/quarantine/quarantine.log

Set menjadi script yang executable :


[root@wedus qss]# chmod +x /etc/qss.sh

Buat direktori /usr/local/httpd/logs/quarantine dan ganti kepemilikannya ke user www :


[root@wedus qss]# mkdir /usr/local/httpd/logs/quarantine
[root@wedus qss]# chown www /usr/local/httpd/logs/quarantine

Tentukan dimana qss akan diinstall, hal ini tergantung setting dari DocumentRoot di file httpd.conf anda, misalnya kita buat di direktori /usr/local/httpd/htdocs/qss (sehingga nantinya bisa diakses melalui http://localhost/qss misalnya) :


[root@wedus qss]# mkdir /usr/local/httpd/htdocs/qss

Salin semua file ke direktori tersebut diatas dan ganti kepemilikannya :


[root@wedus qss]# cp -R * /usr/local/httpd/htdocs/qss
[root@wedus qss]# chown -R www /usr/local/httpd/htdocs/qss

Edit file /usr/local/httpd/htdocs/qss/config.php ganti bagian :


$config["logFile"] = "quarantine.log";

menjadi :


$config["logFile"] = "/usr/local/httpd/logs/quarantine/quarantine.log";

Jalankan script untuk menyalin file quarantine.log untuk pertama kali :


[root@wedus qss]# sh /etc/qss.sh

Test dengan browser anda dengan url http://localhost/qss atau http://ip.address.server.anda/qss tergantung konfigurasi ServerNamepada file httpd.conf anda. Jika sukses anda bisa menambahkan cron setiap 5 menit (jika anda menginginkan waktu yang lebih lama anda bisa mengganti angka 5 menjadi yang lain, misalnya 10,15 atau 30, silakan konsultasi dengan man 5 crontab anda ) :


[root@wedus qss]# echo "*/5 * * * * /etc/qss.sh" > cron.temp
[root@wedus qss]# crontab -u root cron.temp

Enjoy !
Changelog

12 Maret 2003

Penambahan jumlah soflimit karena virus klez tidak terdeteksi oleh qmail-scanner oleh Tio (tioatkaretdotorg)

08 Maret 2003

Penambahan Qmail Scanner Statistic (QSS)

04 Maret 2003

Pembuatan tutorial antivirus di qmail menggunakan qmail-scanner dan clam antivirus dimulai
Referensi :

http://qmail-scanner.sourceforge.net
http://clamav.elektrapro.com/doc/html/

No comments: