• 针对Nginx日志中出现的漏洞扫描与爬虫的三种措施


    0x001

    使用fail2ban工具结合防火墙(iptables | firewalld),将大量404请求的IP地址封了。(详见fail2ban使用说明:https://www.cnblogs.com/bestOPS/p/10616401.html)

    0x002

    将所有非法请求跳转至首页:
    在nginx.conf 或 虚拟主机的配置文件中的server 配置段落里执行:
    a. 把返回错误页面配置 打开注释

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

    b. 加入下面配置:

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

    c. 编写error.html页面

      略。
    d. 平滑重启nginx systemctl nginx reload

    0x003

    指定User-Agent 并返回403

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

    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将不能访问网站。

  • 相关阅读:
    jQuery获取各种标签的文本和value值
    python中base64编码与解码
    Django 的 slug url 正则匹配
    JavaScript base64 加密解密
    HTML引入外部JS文件
    CSS样式的引入方式
    Django 配置404页面
    selenium 基本操作
    python 启动pydoc查看文档
    selenium webdriver
  • 原文地址:https://www.cnblogs.com/bestOPS/p/11246188.html
Copyright © 2020-2023  润新知