利用 Nginx 阻斷惡意的連線

首先是新增一個 agent_deny.conf
顧名思義就是針對 http_user_agent 做判斷,不好的請求就阻斷。

我知道網上已經爆多這類的文章教學,而我只是 Mark 自己的配置。

首先是新增一個 agent_deny.conf
顧名思義就是針對 http_user_agent 做判斷,不好的請求就阻斷。

設定方法:

在 nginx 新增一個 agent_deny.conf

# 新增 agent_deny.conf 
vim /usr/local/nginx/conf/agent_deny.conf

寫入 抓取的請求:

#禁止工具抓取
#另註明一下:如果有設定 禁止UA:PHP,在FB貼站內網址的話,將會被擋下403喔!
if ($http_user_agent ~* (HttpClient|Scrapy|PHP|Wget|ab|wget|BBBik)) {
     return 444;
    }

#禁止非方式的抓取 
if ($request_method !~ ^(GET|POST|HEAD)$) {
    return 444; #403
    }

#禁止 bad-UA 的瀏覽
if ($http_user_agent ~* "|自己加|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|DotBot|Ezooms|SemrushBot|GrapeshotCrawler|Qwantify|^$" ){
     return 444;
     }

新增完成後:wq 儲存,測試 nginx -t,重啟 nginx nginx restart

OWL 喜歡直接設定回應狀態為 444,一來,簡單乾脆不黏瘩;二來,好抓IP,此網生不見!
nginx 的 444 是直接由伺服器中斷連線,不會向瀏覽者顯示任何訊息,省流量乾脆!

修改 nginx 配置前,務必做好備份;修改後,需要重啟一次 nginx,否則不會生效。

NG- UA 收集
FeedDemon 內容採集
BOT/0.1 (BOT for JCE) sql注入
CrawlDaddy sql注入
Java 內容採集
Jullo 內容採集
Feedly 內容採集
UniversalFeedParser 內容採集
ApacheBench cc攻擊器
Swiftbot 無用爬蟲
YandexBot 無用爬蟲
AhrefsBot 無用爬蟲
MJ12bot 無用爬蟲
ZmEu phpmyadmin 漏洞掃描
WinHttp 採集cc攻擊
EasouSpider 無用爬蟲
HttpClient tcp攻擊 「v2ray」
Microsoft URL Control 掃描
YYSpider 無用爬蟲
jaunty wordpress爆破掃描器
oBot 無用爬蟲
Python-urllib 內容採集
Indy Library 掃描
FlightDeckReports Bot 無用爬蟲
Linguee Bot 無用爬蟲
DotBot 無用爬蟲(國外SEO爬蟲)

另外,若有使用 fail2ban,可以再加一層安全守護。

測試效果,

#使用 curl -A 模擬:
#例如模擬 GrapeshotCrawler 蜘蛛抓取:
curl -I -A 'GrapeshotCrawler' https://92owl.com

#模擬 UA 為空的抓取:
curl -I -A '' https://92owl.com

#模擬Google蜘蛛的抓取:
curl -I -A 'Googlebot' https://92owl.com

如果 GrapeshotCrawler 和 UA 為空的,回應的是 444(空白頁面)/ 403,而Google bot 成功回應 200,說明配置成功啦。

關於nginx 再打雞血的防護

以下設定一般我都直接設定 nginx.conf 內

防止檔案被下載:

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

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

禁止某個目錄執行指令碼:

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

location ~* ^/(uploads|templets|data**)/.*.(php|php7)$ {
 return 444;
}

防盜圖,流量是錢,省起來吧!

location ~* \.(gif|jpg|png|swf|flv)$ { 
  valid_referers none blocked www.92owl.com 92owl.com *facebook.com; 
  if ($invalid_referer) {
    return 403; 
  } 
}

第一行:指定副檔名為 gif、jpg、png、swf、flv 的文件。
第二行:
none : 許可沒有 http_refer 的請求連線;如果刪除則不許可直接連結。
blocked : 許可不是以 http:// (協議)連線;如果刪除只能在限定的域名中使用。

指定網域為 www.aaa.comaaa.com facebook.com 这3个站源。
第三行:if {…} 如果来源不是指定網域,請求將回應 403。

關閉服務器版本顯示

準備中

筆記參考:

聲明:本站原創文章由 OWL 撰寫,採用 BY-NC-SA 創作共用協議,轉載時請以連結形式標明本文地址.

轉載請注明來源: 利用 Nginx 阻斷惡意的連線 - https://92owl.com/1032/li-yong-nginx-zu-duan-e-yi-de-lian-xian.html

雞湯潤心:

我們避而不談的東西都像極了我們自己。