การโจมตีแบบ Brute Force คือการลองรหัสผ่านซ้ำ ๆ เพื่อเดารหัสให้ถูก โดยมักพุ่งเป้าไปที่บริการยอดนิยมอย่าง SSH, Web Login, SMTP/IMAP หากปล่อยไว้จะเสี่ยงทั้ง “ถูกเดารหัสผ่านสำเร็จ” และ “กินทรัพยากรเครื่องจนช้า/ล่ม” ได้ แนวทางที่ทำได้เร็วและคุ้มมากคือใช้ Fail2ban ซึ่งจะคอยอ่าน Log แล้ว “แบน IP” ที่พฤติกรรมผิดปกติอัตโนมัติผ่านไฟร์วอลล์
1) ติดตั้ง Fail2ban (Ubuntu/Debian)

– ตรวจสอบสถานะ Fail2ban
2) หลักการตั้งค่า: “อย่าแก้ jail.conf”
Fail2ban จะมีไฟล์หลัก /etc/fail2ban/jail.conf (ค่าเริ่มต้น)
แนะนำให้สร้างไฟล์ปรับแต่งของเราใน
-
/etc/fail2ban/jail.localหรือ -
/etc/fail2ban/jail.d/*.local(แนะนำสำหรับแยกเป็นบริการ)
แนวทาง
– ปรับแต่งค่า
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
findtime = 10m # ช่วงเวลาที่ Fail2ban ใช้นับจำนวนความพยายามผิดพลาด
bantime = 10m # ระยะเวลาที่ IP จะถูกแบน
maxretry = 5 # จำนวนครั้งที่อนุญาตให้ login ผิดพลาดได้
3) เปิดใช้การป้องกัน SSH (สำคัญที่สุด)
สร้างไฟล์
ใส่ค่าแนะนำ (ปรับได้ตามนโยบายการใช้งาน )
– รีสตาร์ต Fail2ban
แนะนำเสริมเพื่อความปลอดภัย: ใช้ Key-based login, ปิด password login, และจำกัดให้ SSH รับเฉพาะ IP ที่ไว้ใจได้ (ถ้าทำได้)
4) ผูก Fail2ban กับ Firewall (UFW หรือ iptables/nftables)
โดยปกติ Fail2ban จัดการได้เอง แต่บน Ubuntu นิยมใช้ UFW
เช็กว่าคุณใช้ UFW อยู่ไหม
ถ้าใช้ UFW ให้ตั้งค่า action เป็น ufw (ทางเลือกหนึ่งที่อ่านง่าย):
สร้างไฟล์
– ระบุ
-แล้วรีสตาร์ต
5) ป้องกัน Nginx/Web Login (กรณีมีหน้าเข้าสู่ระบบ)
Fail2ban มี jail สำเร็จรูปของ Nginx หลายแบบ เช่น nginx-http-auth, nginx-botsearch, nginx-limit-req (ชื่อที่มีให้ขึ้นกับแพ็กเกจ/ดิสโทร)
สร้างไฟล์
ตัวอย่างเปิดใช้ 2 ตัวที่พบบ่อย
แล้วรีสตาร์ต
6) ป้องกัน Mail (Postfix/Dovecot) ถ้ามีบริการอีเมล
– ตัวอย่าง jail
-
postfix/postfix-sasl -
dovecot
– สร้างไฟล์
ตัวอย่าง
– รีสตาร์ต
7) คำสั่งสำคัญสำหรับตรวจสอบ/ปลดแบน
– ดูสถานะทั้งหมด
– ดู jail ที่สนใจ
– ดู IP ที่ถูกแบน
– ปลดแบน IP
8) แนวทาง “ตั้งค่าแบบมืออาชีพ” (แนะนำ)
-
bantime แบบไล่ระดับ: เริ่มแบนสั้น ๆ แล้วค่อยยาวขึ้น (ต้องตั้งค่าเพิ่ม) เหมาะกับการเจอ bot ถี่ ๆ
-
Whitelist IP (เช่น IP บ้าน/สำนักงาน/VPN)
ใส่ใน[DEFAULT] -
อย่าตั้ง maxretry ต่ำเกินไป สำหรับระบบที่ผู้ใช้จริงเยอะ เดี๋ยวแบนทีมงาน staff บ่อย
-
จับคู่กับการ Harden SSH: ปิด root login, ใช้ key, เปลี่ยนพอร์ต (เป็นตัวช่วยเสริม ไม่ใช่หัวใจหลัก), เปิด 2FA ถ้าเหมาะสม
แนวทางปรับค่าให้เหมาะกับงานจริง
Server Production (แนะนำ)
Server ภายใน / ห้องแล็บ
ทดสอบ
ทดสอบการทำงานของ Fail2ban ใช้โปรแกรม Putty ทำการล็อกอินเข้าระบบตามจำนวนครั้งที่กำหนด
– ตรวจสอบ log ของ Fail2ban ด้วยคำสั่ง
tail /var/log/fail2ban.log
– ตรวจสอบ log ของFail2ban ด้วยคำสั่ง
tail /var/log/fail2ban.log

กรณี login กินค่าที่กำหนดไว้ระบบจะขึ้นดังภาพ

สรุป
Fail2ban คือเครื่องมือที่ “คุ้มที่สุด” สำหรับกัน Brute Force เพราะทำงานอัตโนมัติจาก Log แล้วแบน IP ทันที เหมาะกับ SSH, Nginx/Web, Mail และปรับความเข้มงวดได้ตามสภาพแวดล้อมจริง
—
เขียนและรวบรวมโดย
Dr.Arnut Ruttanatirakul
Technology Lecturer, KMITL
4 January 2025


