我在 centos6 下使用 apache 2.2,最近遇到了一些不想要的访问,我想禁止这些访问。
例如,我的错误日志中有这样的内容:
[2013 年 4 月 14 日星期日 01:06:29] [错误] [客户端 96.254.171.2] 文件不存在:/var/www/html/var,引用者:http:**server5.cyberpods.net/azenv.php
(我将 http:// 替换为 http:** 以防止人们点击该链接,但我不确定这是否安全)
我想我可以禁止任何以 azenv.php 结尾的内容。应该采取什么方法?
答案1
有很多方法可以阻止引用的 URL 和/或 IP,因此我将提供给你几种简单的方法:
1)您可以在网站的顶级目录中保存一个 .htaccess 文件,并进行重写,例如:
## specific referring url blocking
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} .*/azenv\.php [NC,OR]
RewriteRule .* - [F]
或者类似于 iptables:
## user ip blocking
<Limit GET POST>
order allow,deny
deny from 96.254.171.2
allow from all
</Limit>
另一个例子:
## banning referring urls with specific words, etc.
# set the skridz_ref variable
SetEnvIfNoCase Referer "^azenv.php" skridz_ref=1
# block all referrals that have skridz_ref set
<FilesMatch "(.*)">
Order Allow,Deny
Allow from all
Deny from env=skridz_ref
</FilesMatch>
2)如果你的服务器上有 ssh 访问权限,你可以像这样在 iptables 中阻止该 ip:
# iptables -A INPUT -s 96.254.171.2 -j DROP
# service iptables save
从 iptables 中解除阻止(并删除)IP:
# iptables -D INPUT -s xx.xxx.xx.xx -j DROP
# iptables -D INPUT -s 96.254.171.2 -j DROP
# service iptables save