針對Nginx日誌中出現的漏洞掃描與爬蟲的三種措施

0x001php

使用fail2ban工具結合防火牆(iptables | firewalld),將大量404請求的IP地址封了。(詳見fail2ban使用說明:https://www.cnblogs.com/bestOPS/p/10616401.html)html

 

0x002nginx

將全部非法請求跳轉至首頁:
在nginx.conf 或 虛擬主機的配置文件中的server 配置段落裏執行:
a. 把返回錯誤頁面配置 打開註釋安全

 error_page 403 404 500 502 503 504 = /error.html;

b. 加入下面配置:bash

location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}

c. 編寫error.html頁面服務器

  略。
d. 平滑重啓nginx systemctl nginx reloadide

 

0x003工具

指定User-Agent 並返回403網站

a. 在nginx.conf配置文件中加入:url

include agent_deny.conf;

b. 在/../nginx/conf目錄下新建agent_deny.conf

vi agent_deny.conf
    # 禁止Scrapy等工具的抓取
    if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
      return 403;
    }

    # 禁止指定UA及UA爲空的訪問
    if ($http_user_agent ~ "FeedDemon|JikeSpider|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|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Googlebot|Ezooms|^$" )
    {
      return 403;
    }

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

c. 修改Nginx配置文件後重啓或重載

systemctl reload nginx  |  /etc/init.d/nginx reload  | service nginx reload

該方法會屏蔽大量爬蟲和自動化無差異攻擊,使本身的服務器更加安全和高可用。

 

附錄一:

在上述的 0x003中,能夠將指定的User_agent加入到配置列表中,重載Nginx後,新加的User_agent將不能訪問網站。

相關文章
相關標籤/搜索