ClamAV เป็นแอนตี้ไวรัสโอเพนซอร์ส ใช้ตรวจจับไวรัส โทรจัน และมัลแวร์ มักใช้บนแพลตฟอร์ม Linux เพื่อสแกนไดเรกทอรีผู้ใช้ที่เข้าถึงได้ผ่าน FTP หรือ Samba, ไดเรกทอรีเว็บไซต์ หรืออีเมลบนเซิร์ฟเวอร์จดหมาย (ในฐานะเอจент MTA)
ในบทความนี้ เราจะแสดงวิธีติดตั้ง กำหนดค่า และใช้ ClamAV บนโฮสต์ที่รัน CentOS หรือ RHEL Linux
การติดตั้ง ClamAV บน CentOS/RHEL
ClamAV ไม่พร้อมในที่เก็บ Linux พื้นฐาน ดังนั้นคุณต้องใช้ที่เก็บ EPEL เพื่อติดตั้งบนโฮสต์ของคุณ:
# yum install epel-release -y
หลังจากติดตั้งที่เก็บแล้ว คุณสามารถดำเนินการติดตั้งแพ็กเกจ ClamAV ต่อไป ตัวจัดการแพ็กเกจ yum ใช้สำหรับติดตั้ง (หรือ dnf ใน CentOS 8):
# yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

การกำหนดค่าพื้นฐานของ ClamAV ใน Linux
เพื่อตั้งค่าการกำหนดค่า ClamAV ของคุณเอง ให้ลบการกำหนดค่าเริ่มต้นใน /etc/clam.d/scan.conf
# sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf
จากนั้นเปิดไฟล์กำหนดค่า:
# nano /etc/clamd.d/scan.conf
และ uncomment บรรทัดต่อไปนี้:
LocalSocket /run/clamd.scan/clamd.sock
คุณยังสามารถ uncomment บรรทัดที่มีการตั้งค่าที่คุณต้องการได้ เช่น เปิดใช้งานการบันทึกล็อก หรือกำหนดจำนวนการเชื่อมต่อสูงสุด
ไฟล์ /etc/clamd.d/scan.conf มีคำอธิบายโดยละเอียดของทุกการตั้งค่า
เพื่ออัปเดตฐานข้อมูลลายเซ็นแอนตี้ไวรัสสำหรับ ClamAV คุณต้องใช้ freshclam สำรองไฟล์กำหนดค่าปัจจุบันของคุณ:
# cp /etc/freshclam.conf /etc/freshclam.conf.bak
จากนั้นรันคำสั่งนี้:
# sed -i -e "s/^Example/#Example/" /etc/freshclam.conf
และอัปเดตคำจำกัดความแอนตี้ไวรัสของคุณ:
# freshclam

ระหว่างการอัปเดต คุณอาจเห็นข้อผิดพลาดบางอย่างหากคุณไม่สามารถดาวน์โหลดอัปเดตได้ Freshclam จะค้นหา mirror โดยอัตโนมัติเพื่อดาวน์โหลดอัปเดตให้สำเร็จ
เพื่อให้ freshclam ตรวจสอบอัปเดตโดยอัตโนมัติ คุณอาจรันมันด้วยพารามิเตอร์ -d:
# freshclam -d — ดังนั้น มันจะตรวจสอบอัปเดตทุก 2 ชั่วโมง

เพื่อรันได้ง่ายขึ้น ให้สร้างไฟล์บริการสำหรับ freshclam:
# nano /usr/lib/systemd/system/freshclam.service
และเพิ่มเนื้อหาต่อไปนี้:
[Unit] Description = freshclam After = network.target [Service] Type = forking ExecStart = /usr/bin/freshclam -d -c 4 Restart = on-failure PrivateTmp = true RestartSec = 10sec [Install] WantedBy=multi-user.target
โหลด systemd daemon ใหม่:
# systemctl daemon-reload
จากนั้นคุณสามารถเริ่มบริการและเพิ่มเข้าไปในการเริ่มต้น:
# systemctl start freshclam.service
# systemctl enable freshclam.service
# systemctl status freshclam.service

เช่นเดียวกับที่คุณทำสำหรับ freshclam สร้างบริการสำหรับ ClamAV ไฟล์กำหนดค่ามีอยู่แล้ว แต่คุณจะต้องเปลี่ยนชื่อ:
# mv /usr/lib/systemd/system/clamd\@.service /usr/lib/systemd/system/clamd.service
เพื่อความสะดวก เราได้ลบ \@ ออก
นอกจากนี้ ให้เปลี่ยนการกำหนดค่าในไฟล์:
[Unit] Description = clamd scanner daemon After = syslog.target nss-lookup.target network.target [Service] Type = forking ExecStart = /usr/sbin/clamd -c /etc/clamd.d/scan.conf # Reload the database ExecReload=/bin/kill -USR2 $MAINPID Restart = on-failure TimeoutStartSec=420 [Install] WantedBy = multi-user.target
จากนั้นคุณสามารถรันบริการแอนตี้ไวรัสหรือเปิดใช้งาน:
# systemctl start clamd.service
# systemctl enable clamd.service

วิธีสแกนไวรัสด้วย ClamAV
หลังจากที่คุณกำหนดค่าบริการแอนตี้ไวรัส ClamAV แล้ว คุณสามารถสแกนไดเรกทอรีเซิร์ฟเวอร์ใดๆ เพื่อหาไวรัส (โหมดสแกนเนอร์) ในการสแกนไดเรกทอรีที่ระบุเพื่อหาไวรัส ใช้คำสั่งต่อไปนี้:
# clamscan --infected --remove --recursive /var/www/

ด้วยพารามิเตอร์เหล่านี้ แอนตี้ไวรัสจะลบไฟล์ที่ติดเชื้อทันที หากคุณต้องการย้ายไฟล์ที่น่าสงสัยไปยังไดเรกทอรีแยก ให้รันการสแกนโดยใช้พารามิเตอร์ —move:
# clamscan --infected --recursive --move=/tmp/clamscan /var/www
คำสั่งนี้จะสแกนเนื้อหาทั้งหมดของไดเรกทอรีที่ระบุและย้ายไฟล์ที่น่าสงสัยไปที่ /tmp/clamscan

ตามที่เราเห็น ไฟล์ที่ติดเชื้อถูกย้ายไปยังไดเรกทอรีที่ระบุ:

คุณยังสามารถเพิ่มพารามิเตอร์ —log=/var/log/clamscan.log เพื่อเขียนข้อมูลทั้งหมดเกี่ยวกับกระบวนการสแกนในไฟล์ล็อกที่คุณระบุ:

หากคุณต้องการ استثنيาบางไดเรกทอรีออกจากการสแกน ใช้พารามิเตอร์ —exclude-dir:
# clamscan -i --recursive --move=/tmp/clamscan --log=/var/log/clamscan.log --exclude-dir="/var/www/administrator" /var/www
เพื่อสแกนไวรัสเป็นประจำ คุณสามารถกำหนด cron job ด้วยการตั้งค่าที่คุณต้องการ
มี frontend แบบกราฟิกสำหรับแอนตี้ไวรัส ClamAV ชื่อ ClamTk