1. 程式人生 > >Nginx常用遮蔽規則,讓網站更安全

Nginx常用遮蔽規則,讓網站更安全

Nginx (engine x) 是一個高效能的HTTP和反向代理服務,目前很大一部分網站均使用了Nginx作為WEB伺服器,Nginx雖然非常強大,但預設情況下並不能阻擋惡意訪問,xiaoz整理了一份常用的Nginx遮蔽規則,希望對你有所幫助。

在開始之前,希望您已經熟悉Nginx常用命令(如停止、重啟等操作)及排查nginx錯誤日誌,以免出現問題不知所措。如無特殊註明,以下的命令均新增到server段內,修改nginx配置之前務必做好備份,修改完畢後需要過載一次nginx,否則不會生效。

防止檔案被下載

比如將網站資料庫匯出到站點根目錄進行備份,很有可能也會被別人下載,從而導致資料丟失的風險。以下規則可以防止一些常規的檔案被下載,可根據實際情況增減。

location ~ \.(zip|rar|sql|bak|gz|7z)$ {
  return 444;
}

遮蔽非常見蜘蛛(爬蟲)

如果經常分析網站日誌你會發現,一些奇怪的UA總是頻繁的來訪問網站,而這些UA對網站收錄毫無意義,反而增加伺服器壓力,可以直接將其遮蔽。

if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) {
     return 444;
}

禁止某個目錄執行指令碼

比如網站上傳目錄,通常存放的都是靜態檔案,如果因程式驗證不嚴謹被上傳木馬程式,導致網站被黑。以下規則請根據自身情況改為您自己的目錄,需要禁止的指令碼字尾也可以自行新增。

#uploads|templets|data 這些目錄禁止執行PHP
location ~* ^/(uploads|templets|data)/.*.(php|php5)$ {
    return 444;
}

遮蔽某個IP或IP段

如果網站被惡意灌水或CC攻擊,可從網站日誌中分析特徵IP,將其IP或IP段進行遮蔽。

#遮蔽192.168.5.23這個IP
deny 192.168.5.23;
#遮蔽192.168.5.* 這個段
denu 192.168.5.0/24;

其它說明

再次強調,修改nginx配置之前務必做好備份,修改完畢後需要過載一次nginx,否則不會生效。

上面大部分規則返回444狀態碼而不是403,因為444狀態碼在nginx中有特殊含義。nginx的444狀態是直接由伺服器中斷連線,不會向客戶端再返回任何訊息,比返回403更加暴力。若有不足還請補充和指正。