美文网首页
Nginx 常用屏蔽规则、安全配置

Nginx 常用屏蔽规则、安全配置

作者: Talentisan | 来源:发表于2020-01-08 12:32 被阅读0次

    Nginx(引擎x)是一个高性能的HTTP和反向代理服务,目前很大一部分网站均使用了Nginx作为WEB服务器,Nginx虽然非常强大,但默认情况下并不能阻挡恶意访问,xiaoz整理了一份常用的Nginx的屏蔽规则,希望对你有所帮助。

    image

    在开始之前,希望您已经熟悉的Nginx常用命令(如停止,重启等操作)及排查nginx的错误日志,以免出现问题不知所措。如无特殊注明,的以下命令:均添加到server段内,**修改nginx的配置之前务必做好备份,修改完毕后需要重载一次nginx的,否则不会生效。

    防止文件被下载
    比如将网站数据库导出到站点根目录进行备份,很有可能也会被别人下载,从而导致数据丢失的风险。以下规则可以防止一些常规的文件被下载,可根据实际情况增减。

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

    屏蔽非常见蜘蛛(爬虫)
    如果经常分析网站日志你会发现,一些奇怪的UA总是频繁的来访问网站,而这些UA对网站收录毫无意义,反而增加服务器压力,可以直接将其屏蔽。

    if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) {
         return 444;
    }
    

    禁止某个目录执行脚本
    比如网站上传目录,通常存放的都是静态文件,如果因程序验证不严谨被上传木马程序,导致网站被黑。以下规则请根据自身情况改为您自己的目录,需要禁止的脚本后缀也可以自行添加。

    #uploads|templets|data 这些目录禁止执行PHP
    location ~* ^/(uploads|templets|data)/.*.(php|php5)$ {
        return 444;
    }
    

    屏蔽某个IP或IP段
    如果网站被恶意灌水或CC攻击,可从网站日志中分析特征IP,将其IP或IP段进行屏蔽。

    #屏蔽192.168.5.23这个IP
    deny 192.168.5.23;
    #屏蔽192.168.5.* 这个段
    denu 192.168.5.0/24;
    

    其它说明
    再次强调,修改nginx的配置之前务必做好备份,修改完毕后需要重载一次nginx的,否则不会生效。

    大部分上面规则报道查看444状态码而不是403,因为444状态码在nginx的中有特殊含义.nginx的444状态是直接由服务器中断连接,不会向客户端再返回任何消息,比返回403更加暴力。若有不足还请补充和指正。

    网站安全配置Nginx防止网站被攻击(转) :https://blog.csdn.net/nightstar84/article/details/80109810

    
    ## 用户的 IP 地址 $binary_remote_addr 作为 Key,每个 IP 地址最多有 50 个并发连接
    ## 你想开 几千个连接 刷死我? 超过 50 个连接,直接返回 503 错误给你,根本不处理你的请求了
    limit_conn_zone $binary_remote_addr zone=TotalConnLimitZone:10m ;
    limit_conn  TotalConnLimitZone  50;
    limit_conn_log_level notice;
    
    ## 用户的 IP 地址 $binary_remote_addr 作为 Key,每个 IP 地址每秒处理 10 个请求
    ## 你想用程序每秒几百次的刷我,没戏,再快了就不处理了,直接返回 503 错误给你
    limit_req_zone $binary_remote_addr zone=ConnLimitZone:10m  rate=10r/s;
    limit_req_log_level notice;
     
    ## 具体服务器配置
    server {
        listen   80;
        location ~ \.php$ {
                    ## 最多 5 个排队, 由于每秒处理 10 个请求 + 5个排队,你一秒最多发送 15 个请求过来,再多就直接返回 503 错误给你了
            limit_req zone=ConnLimitZone burst=5 nodelay;
     
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include fastcgi_params;
        }   
     
    }
     
    ## 用户的 IP 地址 $binary_remote_addr 作为 Key,每个 IP 地址最多有 50 个并发连接
    ## 你想开 几千个连接 刷死我? 超过 50 个连接,直接返回 503 错误给你,根本不处理你的请求了
    limit_conn_zone $binary_remote_addr zone=TotalConnLimitZone:10m ;
    limit_conn  TotalConnLimitZone  50;
    limit_conn_log_level notice;
     
    ## 用户的 IP 地址 $binary_remote_addr 作为 Key,每个 IP 地址每秒处理 10 个请求
    ## 你想用程序每秒几百次的刷我,没戏,再快了就不处理了,直接返回 503 错误给你
    limit_req_zone $binary_remote_addr zone=ConnLimitZone:10m  rate=10r/s;
    limit_req_log_level notice;
     
    ## 具体服务器配置
    server {
        listen   80;
        location ~ \.php$ {
                    ## 最多 5 个排队, 由于每秒处理 10 个请求 + 5个排队,你一秒最多发送 15 个请求过来,再多就直接返回 503 错误给你了
            limit_req zone=ConnLimitZone burst=5 nodelay;
     
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include    fastcgi_params;
        }    
     
    }
    

    相关文章

      网友评论

          本文标题:Nginx 常用屏蔽规则、安全配置

          本文链接:https://www.haomeiwen.com/subject/hltsactx.html