ในการดูแล VPS Server เพื่อให้บริการเว็บไซต์ เว็บแอปพลิเคชัน หรือแอปพลิเคชันต่าง ๆ หนึ่งในปัญหาที่พบบ่อยคือ Bot หรือ Crawler ที่ไม่พึงประสงค์ (เช่น badbots หรือบ็อตอื่น ๆ) ที่เข้ามาสแกนหรือดึงข้อมูลจำนวนมาก ซึ่งอาจทำให้ทราฟฟิกสูงเกิน หรือตั้งใจจะโจมตีช่องโหว่ Server
Fail2Ban เป็นเครื่องมือ Open Source บนระบบลินุกซ์ (LINUX) ที่ช่วยป้องกันการโจมตี Brute Force หรือพฤติกรรมแปลกปลอมอื่น ๆ โดยตรวจสอบ Log File จากบริการต่าง ๆ และหากพบการกระทำที่เข้าข่ายการโจมตีหรือพฤติกรรมอันไม่พึงประสงค์ Fail2Ban จะเพิ่ม กฎ (rules) ลงใน Firewall (iptables หรือ nftables) เพื่อ บล็อก IP ต้นทางชั่วระยะเวลาหนึ่ง
Fail2Ban เป็นซอฟต์แวร์ที่ทำงานอยู่บนเซิร์ฟเวอร์ลินุกซ์ ทำหน้าที่ตรวจจับรูปแบบการเชื่อมต่อที่เป็นอันตรายจาก Log Files ของบริการต่าง ๆ เช่น Apache, Nginx, SSH, FTP เป็นต้น เมื่อตรวจพบ IP ที่เข้ามาเรียกซ้ำผิดปกติหรือพยายาม Brute Force ระบบได้กำหนดเงื่อนไขว่าพบกี่ครั้งในระยะเวลาเท่าไร จึงจะทำการแบน IP นั้น ๆ ซึ่งการแบนจะเป็นการเพิ่มกฎลงใน iptables (หรือ firewalld, nftables แล้วแต่ระบบ) เพื่อปิดกั้นการเข้าถึงจาก IP นั้น
sudo apt-get update
sudo apt-get install fail2ban
sudo yum install epel-release
sudo yum install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
[DEFAULT]
bantime = 12h ; บล็อก IP 12 ชั่วโมง
findtime = 1h ; ตรวจย้อนภายใน 1 ชั่วโมง
maxretry = 5 ; ถ้าเจอ 5 ครั้งใน 1 ชั่วโมง => บล็อก
ignoreip = 127.0.0.1/8 ::1 [ไอพีที่ไม่บล็อก]
banaction = iptables-multiport
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
ตัวอย่างนี้ ถ้าล็อกอิน SSH ผิดเกิน 3 ครั้งใน 1 ชั่วโมง จะโดนบล็อก IP
ตัวอย่างการตั้งค่า Fail2Ban เพื่อบล็อก Amazonbot สร้าง Filter สำหรับ Amazonbot
• สร้างไฟล์ /etc/fail2ban/filter.d/apache-amazonbot.conf
[Definition]
failregex = ^ – .*”(GET|POST|HEAD) [^”]*” [0-9]{3} [0-9-]+ “[^”]*” “.*Amazonbot.*”
ignoreregex =
failregex ระบุว่าถ้าเจอ “Amazonbot” ใน User-Agent => จัดเป็นการละเมิด
[apache-amazonbot]
enabled = true
port = http,https
filter = apache-amazonbot
logpath = /var/log/httpd/access.log
bantime = 1d
findtime = 10
maxretry = 1
อธิบาย :
maxretry = 1 หมายถึง เจอ 1 ครั้งก็ แบน/บล็อค
findtime = 10 ตรวจสอบย้อน 10 วินาที (หรือตั้งเป็น 1 ชั่วโมงเพราะ maxretry=1 จะจับครั้งแรกทันทีเมื่อเชื่อมต่อเข้ามา)
bantime = 1d บล็อก IP เป็นเวลา 1 วัน
sudo systemctl restart fail2ban
# หรือ
sudo fail2ban-client reload
หลังจากนี้ ทุกครั้งที่ Log พบ User-Agent มีคำว่า Amazonbot IP จะโดนบล็อก (ผ่าน iptables) 1 วัน
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Amazonbot [NC]
RewriteRule ^.* – [F,L]
การจัดการกับ Bots และ Brute Force Attacks
ไม่ใช้ Fail2Ban :
• ต้องบล็อก IP หรือเพิ่มกฎไฟร์วอลล์ด้วยมือ (Manual) ทุกครั้งที่เกิดการโจมตี
• ใช้เวลา และความพยายามสูงในการตรวจจับ จัดการการโจมตี
ใช้ Fail2Ban :
• Fail2Ban ทำงานอัตโนมัติโดยตรวจจับพฤติกรรมที่เข้าข่าย Brute Force และบล็อก IP ตามค่าที่กำหนด (เช่น maxretry และ findtime) ช่วยลดภาระของผู้ดูแลระบบ
การใช้ทรัพยากร (CPU/RAM)
ไม่ใช้ Fail2Ban :
• VPS อาจใช้ทรัพยากรสูง โดยเฉพาะในกรณีที่มีบ็อต หรือการโจมตีแบบ Flooding จำนวนมาก
• Log ของระบบจะถูกเขียนเพิ่มขึ้นอย่างรวดเร็ว ทำให้ต้องใช้พื้นที่จัดเก็บมากขึ้น
ใช้ Fail2Ban :
• Fail2Ban จะบล็อก IP ที่ไม่พึงประสงค์ได้ทันที ลดการใช้ทรัพยากรในระยะยาว
• Log line เก่าจะถูกลบ/หมุนเวียนไป ลดการใช้พื้นที่จัดเก็บ
*ความสะดวกในการตั้งค่า และการใช้งาน
ไม่ใช้ Fail2Ban :
• Admin ต้องเขียนสคริปต์ หรือปรับแต่งไฟล์ iptables ด้วยตัวเอง
• อาจเกิดความผิดพลาดในระหว่างการตั้งค่าหรือการจัดการ
ใช้ Fail2Ban :
• การตั้งค่าทำได้ง่ายผ่านไฟล์คอนฟิก เช่น jail.local และไฟล์ในโฟลเดอร์ filter.d
• Fail2Ban จะเพิ่มกฎไฟร์วอลล์ (iptables) ให้เองโดยอิงจาก Regex ที่กำหนด
ความยืดหยุ่นในการป้องกัน และอัปเดต
ไม่ใช้ Fail2Ban :
• ต้องเขียนกฎ iptables หลายข้อเพื่อจัดการกับรูปแบบการโจมตีต่าง ๆ
• หากมีการอัปเดต หรือเปลี่ยนแปลง ต้องจัดการกฎเหล่านั้นใหม่เอง
ใช้ Fail2Ban :
• มีระบบ Regex ที่สามารถปรับแต่งให้รองรับการป้องกันที่หลากหลาย
• รองรับการอัปเดต และขยายการป้องกันโดยง่าย
Fail2Ban ช่วยยกระดับความปลอดภัยให้ Cloud Server (VPS) คลาวด์เซิร์ฟเวอร์ส่วนตัว บนลินุกซ์ได้อย่างมาก ไม่ว่าจะเป็นการป้องกัน Brute Force Login หรือการบล็อกบ็อตไม่พึงประสงค์อย่าง “Badbots” ก็ตาม เพียงปรับแต่ง Jail/Filter ให้เหมาะสม และตรวจสอบ Log อย่างสม่ำเสมอ ก็สามารถใช้งาน Cloud Server (VPS) ได้อย่างประสิทธิภาพ และสบายใจมากขึ้น!
กรณีศึกษา : บริษัท eCommerce ขนาดกลาง – “ABC Store”
ปัญหา :
เว็บไซต์ของ ABC Store ซึ่งโฮสต์อยู่บน Cloud Server (VPS) ถูกโจมตีจาก Bots และ Brute Force Attacks เป็นประจำ ทำให้ทราฟฟิกบนเซิร์ฟเวอร์เพิ่มสูงขึ้นโดยไม่มีเหตุผล เซิร์ฟเวอร์โหลดช้า บางครั้งเว็บไซต์ล่มในช่วงเวลาที่มีทราฟฟิกสูง Google ลดคะแนน SEO เนื่องจาก Downtime และความช้าในการโหลดหน้าเว็บไซต์ ส่งผลต่อยอดขาย
AFRA APACHE (อาฟร่า อาปาเช่ ประเทศไทย) ช่วยเสริมความปลอดภัย และลดภาระการทำงานของเซิร์ฟเวอร์อย่างมีประสิทธิภาพ
TEAM SUPPORTED : BANGKOK | KHONKAEN | NAKHON RATCHASIMA (KHAO YAI)
TEL : 095-197-2699 | EMAIL: info@siamwebsite.me
© 2016-2025 All rights reserved | SIAMWEBSITE | AFRA APACHE (THAILAND) CO.,LTD