Nginx 常用的安全屏蔽规则

Put blinders on to those things that conspire to hold you back, especially the ones in your own head.
不要去想那些阻碍你的事,尤其是那些自己想象出来的事

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

在开始之前,请备份你的 Nginx 配置,修改完毕后需要重载一次 Nginx 的,否则不会生效。

如无特殊注明,下面命令均添加到 server 段内。

一、防止文件被下载

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

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 这些目录禁止执行 <a href="https://hexsen.com/tag/phpcode" title="更多关于 PHP 的文章" target="_blank">PHP</a>   
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;

上面规则报道查看 444 状态码而不是 403。444 状态码在 nginx 的中有特殊含义,nginx 的 444 状态是直接由服务器中断连接,不会向客户端再返回任何消息。比返回 403 更加暴力。

温馨提示:本文最后更新于2021-06-27 16:04:23,某些文章具有时效性,若有错误或已失效,请在下方留言或联系清风#
© 版权声明
THE END
文章不错?点个赞呗!
点赞338 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容