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

WAF (Web Application Firewall) เป็นระบบ Firewall ที่ออกแบบมาเพื่อป้องกันการโจมตีเว็บแอปพลิเคชันโดยเฉพาะ มันทำหน้าที่กรอง ตรวจจับ และบล็อกทราฟฟิกที่เป็นอันตรายก่อนที่จะไปถึงเซิร์ฟเวอร์ของเว็บแอปพลิเคชัน
หน้าที่หลักของ WAF
- ป้องกัน SQL Injection – ป้องกันการโจมตีที่พยายามแทรกโค้ด SQL เพื่อขโมยหรือแก้ไขข้อมูลในฐานข้อมูล
- ป้องกัน XSS (Cross-Site Scripting) – ป้องกันการโจมตีที่ฝังสคริปต์อันตรายในเว็บเพจเพื่อขโมยข้อมูลผู้ใช้
- ป้องกัน CSRF (Cross-Site Request Forgery) – ป้องกันการโจมตีที่หลอกให้ผู้ใช้ส่งคำสั่งไปยังระบบโดยไม่รู้ตัว
- ป้องกัน DDoS Attack – ป้องกันการโจมตีที่ส่งทราฟฟิกจำนวนมากเพื่อทำให้เซิร์ฟเวอร์ล่ม
- ป้องกัน Zero-day Exploits – ป้องกันการโจมตีจากช่องโหว่ที่ยังไม่มีแพตช์
ประเภทของ WAF
- Cloud-based WAF – เช่น AWS WAF, Cloudflare WAF, Imperva WAF
- Hardware-based WAF – เช่น FortiWeb (Fortinet), F5 Advanced WAF
- 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