การตั้งค่า Rate Limit บน Firewall เพื่อป้องกันการโจมตี
ตัวอย่างการตั้งค่า rate limit ใน firewall สามารถทำได้หลายวิธี ขึ้นอยู่กับชนิดของ firewall ที่คุณใช้งาน เช่น
IPTables (สำหรับ Linux-based firewall)
คุณสามารถใช้ IPTables เพื่อกำหนด rate limit ต่อ IP address# อนุญาตไม่เกิน 25 คำขอภายใน 60 วินาทีจากแต่ละ IP
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 25 -j REJECT
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 25 -j DROP
NGINX
NGINX สามารถกำหนด rate limit โดยใช้limit_req_zone
และ limit_req
http {
# สร้างโซนสำหรับการเก็บสถานะการเชื่อมต่อ
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location / {
limit_req zone=one burst=5;
# การกำหนดการทำงานเมื่อเกิดการจำกัดการเชื่อมต่อ
limit_req_status 429;
# ตัวเลือกอื่นๆ สำหรับการตอบกลับ
proxy_pass http://backend;
}
}
}
Cloudflare
หากคุณใช้บริการ Cloudflare คุณสามารถตั้งค่า rate limiting ผ่าน Dashboard ของ Cloudflare- Login to Cloudflare Dashboard
- Navigate to the specific site
- Go to Firewall -> Tools -> Rate Limiting
- Create a new rule, specify the URL pattern, request limit, time period, and action (e.g., Block, Challenge)
AWS WAF (Web Application Firewall)
คุณสามารถสร้าง rate-based rules ใน AWS WAF เพื่อกำหนดการป้องกันการโจมตี- Login to AWS Management Console
- Go to WAF & Shield
- Create or select a WebACL
- Add a Rate-based rule
- Set the rate limit (e.g., 2000 requests per 5 minutes)
- Associate the rule with your resources (e.g., CloudFront distribution, API Gateway)
การตั้งค่า rate limit มีความสำคัญในการป้องกันการใช้งานทรัพยากรที่ไม่จำเป็นและปกป้องเว็บไซต์หรือบริการของคุณจากการโจมตีรูปแบบต่างๆ ทั้งนี้ควรปรับแต่งค่า rate limit ให้เหมาะสมกับการใช้งานจริงและปริมาณการรับส่งข้อมูลที่คาดหวังจากผู้ใช้บริการทั่วไปเพื่อไม่ให้ส่งผลกระทบต่อผู้ใช้งานปกติ