22 กุมภาพันธ์ 2025

แนะนำ Software WAF (Web Application Firewall) สำหรับ Web Server apache

WAF (Web Application Firewall) เป็นระบบ Firewall ที่ออกแบบมาเพื่อป้องกันการโจมตีเว็บแอปพลิเคชันโดยเฉพาะ มันทำหน้าที่กรอง ตรวจจับ และบล็อกทราฟฟิกที่เป็นอันตรายก่อนที่จะไปถึงเซิร์ฟเวอร์ของเว็บแอปพลิเคชัน

หน้าที่หลักของ WAF

  1. ป้องกัน SQL Injection – ป้องกันการโจมตีที่พยายามแทรกโค้ด SQL เพื่อขโมยหรือแก้ไขข้อมูลในฐานข้อมูล
  2. ป้องกัน XSS (Cross-Site Scripting) – ป้องกันการโจมตีที่ฝังสคริปต์อันตรายในเว็บเพจเพื่อขโมยข้อมูลผู้ใช้
  3. ป้องกัน CSRF (Cross-Site Request Forgery) – ป้องกันการโจมตีที่หลอกให้ผู้ใช้ส่งคำสั่งไปยังระบบโดยไม่รู้ตัว
  4. ป้องกัน DDoS Attack – ป้องกันการโจมตีที่ส่งทราฟฟิกจำนวนมากเพื่อทำให้เซิร์ฟเวอร์ล่ม
  5. ป้องกัน Zero-day Exploits – ป้องกันการโจมตีจากช่องโหว่ที่ยังไม่มีแพตช์

ประเภทของ WAF

  1. Cloud-based WAF – เช่น AWS WAF, Cloudflare WAF, Imperva WAF
  2. Hardware-based WAF – เช่น FortiWeb (Fortinet), F5 Advanced WAF
  3. Software-based WAF – เช่น ModSecurity (ใช้ร่วมกับ Apache, Nginx)

การติดตั้ง WAF ประเภท Software-based บน Ubuntu Server

ModSecurity

ModSecurity (ฟรี & Open Source) 🔹 แนะนำ

  • เป็น WAF ที่ได้รับความนิยมสูง และรองรับการใช้งานกับ Apache2, Nginx, และ LiteSpeed
  • สามารถบล็อก SQL Injection, XSS, CSRF, และการโจมตีอื่น ๆ
  • ใช้ OWASP ModSecurity Core Rule Set (CRS) สำหรับเพิ่มความปลอดภัย

📌 วิธีติดตั้ง ModSecurity บน Apache2

sudo apt update
sudo apt install libapache2-mod-security2 -y
sudo a2enmod security2

📌 เปิดใช้งาน OWASP CRS Ruleset

sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo nano /etc/modsecurity/modsecurity.conf

🔹 แก้ไขบรรทัด

SecRuleEngine DetectionOnly

🔹 เปลี่ยนเป็น

SecRuleEngine On

จากนั้น Restart Apache

sudo systemctl restart apache2

Fail2Ban

Fail2Ban (ช่วยป้องกัน Brute Force Attack)

  • ป้องกัน Brute Force Attack สำหรับ WordPress ได้
  • ตรวจจับการล็อกอินผิดพลาดหลายครั้งแล้วบล็อก IP

📌 วิธีติดตั้ง Fail2Ban

sudo apt install fail2ban -y

จากนั้นสร้างไฟล์

sudo nano /etc/fail2ban/jail.local

เพิ่มกฎป้องกัน WordPress

[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

แล้ว Restart บริการ

sudo systemctl restart fail2ban