方法一:
方法很容易,先到 IPdeny 下载以国家代码编制好的 IP 地址列表,比如下载 cn.zone:
# wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone
有了国家的所有 IP 地址,要想屏蔽这些 IP 就很容易了,直接写个脚本逐行读取 cn.zone 文件并加入到 iptables 中:
#!/bin/bash # Block traffic from a specific country COUNTRY="cn" IPTABLES=/sbin/iptables EGREP=/bin/egrep if [ "$(id -u)" != "0" ]; then echo "you must be root" 1>&2 exit 1 fi resetrules() { $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F $IPTABLES -X } resetrules for c in $COUNTRY do country_file=$c.zone IPS=$($EGREP -v "^#|^$" $country_file) for ip in $IPS do echo "blocking $ip" $IPTABLES -A INPUT -s $ip -j DROP done done exit 0
好 IP 和坏 IP 都被屏蔽掉了,这种办法当然不高明,屏蔽 IP 也没有解决被攻击的问题,但是是解决问题的第一步,屏蔽了攻击源以后我们才有带宽、时间和心情去检查 VPS 的安全问题。公布一份我们客户被攻击的网络流量图,在18点到0点所有带宽都被攻击流量占用,这时候客户无法登录 VPS,访问者也无法访问网站:
方法二:
加到网站根目录的index.php中即可
$ly_lan = strtolower(substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,5));
if ($ly_lan == “zh-cn”) {
header(‘HTTP/1.1 503 Method Not Allowed’);
echo ‘<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body bgcolor=”white”>
<center><h1>503 Service Temporarily Unavailable</h1></center>
<hr><center>nginx/0.8.54</center>
</body>
</html>’;
exit;
}
通过判断访问者浏览器语言来拒绝访问
方法三:
在根目录的.htaccess文件中加入地区IP区域
http://www.countryipblocks.net/country-blocks/select-formats/
http://www.cyberciti.biz/faq/block-entier-country-using-iptables/
我现在屏蔽国内IP用的方法是把屏蔽大陆IP和屏蔽中文浏览器这两段代码都放到htaccess里去
http://www.ip2location.com/blockvisitorsbycountry.aspx
#简单的,判断浏览器语言,是中文的就转向
#
#
#最好是搞一个中国的IP列表,根据IP来判断
http://ule.co/%E5%A4%96%E8%B4%B8%E7%BD%91%E7%AB%99%E5%B1%8F%E8%94%BD%E5%9B%BD%E5%86%85ip%E8%AE%BF%E9%97%AE%E7%9A%84%E5%8F%AF%E8%A1%8C%E6%80%A7%E6%96%B9%E6%A1%88/
一、利用.htaccess文件
在.htaccess中写法,如:
ErrorDocument 403 http://www.XX.com //这一行可有可无,表达的意思就是在不被允许的IP段打开的时候会跳到这个网页上去
order deny,allow //在英文输入法下书写完成
allow from 210.249.1.3 // 这里输入自己的IP或IP段,被允许访问
allow from 220.240.3.0/24 // 这里输入自己的IP或IP段,被允许访问
deny from 58.56.0.0/15 //被拒绝访问的IP段
还有个简单的办法:blockacountry 这个网站可以根据你想屏蔽的国家,在线生成.htaccess文件屏蔽代码,生成下载上传至服务器即可。
屏蔽IP的缺点:如果用户知道你使用了IP屏蔽技术,通过使用国外代理服务器或国外×××,照样可以跨越屏蔽,畅通无阻地访问你的网站。
二、屏蔽中文操作系统(通过判断客户端的操作系统版本)
1.PHP代码如下:
$client_sys_language = $_SERVER["HTTP_ACCEPT_LANGUAGE"]; // system language
if (preg_match (“/^zh-cn/i”,$client_sys_language)) {
echo “<H1>Forbidden</H1>You don’t have permission to access /on this server.<P><P>Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.<HR><ADDRESS>365.dg01.com Port 80</ADDRESS>”;
exit;
}
最直接最简单的办法,直接到中国互联网举报中心去举报下,很快就能在全国被屏蔽