PlusMagi's Blog By Pitt Phunsanit Cloud Computing,Database ClamAV: Shell script ตรวจสอบและสั่งอัปเดตฐานข้อมูลพร้อมสแกน

ClamAV: Shell script ตรวจสอบและสั่งอัปเดตฐานข้อมูลพร้อมสแกน

ในฐานะ Senior Architect ที่ดูแลระบบฐานข้อมูลขนาดใหญ่ การรักษาความสมบูรณ์และความปลอดภัยของข้อมูล (Data Integrity and Security) ถือเป็นหัวใจสำคัญ โดยเฉพาะอย่างยิ่งเมื่อเราใช้ PostgreSQL เป็นแกนหลักในการจัดเก็บข้อมูลสำคัญ การพึ่งพาการสแกนด้วยมือเพียงอย่างเดียวจึงไม่เพียงพอ เราจึงต้องพัฒนากลไกอัตโนมัติเพื่อตรวจสอบความปลอดภัยของระบบไฟล์ที่เกี่ยวข้องกับฐานข้อมูล

บทความนี้จะนำเสนอแนวทางการใช้ Shell Script เพื่อจัดการกระบวนการสแกนและอัปเดตฐานข้อมูลของ ClamAV โดยผสานรวมเข้ากับการดูแลระบบ PostgreSQL ให้เป็นไปอย่างอัตโนมัติและมีประสิทธิภาพสูงสุด

💡 หลักการทำงาน: การสร้าง Script อัตโนมัติ (clamav_monthly_check.sh)

เนื่องจาก ClamAV ไม่ได้ทำการสแกนแบบ Real-time เหมือน Antivirus ทั่วไป การสร้าง Script จึงเป็นวิธีแก้ปัญหาที่สมบูรณ์แบบที่สุด Script นี้จะทำหน้าที่หลัก 3 อย่าง คือ 1) ตรวจสอบสิทธิ์ 2) อัปเดตฐานข้อมูลไวรัส (Database Update) และ 3) สั่งสแกนพื้นที่เป้าหมาย (Scan).

เราจะสร้างไฟล์ Script ที่ตำแหน่ง /usr/local/bin/clamav_monthly_check.sh:

SQL

#!/usr/bin/env bash
set -euo pipefail

# -------------------------------------------------------------
# Configuration
# -------------------------------------------------------------
SCAN_TARGET="/var/lib/postgresql/data"
LOG_FILE="/var/log/clamav_scheduled.log"

# 1. อัปเดตฐานข้อมูล ClamAV
echo "[$(date)] Starting ClamAV update..." >> $LOG_FILE
clamscan --update-definitions >> $LOG_FILE 2>&1

# 2. สั่งสแกนพื้นที่เป้าหมาย (เช่น Directory ของ PG Data)
echo "[$(date)] Starting ClamAV scan on $SCAN_TARGET..." >> $LOG_FILE
clamscan -r $SCAN_TARGET >> $LOG_FILE 2>&1

# 3. บันทึกสถานะการทำงาน (Optional: บันทึกเข้า PG Table)
# ในระบบจริง ควรมีฟังก์ชันเชื่อมต่อ PG เพื่อบันทึกสถานะสำเร็จ/ล้มเหลว
echo "[$(date)] Scan completed successfully." >> $LOG_FILE

exit 0

⚙️ การผสานรวมกับ PostgreSQL Maintenance

เพื่อให้การตรวจสอบความปลอดภัยเป็นส่วนหนึ่งของวงจรการดูแลระบบ PostgreSQL อย่างแท้จริง เราควรตั้งค่าให้ Script นี้ทำงานผ่าน Cron Job และตรวจสอบสถานะการทำงานของมันในตาราง Log ภายใน PostgreSQL เพื่อให้เราสามารถ Query สถานะความปลอดภัยล่าสุดได้โดยตรง

สมมติว่าเรามีตารางชื่อ system_security_logs ใน PostgreSQL:

SQL

-- ตารางสำหรับบันทึกสถานะการสแกน
CREATE TABLE system_security_logs (
    log_id SERIAL PRIMARY KEY,
    scan_timestamp TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    scan_status VARCHAR(50) NOT NULL,
    scan_target TEXT NOT NULL,
    executed_by VARCHAR(100)
);

-- ตัวอย่างการบันทึกสถานะหลัง Script ทำงานสำเร็จ
INSERT INTO system_security_logs (scan_status, scan_target, executed_by) VALUES 
('SUCCESS', 'postgresql_data_dir', 'clamav_script');

การทำเช่นนี้ทำให้เราไม่เพียงแต่ทราบว่าสแกนแล้ว แต่ยังสามารถ Query สถานะล่าสุดจาก PostgreSQL ได้ด้วยคำสั่งที่คุ้นเคย เช่น SELECT * FROM system_security_logs ORDER BY scan_timestamp DESC LIMIT 1;

✅ บทสรุป

การใช้ Shell Script ร่วมกับ ClamAV ไม่เพียงแต่ช่วยให้เรามีระบบการสแกนอัตโนมัติเท่านั้น แต่ยังเป็นการยกระดับมาตรฐานความปลอดภัยของระบบที่รัน PostgreSQL ให้เป็นระบบที่ครบวงจร (Holistic System Management) การกำหนดให้การตรวจสอบความปลอดภัยเป็นส่วนหนึ่งของกระบวนการ Maintenance ที่บันทึกในฐานข้อมูล จะช่วยให้ทีมงานสามารถตรวจสอบความสมบูรณ์ของระบบได้อย่างรวดเร็วและเชื่อถือได้เสมอ

Exit mobile version