0

我正在尝试通过在 .htaccess 文件中使用以下命令来阻止 IP 地址范围。

因此,例如 1.2.3.0 - 1.2.3.154 需要被阻止,但它不起作用。为什么会这样?

<IfModule mod_rewrite.c>
RewriteCond %{REMOTE_HOST} ^1\.2\.3\.0/154
RewriteCond %{REQUEST_URI} !^/australia-ip-restriction?
RewriteCond %{REQUEST_URI} !^/templates/?
RewriteCond %{REQUEST_URI} !^/files/?
RewriteCond %{REQUEST_URI} /(.*)$
RewriteRule /(.*)$ /australia-ip-restriction [R=301,L]
</IfModule>
4

1 回答 1

1

使用 REGEX 重定向和阻止 IP 地址是有风险的。您可能会意外阻止或为您网站的所有流量创建重定向循环,因此您需要采取某种对策。检查日志文件以确保您正在寻找的结果确实有效,并注意误报。访问页面,确保它们按预期工作。使用代理测试国外 IP 访问限制。

世界各地都有注册商,您可以在其中查找各种 IP 地址:Ripe.netAPNIC.netArin.net等等。这些注册商负责的 IP 地址在块中是非连续的。有一些国家/地区的列表,人们试图在一个地方收集这些块。Nirsoft维护其中的一些列表。它们无论如何都不完整,IP 地址每天都在易手。如果最初在澳大利亚的公司列出的 IP 块被 Virgin Mobile 或 Microsoft 等公司获取,您最终可能会意外地在英国或美国反弹流量。

如果您有权访问核心服务器配置或能够安装软件包,为了保持服务器上的流量下降,您可以安装或设置iptables并让它阻止对您不希望流量访问的区域的重复尝试。您也可以让它阻止任何超过速度阈值(“每秒 2 页”)的流量。

假设您在robots.txt中列出了一个隐藏文件夹,您要告诉机器人禁止所有文件夹。如果您看到该文件夹​​的流量,那么您可以假设有人查看了robots.txt,然后决定偷看。这可以被视为一个蜜罐。此外,您可以隐藏文档中没有关键字值的代码,并使其对人类不可见。当有人运行此代码或点击代码中的隐藏链接时,如果他们不遵守您的 robots.txt 文件,您也可以将他们添加到违规者列表中。

您还可以在 MySQL 中设置数据库,并使用 PHP 之类的语言来丢弃访问蜜罐的连接(或重定向异地)或尝试暴力攻击登录表单或 FTP 帐户的地址。我在网络表单上实施数据库以跟踪已经完成表单的人。如果有多次垃圾邮件尝试,它们将被添加到我的黑名单中。

通过反向查找并在其 TLD 中搜索其国家/地区代码或通过阻止浏览器要求使用特定母语页面的用户来阻止用户比阻止 IP 地址范围要容易得多。

回到你的例子

在您的代码中,除非您使用 [or],否则每条RewriteCond行都应该为真。这是Apache 访问限制的更深入参考

REMOTE_HOST是域名...所以这一行:

RewriteCond %{REMOTE_HOST} ^1\.2\.3\.0/154

应该REMOTE_ADDR改用:

RewriteCond %{REMOTE_ADDR} ^1\.2\.3\.(1[0-4][0-9]|15[0-4]|[0-9][0-9]|[0-9])$
RewriteRule ^(.*)$ australia-ip-restriction [R=301,L]
于 2013-04-30T04:58:06.257 回答