15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
24.10.2024

Linux’ta ClamAV Nasıl Kurulur: Eksiksiz Teknik Kılavuz

ClamAV, virüsleri, truva atlarını, rootkit’leri, kötü amaçlı yazılımları ve diğer kötü niyetli tehditleri tespit eden, Cisco Talos tarafından sürdürülen açık kaynaklı, çapraz platform bir antivirüs motorudur. Sürekli güncellenen bir veritabanı (/var/lib/clamav/) tarafından desteklenen imza tabanlı bir tespit modeli kullanarak çalışır ve Linux sunucuları, posta ağ geçitleri ve web barındırma ortamları için fiili standart antivirüs çözümüdür.

Bu kılavuz, tam kurulum yaşam döngüsünü kapsar: sistem hazırlığı, büyük dağıtımlarda paket kurulumu, freshclam ile virüs veritabanı yönetimi, daemon yapılandırması, tarama stratejileri, karantina yönetimi, cron otomasyonu ve clamonacc aracılığıyla gerçek zamanlı tarama — çoğu öğreticinin atladığı üretim düzeyindeki tuzaklar dahil.

ClamAV’ın Linux Sunucularında Önemi

Linux sistemleri kötü amaçlı yazılımlara karşı bağışık değildir. Linux’u hedef alan açıklar Windows tehditlerinden daha az yaygın olsa da, web uygulamaları, posta aktarıcıları veya dosya paylaşım hizmetleri çalıştıran sunucular, Linux ana bilgisayarının kendisi birincil hedef olmasa bile kötü amaçlı yazılım dağıtımı için aktif vektörlerdir. Ele geçirilmiş bir VPS Hosting ortamı, son kullanıcılara sessizce virüslü dosyalar dağıtabilir, spam veritabanları tarafından kara listeye alınmaya yol açabilir veya daha büyük bir saldırı zincirinde pivot noktası olarak kullanılabilir.

ClamAV bunu şunları sağlayarak ele alır:

  • İsteğe bağlı tarama — zamanlanmış veya tetiklenmiş analiz için
  • Daemon modunda tarama (clamd) — yüksek verimli, düşük gecikmeli kontroller için
  • Posta ağ geçidi entegrasyonuclamsmtp, amavisd-new veya Milter aracılığıyla
  • Gerçek zamanlı dosya sistemi izlemeclamonacc aracılığıyla (Linux kernel fanotify)
  • Bytecode imzaları — statik örüntü eşleştirmenin ötesinde buluşsal tespit için

Adım 1: Sisteminizi Hazırlayın ve Güncelleyin

Herhangi bir paket kurmadan önce, paket dizininizi senkronize edin ve bekleyen güvenlik yamalarını uygulayın. Güncel olmayan sistem kitaplıklarını bir güvenlik aracıyla birlikte çalıştırmak sahte bir koruma hissi yaratır.

Debian/Ubuntu için:

sudo apt update && sudo apt upgrade -y

CentOS/RHEL 7 için:

sudo yum update -y

Rocky Linux / AlmaLinux / RHEL 8+ için:

sudo dnf update -y

Fedora için:

sudo dnf update -y

clamonacc (gerçek zamanlı tarama), kararlı fanotify desteği için kernel 5.1+ gerektirdiğinden, kernel ve glibc sürümlerinizin güncel olduğunu doğrulayın.

Adım 2: ClamAV’ı Kurun

ClamAV, tüm büyük dağıtımların varsayılan depolarında mevcuttur. Temel ayrım, yalnızca tarayıcıyı (clamav) mı yoksa arka plan daemon’ını da (clamav-daemon / clamd) mı kurduğunuzdur; bu, herhangi bir üretim sunucusu için kesinlikle önerilir.

Debian/Ubuntu için:

sudo apt install clamav clamav-daemon -y
  • clamavclamscan ve freshclam‘ı kurar
  • clamav-daemon — virüs veritabanını bellekte yüklü tutan ve tarama başına yükü önemli ölçüde azaltan kalıcı tarama daemon’ı clamd‘ı kurar

CentOS/RHEL 7 için (EPEL gerektirir):

sudo yum install epel-release -y
sudo yum install clamav clamav-update clamav-scanner-systemd clamd -y

Rocky Linux / AlmaLinux / RHEL 8+ için (EPEL gerektirir):

sudo dnf install epel-release -y
sudo dnf install clamav clamav-update clamd -y

Fedora için:

sudo dnf install clamav clamav-update clamd -y

Kurulum sonrası doğrulanacak ikili konumlar:

İkiliYolAmaç
clamscan/usr/bin/clamscanİsteğe bağlı CLI tarayıcı
clamd/usr/sbin/clamdArka plan tarama daemon’ı
freshclam/usr/bin/freshclamVirüs veritabanı güncelleyici
clamdscan/usr/bin/clamdscanclamd‘a yetki devreden istemci
clamonacc/usr/sbin/clamonaccGerçek zamanlı erişim anında tarayıcı

Adım 3: Virüs İmza Veritabanını Güncelleyin

ClamAV’ın tespit kapasitesi tamamen imza veritabanının güncelliğine bağlıdır. Veritabanı /var/lib/clamav/ konumunda bulunur ve birkaç dosyadan oluşur: main.cvd, daily.cvd (veya .cld) ve bytecode.cvd.

İlk Güncellemeden Önce Daemon’ı Durdurun (Debian/Ubuntu)

Debian/Ubuntu sistemlerinde, clamav-freshclam.service kurulumdan sonra otomatik olarak çalışır ve veritabanı dizinini kilitler. Bu servis etkinken freshclam‘ı manuel olarak çalıştırmaya çalışırsanız, bir kilit çakışmasıyla karşılaşırsınız. Önce durdurun:

sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam

CentOS/RHEL/Rocky/Alma’da:

sudo freshclam

Başarılı bir güncellemede beklenen çıktı:

ClamAV update process started at ...
daily.cvd updated (version: 27xxx, sigs: xxxxxxx, ...)
main.cvd is up to date
bytecode.cvd is up to date

Otomatik Veritabanı Güncellemelerini Yapılandırın

freshclam, /etc/clamav/freshclam.conf tarafından kontrol edilir. Gözden geçirilecek temel yönergeler:

sudo nano /etc/clamav/freshclam.conf

Kritik parametreler:

  • Checks 24 — günlük güncelleme kontrolü sayısı (bazı dağıtımlarda varsayılan: 12)
  • DatabaseMirror database.clamav.net — resmi ayna; özel bir ayna kullanmadıkça değiştirmeyin
  • NotifyClamd /etc/clamav/clamd.conf — bir güncellemeden sonra freshclam‘ın clamd‘a sinyal göndermesini sağlar, böylece daemon yeniden başlatılmadan imzaları yeniden yükler

Adım 4: ClamAV Daemon’ını Yapılandırın ve Başlatın

clamd daemon’ı, tam virüs veritabanını RAM’de tutar (veritabanı sürümüne bağlı olarak genellikle 500 MB–1,2 GB). Bu, clamscan‘ın saniyeler süren başlangıç maliyetini ortadan kaldırır ve sık veya eşzamanlı taramalar gerçekleştiren herhangi bir ortam için vazgeçilmez kılar.

Debian/Ubuntu

sudo systemctl start clamav-daemon
sudo systemctl enable clamav-daemon
sudo systemctl status clamav-daemon

CentOS/RHEL 7

RHEL 7’de, servis birimi clamd@scan olarak adlandırılır ve /etc/clamd.d/scan.conf yapılandırma dosyasına başvurur:

sudo systemctl start clamd@scan
sudo systemctl enable clamd@scan

Rocky Linux / AlmaLinux / RHEL 8+

sudo systemctl start clamd@scan
sudo systemctl enable clamd@scan

Temel clamd.conf Parametreleri

Daemon yapılandırması, Debian/Ubuntu’da /etc/clamav/clamd.conf veya RHEL ailesinde /etc/clamd.d/scan.conf konumunda bulunur. Bu yönergeleri gözden geçirin:

sudo nano /etc/clamav/clamd.conf

Önemli ayarlar:

  • LocalSocket /run/clamav/clamd.ctlclamdscan tarafından kullanılan Unix soket yolu; istemci yapılandırmanızla eşleştiğinden emin olun
  • MaxFileSize 100M — taranacak maksimum dosya boyutu; büyük ekler işleyen posta sunucuları için artırın
  • MaxScanSize 400M — sıkıştırma açıldıktan sonra dosya başına taranan maksimum veri
  • StreamMaxLength 100M — milter/akış tabanlı tarama için geçerlidir
  • User clamav — daemon, clamav kullanıcısı olarak çalışır; bu kullanıcının taramayı planladığınız dizinlere okuma erişimi olduğundan emin olun
  • LogFile /var/log/clamav/clamd.log — denetim izleri için kalıcı günlüğü etkinleştirin

Kritik tuzak: clamd kullanıcı clamav olarak çalışıyorsa ve /home/user/uploads/‘ı tarıyorsanız, clamav kullanıcısının o yola okuma izinleri olmalıdır. Bunu unutmak sessiz tarama hatalarına yol açar — clamd, temiz/virüslü kararı döndürmek yerine günlüğünde “Erişim reddedildi” hataları bildirir.

Adım 5: clamscan ve clamdscan ile Tarama Çalıştırma

clamscan ile İsteğe Bağlı Tarama

clamscan bağımsız tarayıcıdır. Her çağrıda veritabanını diskten yükler, bu da onu daha yavaş ama daemon’dan bağımsız kılar.

Belirli bir dizini özyinelemeli olarak tarayın:

clamscan -r /path/to/directory

Yalnızca virüslü dosyaları tarayın ve görüntüleyin:

clamscan -r --infected /path/to/directory

Ayrıntılı çıktıyla tarayın ve sonuçları kaydedin:

sudo clamscan -r --infected --log=/var/log/clamav/manual_scan.log /var/www/html

Virüslü dosyaları karantina dizinine taşıyın:

sudo clamscan -r --move=/var/quarantine /path/to/directory

Virüslü dosyaları otomatik olarak kaldırın (üretimde dikkatli kullanın):

sudo clamscan -r --remove /path/to/directory

Tüm dosya sistemini tarayın (büyük disklerde önemli çalışma süresi bekleyin):

sudo clamscan -r --infected --exclude-dir="^/sys" --exclude-dir="^/proc" --exclude-dir="^/dev" /

/sys, /proc ve /dev‘ı hariç tutmak zorunludur — bu sahte dosya sistemlerini taramak yanlış hatalara ve takılmalara neden olabilir.

clamdscan ile Yüksek Performanslı Tarama

clamd çalışırken, clamscan yerine clamdscan kullanın. Tarama isteklerini Unix soketi üzerinden zaten yüklenmiş daemon’a gönderir ve tekrarlanan veya toplu taramalar için çok daha hızlı hale getirir.

clamdscan --fdpass /path/to/directory

--fdpass bayrağı, dosya tanımlayıcısını doğrudan clamd‘a iletir ve daemon kullanıcısının hedef yolu doğrudan okuyamadığı durumlarda ortaya çıkan izin sorunlarını atlar.

clamdscan ile çok iş parçacıklı tarama:

clamdscan --multiscan --fdpass /var/www/html

--multiscan, clamd‘a iş parçacığı havuzunu kullanarak dosyaları paralel olarak taramasını söyler ve çok çekirdekli sistemlerde duvar saati süresini önemli ölçüde azaltır.

clamscan ile clamdscan: Performans Karşılaştırması

Özellik`clamscan``clamdscan`
Tarama başına veritabanı yüklemeEvet (yavaş başlangıç)Hayır (daemon DB’yi RAM’de tutar)
Tipik başlangıç süresi5–30 saniye1 saniyenin altında
clamd çalışması gerekirHayırEvet
Paralel taramaHayırEvet (--multiscan)
En iyi kullanım durumuTek seferlik manuel taramalarOtomatik, sık veya toplu taramalar
İzin modeliÇağıran kullanıcı olarak çalışırclamav kullanıcısı olarak çalışır (--fdpass kullanın)

Adım 6: Cron ile Taramayı Otomatikleştirin

Sürekli koruma için, cron kullanarak düzenli taramalar zamanlayın. Aşağıdaki örnek, web kökünü her gün sabah 02:00’de tarar ve sonuçları zaman damgasıyla kaydeder.

sudo crontab -e

Aşağıdaki girişi ekleyin:

0 2 * * * /usr/bin/clamdscan --multiscan --fdpass --log=/var/log/clamav/daily_scan_$(date +%Y%m%d).log /var/www/html

E-posta uyarılı üretim düzeyinde cron:

0 2 * * * /usr/bin/clamscan -r --infected /var/www/html 2>&1 | grep -v "^$" | mail -s "ClamAV Daily Scan Report - $(hostname)" admin@yourdomain.com

Bu, boş olmayan çıktıyı doğrudan bir posta alıcısına yönlendirir ve yalnızca bir şey bulunduğunda veya bir hata oluştuğunda uyarı almanızı sağlar. Sunucuda mailutils veya postfix‘ın yapılandırıldığından emin olun.

Sınırsız disk büyümesini önlemek için tarama günlüklerini döndürün:

sudo nano /etc/logrotate.d/clamav-scan
/var/log/clamav/daily_scan_*.log {
    weekly
    rotate 4
    compress
    missingok
    notifempty
}

Adım 7: clamonacc ile Gerçek Zamanlı Erişim Anında Tarama

clamonacc, ClamAV 0.102’de kararlı bir özellik olarak tanıtılan ClamAV’ın erişim anında tarama bileşenidir. Dosya açma ve kapatma olaylarını yakalamak için Linux kernel’inin fanotify alt sistemine bağlanır ve dosyalara erişilmeden önce tarar.

Gereksinimler:

  • Linux kernel 5.1 veya üzeri (FAN_OPEN_EXEC_PERM ile fanotify için)
  • ClamAV 0.102+
  • clamd çalışıyor olmalıdır
  • Root ayrıcalıkları

clamd.conf‘da Erişim Anında Taramayı Etkinleştirin

sudo nano /etc/clamav/clamd.conf

Ekleyin veya yorumu kaldırın:

OnAccessIncludePath /home
OnAccessIncludePath /var/www/html
OnAccessPrevention yes
OnAccessExcludeUname clamav
  • OnAccessPrevention yes — virüslü dosyalara gerçek zamanlı erişimi engeller (engelleme modu); yalnızca tespit modu için no olarak ayarlayın
  • OnAccessExcludeUname clamavclamd‘ın kendisinin özyinelemeli tarama döngülerini tetiklemesini önler

clamonacc‘ı Başlatın

sudo clamonacc --log=/var/log/clamav/clamonacc.log --daemonize

Systemd servisi olarak çalıştırmak için bir birim dosyası oluşturun:

sudo nano /etc/systemd/system/clamonacc.service
[Unit]
Description=ClamAV On-Access Scanner
Requires=clamav-daemon.service
After=clamav-daemon.service

[Service]
Type=simple
ExecStart=/usr/sbin/clamonacc --log=/var/log/clamav/clamonacc.log --foreground
Restart=on-failure

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now clamonacc

Bilinen tuzak: Yüksek verimli sunucularda (örn. yoğun dosya yükleme uç noktaları), OnAccessPrevention yes ölçülebilir I/O gecikmesi yaratabilir. Üretimde engelleme modunu etkinleştirmeden önce iş yükünüzü kıyaslayın. OnAccessIncludePath‘ı / gibi geniş dizinler yerine mümkün olan en dar yola kapsamayı düşünün.

Adım 8: ClamAV’ı Posta Sunucularıyla Entegre Etme

ClamAV’ın en yaygın üretim kullanım durumu posta ağ geçidi taramasıdır. VPS Hosting veya Dedicated Servers altyapınızda bir posta sunucusu çalıştırıyorsanız, ClamAV’ı MTA’nızla entegre etmek kritik bir güvenlik katmanıdır.

Yaygın entegrasyon yığınları:

  • Postfix + amavisd-new + ClamAVamavisd-new, Postfix ile ClamAV arasında içerik filtresi olarak görev yapar ve SpamAssassin’i de yönetir
  • Postfix + clamsmtp — hafif milter tarzı proxy
  • Exim + ClamAV — yerel Exim av_scanner yönergesi, soket üzerinden doğrudan clamd‘ı destekler

Örnek: clamd entegrasyonu /etc/exim4/exim4.conf‘da:

av_scanner = clamd:/run/clamav/clamd.ctl

Bu tek yönerge, tüm mesaj içeriğini teslimattan önce çalışan clamd örneğinden geçirir. Posta altyapınızın tam olarak korunduğundan emin olmak için bunu uygun Email Hosting yapılandırmasıyla eşleştirin.

Yaygın ClamAV Sorunlarını Giderme

freshclam “başka bir işlem tarafından kilitlendi” Hatasıyla Başarısız Oluyor

sudo systemctl stop clamav-freshclam
sudo rm -f /var/lock/clamav/freshclam.lock
sudo freshclam
sudo systemctl start clamav-freshclam

clamd Başlatılamıyor: “HATA: Yapılandırma dosyası açılamıyor/ayrıştırılamıyor”

Yapılandırma dosyası yolunu ve sözdizimini doğrulayın:

sudo clamd --config-file=/etc/clamav/clamd.conf --debug 2>&1 | head -50

Yüksek Bellek Kullanımı

clamd genellikle tam veritabanı yüklüyken 500 MB–1,2 GB RAM tüketir. Bellek kısıtlı sistemlerde şunları düşünün:

  • Eşzamanlılığı sınırlamak için clamd.conf‘da MaxThreads 2 ayarını yapın
  • Seyrek taramalar için daemon olmadan clamscan kullanın
  • Yeterli RAM’e sahip bir plana yükseltin — clamd‘ı bir web yığınıyla birlikte çalıştırmak için en az 2 GB RAM’e sahip bir VPS Hosting planı pratik minimumdur

Tarama Dosyalar için “Erişim reddedildi” Döndürüyor

clamd daemon’ı clamav kullanıcısı olarak çalışır. Okuma erişimi verin:

sudo setfacl -R -m u:clamav:rX /path/to/scan

Veya çağıran kullanıcının bağlamından dosya tanımlayıcıları iletmek için clamdscan --fdpass kullanın.

Yanlış Pozitifler

ClamAV zaman zaman meşru dosyaları, özellikle sıkıştırılmış arşivleri veya belirli PHP çerçevelerini işaretler. Bilinen güvenli bir dosyayı karma ile beyaz listeye eklemek için:

sigtool --md5 /path/to/legitimate/file >> /var/lib/clamav/whitelist.fp

.fp dosyalarını değiştirdikten sonra clamd‘ı yeniden başlatın.

Paylaşımlı Hosting, VPS ve Dedicated Server’da ClamAV

Dağıtım modeli, ClamAV’ın nasıl yapılandırılması gerektiğini önemli ölçüde etkiler:

OrtamÖnerilen ModNotlar
Shared Web HostingCron aracılığıyla isteğe bağlı clamscanRoot erişimi yok; daemon modu kullanılamaz
VPS (2–4 GB RAM)clamd daemon + cron clamdscanPerformansı bellek kısıtlamalarıyla dengeleyin
Dedicated Serverclamd + clamonacc + posta entegrasyonuTam özellik seti; kaynak ödünleşimi yok
GPU/Yüksek hesaplama düğümüYalnızca clamd daemonVeri hatlarında clamonacc I/O yükünden kaçının

Maksimum verim ve güvenlik araçları üzerinde tam kontrol gerektiren ortamlar için, Dedicated Servers, kaynak çekişmesi olmadan clamd, clamonacc ve posta taramasını eş zamanlı çalıştırmak için gereken donanım kapasitesini sağlar.

Teknik Karar Matrisi ve Temel Çıkarımlar

ClamAV’ı dağıtmadan önce aşağıdakilerin her birini doğrulayın:

  • Kernel sürümüuname -r çalıştırın; clamonacc gerekiyorsa 5.1+ olduğunu doğrulayın
  • Mevcut RAMclamd 1–1,5 GB gerektirir; daemon’ı etkinleştirmeden önce buna göre planlayın
  • freshclam otomasyonuclamav-freshclam.service‘ın etkin olduğunu ve freshclam.conf‘da NotifyClamd‘ın ayarlandığını doğrulayın
  • Soket izinlericlamav kullanıcısının tüm tarama hedeflerini okuyabildiğini doğrulayın; ACL’lerin pratik olmadığı durumlarda clamdscan ile --fdpass kullanın
  • Hariç tutma yolları — özyinelemeli taramalardan her zaman /proc, /sys, /dev‘ı hariç tutun
  • Günlük döndürme — günlük cron işlerini etkinleştirmeden önce tüm ClamAV günlük dosyaları için logrotate uygulayın
  • OnAccessPrevention — üretim sistemlerinde engelleme moduna (yes) geçmeden önce yalnızca tespit modunda (no) test edin
  • Posta entegrasyonu — bir posta sunucusu çalıştırıyorsanız, yalnızca periyodik dosya taramaları değil, amavisd-new veya yerel MTA av_scanner yönergesi aracılığıyla entegre edin
  • Karantina dizini--move kullanmadan önce uygun sahiplikle /var/quarantine‘ı önceden oluşturun; clamscan bunu otomatik olarak oluşturmaz
  • Yanlış pozitif yönetimi — bir .fp beyaz liste dosyası tutun ve gerileme için her veritabanı güncellemesinden sonra tarama günlüklerini gözden geçirin

Sıkça Sorulan Sorular

ClamAV varsayılan olarak Linux’ta gerçek zamanlı koruma sağlar mı?

Hayır. Kurulumdan sonra ClamAV yalnızca isteğe bağlı modda çalışır. Gerçek zamanlı koruma, clamd.conf‘da clamonacc ile OnAccessIncludePath ve OnAccessPrevention yönergelerinin açıkça etkinleştirilmesini ve fanotify‘ı destekleyen bir kernel (5.1+) gerektirir.

clamscan ile clamdscan arasındaki fark nedir?

clamscan, her çağrıda virüs veritabanını diskten yükleyen bağımsız bir ikilidir ve 5–30 saniyelik başlangıç gecikmesine neden olur. clamdscan, veritabanını RAM’de tutan zaten çalışan clamd daemon’ına tarama işleri gönderen ince bir istemcidir — bu da onu tekrarlanan veya otomatik taramalar için önemli ölçüde daha hızlı kılar.

ClamAV’ın daemon’ı ne kadar RAM gerektirir?

Mevcut tam veritabanıyla (main + daily + bytecode) clamd genellikle 700 MB ile 1,2 GB arasında yerleşik bellek gerektirir. Toplam RAM’i 2 GB’ın altında olan sistemlerde, daemon’ı bir web sunucusu veya veritabanıyla birlikte çalıştırmak bellek baskısına neden olabilir. Bellek kısıtlı örneklerde daemon olmadan clamscan kullanın.

ClamAV sıkıştırılmış arşivleri ve e-posta eklerini tarayabilir mi?

Evet. ClamAV, ZIP, RAR, 7z, TAR, GZIP, BZIP2, CAB ve diğer birçok arşiv formatını, ayrıca OLE2 belgelerini (Microsoft Office), PDF dosyalarını ve ELF/PE yürütülebilir dosyalarını yerel olarak açar ve tarar. clamd.conf‘daki MaxScanSize ve MaxFileSize yönergeleri, arşiv taraması için derinlik ve boyut sınırlarını kontrol eder.

Neden freshclam kurulumdan hemen sonra “başka bir işlem tarafından kilitlendi” bildiriyor?

Debian/Ubuntu’da, clamav-freshclam systemd servisi paket kurulumundan sonra otomatik olarak başlar ve veritabanı dizini üzerinde özel bir kilit tutar. Bu servis etkinken freshclam‘ı manuel olarak çalıştırmak bir kilit çakışmasına neden olur. Servisi sudo systemctl stop clamav-freshclam ile durdurun, manuel güncellemeyi çalıştırın, ardından servisi yeniden başlatın.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın