audit ความปลอดภัยเซิร์ฟเวอร์ Debian shared-host แบบ read-only — เริ่มยังไงไม่ให้แบนตัวเอง
การ audit ที่ดีต้องไม่ทำให้ระบบพังหรือล็อกตัวเองออก — ก่อนสแกนเซิร์ฟเวอร์ที่มี CSF/LFD ต้อง whitelist IP ตัวเองไว้ก่อน ไม่งั้นทราฟฟิกสแกนจะไปเข้าเงื่อนไข brute-force แล้วแบนตัวเองกลางคัน
พอดีผมต้องไล่ตรวจความปลอดภัยเซิร์ฟเวอร์ Debian ที่รัน DirectAdmin เป็นระยะ — ทั้งรอบตรวจประจำและตอนหลัง restore/migrate เสร็จเพื่อกันไม่ให้เอาช่องเก่ากลับมา หลักที่ผมยึดคือ read-only ก่อนเสมอ ดูให้ครบก่อน ค่อยตัดสินใจแก้เป็นขั้นตอนแยกที่ต้องอนุมัติอีกที ไม่รีบไปรื้ออะไรระหว่างสแกน เลยเอาลำดับที่ใช้มาเล่าไว้
กับดักแรก: whitelist ตัวเองก่อน ไม่งั้นแบนตัวเอง
เซิร์ฟเวอร์ที่มี CSF/LFD จะมีเงื่อนไขจับ brute-force และ port scan อยู่ พอเราเริ่มสแกน (ยิงหลาย port, ลอง endpoint หลายตัว) ทราฟฟิกของเราเองนั่นแหละเข้าเงื่อนไข แล้ว LFD แบน IP เรากลางคัน — งาน audit ค้าง แถมงงว่าเน็ตหลุดตอนไหน
whitelist IP ตัวเองแบบชั่วคราว 24 ชม. ก่อนเริ่มสแกน แล้วค่อยถอดออกหลังเสร็จ — ไม่ใช่ whitelist ถาวร
MY_IP=$(curl -s ifconfig.me)
csf -ta "$MY_IP" 86400 "audit window $(date +%F)" # temp allow 24 ชม.
# ... ทำ audit ...
# เสร็จแล้วถอด: csf -tr "$MY_IP"
จุดที่ผมไล่ดู (read-only)
ทั้งหมดเป็นคำสั่ง "ดู" ไม่แก้อะไร:
# 1) ใครฟัง port อะไรอยู่บ้าง — มี service แปลกปลอมไหม
ss -ltnp | sort -k4
# 2) process ที่รันด้วย root แต่มาจาก path แปลก (webshell/miner)
ps aux | awk '$1=="root"' | grep -iE '/tmp/|/dev/shm/|\.\/'
# 3) cron ของทุก user (backdoor ชอบซ่อนตรงนี้)
for u in $(cut -d: -f1 /etc/passwd); do
crontab -l -u "$u" 2>/dev/null | grep -v '^#' | sed "s/^/[$u] /"
done
# 4) ไฟล์ที่เพิ่งถูกแก้ในที่ที่ไม่ควรมีของใหม่
find /etc /usr/local/bin -mtime -7 -type f 2>/dev/null
# 5) SSH: key ที่ authorized + การตั้งค่าที่หลวม
grep -rE 'PermitRootLogin|PasswordAuthentication' /etc/ssh/sshd_config
ผล audit มีข้อมูลอ่อนไหว (port, path, config) — เก็บใน dir 0700 ที่สร้างด้วย mktemp -d ไม่ใช่ /tmp/scan.txt ธรรมดาที่ user อื่นบนเครื่องอ่านได้
เทียบกับภูมิทัศน์ช่องโหว่ยุคนี้
ระหว่างดู อย่าลืมเทียบกับ CVE ที่ยัง active ในช่วง 2024-2026 โดยเฉพาะฝั่ง kernel และ mail stack ที่ shared host โดนบ่อย
# kernel + แพ็กเกจที่ค้างอัปเดต
uname -r
apt list --upgradable 2>/dev/null | grep -iE 'linux-image|exim|dovecot|roundcube|openssl'
# ไฟล์ตั้งค่า DA ที่ควรจำกัดสิทธิ์
ls -la /usr/local/directadmin/conf/ 2>/dev/null | grep -vE 'rw-r-----|rw-------'
จุดที่ผมให้น้ำหนักคือ kernel nf_tables local privilege escalation (มี exploit สาธารณะและอยู่ใน KEV) กับช่องฝั่ง mail ที่เปิดสู่โลกตลอด — สองอย่างนี้เป็นทางที่คนบุกจริงชอบใช้บน shared host มากกว่าช่องหวือหวาอื่น
สรุปลำดับ audit ที่ปลอดภัย
- whitelist IP ตัวเองชั่วคราวก่อน (กันแบนตัวเอง)
- ไล่ read-only: port, process, cron, ไฟล์เพิ่งแก้, ssh config
- เขียน output ลง dir 0700 เท่านั้น
- เทียบ kernel/mail/tenant กับ CVE ที่ยัง active
- สรุปเป็น P0-P2 แล้วค่อยแก้เป็นขั้นตอนแยก (อนุมัติก่อนแตะ)
หัวใจของการ audit ที่ดีคือ "ดูให้ครบก่อนแตะ" และ "อย่าทำให้ระบบพังเพราะการตรวจเอง" — whitelist ตัวเองก่อนสแกนเป็นเรื่องเล็กที่คนลืมบ่อยจนงานค้างกลางคัน ใครดูแลเซิร์ฟเวอร์ shared-host เอาลำดับนี้ไปทำเป็นรอบตรวจประจำได้ตามสะดวกครับ ตรงไหนผมอธิบายตกหล่นหรือพิมพ์ผิด เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ
อยากให้เราทำให้ไหม?
ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า
เคยเจองานแบบนี้ไหม? ติดตรงไหน?
มาแลกวิธีกันต่อในบอร์ด LinuxThai



ความคิดเห็น 0
ยังไม่มีความคิดเห็น — เป็นคนแรกเลย