2013-04-30 107 views
0

我想通过在.htaccess文件中使用下面的命令来阻止关闭IP地址范围。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> 
+0

你必须使用一个重写规则,而不是仅仅使用mod_access? – Stobor 2013-04-30 04:17:52

+0

无所谓我只需要重定向IP范围列表 – 2013-04-30 04:19:16

+0

好的,这有点不同。重定向与禁止不同。 – Stobor 2013-04-30 05:10:49

回答

1

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

世界各地都有注册商,您可以在其中查找各种IP地址:Ripe.netAPNIC.netArin.net仅举几例。这些注册商负责的IP地址在块中是非顺序的。有一些国家的人们试图在一个地方收集这些街区。 Nirsoft维护这些列表中的一部分。它们不是以任何方式完成的,IP地址每天都在变化。如果最初在澳大利亚的公司上市的IP块被Virgin Mobile或Microsoft等公司收购,您最终可能会意外地在英国或美国流量。

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

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

您也可以在MySQL中设置数据库,并使用像PHP这样的语言来删除访问蜜罐的连接(或重定向异地),或尝试暴力攻击登录表单或FTP帐户的地址。我在Web表单上实施数据库以跟踪已完成表单的人员。如果有多个垃圾邮件尝试被添加到我的黑名单中。

通过反向查找阻止用户并为其国家/地区代码搜索其顶级域名或通过阻止浏览器以特定本地语言请求页面的用户而不是阻止IP地址范围的用户会更容易。

回到您的例子

在你的代码,每个RewriteCond行的,除非你使用[或]应该是真实的。这里有更深入的参考资料access restrictions with 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] 
+0

谢谢你。有没有一个网站可以根据国家生成这些IP地址,因此我可以将它们放入我的.htaccess文件中? – 2013-04-30 05:51:57

+0

^1 \ .2 \ .3 \。([0-1] [0-5] [0-4])$可以工作吗? – 2013-04-30 06:01:25

+0

该模式不符合1.2.3.149或1.2.3.77 – 2013-04-30 06:52:45