近期在其云否維護客戶的網站時,客戶要求屏蔽國外IP的訪問,因為從日誌來看攻擊的IP大部分都是來自國外,並且自己的目標用戶為國內,所以只允許國內的IP訪問網站可阻止絕大多數的CC和DDoS攻擊。實際測試後,發現效果還是不錯,攻擊想再次攻擊成本增加了不少。
不過,隨後發現了一個問題,就是使用了Cloudflare CDN後,網站取得到的IP位址都是Cloudflare的CDN節點的,不能得到真實使用者的IP位址,防禦效果大大折扣。還好Cloudflare已經為我們想到這一點了,將訪客的 IP 位址包含在 X-Forwarded-For 標頭和 CF-Connecting-IP 標頭。
有了 X-Forwarded-For 標頭,如果是Nginx可以使用ngx_http_realip_module模組,如果是Apache,則可以使用mod_remoteip模組來取得使用者的真實IP。本篇文章就來分享如何編譯和啟用ngx_http_realip_module模組和mod_remoteip模組來取得使用者的真實IP位址。