nginx屏蔽指定用戶瀏覽器的方法

字號+ 編輯: 种花家 修訂: 种花家 來源: 原创 2023-09-20 我要說兩句(1)

Nginx受到惡意DDOS攻擊時, 經常會發現有一群很有特點的UA來訪問, 有效屏蔽UA(也就是瀏覽器), 幫助服務器減輕負荷。

什麽是UA? 就是User Agent的簡稱, 學名爲用戶代理, 說白了就是用戶上網用的瀏覽器軟體。例如谷歌瀏覽器、火狐瀏覽器、IE瀏覽器。他們在訪問nginx時, 會在head頭裡面摻入一段聲明自身瀏覽器屬性的文字。當然某些黑客在使用軟體坑我們的時候, 也會搞一套類似的聲明出來。

30f967d414af6b04b9bfd2cb733601de.jpeg

另外有一些小白寫的採集爬蟲、攻擊器也會有空的UA聲明出現, 知道這方面現象, 有助於我們快速判斷和解決問題。

nginx各個配置文档的位置

首先要學會如何定位nginx配置文档的位置, 一般的nginx都會習慣性的安裝到/usr/local/nginx, 如果是這樣的話, 配置文档就應該放到對應的conf目錄裡, 位置就在/usr/local/nginx/conf/nginx.conf

但有的同學不是這樣放網站配置文档的, 而是放到conf下vhost或者vshots目錄下的xxx.xxx.com.conf這樣的, 分別以.conf擴展名結尾的配置文档裡。

爲了方便管理,我們在conf文档夾下, 先新建一個專門用來屏蔽非法UA的文档, 命名爲bad_ua.conf, 那麽它的路徑就是/usr/local/nginx/conf/bad_ua.conf

攔截非法UA的代碼

我們需要用到一個nginx變量叫$http_user_agent, 模糊攔截時, 用約等號"~", 代碼如下

if ($http_user_agent ~ (Alexa\ Toolbar|Sogou\ web|Semrushbot|Scrapy|Curl|HttpClient)) {
    return 404;
}

注意, 有些黑客在攻擊時會在工具裡添加參數, 冒充搜狗搜索引擎之類的爬蟲UA, 此時, 如果你想封掉這個UA, 中間需要輸入空格, 怎麽辦? 用轉義符反斜杠"\"加在空格前面, 便於nginx識別到。其他類似括號、橫杠也是一樣加上這個反斜線轉義符"\"。

用awk命令來分析頻繁訪問主機的UA排行

這是一個代碼案例, 假設我們要分析最新的一萬次訪問記錄, 且nginx access日志打開, 路徑爲/usr/local/nginx/logs/access.log的前提下, 輸入以下shell命令來分析出到底是什麽UA在拼命訪問nginx:

tail -n 10000 /usr/local/nginx/logs/access.log | awk -F\" '{A[$(NF-1)]++}END{for(k in A)print A[k],k}' | sort -n | tail

更多的awk命令在這裡: https://www.wkwkk.com/articles/a5151995cf1f85c6.html

將攔截配置腳本引入nginx配置文档

上文提到了配置腳本被命名爲bad_ua.conf, 放到conf目錄下了, 那麽只需要在相應網站配置位置下寫一段代碼就可以了:

include bad_ua.conf

一般都寫在root /home/wwwroot/xxxx類似的配置語句下面。

最後別忘了重啓nginx, 假設nginx主程序位置在/usr/local/nginx/sbin/nginx, 那麽命令應該是

/usr/local/nginx/sbin/nginx -s reload

重啓完畢後攔截配置功能方才正式生效。

閲完此文,您的感想如何?
  • 有用

    10

  • 沒用

    3

  • 開心

    4

  • 憤怒

    3

  • 可憐

    3

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • 防止退出linux終耑退出之後導致的nohup進程強制退出

  • Linux系統下word文档轉成pdf的辦法

  • ubuntu和debian安裝nginx或者tengine報錯, 找不到pcre依賴庫的解決辦法

  • 常見的web中間件請求返回狀態碼

我要說說
網上賓友點評
1 樓 IP 113.86.***.253 的嘉賓 说道 : 很久前
求联系方式