zoukankan      html  css  js  c++  java
  • 针对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将不能访问网站。

  • 相关阅读:
    现代软件工程_第一周练习_第12题
    [assembly: AssemblyVersion("1.0.1.*")] 指定版本字符串不符合所需格式
    C#中结构体与字节流互相转换
    字节转化为结构体BytesToStruct
    C#调用Microsoft.DirectX.DirectSound问题记录及解决
    C# Wpf集合双向绑定
    <转载>XML操作
    <转载>提升程序的特权(AdjustTokenPrivileges)
    <转载>批处理之FOR语句祥解
    Effective STL 笔记: Item 6--Be alert for C++'s most vexing parse
  • 原文地址:https://www.cnblogs.com/bestOPS/p/11246188.html
Copyright © 2011-2022 走看看