与不断攻击您网站的机器人、垃圾邮件发送者或黑客打交道?根据严重程度,它可能会对您的访问和带宽产生重大影响,在这种情况下,您可能需要尝试阻止它们。
大部分云服务器都附带一个免费的IP拒绝工具,可让您拦截特定IP地址和范围访问您的网站。在本文中,我们将介绍可用于拒绝拦截IP地址的几种方法。
如何识别有问题的IP地址
WordPress是一个动态 CMS ,这意味着PHP worker按需生成未缓存的页面。由于未缓存的请求需要显着更多的CPU和RAM资源来提供服务(与缓存的请求相比),恶意行为者有可能通过发送大量请求来强制服务器停止响应。
如果您遇到这种情况,可以帮助减少服务器负载的一种策略是拒绝麻烦的IP地址访问。
如果您的服务器提供商提供IP访问统计,您可以通过服务器提供商提供的控制面板查看IP访问统计表以识别有问题的IP地址。
您也可以通过分析服务器访问日志来实施,当然如果您希望通过安装插件来统计访问IP,也是可行的,比如WP Statistics。
如果您发现某个IP地址发出的请求比其他IP多得多(例如5-10倍),您可能需要进一步调查以确定该IP是机器人还是垃圾邮件发送者。检查IP是否恶意的最简单方法是使用诸如CleanTalk或Spamhaus之类的reputation检查器。
如果reputation检查器将IP地址识别为机器人或垃圾邮件发送者 IP,您可以采取进一步措施来阻止该IP。请记住,即使信誉检查器没有将该IP列为恶意IP,也可能只是意味着该IP尚未在其数据库中。
如果您发现IP导致您的服务器返回HTTP 502错误或完全关闭,则值得测试阻止IP地址是否会使事情变得更好。
如何使用宝塔面板拒绝拦截IP地址
宝塔面板提供屏蔽IP工具允许您阻止单个IP地址以及IP地址范围,而无需编辑Web服务器配置文件。
重要的:屏蔽IP工具是一项强大的功能,如果使用不当,可能会阻止合法服务或个人。
要在宝塔面板中屏蔽拦截IP地址,请导航至安全,选择屏蔽IP,填入屏蔽IP或者IP段,点击屏蔽按钮即可添加指定IP/IP段至屏蔽列表。
宝塔面板中的IP屏蔽工具
在“将IP地址添加到屏蔽”模式中,您可以将IPV4地址、IPV6地址和CIDR(无类域间路由)IP地址范围添加到阻止列表。CIDR范围可用于屏蔽IP地址的连续范围(例如127.0.0.1到127.0.0.255)。要生成有效的CIDR范围,我们建议使用这样的工具。
以下是一些您可以屏蔽的IP地址示例:
- IPV4地址 – 103.5.140.141
- IPV6地址 – 2001:0db8:0a0b:12f0:0000:0000:0000:0001
- CIDR范围 – 128.0.0.1/32
如何在Cloudflare中拒绝拦截IP地址
如果您是Cloudflare用户,您可以使用Cloudflare仪表盘中的“IP Access Rules”工具来屏蔽IP地址和IP范围。
在Cloudflare仪表盘中,导航到Firewall > Tools。
Cloudflare工具仪表盘
要创建新的IP访问规则,请添加IP地址,选择“Block”操作,选择“This Website”(如果您希望规则适用于所有Cloudflare域,则选择“All Websites in Account”),然后单击“Add”。
添加IP访问规则
添加访问规则后,它将出现在“IP Access Rules”列表中。在这里,您可以对访问规则进行更改,例如更改操作、添加注释和删除规则。
Cloudflare仪表盘中的IP访问规则
除了“Block”动作,Cloudflare还支持“Challenge”、“Allow”和“JavaScript Challenge”。根据您要实现的目标,您可能希望使用这些其他操作之一,而不是“Block”。
在Cloudflare中拦截IP范围、国家和ASN
除了单个IP地址,Cloudflare的IP访问规则还支持IP范围、国家名称和ASN(自治系统编号)。
- 要屏蔽IP范围,请为IP访问规则值指定CIDR范围。
- 要屏蔽某个国家/地区,请指定其为Alpha-2国家/地区代码。
- 要屏蔽ASN(由单个网络运营商控制的IP列表),请指定以“AS”开头的有效ASN。
如何在Nginx中拒绝拦截IP地址
如果您的站点是使用Nginx Web服务器自托管的,您可以直接在Web服务器配置中屏蔽IP地址。
要在Nginx中屏蔽IP地址,请通过SSH连接到您的服务器并使用nano
文本编辑器打开Nginx配置文件,如下所示:
nano /etc/nginx/nginx.conf
如何使用Nginx屏蔽单个IP地址
要在 Nginx 中阻止单个 IP(IPV4 或 IPV6)地址,请使用如下deny
指令:
deny 4b73:8cd3:6f7b:8ddc:d2f9:31ca:b6b1:834e;
deny 190.60.78.31; deny 4b73:8cd3:6f7b:8ddc:d2f9:31ca:b6b1:834e;
如何使用Nginx屏蔽CIDR IP范围
要在Nginx中阻止CIDR IP范围,请使用以下指令:
deny 192.168.0.0/24;
高级Nginx IP拦截技术
如果要阻止对特定目录的访问(ed domain.com/secret-directory/),可以使用下面的Nginx指令:
deny 192.168.0.0/24;
}
location /secret-directory/ { deny 192.168.0.0/24; }
deny
指令接受all
一个值。这对于您想要阻止所有 IP 地址访问您的站点的情况很有用。deny all;
指令通常与allow
– 一起使用- 这使您可以允许特定的 IP 地址同时阻止其他所有内容。
allow 192.168.0.0/16;
deny all;
}
location /secret-directory/ { allow 192.168.0.0/16; deny all; }
保存Nginx配置并重新加载Nginx
使用nano完成配置编辑后,请务必按Ctrl+O保存更改。保存文件后,按Ctrl+X 退出nano。
要激活新的IP屏蔽规则,您还需要使用以下命令重新加载Nginx配置:
sudo systemctl reload nginx
如何在Apache中屏蔽IP地址
如果您的站点是使用Apache Web服务器自托管的,您可以直接在Web服务器配置中屏蔽IP地址。要在Apache中屏蔽IP地址,您需要使用.htaccess文件,它允许您将唯一规则应用于特定目录。要在整个站点上应用规则,应将.htaccess文件放在站点的根目录中。
首先,通过SSH连接到您的服务器,导航到您站点的根目录,然后使用以下命令创建.htaccess文件:
touch .htaccess
接下来,使用nano
文本编辑器打开.htaccess文件,如下所示:
nano .htaccess
屏蔽IP的确切规则取决于您使用的是Apache 2.2还是2.4,因此我们将包含两个版本的规则。编辑.htaccess文件时,请使用Apache版本对应的规则。
如何使用Apache拦截单个IP地址
要在Apache中拦截单个IP(IPV4或IPV6)地址,请使用以下规则:
order allow, deny
allow 192.168.0.0
deny from all
#Apache 2.4
Require all granted
Require not ip 192.168.0.0
# Apache 2.2 order allow, deny allow 192.168.0.0 deny from all #Apache 2.4 Require all granted Require not ip 192.168.0.0
如何使用Apache屏蔽CIDR IP范围
要在Apache中拦截IP范围地址,请使用以下规则:
order allow, deny
allow 192.168.0.0/16
deny from all
#Apache 2.4
Require all granted
Require not ip 192.168.0.0/16
# Apache 2.2 order allow, deny allow 192.168.0.0/16 deny from all #Apache 2.4 Require all granted Require not ip 192.168.0.0/16
小结
根据您的站点配置,有不同的方法可以屏蔽拦截IP地址访问您的站点。如果您是宝塔用户,我们建议使用宝塔自带的IP屏蔽工具。
如果你使用Cloudflare之类的CDN,则可以使用CDN自带的IP屏蔽规则实现,它允许您创建唯一的IP访问规则来拦截IP地址、范围等。最后,如果前两者您都没在用,您可以直接在您的Web服务器配置文件中实施IP屏蔽拦截规则。