1. 92OWLHome
  2. 超文本
  3. 網管筆記
  4. 安全相關

阻斷惡意的連線 | NGINX

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

我知道網上已經爆多這類的文章教學,而我只是mark 目前最適合自己的配置。

首先是新增一個 agent_deny.conf。
顧名思義就是針對 http_user_agent 做判斷不好的請求並阻斷。
OWL覺得這個其實滿重要的,如果不設定這些,有心利用,資源被佔盡,網站就掛了。

設定方法:

在 nginx 新增一個阻擋判斷的.conf,並打入以下內容:

cd /usr/local/nginx/conf
vim agent_deny.conf

#禁止工具抓取
if ($http_user_agent ~* (ab|HttpClient|Scrapy|PHP|Wget|ab|wget|BBBik)) {
     return 444;
    }

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

#防/ 禁止指定UA及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;
     }

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

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

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

測試效果,使用 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,說明配置成功啦。

另註明一下:如果有設定 禁止UA:PHP,在FB貼站內網址的話,將會被擋下403喔!

打雞血的防護

防止檔案被下載:

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

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。

———

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,可以再加一層安全守護。

筆記參考:

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

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