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 Virs bildirimleri
     
2. Kurulum

     2.1 htiyalar
     2.2 Desteklenen platformlar
     2.3 Gncel versiyonlar
     2.4 Binary paketleri
     2.5 Kurulum
     2.6 Dzenleme
     2.7 Test
     2.8 Gncel Clam (Freshclam): Otomatik gncelleme
     2.9 FreshClam: Mirrorlar ve mirrors.txt

3. Kullanma

     3.1 Clam daemon
     3.2 Clamuko
     3.3 Arivler ve sktrlm dosyalar
     3.4 kt format

4. Uygun Yazlm

     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 ksm

     7.1 Gvenlik
     7.2 Scan engine

























1. GR

Clam AntiVirs UNIXte kullanlabilen bir anti virs programdr.Bu yazlmn oluturulmasndaki temel ama e-posta sunuculardr.(Attachment taramas iin).Bu paket kullanclara esnek,ok kullanml ve internet zerinden otomatik gncelletirme yaplabilen bir yazlm sunuyor.Programlar Clam AntiVirs paketi tarafndan datlm ortak bir ktphaneyi temel alrlar. Yazlma ait virstaban bilgileri OpenAntiVirus.org sitesinden alr fakat extra virs tanmlamalar da ierir.(Popler polimorf virsleri iin de tanmlamalar ierir)

1.1 zellikler

* GNU GPL v2 lisans
* POSIX kullanl , tanabilir
* Gvenli
* ok hzl
* ok kullanml
* Kullanm kolay
* On-access tarama (Sadece linuxta)
* 7000in zerinde virs,worm ve trojan tanyabilir
* Sktrlm dosya ve arivleri destekler
* RAR(2.0),zip,Gzip,Bzip2 desteler

1.2 E-posta listeleri

3 e-posta listesi mevcut.

* announce@clamav.elektrapro.com  yeni srmler hakknda bilgi iin ( Ayrca yeni Debian paketlerini duyurmak iin) , 
* users@clamav.elektrapro.com  kullanc sorular iin
* devel@clamav.elektrapro.com -  gelitirmek iin
* virusdb@clamav.elektrapro.com  veritaban gncelletirme bilgileri iin

listname-subscribe@clamav.elektrapro.com  adresine bo bir e-posta atarak veya http://clamav.elektrapro.com/ml sitesi aracl ile sizde ClamAv ile ilgili bilgiler alabilirsiniz. Bo e-posta attktan sonra size gelen zel mesaj cevaplamanz gerekmektedir. Mail listeleri ;

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

1.3 Virs bildirimleri

Son gncelletirilmi hali ile ClamAV yazlmnn tespit edemedii virsleri virus@clamav.elektrapro.com adresine bildiriniz veya virs bir ek gibi yollaynz.Eer sisteminiz buna izin vermezse virs virus ifresi ile bir zip arivine saklaynz.

2. KURULUM

2.1 htiyalar

zlib ve  zlib-devel paketlerine ve the gcc derleyicisine (2.9x ve 3.x desteklenmitir) ihtiya vardr.Bunun iin bzip2 ktphanesini kurabilirsin fakat bu gerekli deildir.

2.2 Desteklenen platformlar

Clam AntiVirus aadaki iletim sistemleri ve mimarileri iin hazrlanmtr.(Test edilen platformlar parantez iinde belirtilmitir.

* 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 iletim sisteminizde almayabilir. Eer ClamAV yazlmn yukardaki iletim sistemleri dnda bir sistemde kullanyorsanz ltfen bizi haberdar ediniz.

2.3 Gncel versiyonlar

Clam AntiVirs http://clamav.elektrapro.com sitesinden cretsiz olarak elde edilebilir.Bu siteye ElektraPro.com tarafndan sponsorluk destei verilmektedir.

2.4 Binary paketleri

Linux iin yksek kalitede rpm ve deb paketi vardr. Debian paketi Magnus Ekdahl tarafndan idare edilmektedir ve ona http://www.debian.org adresinden ulaabilirsiniz. RPM paketi ise Arkadiusz Miskiewicz tarafndan idare edilirken Polish(ed) Linux Distribution tarafndan datlmaktadr(ftp://ftp.pld.org.pl). Ayrca Mandrake iin Oden Eriksson tarafndan idare edilen RPM paketi mevcuttur.Bu pakete de Mandrake mirrorlarndan ulaabilirsiniz. AIX iin binary paketlerine de AIX PDSLIB, UCLA http://aixpdslib.seas.ucla.edu/packages/clamav.html adreslerinden ulaabilirsiniz.Resmi FreeBSD portu Masahiro Teramoto tarafndan idare edilmektedir. OpenBSD (Flin Mueller tarafndan) portu ise http://www.activeintra.net/openbsd/article.php?id=5 adresinde mevcuttur.



2.5 Kurulum

Ltfen README dosyasn okuyunuz , nk baz nemli bilgiler iermektedir.
Eer Clam AV yazlmn ilk defa yklyorsanz , sisteminize yeni bir kullanc ve grup eklemeleisiniz.

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

Yukardaki method Linux ve Solaris zerinde alr.Eer sistem yneticisi deilseniz veya clamscan ilemini superuser modunda yapmayacaksnz bu basama disable-clamav passed
to the configure scripti kulanarak atlayabilirsiniz.

$ ./configure --disable-clamav

Bu script clamav user ve grup iin olan testi geersizletirir.Clamscan hala clamava superuser modu iin ihtiya duyar.Ltfen bu hesap iin bir ifre dzenlemeyin , sadece  /etc/passwd or /etc/shadow iinde! ile kilitli kalmasn salayn.Bu hesap normal,ayrcalkl bir user olmaldr. Onu hibir ek gruba eklemeyin.clamav user/grup olutuktan sonra ;

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

Varsayalm ki dosyay /etc iine yklediniz , o zaman paketi u ekilde dzenlemelisiniz.

$ ./configure --sysconfdir=/etc

Halen gcc derleyici iin gerekli.Dier derleyiciler iin gerekli destein yakn zamanda ekleneceini umuyoruz.

$ make
$ su -c "make install"

En son olarak yazlm /usr/local dizini iinde ykldr ve dzenleme dosyas da ve /etc iindedir.
UYARI : Asla Clam AntiVirus programlarnda SUID/SGID bit dzenlemesi yapmayn.

2.6 Dzenleme

Daemon kullanacaksanz , aadaki dzenlemeleri yapmalsnz.

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

imdi dzenleme dosyanzn nerede olduunu biliyorsunuz ;). Dosya ile ilgili format ve seenekler clamav.conf dosyas iinde tanmlanmtr.clamd dzenlemesi nispeten daha kolaydr , dzenleme dostas iyi aklanmtr. Example talimatn silmeyi unutmaynz.
Bir baka nemli zellii , Dazuko modlne dayanan , on-access tarama yapabilmesidir (http://dazuko.org sitesinde mevcuttur) Bu modl clamdi altrmak iin gerekli deildir ayrca Dazuko modln  imalat sistemlerinde altrmamanz tavsiye edilir.
Clamdn bir baka zellii de Clamuko.(Dazukonun komik bir ismi , fakat ne anlama geldiini bilmiyorum) diye arlan Dazuko ile iletiim kumak iin gvenilir olmasdr. Calmuko Linux 2.2 ve 2.4te desteklenmitir. Kurulum iin ;

$ 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 datmnza bal olarak , dazukoyu /etc/modules veya 

modprobe dazuko

aadaki izgiye eklemeniz gerekmektedir , bylece dazukoyu boot zamannda load edebilirsiniz.Ayrca /dev/dazuko aygtn oluturmanz gerekmektedir:

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

imdi clamav.conf dosyas iinde Clamukoyu dzenlemelisiniz. 3.2 blmnden bakabilirsiniz.

2.7 Test

Pekala , imdi biraz test yapalm ve aadaki dizini tarama yapmaya alalm:

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

clamav-x.yz/test dizinlerinde virsler bulmal.Bu durumu oluturulan log dosyasndan kontrol edebilirsiniz.-scan.txt. clamscan seenekleri hakknda daha fazla bilgiyi clamscan(1) manual iinde bulabilirsiniz. Clamd test edebilmek iin ncelikle clamdscani kullanmamz gerekmektedir.(Ayrca clamda direkt olarak balanabilir ve SCAN komutunu kullanarak altrabilirsiniz.)

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





2.8 Gncel Clam (Freshclam): Otomatik gncelleme

freshclam Clam AntiVirs iin varsaylan otomatik gncelletiricidir. 2 ekilde alr.
* nteraftif from command line
* Daemon gibi  yalnz,sessizce alr.
Eer superuser modunda alrsa baz ayrcalklara sahip olunur, varsaylan olarak clamav olarak alr.freshclam veritabann Clam AntiVirsn ana sayfasndan alr ve MD5 toplam kullanarak tutarlln kontrol eder. freshclam ( root gibi) parametresiz kullanrsanz doru alp almadn kontrol edebilirsiniz. Eer her ey olumluysa log dosyasn /var/log iinde oluturabilirsiniz :

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

imdi freshclami bir daemon olarak altrabilirsiniz.

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

Yukarudaki balang scriptini eklerseniz , iki gnde bir yeni bir bilgi iin veritabann kontrol eder.  Bir benzer kodu root yada clamav blmlerine eklemelisiniz :

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

Sisteminizde Proxy destei varsa aadaki komut ile her gn saat 8:00 de yeni bir bilgi iin veritabann kontrol ettirebilirsiniz. $http_ proxy, eg. le evre deikenlerini ayarlayabilirsiniz.

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

bunun dnda http-proxy ve proxy-user seenekleri de mevcuttur.

2.9 FreshClam: Mirrorlar ve mirrors.txt

Ana sunucu clamav.elektrapro.com ve aadaki mirrorlar mevcut;
* clamav.ozforces.com  elle gncelletirilen veritaban mirror 
* clamav.essentkabel.com  otomatik olarak gncelletirilen ana siteye ait mirror
* clamav.linux-sxs.org  veritaban mirror (ozforcesdan rsnyce)

Veritaban dizininde freshclamin gncelletirmeler iin her seferinde okuduu mirror.txt dosyasn bulacaksnz. nceki sunucu uygun deilse , dosyay birinci sunucu iin kullanacak ve bir dieri ile deitirecek (ve baz zamanlar iin bu pozisyonu hatrlayacak).Eer daha hzl bir mirror bulursanz dosyay deitirebilirsiniz fakat baz sakncalar olabilir.

3. Kullanma

3.1 Clam daemon

clamd libclamava dayanan ok kullanml bir i paracdr.Aadaki soketlerden herhangi biri ile alabilir ;
* Unix (yerel) soketler
* TCP soketleri
Daemon clamav.conf dosyas ile dzenlenir.Bununla ilgili aklamalar clamav.conf(5) iinde bulabilirsiniz. Clamd aadaki komutlar tanr.

* PING PONG komutu ile cevaplanr.Sunucunun bulunduu eyaleti,lkeyi kontrol eder.
* VERSION Versiyon ile ilgili bilgileri verir.
* RELOAD Veritabann yeniden ykler.
* QUIT Temiz bir k yapar.
* SCAN dosya/dizin Ariv destei ile birlikte bir dosya veya dizin zerinde tarama yapar. Btn yol gereklidir.
* RAWSCAN dosya/dizin  Ariv destei olmadan bir dosya veya dizin zerinde tarama yapar. Btn yol gereklidir.
* CONTSCAN Ariv destei ile birlikte bir dosya veya dizin zerinde tarama yapar. Bir virs bulunduu zaman da taramaya devam eder. Btn yol gereklidir.
* STREAM Bu komut ile clamd PORT numaras verir. Bu porta balant kurabilir ve zerinde tarama yaplmas iin bir dosya gnderebilirsiniz.

Dahili i paracklar dardan gelen sinyalleri yok sayar (clamuko hari) . Ana i parac SIGTERM VE SIGINT sinyallerini kullanr ve bunlardan biri skt zaman uygun bir k gerekletirir.

3.2 Clamuko

Clamuko clamdda Linux altnda on-access taramas gerekletirebilen zel bir i paracdr.stemci (clamuko) ve sunucu (clamd) modeli Dazuko tarafndan halen desteklenmemektedir.Mevcut durumun baz yararlar vardr  clamuko clamd ile birlikte ortak bir veritabann paylar ve RELOAD komutu ile birlikte gncelletiriliyor. Clamukoyu kullanrken aadaki prensiplere uymanz gerekmektedir. 

* Daemonu QUIT komutu veya SIGTERM sinyali ile durdurun.Aksi takdirde bilgisayar yeniden balatldnda korumal dosyalara eriimi kaybedebilirsiniz.
* E-posta taraycnn ekleri amak iin kulland dizini asla koruma altna almayn.nk virsl dosyalara eriim bloklanabilir ve tarayc virsleri tespit edemeyebilir.Virsl mailler adreslere teslim edilebilir.

clamav.conf dosyasndan clamukoyu aktif hale getirmelisiniz.Dizini /home korumak iin aadaki seenei kullann :

ClamukoIncludePath /home

Btn sistemi korumak iin :

ClamukoIncludePath /
ClamukoExcludePath /proc
ClamukoExcludePath /tempdir/of/mail/scanner
Clamukoyu Samba/Netatalk zerindeki dosya eriimini korumak iin kullanabilirsiniz.NFS desteklenmemektedir (Dazuko NFS eriim arlar ile kesimemektedir).Bir dier fikir- baz popler davranlarn iaretlerini ihtiva eden bir veritaban ina etmektir.Bu sizi script-kiddiese kar koruyacaktr.

3.3 Arivler ve sktrlm dosyalar

Clam AntiVirs LibClamAva baldr. Aadaki formatlar iin destek verir : 

* Zip
* Gzip
* RAR(sadece 2.0 iin)

Zlib ktphanesine Zip/Gzip destei iin ihtiya vardr. Zip arivleri Guido Draheim ve Tomi Ollila tarafndan hazrlana zziplib ktphanesi ile iletiim halindedir. RAR destei ise Christian Scheurer ve Johannes Winkelmann tarafndan hazrlanan UniquE RAR dosya ktphanesine baldr.kisi de clamav kaynaklarna biraz deitirilerek eklenmitir. Unrarlib sadece RAR 2.0 arivine destek verir ve Christiana gre yeni format ( WinRAR 3.0da sunulmaktadr) desteklenmemektedir.
Daemon sadece libclamav tarafndan desteklenen arivleri tarar.Clamscan kodlarla ina edilmi bir arivi taramaya alr fakat baarsz olur , nk harici unpackerla uyuamaz.

$ 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 birok popler sktrma program ile uyumludur  - her format iin harici programlar kullanr.Eer tarayc superuser modunda altrlrsa clamav sayesinde ilem daha ok gvenli gerekleir.Ayrca clamav kullanclar btn taranm olan sktrlm dosyalar okuyabilir,kullanabilir.Eer btn dizinleri alt dizinleri ile birlikte taramak istiyorsanz , szge taramasn r (-recursive) seeneini kullanarak aktifletirebilirsiniz , ayrca arivlerin iindeki alt arivlerde taramaya tabi tutulur.Eer arivlerin iindeki dosyalar virsl ise sadec korumak iin arivin kendisi taranr (ariv olmayabilir) Ltfen aadaki seeneklere baknz.Her seenek kendine ait bir deikene sahiptir.Eer $PATH iinde bulunamyorsa ltfen ekleyin.nk Clam AntiVirs GNU seenek formatna sahiptir. = iaretini deiken ve seenek arasnda kullanmay unutmaynz.rnek olarak unzip=/path/to/unzip.

-unzip : Bu seenee ihtiyacnz yok nk Zip libclamav tarafndan desteklenmektedir.Eer libclamav baz dosyalar unzip etmekte baarsz olursa,bu olay faydal olabilir.clamscan UnZip 5.41 of 16 April 2000, by Info-ZIP tarafndan test edilmitir.
-unrar : UNRAR 3.0 ile test edilmitir.
-unace : UNACE v1.2in halk versiyonu tarafndan desteklenen seenekleri kullanr, test edilmemitir fakat almaktadr.
-arj : arj 3.10b tarafndan test edilmitir.
-zoo : zoo 2.1 tarafndan test edilmitir.
-lha : LHa for Unix V 1.14e tarafndan test edilmitir.
-jar : CA jar dosyalar iin unzipi kullanr. UnZip 5.41 of 16 April 2000 tarihinde info-ZIP tarafndan test edilmitir.
-tar : Bu seenek sktrlmam dosyalar destekler. GNU tar 1.13.17. tarafndan test edilmitir.
-deb : Bu seenek debian binary paketleri tarafndan desteklenir. GNU ar 2.12.90.0.14. tarafndan test edilmitir.-tgzyi beraberinde getirir ve tgz=FULLPATH ile uyuur.
-tgz :Bu senek .tar.gz ve tgz formatlarn destekler.Linux olmayan bir sistemde muhtemelen gtar olarak bilinmektedir.Eer $PATH iinde ise sadece kullann yada btn yolu bir deiken olarak bu senee ekleyin.

3.4 kt format

clamd clamscan ile kt formatnda uyum gsterir.

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 virs bulunduu zaman balanty keser.Arivin durumuna gre 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 btn virsl dosyalar grntler.Hata mesajlar aadaki formatta yaynlanr.

SCAN /no/such/file
/no/such/file: Cant stat() the file ERROR

ve onlar kolayca ayrtrlr.
clamscan btn mesajlar stderre yazar.(sadece yardom varsaylan olarak stdout iine yazlr.) Baz durumlarda stdout komutu ile onu yeniden stdouta ynlendirmek isteyebilirsiniz. stdout stdderrnin arabelleine zttr.bu yzden clamscan her mesajdan sonra bu ara bellei ktda oluabilecek hatalara kar korunmak iin temizler. Tarama yaparken aadaki gibi ktlar oluur.

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

Bir virs bulunduu zaman onun ismi bulunduu dosya ile birlikte yazlr.Eer virs bir arivin iinde bulunursa Infected Archive olarak mimlenir. Bu ariv virsl dosya olarak saylmaz sadece bu tr dosyalar o arivin iinde yer alr.Bu durumu internal unarchiving ile kartrmayn nk bu libclamav tarafndan gerekletirilir , clamscan virsl dosyann arivin iinde olup olmadn bilemez.

4. Uygun Yazlm

  Aadaki yazlm ClamAV. desteklemektedir.ClamAV.  desteklenen elemanlar belirtmitir.
Eer program Clamd desteklemezse Clamdscan yerine Clamscan kullanabileceinizi ltfen
unutmayn

4.1 clamav-milter

Eriim:  clamav paketinde bulunur.
Destekleyen: clamd

clamav-milter  Nigel Horne tarafndan yazlmtr ve mail yollamak iin dizayn edilmi ok hzl bir e-mail taraycsdr.C dilinde yazlmtr .(Nigel tarafndan) ClamAV   mail taraycsn kullanr.
Ykleme:
bir tane libmilter gelimi dosyasna ihtiyacnz var. lk nce ClamAV ;

$ ./configure --enable-milter
 16
ile configre edin ve yeniden derleyin. program /usr/local/sbin/clamav-milter zerine yklenir.
Aadaki aklamalar Nigelin  INSTALL dosyasndan alnmtr: /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  blmnde kontrol edin:

LocalSocket /var/run/clamd.sock
ScanMail
SaveStreamToDisk

 Clamav-milter balatn:

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

ve  sendmaili yeniden balatn.

4.2 mod clamav

Eriim: http://software.othello.ch/mod\_clamav
Destekleyen: libclamav, clamd

mod clamav bir  Apache virus tarama filtresidir. Andreas Mller tarafndan yazlm ve gelitiril-
mitir. Proje ok iyi dkmanlatrlmtr ve ok kolay yklenir.

4.3 TrashScan

Eriim: clamav-sources/support/trashscan
Destekleyen: clamscan

 procmail tabanl gerekten yklemesi kolay bir taraycdr .Ama sadece basit kullanclar iindir. MTA tabanl tarayclar iin yeterli deildir.
17
4.4 AMaViS - Next Generation(Yeni Nesil)

Eriim: http://sourceforge.net/projects/amavis
Destekleyen: clamscan
AMaViS  amavis-perl/amavisd nyeniden yazlm daha modler versiyonudur.Hilko Bengen tarafndan gelitirilmitir.

Ykleme:
 Ltfen yeni versiyonunu ykleyiniz(en az 0.1.4). yklemeden sonra(ok kolay ve hzldr), ltfen aadaki satr  amavis.conf a uncomment edin

virus-scanner = CLAM

 ve en sonunda  [CLAM]  blmndeki clamscana giden yolu deitirin:

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

4.5 amavisd-new(yeni)

Eriim: http://www.ijs.si/software/amavisd
Destekleyen: clamd, clamscan
amavisd-new Mark Martinec tarafndan gelitirilen amavisin yeniden yazlm versiyonudur.

Ykleme:
Eer amavisd-new balatma zamannda clamscan binary bulunursa clamscan otomatik olarak eriilebilir.  clamd girdileri  @av scannerslist, file /etc/amavisd.conf. adresinde uncomment edilerek aktive edilir.

4.6 Qmail-Scanner

Eriim: http://qmail-scanner.sf.net
Destekleyen: clamscan

Softlimit deerini ykseltmelisiniz yada daemon destei iin beklemelisiniz.

4.7 Sagator

Eriim: http://www.salstar.sk/sagator
Destekleyen: clamscan, clamd, libclamav
 18
Bu program bir e-mail antivirs/antispam gatewayidir. postfixe (yada baka bir smtpd) bir arayzdr,antivirus ve/veye spamchecker programlarn altrr. Modular mimarisi herhangi bir
antivirs/spamchecker  programnn konfigrasyonu iin kullanlabilir.

4.8 ClamdMail

Eriim: http://clamdmail.sf.net
Destekleyen: clamd
 ClamAV. in bir mail ilemci clientidir.kktr ve yklemesi hzldr.

4.9 BlackHole

Eriim: http://www.groovy.org/blackhole.shtml
Destekleyen: clamscan, clamd

BlackHole  Qmail, Postfix, Sendmail, Exim, Courier (Chris Kennedy tarafndan yazlm). in yazlan gelimi bir antivirs filtresidir .genelde gelimi administrator ler iindir.(yklenmesi zordur)

4.10 MailScanner

Erim: http://www.mailscanner.info
Destekleyen: clamscan

MailScanner  btn e-mailleri virs ve spam iin tarar ve gvenlik aklarn kollar.herhangi bir virs taraycsna bal deildir.Ama 14 deiik virs taraycs kombinasyonuyla  kullanlabilir.
best of breed virs scannerini semeniz tavsiye edilir.

4.11 MIMEDefang
Erim: http://www.roaringpenguin.com/mimedefang
Destekleyen: clamscan, clamd

 Sendmail/milter iin yeterli bir mail taraycsdr.

4.12 Exiscan

Eriim: http://duncanthrax.net/exiscan
Destekleyen: clamscan, clamd
Exiscan  Exim versiyon 4n  yamasdr.Exim tarafndan iletilen e-mail mesajlarna yeterli tarama destei salar.Drt deiik tarama imkan desteklenir:antivirs,antispam,dzenli ifadeler ve dosya uzantlar.
5. LibClamAV

LibClamAV yazlmnza virs korumas eklemek iin kullanlabilir.ktphanesi thread-safe dir. Otomatik olarak arivleri tanr ve tarar.tarama ilemi olduka hzldr.ou zaman farkna bile varamazsnz.

5.1 API
 libclamav kullanan her program clamav.h balk dosyasn iermelidir:

#include <clamav.h>

lk adm makine yklemesidir,aada eriilebilen  fonksiyon bulunmaktadr:

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 oluturur, cl loaddbdir() btn.db ve .db2 dosyalarn
dizinden ykler  dirname. cl retdbdir()  hardcoded veritaban dizini yoluna dner. Veritaban root  altnda kaydedilecektir ve yklenen signature says virnum a eklenir.  tree structure a (trie, bak 7.2)  giden pointer son olarak  NULL deerini point eder.eer nc argman olarak NULL deeri yklenen   signaturelarn saysn kaydetmezsen cl loaddb fonksiyonu 0  a dner ve dier deerler de hata verir (failure).

struct cl_node *root = NULL;
int ret;
ret = cl_loaddbdir(cl_retdbdir(), &root, NULL);
20
 libclamavn hata kodlarn print etmenin kolay bir yolu vardr:

char *cl_perror(int clerror);

cl perror()  string aklamal clerror koda dn:

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

Veritaban yklendiinde, propertrie aadaki kodlarla oluturmalsnz:

void cl_buildtrie(struct cl_node *root);




rneimizde:

cl_buildtrie(root);

Tamam,imdi bir buffer, descriptor yada dosyay aadaki 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);

Btn fonksiyonlar virs adlarn adresini virname pointernn altna kaydeder. cl scandesc()Ve  cl scanfile() taranan verinin deerini CL COUNT PRECISION nitesinde arttrabilirler.Ayrca ariv limitlerini de desteklerler:

struct cl_limits {
int maxreclevel;
int maxfiles;
long int maxfilesize;
};
21
Son argman scan engineni koknfigre eder. Daha sonra CL ARCHIVE(ariv taramasna eriebilir), CL RAW(ariv taramasna eriemez) ve CL MAIL(mbox ve Maildir taramasna eriebilir ) ile destek salar. Eer virs yoksa fonksiyon  0 a dner(CL CLEAN)   CL VIRUS ;Eer virs bulunursa yada herangi bir deer 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 istiyorsanz trie aadaki kodla relased edilmelidir:

void cl_freetrie(struct cl_node *root);

Calamav kaynaklarndan birka rnek bulacaksnz. Libclamavt kullanan her program ona link olmaldr:

gcc -Wall ex1.c -o ex1 -lclamav

Baarlar !
    22
6. Problem zme

6.1 Return kodlar

Return kodlar ok kullanldr, zellikle sistem scriptlerinde.Return kodlarn clamscan dan aadaki kodlarla kontrol edebilirsiniz :

$ echo $?

te size clamscan return kodlarnn bir listesi:

0: Virs bulunamad .
1: Virs(ler) bulundu.
40: Bilinmeyen opsiyon clamscan e geti.ltfen yardm kontrol edin.
50: Virs veritaban yklemesinde hata olutu.Default ayarlarndan kaynaklanmyor yada yanl bir dosya veritabanna gemi olabilir.
51: Yanl sayda  threads  threads e geti.Doal say 0
52: Desteklenmeyen Dosya tipi. tarayc dzenli dosyalar, dizinleri ve symlinksleri destekler.
53: Dizini aamyor
54: Dosyay aamyor.5
55: Dosya okumas hatas okunan medium krlm olabilir. 5
56: Giri dosyasn ve dizinini balatamyor.Taramak istediiniz dosya / dizin mevcut deil.
58: I/O hatas. Ltfen dosya sisteminizi kontrol edin.
59: Kullanc bilgileri alnamyor (clamscan  alrken).
60: kullanc clamavndan yeterli bilgi alnamyor  (ncelii olmayan kulanc)  /etc/passwd de yok.

5 sadece bir dosya modunda ( recursive modda bu hatalar dzeltilir)
 23
61:Fork edemiyor,yeni ilem yapamyor.Ltfen limitinizi kontrol edin
63: Geici dizin yad dosya oluturamyor.Ltfen haklarnz kontrol edin.
64: Geici dizin yazmyor ltfen baka bir tane bildirin
70: Hafzay ayrp,temizleyemiyor,bu kritik bir hata ltfen sisteminizi kontrol edin.
71: hafzay ayramyor.

7. Teknik ksm

7.1 Gvenlik

Clam Antivirs program ncelikle gvenlii dnr. Tehlikeli ilemler clamscande (geici  dosya oluturma yada unlink() ilemleri gibi)  clamav.ayrcal ile yaplr. Ama bilirsiniz ki hatasz program yoktur. Bu daha ok yeni bir alma ve her ey mmkndr. Baz yerlerde snprintf() fonksiyonu kullanlr, Baz eski sistemler(C ktphanesi) bu fonksiyonu kontrol etmezler.Bu rnek gsterir ki yapmanz gereken ilk ey sisteminizi kontrol etmek olmaldr.Hibir zaman  Clam AntiVirus uygulamasna SUID/SGID bitlerini kurmayn.EerSUID bit kurulursa sistemdeki tm dosyalar log zelliiyle modifiye olabilir. Normal kulanclar clamscan   kendi ahsi dosyalarn taramak iin kullanrlar,dier dosyalar onlar alakadar etmez .Clam AntiVirus Daemon  gvenlikl dncesi ile yazlmtr,d saldrlara izin vermez ve birka extra korumaya sahiptir.

7.2 Scan engine

Clam AntiVirs n yeni versiyonunda  Aho-Corasick model eletirme algoritmas kullanlmaktadr.Bu algoritma sonlu sabit model eletirme  automatonunu kulanr[1]. Algoritmann kendisi Knuth-Morris-Pratt algoritmasnn genellemesidir.Veri tip tanmlamas iin ltfen matcher.h ye baknz. automaton  trie ile yeniden sunulmutur. Trie spesifik zellikleri olan kkl bir aa gibidir [2].triedeki her bir nod automatonun bir parasdr.Tanmlamada node aadaki gibi tanmlanmtr:

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

