Creation date: 09/28/2003 - Last Update: 02/11/2004
Artikel ini akan menjelaskan cara instalasi antivirus pada postfix mailserver. Seperti yang kita ketahui akhir-akhir ini banyak sekali virus menyebar dengan menumpang pada e-mail. Mulai virus yang sederhana sampai virus yang mematikan. Sampai-sampai 1 virus bisa punya puluhan variannya. Dengan memasang antivirus di level MTA, diharapkan bisa memotong jalur virus, hingga tidak sampai pada MUA, terutama yang berOS microsoft® dengan aplikasi LookOut express atau 2000/XP.
Dipilihnya postfix sebagai basis software, karena mudahnya konfigurasi dan kecepatan dalam mendelevery email.
Tapi yang pasti penulis baru bisa set up postfix saja .
Untuk Antivirus, dipakai clamav. Selama ini respon dari clamav bila ada virus baru muncul cukup cepat, pernah dalam 1 hari 2 kali update database virus. Dan yang pasti gratis.
Untuk antar muka dipilih amavis-new dengan alasan baru amavis-new yang bisa saya jalankan tanpa pesan error di TSL 2.0 cloud. Amavis dan amavis-ng tidak bisa terinstall dengan sukses. Mailscanner bisa terinstall, tapi semua attachment dianggap virus, mungkin masih ada konfigurasi saya yang salah. Semoga saja sebentar lagi ada antar muka yang bersifat binary, dari pada berbasis perl. Tentunya dengan pertimbangan waktu respon dari aplikasi itu sendiri.
root@mizuno root# rpm -qa | grep devel bzip2-devel-1.0.2-9tr zlib-devel-1.1.4-5trSelain aplikasi diatas, clamav juga membutuhkan library gmp untuk melakukan digital singature pada saat mengupdate database. Beberapa distribusi besar seperti redhat atau mandrake biasanya sudah menyertakan aplikasi gmp yang sudah siap di install dalam bentuk rpm. Bagi yang belum memiliki dapat mendonlot source-nya di http://www.swox.com/gmp/. Lalu lakukan langkah-langkah kompilasi untuk menginstall libgmp ini. Kalau sudah selesai baru dilanjutkan dengan instalasi clamav dibawah
Aplikasi lain yang diperlukan adalah curl. Pastikan curl yang anda pakai mempunyai versi minimal 7.10.0
Curl adalah aplikasi untuk menstransfer file tanpa user interaksi . Aplikasi ini biasanya juga sudah disertakan dalam distro² besar.
Bila tidak ada maka dapat di ikuti petunjuk kompilasi disini.
/var/lib/clamav
dan group yang akan menjalankan clamav daemon, untuk alasan security shell di set ke /bin/false
root@mizuno clamav-0.80# groupadd clamav root@mizuno clamav-0.80# useradd -g clamav -s /bin/false \ -c "Clam AntiVirus" clamav
root@mizuno root# tar xzpf clamav-0.80.tar.gz root@mizuno root# cd clamav-0.80 root@mizuno clamav-0.80# CFLAGS="-O3 -march=i686 -mcpu=i686 \ -funroll-loops -fomit-frame-pointer" \ ./configure \ --sysconfdir=/etc \ --bindir=/usr/bin \ --sbindir=/usr/sbin \ --libdir=/usr/lib \ --includedir=/usr/include \ --mandir=/usr/share/man \ --with-dbdir=/var/lib/clamav \ --disable-clamuko
Perintah di atas berarti
root@mizuno clamav-0.80# make root@mizuno clamav-0.80# make install
/etc/clamd.conf
, ini digunakan untuk mengontrol daemon clamd. Apabila anda merencanakan untuk menggunakan clamscan saja dan tidak menggunakan daemon maka file ini tidak perlu di edit. Edit baris :Example menjadi #Example LocalSocket /tmp/clamd menjadi #LocalSocket /tmp/clamd #TCPSocket 3310 menjadi TCPSocket 3310 #DataDirectory /var/lib/clamav menjadi DataDirectory /var/lib/clamav #User clamav menjadi User clamav #ScanMail menjadi ScanMailatau dengan kata lain matikan example, dan ubah daemon dari local socket menjadi tcp/ip. Tapi ini hanya sementara, hanya untuk mengetes apakah daemon bisa berfungsi.
root@mizuno root# /usr/local/sbin/clamd root@mizuno root# ps aux | grep clamd root 21327 0.0 4.8 9476 6108 ? S 20:53 0:00 /usr/local/sbin/clamd root 21328 0.0 4.8 9476 6108 ? S 20:53 0:00 /usr/local/sbin/clamd root 21329 0.0 4.8 9476 6108 ? S 20:53 0:00 /usr/local/sbin/clamd root@mizuno root# netstat -tpan root@mizuno root# netstat -tpan | grep clamd tcp 0 0 0.0.0.0:3310 0.0.0.0:* LISTEN 21327/clamd
root@mizuno root# telnet 127.0.0.1 3310 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. PING <== coba dengan PING (capital) PONG Connection closed by foreign host.daemon sukses, ubah kembali menjadi mode local socket.
#LocalSocket /tmp/clamd menjadi LocalSocket /var/amavis/clamd TCPSocket 3310 menjadi #TCPSocket 3310
/etc/init.d
root@mizuno clamav-0.80# cp support/init/RedHat/clamd /etc/init.d/ root@mizuno clamav-0.80# killall clamd root@mizuno clamav-0.80# /etc/init.d/clamd start Starting clamd: [ OK ] root@mizuno clamav-0.80# chkconfig clamd on root@mizuno clamav-0.80# chkconfig --list clamd clamd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
root@mizuno clamav-0.80# touch /var/log/clam-update.log root@mizuno clamav-0.80# chmod 600 /var/log/clam-update.log root@mizuno clamav-0.80# chown clamav /var/log/clam-update.logbila anda sedang terkoneksi dengan internet, update sekarang juga ! update realtime
root@mizuno clamav-0.80# /usr/local/bin/freshclam -l /var/log/clam-update.logupdate dapat dijalan secara terjadwal dengan diletakkan di crond atau langsung dari tool freshclam update dengan daemon freshclam
root@mizuno clamav-0.80# freshclam -d -c 2 -l /var/log/clam-update.logsilakan baca petunjuk penggunaan opsi-opsi freshclam pada manual freshclam.
*/30 * * * * su - clamav -s /bin/bash -c '/usr/local/bin/freshclam --quiet -l /var/log/clam-update.log'
update dengan procmail
atau bila anda berniat untuk mendonload database paling awal, silakan daftar email anda ke milis clamav [email protected], atau buka website clamav dan daftar dari situs tersebut. Set procmail untuk menangkap subject clamav-virusdb dan eksekusi program freshclamroot@mizuno clamav-0.80# su - clamav -s /bin/bash clamav@mizuno clamav$ vi .procmailrcedit file .procmailrc untuk user clamav seperti berikut
DEFAULT=/dev/null SHELL=/bin/bash MAILDIR=$HOME/ LOGFILE=$MAILDIR/procmail.log LOG="---LOGGING--> " VERBOSE=yes LOGABSTRACT=all COMSAT=no :0 * ^TOclamav-virusdb * ^Subject:.*Clamav-virusdb | /usr/bin/freshclam --quiet -l /var/log/clam-update.logJika ada email dari clamav otomatis akan langsung mendonlot database virus dan membuat file log.
---LOGGING--> procmail: [1340] Tue Oct 7 10:16:55 2003 procmail: Assigning "LOGABSTRACT=all" procmail: Assigning "COMSAT=no" procmail: Assigning "COMSAT=no" procmail: Match on "(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently (-Resent)?)-To):(.*[^a-zA-Z])?)clamav-virusdb" procmail: Match on "^Subject:.*Clamav-virusdb" procmail: Executing "/usr/bin/freshclam,--quiet,-l,/var/log/clam-update.log"Sedangkan pada file clam-update.log
-------------------------------------- ClamAV update process started at Fri Dec 5 13:50:07 2003 main.cvd is up to date (version: 7, sigs: 10294, f-level: 1, builder: tkojm) daily.cvd updated (version: 44, sigs: 315, f-level: 1, builder: tkojm) Database updated (10609 signatures) from database.clamav.net (128.121.60.235).
root@mizuno clamav-0.80# rpm -qa | grep perl perl-5.8.0-10tr perl-devel-5.8.0-10trModul-modul yang diperlukan adalah (berdasarkan file INSTALL)
Archive::Tar (Archive-Tar-x.xx) Archive::Zip (Archive-Zip-x.xx) Compress::Zlib (Compress-Zlib-x.xx) Convert::TNEF (Convert-TNEF-x.xx) Convert::UUlib (Convert-UUlib-x.xxx) MIME::Base64 (MIME-Base64-x.xx) MIME::Parser (MIME-Tools-x.xxxx) Mail::Internet (MailTools-1.58 or later have workarounds for Perl 5.8.0 bugs) Net::Server (Net-Server-x.xx) Net::SMTP (libnet-x.xx) (use libnet-1.16 or latter for performance) Digest::MD5 (Digest-MD5-x.xx) IO::Stringy (IO-stringy-x.xxx) Time::HiRes (Time-HiRes-x.xx) (use 1.49 or later, some older cause problems) Unix::Syslog (Unix-Syslog-x.xxx)module
Archive::Zip
membutuhkan binary zip dan unzip, pastikan sudah terinstall sebelumnya. bila tidak pada waktu make test
akan terlihat pesan errorwarning: unzip -t doesn't seem to work,...
Cara yang paling mudah mendonlot dan instalasi adalah dengan menggunakan shell dari program perl dengan perintah :
root@mizuno clamav-0.80# perl -MCPAN -e shellkonfigurasikan dengan sistem anda, bila shell perl sudah siap, maka mulailah mendonlot (serta instalasi) modul perl dengan perintah
cpan> install Archive::TarUlangi perintah diatas sampai semua modul perl terinstall.
root@mizuno root# mkdir /var/amavis root@mizuno root# chown clamav.clamav /var/amavis root@mizuno root# chmod 750 /var/amavis root@mizuno root# mkdir /var/virusmails root@mizuno root# chown clamav.clamav /var/virusmails
root@mizuno root# tar xzpf amavisd-new-20030616-p5.tar.gz root@mizuno root# cd amavisd-new-20030616 root@mizuno amavisd-new-20030616#
/usr/local/sbin
dan set ijin akses
root@mizuno amavisd-new-20030616# cp amavisd /usr/local/sbin/ root@mizuno amavisd-new-20030616# chown root /usr/local/sbin/amavisd root@mizuno amavisd-new-20030616# chmod 755 /usr/local/sbin/amavisd
root@mizuno amavisd-new-20030616# cp amavisd.conf /etc/
Edit beberapa bagian amavisd-new
root@mizuno amavisd-new-20030616# vi /etc/amavisd.conf
@bypass_spam_checks_acl = qw( . );
$mydomain = 'example.com';
(sesuaikan dengan domain anda)
$daemon_user = 'clamav';
hilangkan tanda # untuk mematikan dukungan spamassin (baris 143),
sbg pengganti dipilih bogofilter yang lebih cepat dan akuran menangani spam
$daemon_group = 'clamav';
#$unix_socketname = "$MYHOME/amavisd.sock";
matikan baris 203, postfix tdk pakai sock helper
buka baris 1155 -1158, untuk dukungan daemon clamd, agar proses scanning lebih cepat
['Clam Antivirus-clamd',
\&ask_daemon, ["CONTSCAN {}\n", '/var/amavis/clamd'],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
terlihat amavisd akan memakai local socket /var/amavis/clamd
, maka ubah /etc/clamd.conf
sesuaikan dengan local socket yang diperlukan.
Selain itu matikan semua antivirus yang tidak dipakai agar waktu startup amavisd bisa lebih cepat
root@mizuno root# /usr/local/sbin/amavisd debug ...starting. amavisd at mizuno.redkurawa.com.. ...Perl version 5.008 ...Module Amavis::Conf 1.15 ... ... ...Net::Server: Beginning prefork (2 processes) ...Net::Server: Starting "2" children ...Net::Server: Child Preforked (3061) ...Net::Server: Parent ready for children. ...Net::Server: Child Preforked (3062)buka console/terminal baru, test port 10024 dan user yang menjalankan amavisd
root@mizuno root# netstat -tpan | grep 10024 tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 3063/perl root@mizuno root# ps aux | grep amavisd clamav 3063 2.6 18.9 13088 11792 pts/0 S 22:29 0:04 /usr/bin/perl -T /usr/local/sbin/amavisd debug clamav 3064 0.0 18.9 13088 11796 pts/0 S 22:29 0:00 /usr/bin/perl -T /usr/local/sbin/amavisd debug clamav 3065 0.0 18.9 13088 11792 pts/0 S 22:29 0:00 /usr/bin/perl -T /usr/local/sbin/amavisd debug
root@mizuno root# cd /etc root@mizuno etc# mv amavisd.conf amavisd.conf2 root@mizuno etc# cat amavisd.conf2 | grep -v '^#' | tr -s '\n' > amavisd.confhasilnya bisa anda lihat seperti file configurasi milik saya amavisd.conf
init.d
/etc/init.d/
bukan /etc/rc.d/init.d
root@mizuno root# cd amavisd-new-20030616 root@mizuno amavisd-new-20030616# cp amavisd_init.sh /etc/init.d/amavisd root@mizuno amavisd-new-20030616# chmod 755 /etc/init.d/amavisdPada TSL 2.0 (sesuaikan dengan sistem anda) file init script ini masih perlu diedit.
pada baris 13 ubah
. /etc/rc.d/init.d/functions menjadi . /etc/init.d/functions
pada baris 19 ubah
prog="/usr/sbin/amavisd" menjadi prog="/usr/local/sbin/amavisd"
root@mizuno root# killall amavisd root@mizuno root# /etc/init.d/amavisd start Starting amavisd: [ OK ] root@mizuno root# chkconfig amavisd on root@mizuno root# chkconfig --list amavisd amavisd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
root@mizuno root# telnet 127.0.0.1 10024 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 [127.0.0.1] ESMTP amavisd-new service ready quit 221 2.0.0 [127.0.0.1] (amavisd) closing transmission channel Connection closed by foreign host.
/etc/postfix/master.cf
dan tambahkan baris dibawah ini
smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yessesuai dengan informasi di readme file bila memakai postfix 2.0.xx, maka transport smtp dapat di ganti dengan lmtp untuk meningkatkan performance, jadi
smtp-amavis unix - - n - 2 lmtp -o smtp_data_done_timeout=1200 -o disable_dns_lookups=yesreload ulang postfix dan ujicoba lagi dengan telnet
root@mizuno root# postfix reload root@mizuno root# netstat -ptan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 457/perl tcp 0 0 127.0.0.1:10025 0.0.0.0:* LISTEN 510/master root@mizuno root# telnet 127.0.0.1 10024 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 [127.0.0.1] ESMTP amavisd-new service ready MAIL FROM:root 250 2.1.0 Sender root OK RCPT TO:<postmaster> 250 2.1.5 Recipient postmaster OK DATA 354 End data with <CR><LF>.<CR><LF> Subject: test2 - virus test pattern tekan enter disini 1x X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* . 250 2.5.0 Ok, id=00663-01, BOUNCE << respon dari amavis quit 221 2.0.0 [127.0.0.1] (amavisd) closing transmission channel Connection closed by foreign host.Bila percobaan sukses anda akan menerima email warning dari [email protected]
content_filter = smtp-amavis:[127.0.0.1]:10024
Oct xx xx:xx:xx uler amavis[451]: (00451-02) Clam Antivirus-clamd av-scanner FAILED: Too many retries to talk to /var/amavis/clamd (Can't connect to UNIX socket /var/amavis/clamd: Connection refused) at (eval 34) line 179.
Pesan error diatas muncul karena amavisd tidak bisa terhubung dengan local socket clamd.
Solusi:
Periksa apakah daemon clamd sudah berjalan semestinya, bisa pakai ps aux
, bila mati, hidupkan lagi servicenya
Bila ternyata masalahnya clamd tidak mau hidup,walau sudah dipaksa. Coba file local socket di '/var/amavis/clamd' di hapus dulu.
root@mizuno root# rm /var/amavis/clamdKemudian dihidupkan kembali service clamd-nya, clamd akan membuat socket baru.
SECURITY WARNING: NO SUPPORT FOR DIGITAL SIGNATURES
Pesan diatas muncul apabila pada saat mengkompilasi belum tersedia libgmp. Silakan baca penjelasan libgmp pada bagian instalasi clamav diatas.
Edit pada bagian viruslover file configurasi amavisd.conf
clamav mulai versi 0.65 memberikan fasilitas alert yang dapat dipakai untuk customize.
Pada tulisan ini diberikan contoh pemakaian alert yang digabung dengan tool smbclient dari samba, sehingga setiap kali ditemukan virus administrator dengan Os Windows atau aplikasi LinNeighboorhood dapat langsung mengetahuinya.
Edit file /etc/clamd.conf cari bagian VirusEvent, ubah seperti dibawah
VirusEvent /bin/echo "VIRUS ALERT: %f: %v" | smbclient -Mredkurawalalu silakan coba dengan mengirimkan email bervirus.