Linux ClamAV antivirüs kurulumu ve konfigürasyonu

Merhabalar,

Linux kullanıcılarının, genelde virüslerden etkilenmeyeceklerini ve çok güvende olabilecekleri konusunda yanılgılar içinde olduklarını görmekteyim. Linux sistemleri etkileyen zararlı yazılımlar, windows ortamlarındaki kadar çok değil belki ama bu sizin tamamen güvende olacağınızı da göstermemeli. Bu amaçla, biraz farkındalık yaratabilmek için, linux sistemlerde bir antivirüs uygulaması olan ClamAV antivirüs hakkında bilgiler aktaracağım.

ClamAV nedir?

ClamAV, Linux tabanlı sistemlerde virüsleri, truva atlarını, kötü amaçlı yazılımları ve diğer kötü amaçlı yazılım türlerini tespit etmek için kullanılan, açık kaynak kodlu bir anti-virüs yazılımıdır. ClamAV AntiVirus, esasen mail gateway’ler üzerinde, e-posta taraması için özel olarak tasarlanmış, açık kaynaklı bir anti-virüs araç setidir.

Esnek ve ölçeklenebilir multi-threat bir arka plan programı, bir komut satırı tarayıcısı ve otomatikleştirilmiş veritabanı güncellemeleri için gelişmiş bir araç dahil olmak üzere, bir dizi uygulamayı, kullanıcılarına sunar. Temelde, aşağıdaki bileşene sahiptir.

clamdscan : Basit bir tarama istemcisidir. clamd instance aracılığıyla gerçek zamanlı koruma sağlar.

clamdtop : clamd için, bir kaynak izleme arayüzüdür.

Clamd, çalışması için bir antivirüs imza veritabanı gerektirdiğinden, clamd’ı freshclam kullanarak çalıştırmadan önce ClamAV’ın resmi imzalarının ayarlanması gerekmektedir.

Daemon, clamd.conf içinde belirtilen soketlerdeki komutları dinleyerek çalışır. Dinleme, hem unix yerel soketleri hem de TCP soketleri üzerinden desteklenir.

ClamAV Özellikleri

  • ClamAV, dosyaları hızlı bir şekilde taramak için tasarlanmıştır.
  • Gerçek zamanlı koruma sağlar.
  • ClamAV 1 milyondan fazla virüs, solucan ve truva atı, mobil kötü amaçlı yazılım ve diğer tehditleri tespit eder.
  • Hemen hemen tüm posta dosyası formatlarını destekler.
  • HTML, Flash, RTF, MS Office, MacOffice ve PDF gibi tüm dosya formatlarını destekler.
  • Zip, RAR, Dmg, Tar, Gzip, Bzip2, OLE2, Cabinet, CHM, BinHex, SIS ve diğerleri gibi çeşitli arşiv formatları için desteği de vardır.

Linux üzerinde ClamAV kurulumu

Clamav paketi, Fedora deposunun bir parçasıdır, ancak Kurumsal Linux dağıtımları için (RHEL, Oracle Linux, CentOS veya Scientific Linux), dağıtım resmi deposunda bulunmayabileceği için, paketleri yüklemeden önce EPEL yum deposunu etkinleştirmeniz gerekir.

Ben bu uygulamalarımı, Oracle Linux 8.x sunucu üzerinden anlatacağım. RHEL ve CentOS üzerinde de aynı bu uygulamayla, yükleme işlemlerini gerçekleştirebilirsiniz. Ben kurulumlarda, Debian ve Ubuntu komut karşılıklarını da vereceğim. Zaten sadece yükleme komutları farklı. Config dosyalarını düzenleme adımları hepsi için aynı olacak.

Dolayısıyla, Oracle linux kullanacaksanız, Oracle linux server üzerinde EPEL etkinleştirmek için yazdığım aşağıdaki makaleyi incelemeniz ve EPEL deposunu, bu şekilde konfigüre etmeniz gerekmektedir.

Komut satırından Oracle linux üzerine EPEL deposunu yüklemek isterseniz, aşağıdaki komutu da kullanabilirsiniz.

dnf install -y oracle-epel-release-el8

RHEL/CentOS 8 ve Fedora’da EPEL etkinleştirmek için;

dnf install -y epel-release

EPEL etkinleştirme işleminden sonra, aşağıdaki komutla Allah ne verdiyse, full kurulumu yapıyoruz. 🙂

dnf install -y clamav clamav-server clamav-server-systemd clamav-data clamav-update clamav-filesystem clamav-scanner-systemd clamav-devel clamav-lib

Debian-Ubuntu sunucularda clamav kurmak için

apt-get update

apt-get install clamav

ClamAV SELinux konfigürasyonu

Red Hat tabanlı sistemler, SELinux politikasını kullanır ve default olarak enable durumda gelir. Bu nedenle ClamAV’ın düzgün çalışması için “antivirus_can_scan_system” ayarını manuel olarak etkinleştirmeniz gerekebilir. Ben genelde SELinux disable yapıyorum, fakat enable durumda kullanmak isteyecekler için de bu  ayarı gösterebilmek için disable duruma almadım.

SELinux durumunu kontrol edelim.

sestatus

Eğer SELinux’u tamamen devre dışı bırakmak isterseniz, konfigürasyon dosyasında “enable” değerini, “disable” olarak değiştirmeniz gerekir.

nano /etc/selinux/config

Eğer disable duruma getirmeden devam etmek isterseniz de, aşağıdaki komutla ilgili düzenlemeyi yapmanız gerekiyor.

setsebool -P antivirus_can_scan_system 1

Virüs database update (freshclam)

ClamAV kurulduktan sonra, virüs tanımlarını güncellemeniz gerekecektir. Bu işlem, freshclam komutu kullanılarak yapılır. İlk seferde Warning’ler görebilirsiniz. Bunun sebebi, daha önce herhangi bir diff ya da incremental güncelleme yapılmamış olmasıdır.

freshclam

Otomatik virüs database update

Virüs database güncellemesi, siz belirtmediğiniz sürece, otomatik olarak yapılmaz. Bunun düzenli olarak yapılması için, “root” kullanıcı için crontab’a dahil ederek planlamak mantıklı olacaktır. Linux’ta, root kullanıcı olarak çalışması gereken cron işlerini tanımlamak için, crontab -e komutu kullanılır.

Örneğin, virüs tanımlarını her gün saat 10:00’da otomatik update etmek için, crontab girişimiz şu şekilde olacaktır.

crontab -e

# Update ClamAV virus definitions

0 10 * * * /usr/bin/freshclam

Buraya girdiğimiz değerlerden sonra, vi editöründen nasıl kaydedip çıkıyorsak o şekilde çıkış yapabiliriz. : işaretinden sonra wq ile kaydedip çıkabiliriz.

Oluşturduğumuz cron job’ların listesini de aşağıdaki komutla görebiliriz.

crontab -l

Desktop GUI ortamınız yüklü ise

Eğer linux sisteminizde desktop ortamı da yüklediyseniz, bu yazılımı basit anlamda grafik arabirimden kullanma imkanınız da var. Aşağıdaki komutla, bu yüklemeyi yapabilirsiniz.

dnf install clamtk -y

ClamTk’i doğrudan veya sudo kullanarak “root” kullanıcı olarak çalıştırmayı unutmayın.

ClamAV ve Clamd konfigürasyonu nasıl yapılır?

Clamav’ı kullanmak için birkaç yapılandırma bitinin değiştirilmesi gerekir. Öncelikle, var olan konfig dosyamızın bir yedeğini oluşturuyoruz.

cp /etc/clamd.d/scan.conf /etc/clamd.d/scan.conf.bk

Clamd konfigürasyonu

“clamdscan” ve diğer uygulamaların clamd ile etkileşime girmesine izin veren aşağıdaki soket seçeneğinin açıklamasını kaldırmamız gerekir. /etc/clamd.d/scan.conf dosyasında “LocalSocket” parametresini bulup, satır önünde buluna # işaretini kaldırıyoruz. Kısaca, açıklama satırı iken, etkin bir satır haline getiriyoruz. Alttaki ikinci komut ile LocalSocket grep’lediğimizde, listede sadece o satırın aktif olduğunu göreceğiz.

sed -i ‘s/#LocalSocket \/run/LocalSocket \/run/g’ /etc/clamd.d/scan.conf

grep -n ‘LocalSocket’ /etc/clamd.d/scan.conf

ClamAV konfigürasyonu

Clamav’ı Systemd kontrol yetenekleriyle etkinleştirmeden önce, bunun için “/usr/lib/systemd/system/clamd@.service” dosyasında, iki basit yapılandırma değişikliği yapmamız da gerekiyor. Eğer bunları yapmazsak, servisi başlatamayız ve hatalar alırız.

sed -i ‘s/scanner (%i) daemon/scanner daemon/g’ /usr/lib/systemd/system/clamd@.service

sed -i ‘s/\/etc\/clamd.d\/%i.conf/\/etc\/clamd.d\/scan.conf/g’ /usr/lib/systemd/system/clamd@.service

Clamd servisini artık etkinleştirebiliriz. Sonrasında ise servisi başlatıyoruz.

systemctl enable clamd@.service

systemctl start clamd@scan

Servisin durumunu da kontrol edelim ve sağlıklı çalıştığını görelim.

systemctl status clamd@scan

clamscan aracı ile tarama nasıl yapılır?

clamscan, dosyaları veya dizinleri virüslere karşı taramak için libclamav kullanan bir komut satırı aracıdır. Clamdscan’den farklı olarak clamscan, çalışan bir clamd servisi gerektirmez. Bunun yerine, clamscan yeni bir motor oluşturur ve her çalıştırıldığında onu virüs veritabanına yükler. Komut satırında belirtilen dosyaları veya dizinleri tarar, bir tarama raporu oluşturur ve çıkar.

Şimdi bununla ilgili birkaç örnek uygulama yapalım.

1. Tüm kullanıcıların ana dizinlerini taramak için aşağıdaki komutu çalıştırabilirsiniz.

clamscan –infected –recursive /home

2. Tüm sistemi taramak için aşağıdaki komutu çalıştırabilirsiniz.

clamscan –recursive /

3. Sistemdeki tüm dosyaları tarayarak, yalnızca virüslü dosyaları görüntülemek ve bulunursa sinyal vermek için;

clamscan -r –bell -i /

4. Etkilenen tüm dosyaları, daha sonra incelenmek üzere ayrı bir dosyaya taşımak istersek;

clamscan -r /taranan/dizin/yolu/ | grep FOUND >> /path/to/save/report/file.txt

5. Kullanıcının ana dizinindeki dosyaları taramak ve etkilenen dosyaları belirli bir dosyaya kaydetmek için aşağıdaki komutu kullanabiliriz.

clamscan -ril /var/log/clamscan.log /home/$USER

6. Kullanıcının ana dizinindeki dosyaları taramak ve etkilenen dosyaları kaldırmak için aşağıdaki komutu çalıştırabiliriz.

clamscan -r –remove /home/$USER

7. Kullanıcıların tüm ana dizinlerini taramak ve yalnızca “yusuf” kullanıcı hesabını hariç tutmak için aşağıdaki komutu çalıştırabiliriz.

clamscan –exclude=yusuf -i -r /home/$USER

8. Belli bir dosyayı taramak için;

clamscan /tmp/test.txt

9. Belli bir dizini taramak için;

clamscan /tmp/isleyen

10. Belli bir dizini ve tüm alt dizinlerini taramak için;

clamscan -r /tmp/isleyen

Clamscan komutunun birçok kullanım seçeneği vardır, bu nedenle man sayfalarını kontrol etmenizde fayda olacaktır.

clamdscan aracı ile tarama nasıl yapılır?

clamdscan, dosyaları clamd ile tarama işlemini büyük ölçüde kolaylaştıran bir clamd istemcisidir. Clamd.conf içinde belirtilen soket üzerinden, clamd arka plan programına komutlar gönderir ve daemon tarafından istenen tüm taramalar tamamlandığında bir tarama raporu oluşturur.

Clamdscan ile /home dizini ve tüm alt dizinleri taramak için aşağıdaki komut kullanılabilir.

clamdscan –recursive /home

ClamAV ile otomatik virüs taraması nasıl yapılır?

Günlük olarak taramak istiyorsanız, öncelikle aşağıdaki gibi bir script hazırlayalım. Örneğin home dizinini taratacak aşağıdaki gibi bir script olsun. Tüm sistem için, home yerine / yazmanız gerekiyor.

nano /etc/cron.daily/clamav_scan.sh                                             

#!/bin/bash

SCAN_DIR=”/home”

LOG_FILE=”/var/log/clamav/dailyscan.log”

/usr/bin/clamscan -ri $SCAN_DIR >> $LOG_FILE

“/etc/cron.daily/clamav_scan.sh” dosyasını executable hale getirelim.

chmod +x /etc/cron.daily/clamav_scan.sh

Her gün sizin belirlediğiniz saatte çalışması için, yine crontab içine ekleyebilirsiniz. Yukarıdaki örneklerde, her gün saat 10:00 da, otomatik virüs database update yapılabilmesi için, root yetkileriyle çalışacak bir update komutu yazmıştık.

Şimdi burada da 11:00 de çalışacak şekilde, otomatik virüs taraması yapacak bir girdi ekleyelim…

crobtab -e

crontab -l

Linux sistemler üzerinde, ClamAV antivirüs kurulumu ve konfigürasyonuyla ilgili anlatacaklarım, şimdilik bunlardan ibaret. Aslında birçok uygulamayı burada aktardım ve bunun üzerine çok daha fazlasını da ekleyebileceğiniz şekilde bir temel oluşturdum. Benzeri ve çok daha iyi uygulamaları, artık sistemleriniz üzerinde yapabilecek durumdasınız.

Yararlı olması dileğiyle.

Yusuf İşleyen