Apache 基于 IP 的黑白名單過濾配置

apache 基于 ip 的黑白名單過濾可通過 mod_authz_host 模塊或 .htaccess 文件實現。1. 使用 mod_authz_host 模塊時,需啟用該模塊并在主配置文件的 或 中設置 order、allow 和 deny 規則,如白名單先拒絕所有再允許特定 ip,黑名單則反之,之后重啟 apache 生效;2. 使用 .htAccess 文件則需在對應目錄創建該文件并寫入相同規則,同時確保 allowoverride all 已啟用,無需重啟服務。此外,識別惡意 ip 需分析日志并結合威脅情報平臺,選擇策略上白名單適合限制訪問場景,黑名單適合阻止已知惡意 ip。若使用 cdn,應啟用 mod_remoteip 模塊以獲取用戶真實 ip 并進行過濾。

Apache 基于 IP 的黑白名單過濾配置

Apache 基于 IP 的黑白名單過濾配置,簡單來說,就是允許或拒絕特定 IP 地址訪問你的網站。這是一種基礎但有效的安全措施,尤其是在面對惡意掃描、ddos 攻擊等情況時。

解決方案

配置 Apache 基于 IP 的黑白名單,通常有兩種方式:使用 mod_authz_host 模塊,或者使用 .htaccess 文件。前者更適合全局配置,后者則適用于單個目錄。

1. 使用 mod_authz_host 模塊 (推薦):

這種方式需要修改 Apache 的主配置文件(例如 httpd.conf 或 apache2.conf,具體位置取決于你的操作系統和 Apache 版本)。

  • 啟用 mod_authz_host 模塊: 首先確保該模塊已啟用。在配置文件中查找類似 LoadModule authz_host_module modules/mod_authz_host.so 的行,如果被注釋掉了(前面有 #),去掉 # 并保存。如果找不到,可能需要手動安裝該模塊。

  • 配置訪問控制: 在 標簽內,或者在 標簽內(取決于你想要控制的范圍),添加如下配置:

    • 白名單示例:
    <Directory /var/www/yourwebsite>     Order Deny,Allow     Deny from all     Allow from 192.168.1.0/24     Allow from 10.0.0.1 </Directory>

    這段配置的意思是:先拒絕所有 IP 地址的訪問,然后允許 192.168.1.0/24 網段和 10.0.0.1 這個 IP 地址的訪問。

    • 黑名單示例:
    <Directory /var/www/yourwebsite>     Order Allow,Deny     Allow from all     Deny from 1.2.3.4     Deny from 5.6.7.0/24 </Directory>

    這段配置的意思是:先允許所有 IP 地址的訪問,然后拒絕 1.2.3.4 這個 IP 地址和 5.6.7.0/24 網段的訪問。

    注意: Order 指令定義了規則的執行順序。Deny,Allow 表示先執行 Deny 規則,再執行 Allow 規則;Allow,Deny 則相反。

  • 重啟 Apache: 修改配置文件后,需要重啟 Apache 服務才能使配置生效。命令通常是 sudo systemctl restart apache2 或 sudo service apache2 restart。

2. 使用 .htaccess 文件:

這種方式不需要修改 Apache 的主配置文件,但需要在網站的根目錄或子目錄中創建一個 .htaccess 文件。 注意: 需要在 Apache 主配置文件中啟用 AllowOverride All 才能使 .htaccess 文件生效。

  • 創建 .htaccess 文件: 在需要控制的目錄下創建一個名為 .htaccess 的文件。

  • 配置訪問控制: 在 .htaccess 文件中添加如下配置:

    • 白名單示例:
    Order Deny,Allow Deny from all Allow from 192.168.1.0/24 Allow from 10.0.0.1
    • 黑名單示例:
    Order Allow,Deny Allow from all Deny from 1.2.3.4 Deny from 5.6.7.0/24
  • 保存文件: 保存 .htaccess 文件后,配置會立即生效,無需重啟 Apache。

如何確定惡意 IP 地址?

確定惡意 IP 地址并非易事,需要綜合考慮多種因素。一種方法是分析服務器日志,查找頻繁請求特定資源、嘗試非法訪問等行為的 IP 地址。還可以利用一些在線威脅情報平臺,查詢 IP 地址的信譽評分,例如 AbuseIPDB、VirusTotal 等。另外,防火墻和入侵檢測系統(IDS)也可以幫助識別和阻止惡意 IP 地址。我個人更傾向于結合多種數據源,進行綜合判斷,避免誤判。

白名單和黑名單應該如何選擇?

選擇白名單還是黑名單,取決于你的安全策略和應用場景。如果你的網站主要面向特定用戶群體,或者需要嚴格控制訪問權限,那么白名單可能更適合。例如,內部系統只允許公司員工訪問。另一方面,如果你的網站面向公眾開放,但需要阻止某些已知的惡意 IP 地址,那么黑名單可能更有效。實際上,很多時候,白名單和黑名單可以結合使用,以達到更佳的安全效果。例如,先設置一個全局的黑名單,阻止已知的惡意 IP 地址,然后再針對特定目錄設置白名單,只允許特定用戶訪問。

使用 CDN 后如何獲取真實 IP 地址?

當網站使用 CDN 時,服務器看到的 IP 地址通常是 CDN 節點的 IP 地址,而不是用戶的真實 IP 地址。為了獲取用戶的真實 IP 地址,你需要查看 HTTP 請求頭中的 X-forwarded-For 或 X-Real-IP 字段。不同的 CDN 提供商使用的字段可能略有不同,你需要查閱 CDN 的文檔,了解具體的字段名稱。然后在 Apache 配置中,使用 mod_remoteip 模塊,將 CDN 節點的 IP 地址替換為 X-Forwarded-For 或 X-Real-IP 字段中的 IP 地址。這樣,Apache 才能正確地識別用戶的真實 IP 地址,并應用 IP 黑白名單過濾規則。需要注意的是,X-Forwarded-For 字段可能被偽造,因此需要謹慎處理,只信任來自可信 CDN 節點的 X-Forwarded-For 字段。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享