CLAM ANTIVIRUS – TURKISH DOCUMENT
by yavuz kaya and İbrahim erken
Email: edukanka at yahoo dot com

1. Giriş

     1.1 Özellikler
     1.2 E-posta listeleri
     1.3 Virüs bildirimleri
     
2. Kurulum

     2.1 İhtiyaçlar
     2.2 Desteklenen platformlar
     2.3 Güncel versiyonlar
     2.4 Binary paketleri
     2.5 Kurulum
     2.6 Düzenleme
     2.7 Test
     2.8 Güncel Clam (Freshclam): Otomatik güncelleme
     2.9 FreshClam: Mirror’lar ve mirrors.txt

3. Kullanma

     3.1 Clam daemon
     3.2 Clamuko
     3.3 Arşivler ve sıkıştırılmış dosyalar
     3.4 Çıktı formatı

4. Uygun Yazılım

     4.1 clamav-milter
     4.2 mod clamav
     4.3 TrashScan
     4.4 AMaViS - ”Next Generation”(Yeni Nesil)
     4.5 amavisd-new(yeni)
     4.6 Qmail-Scanner
     4.7 Sagator
     4.8 ClamdMail
     4.9 BlackHole
     4.10 MailScanner
     4.11 MIMEDefang
     4.12 Exiscan
     
5. LibClamAV

     5.1 API
6. Problem Çözme

     6.1 Return kodları
     
7. Teknik kısım

     7.1 Güvenlik
     7.2 Scan engine

























1. GİRİŞ

Clam AntiVirüs UNIX’te kullanılabilen bir anti virüs programıdır.Bu yazılımın oluşturulmasındaki temel amaç e-posta sunucularıdır.(Attachment taraması için).Bu paket kullanıcılara esnek,çok kullanımlı ve internet üzerinden otomatik güncelleştirme yapılabilen bir yazılım sunuyor.Programlar Clam AntiVirüs paketi tarafından dağıtılmış ortak bir kütüphaneyi temel alırlar. Yazılıma ait virüstabanı bilgileri OpenAntiVirus.org sitesinden alır fakat extra virüs tanımlamaları da içerir.(Popüler polimorf virüsleri için de tanımlamalar içerir)

1.1 Özellikler

* GNU GPL v2 lisansı
* POSIX kullanışlı , taşınabilir
* Güvenli
* Çok hızlı
* Çok kullanımlı
* Kullanımı kolay
* On-access tarama (Sadece linux’ta)
* 7000’in üzerinde virüs,worm ve trojan tanıyabilir
* Sıkıştırılmış dosya ve arşivleri destekler
* RAR(2.0),zip,Gzip,Bzip2 desteler

1.2 E-posta listeleri

3 e-posta listesi mevcut.

* announce@clamav.elektrapro.com – yeni sürümler hakkında bilgi için ( Ayrıca yeni Debian paketlerini duyurmak için) , 
* users@clamav.elektrapro.com – kullanıcı soruları için
* devel@clamav.elektrapro.com -  geliştirmek için
* virusdb@clamav.elektrapro.com – veritabanı güncelleştirme bilgileri için

listname-subscribe@clamav.elektrapro.com  adresine boş bir e-posta atarak veya http://clamav.elektrapro.com/ml sitesi aracılığı ile sizde ClamAv ile ilgili bilgiler alabilirsiniz. Boş e-posta attıktan sonra size gelen özel mesajı cevaplamanız gerekmektedir. Mail listeleri ;

http://archive.elektrapro.com/clamav.elektrapro.com/users/
http://archive.elektrapro.com/clamav.elektrapro.com/devel/

1.3 Virüs bildirimleri

Son güncelleştirilmiş hali ile ClamAV yazılımının tespit edemediği virüsleri virus@clamav.elektrapro.com adresine bildiriniz veya virüsü bir ek gibi yollayınız.Eğer sisteminiz buna izin vermezse virüsü “virus” şifresi ile bir zip arşivine saklayınız.

2. KURULUM

2.1 İhtiyaçlar

zlib ve  zlib-devel paketlerine ve the gcc derleyicisine (2.9x ve 3.x desteklenmiştir) ihtiyaç vardır.Bunun için bzip2 kütüphanesini kurabilirsin fakat bu gerekli değildir.

2.2 Desteklenen platformlar

Clam AntiVirus aşağıdaki işletim sistemleri ve mimarileri için hazırlanmıştır.(Test edilen platformlar parantez içinde belirtilmiştir.

* GNU/Linux 2.2/2.4 (Hepsinde, Intel/SPARC/Alpha/zSeries/S/390)
* Solaris 2.6/7/8/9 (Intel/SPARC)
* _ FreeBSD 4.5/6/7 5.0 (Intel/Alpha)
* _ OpenBSD 3.0/1/2 (Intel)
* _ AIX 4.1/4.2/4.3/5.1 (RISC 6000)
* HPUX 11.0
* _ SCO UNIX
* _ Mac OS X
* _ BeOS
* _ Cobalt MIPS boxes (RAQ1, RAQ2, QUBE2)
* _ Windows/Cygwin

Bazı özellikler işletim sisteminizde çalışmayabilir. Eğer ClamAV yazılımını yukarıdaki işletim sistemleri dışında bir sistemde kullanıyorsanız lütfen bizi haberdar ediniz.

2.3 Güncel versiyonlar

Clam AntiVirüs http://clamav.elektrapro.com sitesinden ücretsiz olarak elde edilebilir.Bu siteye ElektraPro.com tarafından sponsorluk desteği verilmektedir.

2.4 Binary paketleri

Linux için yüksek kalitede rpm ve deb paketi vardır. Debian paketi Magnus Ekdahl tarafından idare edilmektedir ve ona http://www.debian.org adresinden ulaşabilirsiniz. RPM paketi ise Arkadiusz Miskiewicz tarafından idare edilirken Polish(ed) Linux Distribution tarafından dağıtılmaktadır(ftp://ftp.pld.org.pl). Ayrıca Mandrake için Oden Eriksson tarafından idare edilen RPM paketi mevcuttur.Bu pakete de Mandrake mirrorlarından ulaşabilirsiniz. AIX için binary paketlerine de AIX PDSLIB, UCLA http://aixpdslib.seas.ucla.edu/packages/clamav.html adreslerinden ulaşabilirsiniz.Resmi FreeBSD portu Masahiro Teramoto tarafından idare edilmektedir. OpenBSD (Flin Mueller tarafından) portu ise http://www.activeintra.net/openbsd/article.php?id=5 adresinde mevcuttur.



2.5 Kurulum

Lütfen README dosyasını okuyunuz , çünkü bazı önemli bilgiler içermektedir.
Eğer Clam AV yazılımını ilk defa yüklüyorsanız , sisteminize yeni bir kullanıcı ve grup eklemeleisiniz.

# groupadd clamav
# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

Yukarıdaki method Linux ve Solaris üzerinde çalışır.Eğer sistem yöneticisi değilseniz veya clamscan işlemini superuser modunda yapmayacaksınız bu basamağı –disable-clamav passed
to the configure scripti kulanarak atlayabilirsiniz.

$ ./configure --disable-clamav

Bu script clamav user ve grup için olan testi geçersizleştirir.Clamscan hala clamav’a superuser modu için ihtiyaç duyar.Lütfen bu hesap için bir şifre düzenlemeyin , sadece  /etc/passwd or /etc/shadow içinde”!” ile kilitli kalmasını sağlayın.Bu hesap normal,ayrıcalıklı bir user olmalıdır. Onu hiçbir ek gruba eklemeyin.clamav user/grup oluştuktan sonra ;

$ zcat clamav-x.yz.tar.gz | tar xvf -$
cd clamav-x.yz

Varsayalım ki dosyayı /etc içine yüklediniz , o zaman paketi şu şekilde düzenlemelisiniz.

$ ./configure --sysconfdir=/etc

Halen gcc derleyici için gerekli.Diğer derleyiciler için gerekli desteğin yakın zamanda ekleneceğini umuyoruz.

$ make
$ su -c "make install"

En son olarak yazılımı /usr/local dizini içinde yüklüdür ve düzenleme dosyası da ve /etc içindedir.
UYARI : Asla Clam AntiVirus programlarında SUID/SGID bit düzenlemesi yapmayın.

2.6 Düzenleme

Daemon’ı kullanacaksanız , aşağıdaki düzenlemeleri yapmalısınız.

$ clamd
ERROR: Please edit the example config file
/etc/clamav.conf.

Şimdi düzenleme dosyanızın nerede olduğunu biliyorsunuz ;). Dosya ile ilgili format ve seçenekler clamav.conf dosyası içinde tanımlanmıştır.clamd düzenlemesi nispeten daha kolaydır , düzenleme dostası iyi açıklanmıştır. “Example” talimatını silmeyi unutmayınız.
Bir başka önemli özelliği , Dazuko modülüne dayanan , on-access tarama yapabilmesidir (http://dazuko.org sitesinde mevcuttur) Bu modül clamd’i çalıştırmak için gerekli değildir ayrıca Dazuko modülünü  imalat sistemlerinde çalıştırmamanız tavsiye edilir.
Clamd’ın bir başka özelliği de “Clamuko.(Dazuko’nun komik bir ismi , fakat ne anlama geldiğini bilmiyorum)” diye çağırılan Dazuko ile iletişim kumak için güvenilir olmasıdır. Calmuko Linux 2.2 ve 2.4’te desteklenmiştir. Kurulum için ;

$ tar zxpvf dazuko-a.b.c.tar.gz
$ cd dazuko-a.b.c
$ make dazuko
or
$ make dazuko-smp (for smp kernels)
$ su
# insmod dazuko.o
# cp dazuko.o /lib/modules/‘uname -r‘/misc
# depmod –a

Linux dağıtımınıza bağlı olarak , “dazuko”’yu /etc/modules veya 

modprobe dazuko

aşağıdaki çizgiye eklemeniz gerekmektedir , böylece dazuko’yu boot zamanında load edebilirsiniz.Ayrıca /dev/dazuko aygıtını oluşturmanız gerekmektedir:

$ cat /proc/devices | grep dazuko
254 dazuko
$ su -c "mknod -m 600 /dev/dazuko c 254 0"

Şimdi clamav.conf dosyası içinde Clamuko’yu düzenlemelisiniz. 3.2 bölümünden bakabilirsiniz.

2.7 Test

Pekala , şimdi biraz test yapalım ve aşağıdaki dizini tarama yapmaya çalışalım:

$ clamscan -r -l scan.txt clamav-x.yz

clamav-x.yz/test dizinlerinde virüsler bulmalı.Bu durumu oluşturulan log dosyasından kontrol edebilirsiniz.-scan.txt. clamscan seçenekleri hakkında daha fazla bilgiyi clamscan(1) manual içinde bulabilirsiniz. Clamd’ı test edebilmek için öncelikle clamdscan’i kullanmamız gerekmektedir.(Ayrıca clamd’a direkt olarak bağlanabilir ve SCAN komutunu kullanarak çalıştırabilirsiniz.)

$ clamdscan -l scan.txt clamav-x.yz





2.8 Güncel Clam (Freshclam): Otomatik güncelleme

freshclam Clam AntiVirüs için varsayılan otomatik güncelleştiricidir. 2 şekilde çalışır.
* İnteraftif –from command line
* Daemon gibi – yalnız,sessizce çalışır.
Eğer superuser modunda çalışırsa bazı ayrıcalıklara sahip olunur, varsayılan olarak clamav olarak çalışır.freshclam veritabanını Clam AntiVirüs’ün ana sayfasından alır ve MD5 toplamı kullanarak tutarlılığını kontrol eder. freshclam’ı ( root gibi) parametresiz kullanırsanız doğru çalışıp çalışmadığını kontrol edebilirsiniz. Eğer her şey olumluysa log dosyasını /var/log içinde oluşturabilirsiniz :

# touch /var/log/clam-update.log
# chmod 600 /var/log/clam-update.log
# chown clamav /var/log/clam-update.log

Şimdi freshclam’i bir daemon olarak çalıştırabilirsiniz.

# freshclam -d -c 2 -l /var/log/clam-update.log

Yukarudaki başlangıç scriptini eklerseniz , iki günde bir yeni bir bilgi için veritabanını kontrol eder.  Bir benzer kodu root yada clamav bölümlerine eklemelisiniz :

0 8 * * * /usr/local/bin/freshclam --quiet -l /var/log/clam - update.log

Sisteminizde Proxy desteği varsa aşağıdaki komut ile her gün saat 8:00 ‘de yeni bir bilgi için veritabanını kontrol ettirebilirsiniz. $http_ proxy, eg. İle çevre değişkenlerini ayarlayabilirsiniz.

export http_proxy="my.proxy.server:8080"

bunun dışında –http-proxy ve –proxy-user seçenekleri de mevcuttur.

2.9 FreshClam: Mirror’lar ve mirrors.txt

Ana sunucu clamav.elektrapro.com ve aşağıdaki mirrorlar mevcut;
* clamav.ozforces.com – elle güncelleştirilen veritabanı mirror’ı 
* clamav.essentkabel.com – otomatik olarak güncelleştirilen ana siteye ait mirror
* clamav.linux-sxs.org – veritabanı mirror’ı (ozforces’dan rsnyc’e)

Veritabanı dizininde freshclam’in güncelleştirmeler için her seferinde okuduğu mirror.txt dosyasını bulacaksınız. Önceki sunucu uygun değilse , dosyayı birinci sunucu için kullanacak ve bir diğeri ile değiştirecek (ve bazı zamanlar için bu pozisyonu hatırlayacak).Eğer daha hızlı bir mirror bulursanız dosyayı değiştirebilirsiniz fakat bazı sakıncaları olabilir.

3. Kullanma

3.1 Clam daemon

clamd libclamav’a dayanan çok kullanımlı bir iş parçacığıdır.Aşağıdaki soketlerden herhangi biri ile çalışabilir ;
* Unix (yerel) soketler
* TCP soketleri
Daemon clamav.conf dosyası ile düzenlenir.Bununla ilgili açıklamaları clamav.conf(5) içinde bulabilirsiniz. Clamd aşağıdaki komutları tanır.

* PING “PONG” komutu ile cevaplanır.Sunucunun bulunduğu eyaleti,ülkeyi kontrol eder.
* VERSION Versiyon ile ilgili bilgileri verir.
* RELOAD Veritabanını yeniden yükler.
* QUIT Temiz bir çıkış yapar.
* SCAN dosya/dizin Arşiv desteği ile birlikte bir dosya veya dizin üzerinde tarama yapar. Bütün yol gereklidir.
* RAWSCAN dosya/dizin  Arşiv desteği olmadan bir dosya veya dizin üzerinde tarama yapar. Bütün yol gereklidir.
* CONTSCAN Arşiv desteği ile birlikte bir dosya veya dizin üzerinde tarama yapar. Bir virüs bulunduğu zaman da taramaya devam eder. Bütün yol gereklidir.
* STREAM Bu komut ile clamd “PORT numarası” verir. Bu porta bağlantı kurabilir ve üzerinde tarama yapılması için bir dosya gönderebilirsiniz.

Dahili iş parçacıkları dışarıdan gelen sinyalleri yok sayar (clamuko hariç) . Ana iş parçacığı SIGTERM VE SIGINT sinyallerini kullanır ve bunlardan biri sıkıştığı zaman uygun bir çıkış gerçekleştirir.

3.2 Clamuko

Clamuko clamd’da Linux altında on-access taraması gerçekleştirebilen özel bir iş parçacığıdır.İstemci (clamuko) ve sunucu (clamd) modeli Dazuko tarafından halen desteklenmemektedir.Mevcut durumun bazı yararları vardır – clamuko clamd ile birlikte ortak bir veritabanını paylaşır ve RELOAD komutu ile birlikte güncelleştiriliyor. Clamuko’yu kullanırken aşağıdaki prensiplere uymanız gerekmektedir. 

* Daemon’u QUIT komutu veya SIGTERM sinyali ile durdurun.Aksi takdirde bilgisayar yeniden başlatıldığında korumalı dosyalara erişimi kaybedebilirsiniz.
* E-posta tarayıcının ekleri açmak için kullandığı dizini asla koruma altına almayın.Çünkü virüslü dosyalara erişim bloklanabilir ve tarayıcı virüsleri tespit edemeyebilir.Virüslü mailler adreslere teslim edilebilir.

clamav.conf dosyasından clamuko’yu aktif hale getirmelisiniz.Dizini /home korumak için aşağıdaki seçeneği kullanın :

ClamukoIncludePath /home

Bütün sistemi korumak için :

ClamukoIncludePath /
ClamukoExcludePath /proc
ClamukoExcludePath /tempdir/of/mail/scanner
Clamuko’yu Samba/Netatalk üzerindeki dosya erişimini korumak için kullanabilirsiniz.NFS desteklenmemektedir (Dazuko NFS erişim çağrıları ile kesişmemektedir).Bir diğer fikir- bazı popüler davranışların işaretlerini ihtiva eden bir veritabanı inşa etmektir.Bu sizi script-kiddies’e karşı koruyacaktır.

3.3 Arşivler ve sıkıştırılmış dosyalar

Clam AntiVirüs LibClamAv’a bağlıdır. Aşağıdaki formatlar için destek verir : 

* Zip
* Gzip
* RAR(sadece 2.0 için)

Zlib kütüphanesine Zip/Gzip desteği için ihtiyaç vardır. Zip arşivleri Guido Draheim ve Tomi Ollila tarafından hazırlana zziplib kütüphanesi ile iletişim halindedir. RAR desteği ise Christian Scheurer ve Johannes Winkelmann tarafından hazırlanan UniquE RAR dosya kütüphanesine bağlıdır.İkisi de clamav kaynaklarına biraz değiştirilerek eklenmiştir. Unrarlib sadece RAR 2.0 arşivine destek verir ve Christian’a göre yeni format ( WinRAR 3.0’da sunulmaktadır) desteklenmemektedir.
Daemon sadece libclamav tarafından desteklenen arşivleri tarar.Clamscan kodlarla inşa edilmiş bir arşivi taramaya çalışır fakat başarısız olur , çünkü harici unpacker’la uyuşamaz.

$ clamscan --unrar rarfail.rar
/home/zolw/Clam/test/rarfail.rar: RAR module failure.
UNRAR 3.00 freeware Copyright (c) 1993-2002 Eugene Roshal
Extracting from /home/zolw/Clam/test/rarfail.rar
Extracting test1 OK
All OK
/tmp/44694f5b2665d2f4/test1: ClamAV-Test-Signature FOUND
/home/zolw/Clam/test/rarfail.rar: Infected Archive FOUND

clamscan birçok popüler sıkıştırma programı ile uyumludur  - her format için harici programları kullanır.Eğer tarayıcı superuser modunda çalıştırılırsa clamav sayesinde işlem daha çok güvenli gerçekleşir.Ayrıca clamav kullanıcıları bütün taranmış olan sıkıştırılmış dosyaları okuyabilir,kullanabilir.Eğer bütün dizinleri alt dizinleri ile birlikte taramak istiyorsanız , süzgeç taramasını –r (-recursive) seçeneğini kullanarak aktifleştirebilirsiniz , ayrıca arşivlerin içindeki alt arşivlerde taramaya tabi tutulur.Eğer arşivlerin içindeki dosyalar virüslü ise sadec korumak için arşivin kendisi taranır (arşiv olmayabilir) Lütfen aşağıdaki seçeneklere bakınız.Her seçenek kendine ait bir değişkene sahiptir.Eğer $PATH içinde bulunamıyorsa lütfen ekleyin.Çünkü Clam AntiVirüs GNU seçenek formatına sahiptir. “=” işaretini değişken ve seçenek arasında kullanmayı unutmayınız.Örnek olarak –unzip=/path/to/unzip.

-unzip : Bu seçeneğe ihtiyacınız yok çünkü Zip libclamav tarafından desteklenmektedir.Eğer libclamav bazı dosyaları unzip etmekte başarısız olursa,bu olay faydalı olabilir.clamscan UnZip 5.41 of 16 April 2000, by Info-ZIP tarafından test edilmiştir.
-unrar : UNRAR 3.0 ile test edilmiştir.
-unace : UNACE v1.2’in halk versiyonu tarafından desteklenen seçenekleri kullanır, test edilmemiştir fakat çalışmaktadır.
-arj : arj 3.10b tarafından test edilmiştir.
-zoo : zoo 2.1 tarafından test edilmiştir.
-lha : LHa for Unix V 1.14e tarafından test edilmiştir.
-jar : CA jar dosyaları için unzip’i kullanır. UnZip 5.41 of 16 April 2000 tarihinde info-ZIP tarafından test edilmiştir.
-tar : Bu seçenek sıkıştırılmamış dosyaları destekler. GNU tar 1.13.17. tarafından test edilmiştir.
-deb : Bu seçenek debian binary paketleri tarafından desteklenir. GNU ar 2.12.90.0.14. tarafından test edilmiştir.-tgz’yi beraberinde getirir ve –tgz=FULLPATH ile uyuşur.
-tgz :Bu seçnek .tar.gz ve tgz formatlarını destekler.Linux olmayan bir sistemde muhtemelen gtar olarak bilinmektedir.Eğer $PATH içinde ise sadece kullanın yada bütün yolu bir değişken olarak bu seçneğe ekleyin.

3.4 Çıktı formatı

clamd clamscan ile çıktı formatında uyum gösterir.

zolw@Wierszokleta:˜$ telnet localhost 3310
Trying 127.0.0.1...
Connected to localhost.
Escape character is ’ˆ]’.
SCAN /home/zolw/infected
/home/zolw/infected/sobre.com: W32/Magistr.B FOUND
Connection closed by foreign host.

SCAN modunda ilk virüs bulunduğu zaman bağlantıyı keser.Arşivin durumuna göre çıktı normal dosyalarla aynı olur.

SCAN /home/zolw/Clam/test/test2.zip
/home/zolw/Clam/test/test2.zip: ClamAV-Test-Signature FOUND

CONTSCAN bulunmuş olan bütün virüslü dosyaları görüntüler.Hata mesajları aşağıdaki formatta yayınlanır.

SCAN /no/such/file
/no/such/file: Can’t stat() the file ERROR

ve onlar kolayca ayrıştırılır.
clamscan bütün mesajları stderr’e yazar.(sadece yardom varsayılan olarak stdout içine yazılır.) Bazı durumlarda –stdout komutu ile onu yeniden stdout’a yönlendirmek isteyebilirsiniz. stdout stdderr’nin arabelleğine zıttır.bu yüzden clamscan her mesajdan sonra bu ara belleği çıktıda oluşabilecek hatalara karşı korunmak için temizler. Tarama yaparken aşağıdaki gibi çıktılar oluşur.

/TEST/test: OK
/TEST/Makefile: OK
/TEST/getopt.c: OK
/TEST/virfile: Phantom #1 FOUND 

Bir virüs bulunduğu zaman onun ismi bulunduğu dosya ile birlikte yazılır.Eğer virüs bir arşivin içinde bulunursa Infected Archive olarak mimlenir. Bu arşiv virüslü dosya olarak sayılmaz sadece bu tür dosyalar o arşivin içinde yer alır.Bu durumu internal unarchiving ile karıştırmayın çünkü bu libclamav tarafından gerçekleştirilir , clamscan virüslü dosyanın arşivin içinde olup olmadığını bilemez.

4. Uygun Yazılım

  Aşağıdaki yazılım ClamAV.ı desteklemektedir.ClamAV.  desteklenen elemanları belirtmiştir.
Eğer program Clamd’ı desteklemezse Clamdscan yerine Clamscan’ı kullanabileceğinizi lütfen
unutmayın

4.1 clamav-milter

Erişim:  clamav paketinde bulunur.
Destekleyen: clamd

clamav-milter  Nigel Horne tarafından yazılmıştır ve mail yollamak için dizayn edilmiş çok hızlı bir e-mail tarayıcısıdır.”C” dilinde yazılmıştır .(Nigel tarafından) ClamAV   mail tarayıcısını kullanır.
Yükleme:
bir tane libmilter gelişmiş dosyasına ihtiyacınız var. İlk önce ClamAV’ı ;

$ ./configure --enable-milter
 16
ile configüre edin ve yeniden derleyin. program /usr/local/sbin/clamav-milter üzerine yüklenir.
Aşağıdaki açıklamalar Nigel’in  INSTALL dosyasından alınmıştır: /etc/mail/sendmail.mc:’e
Ekleyin.

INPUT_MAIL_FILTER(‘clmilter’,‘S=local:/var/run/clmilter.sock,
F=, T=S:4m;R:4m’)dnl
define(‘confINPUT_MAIL_FILTERS’, ‘clmilter’)

 Girdileri formun clamav.conf  bölümünde kontrol edin:

LocalSocket /var/run/clamd.sock
ScanMail
SaveStreamToDisk

 Clamav-milter’ı başlatın:

/usr/local/sbin/clamav-milter -blo /var/run/clmilter.sock

ve  sendmaili yeniden başlatın.

4.2 mod clamav

Erişim: http://software.othello.ch/mod\_clamav
Destekleyen: libclamav, clamd

mod clamav bir  Apache virus tarama filtresidir. Andreas Mller tarafından yazılmış ve geliştiril-
miştir. Proje çok iyi dökümanlaştırılmıştır ve çok kolay yüklenir.

4.3 TrashScan

Erişim: clamav-sources/support/trashscan
Destekleyen: clamscan

 procmail tabanlı gerçekten yüklemesi kolay bir tarayıcıdır .Ama sadece basit kullanıcılar içindir. MTA tabanlı tarayıcılar için yeterli değildir.
17
4.4 AMaViS - ”Next Generation”(Yeni Nesil)

Erişim: http://sourceforge.net/projects/amavis
Destekleyen: clamscan
AMaViS  amavis-perl/amavisd ınyeniden yazılmış daha modüler versiyonudur.Hilko Bengen tarafından geliştirilmiştir.

Yükleme:
 Lütfen yeni versiyonunu yükleyiniz(en az 0.1.4). yüklemeden sonra(çok kolay ve hızlıdır), lütfen aşağıdaki satırı  amavis.conf a uncomment edin

virus-scanner = CLAM

 ve en sonunda  [CLAM]  bölümündeki clamscana giden yolu değiştirin:

[CLAM]
clamscan = /usr/local/bin/clamscan

4.5 amavisd-new(yeni)

Erişim: http://www.ijs.si/software/amavisd
Destekleyen: clamd, clamscan
amavisd-new Mark Martinec tarafından geliştirilen amavisin yeniden yazılmış versiyonudur.

Yükleme:
Eğer amavisd-new başlatma zamanında clamscan binary bulunursa clamscan otomatik olarak erişilebilir.  clamd girdileri  @av scannerslist, file /etc/amavisd.conf. adresinde uncomment edilerek aktive edilir.

4.6 Qmail-Scanner

Erişim: http://qmail-scanner.sf.net
Destekleyen: clamscan

Softlimit değerini yükseltmelisiniz yada daemon desteği için beklemelisiniz.

4.7 Sagator

Erişim: http://www.salstar.sk/sagator
Destekleyen: clamscan, clamd, libclamav
 18
Bu program bir e-mail antivirüs/antispam gatewayidir. postfixe (yada başka bir smtpd) bir arayüzdür,antivirus ve/veye spamchecker programlarını çalıştırır. Modular mimarisi herhangi bir
antivirüs/spamchecker  programının konfigürasyonu için kullanılabilir.

4.8 ClamdMail

Erişim: http://clamdmail.sf.net
Destekleyen: clamd
 ClamAV. İçin bir mail işlemci clientidir.küçüktür ve yüklemesi hızlıdır.

4.9 BlackHole

Erişim: http://www.groovy.org/blackhole.shtml
Destekleyen: clamscan, clamd

BlackHole  Qmail, Postfix, Sendmail, Exim, Courier (Chris Kennedy tarafından yazılmış). İçin yazılan gelişmiş bir antivirüs filtresidir .genelde gelişmiş administrator ler içindir.(yüklenmesi zordur)

4.10 MailScanner

Erişm: http://www.mailscanner.info
Destekleyen: clamscan

MailScanner  bütün e-mailleri virüs ve spam için tarar ve güvenlik açıklarını kollar.herhangi bir virüs tarayıcısına bağlı değildir.Ama 14 değişik virüs tarayıcısı kombinasyonuyla  kullanılabilir.
“best of breed” virüs scannerini seçmeniz tavsiye edilir.

4.11 MIMEDefang
Erişm: http://www.roaringpenguin.com/mimedefang
Destekleyen: clamscan, clamd

 Sendmail/milter için yeterli bir mail tarayıcısıdır.

4.12 Exiscan

Erişim: http://duncanthrax.net/exiscan
Destekleyen: clamscan, clamd
Exiscan  Exim versiyon 4’ün  yamasıdır.Exim tarafından iletilen e-mail mesajlarına yeterli tarama desteği sağlar.Dört değişik tarama imkanı desteklenir:antivirüs,antispam,düzenli ifadeler ve dosya uzantıları.
5. LibClamAV

LibClamAV yazılımınıza virüs koruması eklemek için kullanılabilir.kütüphanesi thread-safe dir. Otomatik olarak arşivleri tanır ve tarar.tarama işlemi oldukça hızlıdır.çoğu zaman farkına bile varamazsınız.

5.1 API
 libclamav kullanan her program clamav.h başlık dosyasını içermelidir:

#include <clamav.h>

İlk adım makine yüklemesidir,aşağıda erişilebilen üç fonksiyon bulunmaktadır:

int cl_loaddb(const char *filename, struct cl_node **root,
int *virnum);
int cl_loaddbdir(const char *dirname, struct cl_node **root,
int *virnum);
char *cl_retdbdir(void);

cl loaddb() birim zamanda bir veri tabanı oluşturur, cl loaddbdir() bütün.db ve .db2 dosyalarını
dizinden yükler  dirname. cl retdbdir()  hardcoded veritabanı dizini yoluna döner. Veritabanı root  altında kaydedilecektir ve yüklenen signature sayısı virnum a eklenir.  tree structure a (trie, bak 7.2)  giden pointer son olarak  NULL değerini point eder.eğer üçüncü argüman olarak NULL değeri yüklenen   signatureların sayısını kaydetmezsen cl loaddb fonksiyonu 0  a döner ve diğer değerler de hata verir (failure).

struct cl_node *root = NULL;
int ret;
ret = cl_loaddbdir(cl_retdbdir(), &root, NULL);
20
 libclamav’ın hata kodlarını print etmenin kolay bir yolu vardır:

char *cl_perror(int clerror);

cl perror()  string açıklamalı clerror koda dön:

if(ret) {
printf("cl_loaddbdir() error: %s\n", cl_perror(ret));
exit(1);
}

Veritabanı yüklendiğinde, propertrie ıaşağıdaki kodlarla oluşturmalısınz:

void cl_buildtrie(struct cl_node *root);




Örneğimizde:

cl_buildtrie(root);

Tamam,şimdi bir buffer, descriptor yada dosyayı aşağıdaki kodlarla scan edebilirsiniz:

int cl_scanbuff(const char *buffer, unsigned int length,
char **virname, const struct cl_node *root);
int cl_scandesc(int desc, char **virname, unsigned long int
*scanned, const struct cl_node *root, const struct cl_limits
*limits, int options);
int cl_scanfile(const char *filename, char **virname,
unsigned long int *scanned, const struct cl_node *root,
const struct cl_limits *limits, int options);

Bütün fonksiyonlar virüs adlarını adresini virname pointerının altına kaydeder. cl scandesc()Ve  cl scanfile() taranan verinin değerini CL COUNT PRECISION ünitesinde arttırabilirler.Ayrıca arşiv limitlerini de desteklerler:

struct cl_limits {
int maxreclevel;
int maxfiles;
long int maxfilesize;
};
21
Son argüman scan engineni koknfigüre eder. Daha sonra CL ARCHIVE(arşiv taramasına erişebilir), CL RAW(arşiv taramasına erişemez) ve CL MAIL(mbox ve Maildir taramasına erişebilir ) ile destek sağlar. Eğer virüs yoksa fonksiyon  0 a döner(CL CLEAN)   CL VIRUS ;Eğer virüs bulunursa yada herangi bir değer bozuksa.

struct cl_limits limits;
char *virname;
/* maximal number of files in archive */;
limits.maxfiles = 100
/* maximal archived file size == 10 Mb */
limits.maxfilesize = 10 * 1048576;
/* maximal recursion level */
limits.maxreclevel = 8;
if((ret = cl_scanfile("/home/zolw/test", &virname, NULL, root,
&limits, CL_ARCHIVE)) == CL_VIRUS) {
printf("Detected %s virus.\n", virname);
} else {
printf("No virus detected.\n");
if(ret != CL_CLEAN)
printf("Error: %s\n", cl_perror(ret));
}

Birden fazla dosyayı scan etmek istiyorsanız trie aşağıdaki kodla relased edilmelidir:

void cl_freetrie(struct cl_node *root);

Calamav kaynaklarından birkaç örnek bulacaksınız. Libclamavtı kullanan her program ona link olmalıdır:

gcc -Wall ex1.c -o ex1 -lclamav

Başarılar !
    22
6. Problem Çözme

6.1 Return kodları

Return kodları çok kullanışlıdır, özellikle sistem scriptlerinde.Return kodlarını clamscan ‘dan aşağıdaki kodlarla kontrol edebilirsiniz :

$ echo $?

İşte size clamscan return kodlarının bir listesi:

0: Virüs bulunamadı .
1: Virüs(ler) bulundu.
40: Bilinmeyen opsiyon clamscan e geçti.lütfen yardımı kontrol edin.
50: Virüs veritabanı yüklemesinde hata oluştu.Default ayarlarından kaynaklanmıyor yada yanlış bir dosya veritabanına geçmiş olabilir.
51: Yanlış sayıda  threads  –threads e geçti.Doğal sayı 0
52: Desteklenmeyen Dosya tipi. tarayıcı düzenli dosyaları, dizinleri ve symlinksleri destekler.
53: Dizini açamıyor
54: Dosyayı açamıyor.5
55: Dosya okuması hatası okunan medium kırılmış olabilir. 5
56: Giriş dosyasını ve dizinini başlatamıyor.Taramak istediğiniz dosya / dizin mevcut değil.
58: I/O hatası. Lütfen dosya sisteminizi kontrol edin.
59: Kullanıcı bilgileri alınamıyor (clamscan  çalışırken).
60: kullanıcı clamavından yeterli bilgi alınamıyor  (önceliği olmayan kulanıcı)  /etc/passwd de yok.

5 sadece bir dosya modunda ( recursive modda bu hatalar düzeltilir)
 23
61:Fork edemiyor,yeni işlem yapamıyor.Lütfen limitinizi kontrol edin
63: Geçici dizin yad dosya oluşturamıyor.Lütfen haklarınızı kontrol edin.
64: Geçici dizin yazmıyor lütfen başka bir tane bildirin
70: Hafızayı ayırıp,temizleyemiyor,bu kritik bir hata lütfen sisteminizi kontrol edin.
71: hafızayı ayıramıyor.

7. Teknik kısım

7.1 Güvenlik

Clam Antivirüs programı öncelikle güvenliği düşünür. Tehlikeli işlemler clamscande (geçici  dosya oluşturma yada unlink() işlemleri gibi)  clamav.ayrıcalığı ile yapılır. Ama bilirsiniz ki hatasız program yoktur. Bu daha çok yeni bir çalışma ve her şey mümkündür. Bazı yerlerde snprintf() fonksiyonu kullanılır, Bazı eski sistemler(C kütüphanesi) bu fonksiyonu kontrol etmezler.Bu örnek gösterir ki yapmanız gereken ilk şey sisteminizi kontrol etmek olmalıdır.Hiçbir zaman  Clam AntiVirus uygulamasına SUID/SGID bitlerini kurmayın.EğerSUID bit kurulursa sistemdeki tüm dosyalar –log özelliğiyle modifiye olabilir. Normal kulanıcılar clamscan ı  kendi şahsi dosyalarını taramak için kullanırlar,diğer dosyalar onları alakadar etmez .Clam AntiVirus Daemon  güvenlikl düşüncesi ile yazılmıştır,dış saldırılara izin vermez ve birkaç extra korumaya sahiptir.

7.2 Scan engine

Clam AntiVirüs ün yeni versiyonunda  Aho-Corasick model eşleştirme algoritması kullanılmaktadır.Bu algoritma sonlu sabit model eşleştirme  automatonunu kulanır[1]. Algoritmanın kendisi Knuth-Morris-Pratt algoritmasının genellemesidir.Veri tip tanımlaması için lütfen matcher.h ye bakınız. automaton  trie ile yeniden sunulmuştur. Trie spesifik özellikleri olan köklü bir ağaç gibidir [2].triedeki her bir nod automatonun bir parçasıdır.Tanımlamada node aşağıdaki gibi tanımlanmıştır:

struct node {
int islast;
struct patt *list;
int maxpatlen;
struct node *next[NUM_CHILDS], *trans[NUM_CHILDS], *fail;};

