สแกนไวรัสและมัลแวร์บน Linux Server ด้วย ClamAV
แม้ Linux จะถูกโจมตีด้วยไวรัสแบบที่ระบาดบน Windows น้อยกว่ามาก แต่เซิร์ฟเวอร์ที่ให้ผู้ใช้อัปโหลดไฟล์ หรือทำหน้าที่เป็นเมลเซิร์ฟเวอร์ ก็เป็นทางผ่านของไฟล์อันตรายไปยังเครื่องปลายทางได้ และเว็บที่ถูกแฮกมักถูกฝัง Web Shell ซึ่ง ClamAV ตรวจจับได้
คู่มือนี้ติดตั้ง ClamAV ตั้งการสแกนตามเวลา และตั้งการสแกนแบบทันทีเฉพาะโฟลเดอร์ที่รับไฟล์จากภายนอก ซึ่งเป็นการตั้งค่าที่สมดุลระหว่างความปลอดภัยกับภาระของเครื่อง
สิ่งที่ต้องเตรียม
- Linux Server และสิทธิ์
sudo - หน่วยความจำว่างอย่างน้อย 1.5 GB เพราะ
clamdโหลดฐานข้อมูลไวรัสไว้ในหน่วยความจำ
# Ubuntu / Debian
sudo apt install -y clamav clamav-daemon clamav-freshclam
# AlmaLinux / Rocky Linux
sudo dnf install -y epel-release
sudo dnf install -y clamav clamd clamav-update
ขั้นตอนที่ 1: อัปเดตฐานข้อมูลไวรัส
sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam
sudo systemctl enable clamav-freshclam
ต้องหยุดเซอร์วิสก่อนรัน freshclam ด้วยมือ ไม่เช่นนั้นจะชนกันเพราะทั้งคู่ล็อกไฟล์ฐานข้อมูลเดียวกัน
ตรวจว่าฐานข้อมูลใหม่จริง
sudo ls -lh /var/lib/clamav/
clamscan --version
ฐานข้อมูลที่เก่าเกินหนึ่งสัปดาห์แทบไม่มีประโยชน์ ตรวจว่าเซอร์วิสอัปเดตทำงานอยู่ด้วย sudo systemctl status clamav-freshclam
ขั้นตอนที่ 2: ทดสอบว่าตรวจจับได้
ใช้ไฟล์ทดสอบมาตรฐาน EICAR ซึ่งไม่ใช่ไวรัสจริงแต่โปรแกรมป้องกันไวรัสทุกตัวตกลงกันว่าจะตรวจจับ
cd /tmp
curl -sO https://secure.eicar.org/eicar.com.txt
clamscan eicar.com.txt
ควรเห็นผลลัพธ์ eicar.com.txt: Win.Test.EICAR_HDB-1 FOUND จากนั้นลบไฟล์ทดสอบทิ้ง
rm -f /tmp/eicar.com.txt
ขั้นตอนที่ 3: สแกนด้วยมือ
# สแกนโฟลเดอร์เดียว แสดงเฉพาะที่พบ
clamscan -r -i /var/www
# สแกนทั้งเครื่อง ข้ามระบบไฟล์เสมือน
sudo clamscan -r -i / \
--exclude-dir='^/sys' --exclude-dir='^/proc' \
--exclude-dir='^/dev' --exclude-dir='^/var/lib/clamav'
# จำกัดขนาดไฟล์ที่สแกนเพื่อความเร็ว
clamscan -r -i --max-filesize=50M --max-scansize=200M /var/www
ตัวเลือก -i คือแสดงเฉพาะไฟล์ที่ติดเชื้อ ทำให้ผลอ่านง่ายมาก และ -r คือสแกนลงไปในโฟลเดอร์ย่อย
ขั้นตอนที่ 4: ใช้ clamd เพื่อให้สแกนเร็วขึ้น
clamscan โหลดฐานข้อมูลใหม่ทุกครั้งที่รัน ซึ่งใช้เวลาหลายสิบวินาที ส่วน clamdscan ส่งงานให้เซอร์วิสที่โหลดฐานข้อมูลค้างไว้แล้ว จึงเร็วกว่ามาก
sudo systemctl enable --now clamav-daemon
sudo systemctl status clamav-daemon --no-pager
clamdscan --fdpass -i /var/www
ตัวเลือก --fdpass จำเป็นเมื่อ clamd รันด้วยผู้ใช้ที่ไม่มีสิทธิ์อ่านไฟล์นั้นโดยตรง
ขั้นตอนที่ 5: ตั้งสแกนตามเวลา
sudo nano /usr/local/bin/clamav-scan.sh
#!/bin/bash
set -uo pipefail
TARGETS="/var/www /home /tmp /var/tmp"
QUARANTINE=/var/quarantine
LOG=/var/log/clamav/scan-$(date +%F).log
mkdir -p "$QUARANTINE"
chmod 700 "$QUARANTINE"
clamdscan --fdpass --multiscan -i \
--move="$QUARANTINE" \
--log="$LOG" $TARGETS
STATUS=$?
if [ "$STATUS" -eq 1 ]; then
mail -s "ClamAV พบไฟล์ต้องสงสัยบน $(hostname)" [email protected] < "$LOG"
fi
exit 0
sudo mkdir -p /var/log/clamav
sudo chmod +x /usr/local/bin/clamav-scan.sh
สร้าง systemd Timer ให้รันทุกคืน
sudo nano /etc/systemd/system/clamav-scan.service
[Unit]
Description=สแกนไวรัสตามรอบ
[Service]
Type=oneshot
ExecStart=/usr/local/bin/clamav-scan.sh
Nice=19
IOSchedulingClass=idle
sudo nano /etc/systemd/system/clamav-scan.timer
[Unit]
Description=สแกนไวรัสทุกคืนตีสอง
[Timer]
OnCalendar=*-*-* 02:00:00
RandomizedDelaySec=1800
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now clamav-scan.timer
systemctl list-timers | grep clamav
บรรทัด Nice=19 และ IOSchedulingClass=idle ทำให้การสแกนใช้ทรัพยากรเฉพาะตอนที่เครื่องว่าง ไม่แย่งงานจริง
ขั้นตอนที่ 6: สแกนทันทีเมื่อมีไฟล์อัปโหลด
เหมาะกับโฟลเดอร์ที่รับไฟล์จากผู้ใช้ อย่าเปิดกับทั้งเครื่องเพราะจะกินทรัพยากรมาก
sudo nano /etc/clamav/clamd.conf
ScanOnAccess true
OnAccessMountPath /var/www/example.com/public/uploads
OnAccessPrevention true
OnAccessExcludeUname clamav
sudo systemctl restart clamav-daemon
sudo journalctl -u clamav-daemon -n 30 --no-pager
ต้องมีโมดูล fanotify ในเคอร์เนล ซึ่งมีในเคอร์เนลรุ่นใหม่ทุกตัว หากไม่ทำงานให้ตรวจข้อความใน Log ของเซอร์วิส
ขั้นตอนที่ 7: จัดการไฟล์ที่ตรวจพบ
sudo ls -lh /var/quarantine/
sudo clamscan --infected --no-summary /var/quarantine/
อย่าลบทันที ให้ตรวจก่อนว่าเป็นผลบวกลวงหรือไม่ โดยเฉพาะไฟล์ในโฟลเดอร์ของเว็บที่อาจเป็นไฟล์จริงของระบบ หากเป็นเว็บที่ถูกแฮก ให้ทำตามขั้นตอนกู้คืนอย่างครบถ้วน ไม่ใช่แค่ลบไฟล์ที่พบ เพราะช่องทางที่ผู้โจมตีเข้ามายังอยู่
ปัญหาที่พบบ่อย
clamav-daemon เริ่มไม่ขึ้น
สาเหตุอันดับหนึ่งคือหน่วยความจำไม่พอ ฐานข้อมูลไวรัสใช้ราว 1.2 GB ตรวจด้วย free -h และดู Log ด้วย sudo journalctl -u clamav-daemon -n 50 หากเครื่องเล็กมาก ให้ใช้ clamscan ตามเวลาแทนการรัน daemon ค้างไว้
freshclam ล้มเหลว ขึ้น WARNING: Can't query
มักเป็นการถูกจำกัดจำนวนครั้งจากฝั่งผู้ให้บริการฐานข้อมูล รอสักครู่แล้วลองใหม่ และตรวจว่าไม่ได้ตั้งให้อัปเดตถี่เกินไปใน /etc/clamav/freshclam.conf
สแกนแล้วเครื่องช้ามาก
ใช้ Nice และ IOSchedulingClass=idle ตามขั้นตอนที่ 5 จำกัดขนาดไฟล์ที่สแกน และเลี่ยงการสแกนโฟลเดอร์ข้อมูลขนาดใหญ่ที่ไม่ได้รับไฟล์จากภายนอก เช่น โฟลเดอร์ข้อมูลของฐานข้อมูล
แจ้งว่าพบแต่เป็นไฟล์ปกติของระบบ
ส่งไฟล์ให้ผู้พัฒนาตรวจสอบเพื่อถอดออกจากฐานข้อมูล และระหว่างนั้นเพิ่มเข้ารายการยกเว้นด้วย ExcludePath ใน clamd.conf ระบุให้แคบที่สุดเท่าที่ทำได้
หากสงสัยว่าเซิร์ฟเวอร์ถูกบุกรุก ติดต่อทีมงาน THAI DATA CLOUD ทันทีที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี








