htaccess通过ip范围重定向

时间:2013-04-30 04:15:04

标签: .htaccess mod-rewrite

我正试图通过在.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>

1 个答案:

答案 0 :(得分: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表单上实现数据库,以跟踪已经完成表单的人员。如果有多次垃圾邮件尝试,则会将其添加到我的黑名单中。

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

返回您的示例

在您的代码中,除非您使用[或],否则每个RewriteCond行都应为true。以下是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]