QMAIL,
QMAIL-SCANNER ve CLAMAV ANTIVIRUS
Bu belgede Qmail server kurulu bir sistemde gelen ve giden e-postaları kontrol ederek virüslü maillerin kullanıcılara erişimini engellemek için gerekli programlar ve kurulumları anlatılacaktır.
İnternet ve dolayısıyla e-mail kullanan bütün kullanıcıların en büyük sorunu virüslü e-mail lerdir. Tek kullanıcılı bir sistemde bu sorunun hakkından gelmek bir nevi katlanılabilir bir durum. Fakat 100 bilgisayardan oluşan bir yerel ağınız varsa başınız oldukça belada demektir. Kullanıcılara internetten gelen virüslü mailler adres defterindeki yerel kullanıcılara da yayılmaya başladığında durdurmak nerdeyse imkansız bir hale gelir. Terminallerde kurulu olan antivirüs yazılımları ancak virüslü mail geldikten sonra devreye girer ve gerekeni yapar. Lakin virüslü mail gelmiştir bir kere, ağ trafiğini boşuna meşgul etmiş, sistem kaynaklarını boşuna kullanmış ve sinirlerinizi bozmuştur. Bana bir anda 200 mail geliyor diyen bir ihracat müdürü.
Virüslerin, kullanıcılara ulaşmadan önce sunucu tarafından taranarak temizlenmesi büyük oranda üzerimizdeki yükü hafifletecektir. FreeBsd ve Qmail Server kurulu bir sistemde qmail-scanner ile Clamav open source antivirüs yazılımını kullanarak maillerin taranması ve temizlenmesi:
CLAMAV ANTIVIRUS YAZILIMININ KURULMASI
Clamav Antivirüs GNU/GPL lisansı ile dağıtılır. Kolay kullanımı, hızı, güvenirliği, internetten otomatik güncelleme yapması ve sıkıştırılmış dosyaları tarayabilmesi başlıca özellikleridir.
Port ile kurulum
# cd /usr/ports/security/clamav
# make
# make install
Not : Clamav yazılımını kaynak kodundan derlemek
için clamav adında kullanıcı ve
grup oluşturmak gerekir.
Test
Clamav antivirüsü test etmek için
# clamscan –r /home # home dizinindeki dosyaları tarar.
Güncelleme
Virüs veritabanını güncellemek için:
# freshclam # internet üzerinden veritabanını MD5 kullanarak alır.
Güncelleme işleminin başarılı olup olmadığını kontrol etmemiz gerekebilir. Bunun için log dosyası oluşturmamız gerekir :
# touch /var/log/clam-update.log
# chmod 644 /var/log/clam-update.log
# chown clamav /var/log/clam-update.log
Freshclam programını daemon olarak çalıştırmak,
günde 2 defa virüs veritabanını güncellemek,
Güncelleme ile ilgili sonuçları /var/log/clam-update.log dosyasına yazmak için :
# freshclam –d –c 2 –l /var/log/clam-update.log
Cron programını kullanarak virüs veritabanını istediğimiz zamanlarda otomatik güncelleştirmek için:
# vi /etc/crontab
……………….
# Her gece saat 03:15 de güncelleme yap.
15 03 * * * root freshclam –l /var/log/clam-update.log
QMAİL SCANNER KURULUMU
Qmail-scanner yazılımı, smtp servisinden önce çalışan bir perl programıdır. Maillerin taraması için smtp den önce çalışır ve clamav antivirüs yazılımıyla mailleri taramayı sağlar.
QMAILQUEUE PATCH KURULUMU
Qmailqueue yaması smtp servisi çalışmadan önce başka bir programın çalıştırılmasını sağlar. Qmailscanner programının mailleri kontrol etmesi için smtp servisinden önce çalışması ve kontrol işlemini yapması gerekir.Bunun için Qmail’e QMAILQUEUE yamasını uygulamamız gerekmekte. Yeni bir qmail kurulumu yapılacaksa bu yama ile kurulum yapılmalıdır. Mevcut sistemde bu yama kurulu değilse aşağıdaki adımları izleyerek kurabiliriz.
# cd /usr/ports/mail/qmail
# make install WITH_QMAILQUEUE_PATCH=yes FORCE_PKG_REGISTER=yes
PERL TIME HIRES PAKETİ
KURULUMU
qmail-scanner çalıştırmak için sistemde perl yüklü olması gerekir.
Perl Time Hires paketinin kurulumu
http://search.cpan.org/search?module=Time::HiRes Adresinden Time::Hires yazılımını indirelim
# tar –zxvf Time-Hires-1.22.tar.gz.
# cd Time-HiRes-1.22
# perl Makefile.PL
# make
# make install
MAILDROP KURULUMU
# cd /usr/ports/mail/maildrop
# make install
TNEF UNPACKER KURULUMU
# cd /usr/ports/converters/tnef
# make install
QMAIL-SCANNER KURULUMU
http://prdownloads.sourceforge.net/qmail-scanner/qmail-scanner-1.22.tgz?download adresinden qmail-scanner programını indirelim.
qscand kullanıcısı oluşturalım.
# pw useradd qscand
# chown root /usr/bin/suidperl
# chmod 4711 /usr/bin/suidperl
# tar –zxvf qmail-scanner-1.22.tar.gz
# cd qmail-scanner-1.22
# ./configure --domain benim.com --notify none
Test
/var/qmail/bin/qmail-scanner-queue.pl
(eğer bu dosya /var/qmail/bin içerisinde yoksa qmail-scanner derlemesinin yapıldığı kaynak dizinden kopyalanabilir.
# cp /root/qmail-scanner-1.22/qmail-scanner-queue.pl /var/qmail/bin )
Kurulumun tamamlanması için bazı dizin ve dosyalar oluşturmamız gerekir.
Dizin ve Dosyaların
Oluşturulması
#mkdir –p /var/spool/qmailscan/quarantine/new
#mkdir –p /var/spool/qmailscan/quarantine/cur
#mkdir –p /var/spool/qmailscan/quarantine/tmp
#mkdir –p /var/spool/qmailscan/working/new
#mkdir –p /var/spool/qmailscan/working/cur
#mkdir –p /var/spool/qmailscan/working/tmp
#mkdir –p /var/spool/qmailscan/archive/new
#mkdir –p /var/spool/qmailscan/archive/cur
#mkdir –p /var/spool/qmailscan/archive/tmp
#chown –R qmailq:qmail /var/spool/qmailscan
#chown qmailq:qmail /var/qmail/bin/qmail-scanner-queue.pl
#chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl
Kaynak kodun derlendiği dizinde bulunan quarantine-attachments.txt dosyasını /var/spool/qmailscan dizinine kopyalayalım. Bu dosyada qmail-scanner programının gelen-giden mailleri tarama yapabileceği tanımlamalar yer alır. Bu taramalar, gelen mail eklerinin uzantı kontrolü(*.vbs, *.scr, *.exe ) ve mail konusunun kontrolü gibi işlemlerdir. Ekinde exe dosya bulunan maillerin engellenmesi, konusu I LOVE YOU olan maillerin engellenmesi vb.
# cp /root/qmail-scanner-1.22/quarantine-attachments.txt /var/spool/qmailscan/
/var/spool/qmailscan/quarantine-attachments.txt dosyasında bulunan tanımlamaları yaptıktan sonra (Örnek tanımlamalar dosyada mevcut)
#/var/qmail/bin/qmail-scanner-queue.pl –g
komutu ile değişikliklerin quarantine-attachments.db dosyasına yazılmasını sağlayacağız.
Bulunan virüsleri kontrol etmek, hangi mail adresinden geldiğini, hangi mail adresine gittiğini saptamak için /var/spool/qmailscan/quarantine.log dosyasını oluşturmak gerekir.(en keyif verici kısım)
# vi /var/spool/qmailscan/quarantine.log
QMAIL-SCANNER’ın
ÇALIŞTIRILMASI
Kurulumun tamamlanabilmesi için /var/qmail/supervise/qmail-smtpd/run ve /etc/tcp.smtp dosyalarında qmail-scanner için
tanımlamalar yapmamız gerekir. Örnek dosyalar:
/var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" export
QMAILQUEUE
QMAILDUID=`id -u vpopmail`
NOFILESGID=`id -g vpopmail`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
if [ -z "$QMAILDUID" -o -z
"$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ];
then
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts
]; then
echo "No /var/qmail/control/rcpthosts!"
echo "UYARI : Refusing to start SMTP listener because it'll create an open relay"
exit 1
fi
exec /usr/local/bin/softlimit -m 40000000 \
/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp
\
/var/qmail/bin/qmail-smtpd alanadi.com \
/home/vpopmail/bin/vchkpw /usr/bin/true 2>&1
/etc/tcp.smtp
127.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-queue"
192.168.0.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
Relay izinlerinin tanımlanması
# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
Qmail’i yeniden başlattığımızda kurulum tamamlanmış olacaktır.
NOT: qmail-scanner /var/qmail/bin/qmail-scanner-queue.pl perl dosyasını kullanır. Kurulumu yaptıktan sonra oluşabilecek hataların düzeltilmesi bu dosyasının içinde bulunan tanımlamaların değiştirilmesiyle sağlanır. /var/spool/qmailscan/qmail-queue.log dosyasından oluşan hatalar kontrol edilebilir. Bu hatalar : clamscan programının yanlış parametre ile çalıştırması, sıkıştırılmış dosyalar için kullanılan programın bulunmaması veya dosyayı açamaması vb.
Ahmet ORHAN
23 Nisan 2004