Fail2Ban ป้องกัน Brute Force Security

Fail2Ban ป้องกัน Brute Force

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Fail2Ban: ยามเฝ้าประตูเซิร์ฟเวอร์ ป้องกัน Brute Force

เฮ้! น้องๆ เคยเจอปัญหาคนพยายามแฮ็กเซิร์ฟเวอร์เราไหม? ไอ้พวก Brute Force ที่มันสุ่มรหัสผ่านไปเรื่อยๆ นั่นแหละ น่ารำคาญสุดๆ สมัยผมทำร้านเน็ต SiamCafe เมื่อก่อน เจอบ่อยมาก พวกเด็กๆ อยากลองวิชา (ฮา) แต่ตอนนี้มันร้ายแรงกว่านั้นเยอะ ต้องป้องกันไว้ก่อน

Fail2Ban เนี่ยแหละ คือพระเอกของเรา มันเป็นเครื่องมือที่ช่วยบล็อก IP address ของคนที่พยายามเข้าถึงระบบของเราแบบผิดๆ เช่น พยายามล็อกอินผิดๆ ซ้ำๆ หรือพยายามสแกนพอร์ต

ทำไมต้อง Fail2Ban?

ลองคิดดูสิ ถ้ามีคนพยายามล็อกอิน SSH เข้าเซิร์ฟเวอร์เราแบบผิดๆ วันละเป็นพันๆ ครั้ง มันเปลืองทรัพยากรเซิร์ฟเวอร์นะ แถมยังเสี่ยงโดนแฮ็กอีกด้วย Fail2Ban จะช่วยลดภาระของเซิร์ฟเวอร์ และเพิ่มความปลอดภัยโดยการบล็อก IP ของคนเหล่านั้นอัตโนมัติ

เมื่อก่อนผมต้องมานั่งดู log file เอง แล้วก็ block IP เองทีละ IP โคตรเสียเวลา! พอมี Fail2Ban ชีวิตดีขึ้นเยอะ SiamCafe Blog มีบทความเก่าๆ ที่ผมเคยเขียนเรื่องความปลอดภัยอยู่ ลองไปอ่านดูได้

Fail2Ban ทำงานยังไง?

Fail2Ban ทำงานโดยการตรวจสอบ log file ของบริการต่างๆ ที่เราต้องการป้องกัน (เช่น SSH, Apache, Nginx) แล้วมองหารูปแบบการโจมตีที่กำหนดไว้ล่วงหน้า (เช่น พยายามล็อกอินผิดๆ ซ้ำๆ) ถ้าเจอก็จะทำการบล็อก IP address ที่ก่อเหตุ

ส่วนประกอบหลักของ Fail2Ban

ตัวอย่างการทำงาน

สมมติว่าเราต้องการป้องกัน SSH Brute Force Fail2Ban จะตรวจสอบ log file ของ SSH (/var/log/auth.log หรือ /var/log/secure) แล้วมองหาข้อความที่บ่งบอกว่ามีคนพยายามล็อกอินผิดๆ ถ้า Fail2Ban เจอว่ามี IP address พยายามล็อกอินผิดๆ เกิน 3 ครั้งภายใน 10 นาที มันก็จะบล็อก IP address นั้นด้วย iptables เป็นเวลา 1 ชั่วโมง

ติดตั้งและตั้งค่า Fail2Ban

มาลงมือทำกันเลย! ผมจะสอนวิธีการติดตั้งและตั้งค่า Fail2Ban แบบง่ายๆ

Step 1: ติดตั้ง Fail2Ban

บน Debian/Ubuntu:

sudo apt update
sudo apt install fail2ban

บน CentOS/RHEL:

sudo yum install epel-release
sudo yum install fail2ban

Step 2: กำหนดค่า Jail

ไฟล์ configuration หลักของ Fail2Ban คือ /etc/fail2ban/jail.conf แต่เราไม่ควรแก้ไขไฟล์นี้โดยตรง เพราะมันจะถูกเขียนทับเมื่อมีการอัปเดต Fail2Ban ให้สร้างไฟล์ /etc/fail2ban/jail.local แทน

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

ในไฟล์ /etc/fail2ban/jail.local เราสามารถกำหนดค่าต่างๆ ได้ เช่น

ตัวอย่างการตั้งค่าสำหรับ SSH:

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
bantime = 3600
findtime = 600
maxretry = 3

อธิบาย:

Step 3: เริ่มต้นและเปิดใช้งาน Fail2Ban

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Step 4: ตรวจสอบสถานะ Fail2Ban

sudo fail2ban-client status sshd

คำสั่งนี้จะแสดงข้อมูลเกี่ยวกับ Jail "sshd" เช่น จำนวน IP address ที่ถูกบล็อก

เปรียบเทียบ Fail2Ban กับ Firewall

หลายคนอาจจะสงสัยว่า Fail2Ban กับ Firewall ต่างกันยังไง? มาดูตารางเปรียบเทียบกัน

คุณสมบัติ Fail2Ban Firewall
หน้าที่หลัก ป้องกัน Brute Force Attack ควบคุมการเข้าถึง network
วิธีการทำงาน วิเคราะห์ log file และบล็อก IP address ที่น่าสงสัย อนุญาตหรือปฏิเสธ traffic ตามกฎที่กำหนดไว้
ระดับการป้องกัน Application Level (เช่น SSH, Apache) Network Level
การตั้งค่า ซับซ้อนกว่า ต้องกำหนด Filter และ Jail ง่ายกว่า สามารถกำหนดกฎได้โดยตรง

สรุปคือ Firewall ทำหน้าที่เหมือนยามเฝ้าประตูใหญ่ คอยตรวจสอบว่าใครได้รับอนุญาตให้เข้าบ้าน ส่วน Fail2Ban ทำหน้าที่เหมือนตำรวจที่คอยจับโจรที่พยายามงัดแงะประตูบ้าน

SiamCafe Blog ยังมีบทความเปรียบเทียบเครื่องมือ security อีกหลายตัว ลองอ่านดูนะ

🎬 วิดีโอแนะนำ

ดูวิดีโอเพิ่มเติมเกี่ยวกับFail2Ban ป้องกัน Brute Force:

FAQ (คำถามที่พบบ่อย)

Fail2Ban กินทรัพยากรเซิร์ฟเวอร์เยอะไหม?

ไม่เยอะครับ Fail2Ban ถูกออกแบบมาให้ใช้ทรัพยากรอย่างมีประสิทธิภาพ มันจะทำงานเมื่อมีการล็อกอินผิดพลาดเท่านั้น ไม่ได้ทำงานตลอดเวลา

Fail2Ban สามารถป้องกัน DDoS ได้ไหม?

Fail2Ban ไม่ได้ถูกออกแบบมาเพื่อป้องกัน DDoS โดยตรง แต่มันสามารถช่วยลดผลกระทบของ DDoS ได้บ้าง โดยการบล็อก IP address ที่ส่ง traffic มากเกินไป

Fail2Ban สามารถใช้กับ Windows ได้ไหม?

Fail2Ban ถูกออกแบบมาสำหรับ Linux แต่ก็มี alternatives สำหรับ Windows เช่น Win2Ban

Fail2Ban ป้องกัน Brute Force (Part 2) - SiamCafe.net

Best Practices

อย่าใช้ password ง่ายๆ

อันนี้เบสิคเลยน้อง! สมัยผมทำร้านเน็ต เคยเจอเด็กตั้ง password เป็น "123456" หรือ "password" คือแบบ...เอิ่มมมมม ไม่ไหวๆ สอนมันไปเลย ตั้งให้ยากๆ ตัวเลข ตัวอักษรพิเศษ จัดเต็ม

เปลี่ยน default port

พวก SSH (port 22) หรือ RDP (port 3389) เนี่ย Hacker มันสแกนหาอยู่แล้ว เปลี่ยนไปเป็น port อื่นที่มัน random ยากๆ ซะ


# /etc/ssh/sshd_config
Port 22222

แล้วอย่าลืมเปิด firewall ให้ port ใหม่ด้วยนะ

Whitelisting IP address

ถ้าเรารู้ว่า IP ไหนที่ต้องเข้ามาใช้ server เราแน่ๆ (เช่น IP ออฟฟิศ) ก็ whitelist ไปเลย จะได้ไม่ต้องโดน Fail2Ban บล็อค


# /etc/fail2ban/jail.local
[sshd]
ignoreip = 192.168.1.0/24, 10.0.0.0/16

Monitor logs อย่างสม่ำเสมอ

Fail2Ban มันช่วยป้องกัน แต่เราก็ต้องคอยส่อง logs ดูด้วย ว่ามีอะไรผิดปกติไหม มีใครพยายาม brute force เยอะผิดปกติหรือเปล่า จะได้แก้ไขทัน

FAQ คำถามที่พบบ่อย

Fail2Ban กิน resource เยอะไหม?

ไม่เยอะครับน้อง! มันทำงานเบื้องหลังเงียบๆ แต่ถ้า server น้อง resource น้อยมากๆ ก็อาจจะต้องปรับแต่ง config นิดหน่อย ให้มันทำงานเบาลง

ถ้าโดนบล็อค IP ตัวเองจะทำยังไง?

เคยเจอเคสนี้บ่อย! เด็กที่ร้าน login ผิดๆ ถูกๆ จนโดนบล็อค IP ตัวเอง วิธีแก้คือ

  1. Login เข้า server จาก IP อื่น (เช่น ใช้มือถือต่อ 3G/4G)
  2. Unban IP ตัวเอง ด้วย command:
    fail2ban-client set sshd unbanip <IP ที่โดนบล็อค>
  3. ระวังอย่า login ผิดอีก!

Fail2Ban ป้องกัน DDoS ได้ไหม?

Fail2Ban ไม่ได้ออกแบบมาเพื่อป้องกัน DDoS โดยตรง แต่มันสามารถช่วยลดผลกระทบได้บ้าง โดยการบล็อค IP ที่พยายามยิง traffic เข้ามาเยอะๆ แต่ถ้าโดน DDoS จริงๆ ต้องใช้พวก DDoS protection services นะครับ

ตั้งค่า Fail2Ban ให้ block ถาวรได้ไหม?

ทำได้ครับ แต่ไม่แนะนำ! เพราะถ้า block ถาวร แล้ว IP นั้นเป็น IP จริงๆ ที่ user ใช้งานอยู่ จะทำให้ user นั้นเข้าใช้งานไม่ได้เลย ควรตั้งเวลา ban ให้เหมาะสมดีกว่า


# /etc/fail2ban/jail.local
[DEFAULT]
bantime = -1  ; // -1 คือ ban ถาวร

แวะชม iCafeForex นะน้องๆ

สรุป

Fail2Ban เป็นเครื่องมือที่ช่วยป้องกัน brute force attack ได้ดีมากๆ แต่ก็ต้องตั้งค่าให้เหมาะสม และ monitor logs อย่างสม่ำเสมอ อย่าลืมเรื่อง password ที่แข็งแรง และเปลี่ยน default port ด้วยนะครับ น้องๆคนไหนอยากอ่านเรื่อง IT สนุกๆ แวะไปที่ SiamCafe Blog ได้เลย