Web入门菜鸟运维

菜鸟入门:详解如何使用Nginx给服务器简单设置黑名单屏蔽IP教程

站长们经常遇到服务器被批量扫描或者被恶意抓取的状况,将异常IP添加到黑名单阻止访问是一个常用的手段,下面本教程将指引Nginx新手如何制作IP黑名单限制访问。

菜鸟入门:详解如何使用Nginx给服务器简单设置黑名单屏蔽IP教程插图

语法规则:

Nginx的ngx_http_access_module模块(默认该模块启用)可以控制配置内的ip或者ip段的访问,语法如下:

#拒绝指定精确IP连接
deny IP地址;

#拒绝指定范围IP网络段连接
deny IP地址/网段; 

#拒绝所有IP地址连接,仅本机访问模式
deny all;

#仅允许指定精确IP连接
allow IP地址; 

#仅允许指定范围IP网络段连接
allow IP地址/网段; 

#允许所有IP地址连接,Nginx默认模式
allow all;

以上规则遵循“匹配即停止”原则,如果规则之间有冲突,会以最前面匹配的规则为准。

 

使用方法:

在Nginx的conf目录下面建立blockip.conf文件(名称可以随意没有限制,叫“王大锤.haha”都可以),把想要屏蔽的IP加入这个文本文件即可,格式参见上面的“语法规则”。

再此我们做个演示:

#编译安装后配置文件路径参考如下
vim   /usr/local/nginx/conf/blockip.conf

#yum或apt安装后配置文件路径参考如下
vim   /etc/nginx/conf/blockip.conf

#屏蔽wordpress恶意扫描器网段
deny  222.186.0.0/16;
deny 66.240.0.0/16;
deny 112.114.0.0/16;

#以上千万别忘了每行末尾有个;号,不添加的话nginx重载规则会出错!

菜鸟入门:详解如何使用Nginx给服务器简单设置黑名单屏蔽IP教程插图1

一行添加一个规则,注意考虑“匹配即停止”原则,添加完成后保存(以上千万别忘了每行末尾有个;号,不添加的话nginx重载规则会出错!)。

然后在Nginx的主配置文件nginx.conf(也有可能是其他.conf文件名) 按照相应格式加入代码如下,建议使用绝对路径不会出错。

#编译安装后配置文件路径参考如下
vim   /usr/local/nginx/conf/nginx.conf

#yum或apt安装后配置文件路径参考如下
vim   /etc/nginx/conf/nginx.conf

#在HTTP段落 或者 Server段落添加如下引用
include   /usr/local/nginx/conf/blockip.conf;

#以上千万别忘了行末尾有个;号,不添加的话nginx重载规则会出错!

菜鸟入门:详解如何使用Nginx给服务器简单设置黑名单屏蔽IP教程插图2

**提示:单个网站屏蔽IP的方法:把include blockip.conf;放到网址对应的在server {    }段落块;

**提示:多个网站统一屏蔽IP的方法:把include blockip.conf;放到http {    }段落块。

写入配置并保存后,执行Nginx重载入配置命令:

#编译安装Nginx的重载入指令
/usr/local/nginx/sbin/nginx   -s   reload

#yum或apt安装Nginx的重载入指令
systemctl   reload  nginx

#旧版本Linux使用yum与apt安装Nginx的重载入指令
service   nginx   restart

若没有任何报错,那么你写入的规则就生效了;

若有报错,请参考上面的提示,可能是没写;号或者写入include不在指定段落引起的。

 

使用案例:

设置黑名单,屏蔽指定IP:

deny  222.186.43.125;

设置黑名单,屏蔽指定IP范围段:

#精确屏蔽112.114.102.1地址
deny  112.114.102.1;

#屏蔽111.82.99.1到111.82.99.254的地址
deny 111.82.99.0/24;

#屏蔽从222.186.0.1到222.186.255.254的地址(推荐,效果好)
deny  222.186.0.0/16;

#屏蔽从66.0.0.1到66.255.255.254的地址(慎用,屏蔽范围过大可能会误屏蔽很多IP)
deny  66.0.0.0/8;

设置白名单,仅允许指定IP访问:

#仅允许指定几个IP地址访问
allow  192.168.0.15;
allow  117.15.189.2;
allow  10.10.10.178;
deny   all;

#仅允许指定内网IP段访问
allow  192.168.0.0/16;
allow  10.0.0.0/8;
deny  all;

 

AndyX:当然会有更高级的玩法,比如根据某些异常规则自动将IP添加到黑名单,或者根据日志分析使用web管理界面一键添加黑名单,下次我们在进行讨论吧。

若恶意访问的目标带有明显固定标记的话(固定的引用来源或者是User-Agent标记),也可以设置Nginx规则直接拒绝链接:

  1. 设置Nginx/Apache规则屏蔽来源为site.ru的恶意扫描器
  2. 详解Nginx的rewrite规则写法 与配置location段落总结

 

(END)

 

若需转载本文,请标注来源与链接:原创内容AndyX.Net版权所有 https://andyx.net/how_to_use_nginx_to_simply_set_ip_block_list/