ปรับให้ anti-brute force attacks ทำงานร่วมกับ CloudFlare

เวลาเอา web ไปไว้หลัง CloudFlare ปัญหานึงคือ IP ของ client จะส่งเข้ามายังเครื่อง server เป็น IP ของ CloudFlare ทำให้เราตรวจสอบลำบากว่าใครเข้ามา (รวมไปถึงการเก็บ access log เพื่อทำตาม พรบ คอมพิวเตอร์)

ปัญหาต่อมาคือเวลาเรา implement ตัวป้องกัน brute force attacks เรามักจะทำได้ยาก

วิธีหนึ่งที่ทำกันคือ ย้ายการเก็บข้อมูลของ IP มาดูที่ HTTP header ชื่อ X-Forwarded-For และ CF-Connecting-IP แทน ซึ่งก็โอเคดี แต่ก็ไม่ได้สะดวกมากเท่าแบบเดิมๆ คือเรียกจาก REMOTE_ADDR ตรงๆ เพราะพวก brute force attacks จะไปโฟกัสที่ header REMOTE_ADDR เป็นหลัก

วิธีการแก้ไขคือ ติดตั้ง mod_cloudflare สำหรับ Apache หรือ ngx_http_realip_module ใน nginx เป็นต้น แล้วตั้งค่าตาม link นี้ Restoring original visitor IPs: Logging visitor IP addresses

เสร็จแล้วติดตั้ง anti-brute force attacks อย่าง mod_evasive บน Apache หรือ ngx_http_limit_req_module บน nginx ก็จะช่วยป้องกัน brute force attacks ได้ในระดับหนึ่ง

ปล. เหตุผลที่ต้องทำเพิ่มเติมจาก CloudFlare แม้ระบบ CloudFlare จะช่วยป้องกันได้ในระดับนึงก็คือ บางครั้งโดนยิงจนดับไปแล้ว CloudFlare มันเพิ่งมาช่วย ก็เลยเป็นที่มาของการป้องกันตัวเองในเบื้องต้นด้วย