ตรวจจับการเปลี่ยนแปลงไฟล์ด้วย AIDE Host IDS บน VPS
AIDE (Advanced Intrusion Detection Environment) สร้าง database fingerprint ของไฟล์ทั้งหมดบน VPS เมื่อรัน check ครั้งต่อไปจะเปรียบเทียบและแจ้งทันทีถ้ามีไฟล์ถูกแก้ไข เพิ่ม หรือลบ ช่วยตรวจจับ rootkit, backdoor หรือการบุกรุกที่ไม่ได้รับอนุญาตก่อนจะสาย
ติดตั้ง AIDE
sudo apt update
sudo apt install aide aide-common -y
# ตรวจ
aide --version
ตั้ง Config (/etc/aide/aide.conf)
sudo nano /etc/aide/aide.conf
# Database location
database_in=file:/var/lib/aide/aide.db.gz
database_out=file:/var/lib/aide/aide.db.new.gz
database_new=file:/var/lib/aide/aide.db.new.gz
gzip_dbout=yes
# Rules definitions
FIPSR = p+i+n+u+g+s+m+S+sha512+acl+selinux+xattrs
# Monitor ไฟล์ system สำคัญ
/bin FIPSR
/sbin FIPSR
/usr/bin FIPSR
/usr/sbin FIPSR
/etc FIPSR
/lib FIPSR
# ยกเว้น log files และ temp files
!/var/log
!/tmp
!/run
!/proc
!/sys
!/dev
สร้าง Initial Database (Baseline)
# สร้าง baseline database (ใช้เวลา 5-15 นาที)
sudo aide --init
# คัดลอกเป็น active database
sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# ตรวจดูขนาด database
ls -lh /var/lib/aide/
รัน Check และตรวจผล
# ตรวจเทียบกับ baseline
sudo aide --check
# ผลที่เห็น:
# Added entries: ไฟล์ใหม่ที่ไม่มีใน baseline
# Removed entries: ไฟล์ที่ถูกลบ
# Changed entries: ไฟล์ที่ถูกแก้ไข (hash เปลี่ยน)
Update Database หลัง Intentional Change
# หลัง apt update/upgrade ต้อง update database
sudo apt upgrade
sudo aide --update
sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
ตั้ง Cron ส่ง Report รายวัน
sudo nano /etc/cron.daily/aide-check
#!/bin/bash
REPORT=$(aide --check 2>&1)
if echo "$REPORT" | grep -q "changed\|added\|removed"; then
echo "$REPORT" | mail -s "AIDE Alert: File Changes on $(hostname)" [email protected]
fi
sudo chmod +x /etc/cron.daily/aide-check
ตรวจสอบว่า AIDE ทำงานถูกต้อง
# ทดสอบ: แก้ไขไฟล์ในพื้นที่ monitor
sudo touch /etc/aide-test-file
# รัน check ดูว่าตรวจเจอไหม
sudo aide --check 2>&1 | grep -i "added\|changed"
# ลบไฟล์ test
sudo rm /etc/aide-test-file
# Update database ให้ตรงกับสถานะจริง
sudo aide --update
sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
แก้ปัญหาที่พบบ่อย
AIDE --init ใช้เวลานานมาก
ปกติสำหรับ server ที่มีไฟล์เยอะ ลด scope ใน aide.conf เพื่อเร่งความเร็ว:
# ยกเว้น directory ที่ไม่จำเป็น
!/home
!/opt
!/var/lib/docker
False alarm มาก (files เปลี่ยนทุกวัน)
log files, timestamp, pid files เปลี่ยนตลอด ต้องยกเว้นใน config:
!/var/log
!/var/run
!/var/cache
!/tmp
Database file เสียหายหลัง power failure
ต้อง rebuild จาก backup หรือ init ใหม่:
# Rebuild database
sudo aide --init
sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
AIDE ช้าเกินไป ใช้ CPU 100% นาน
ลด rule complexity หรือ monitor เฉพาะ directory สำคัญ:
# ใช้ rule เบากว่า
LIGHT = p+i+n+u+g+s+sha256
/etc LIGHT
/bin LIGHT
คำถามที่พบบ่อย
AIDE กับ Tripwire ต่างกันอย่างไร?
Tripwire เป็น commercial product ที่มีฟีเจอร์ครบกว่า AIDE เป็น free open-source และใช้งานง่ายกว่า สำหรับ VPS ส่วนตัว AIDE เพียงพอ Tripwire เหมาะสำหรับองค์กรที่ต้องการ compliance report
AIDE ป้องกัน rootkit ได้ไหม?
AIDE ตรวจ detect ว่ามีไฟล์เปลี่ยนแปลง ไม่ได้ป้องกัน rootkit ก่อนเข้ามา ถ้า rootkit เข้ามาแล้วและแก้ไฟล์ก่อน AIDE check AIDE จะแจ้งเตือน แต่ถ้า rootkit แก้ database ด้วยจะตรวจไม่เจอ
ควรรัน AIDE check บ่อยแค่ไหน?
รายวัน (cron.daily) เพียงพอสำหรับ server ทั่วไป server ที่มี compliance requirement อาจต้องรัน hourly แต่ต้องดูแล false positive ที่มากขึ้นด้วย