用 iptables 屏蔽来自某个国家的 IP
14 年 ago jony 7
方法一:
方法很容易,先到 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/
7 comments
jony 2 月 28, 2012 at 11:20 上午
http://www.cyberciti.biz/faq/block-entier-country-using-iptables/
jony 2 月 28, 2012 at 11:29 上午
我现在屏蔽国内IP用的方法是把屏蔽大陆IP和屏蔽中文浏览器这两段代码都放到htaccess里去
jony 2 月 28, 2012 at 12:30 下午
http://www.ip2location.com/blockvisitorsbycountry.aspx
jony 2 月 28, 2012 at 12:40 下午
#简单的,判断浏览器语言,是中文的就转向
#
#
#最好是搞一个中国的IP列表,根据IP来判断
jony 2 月 28, 2012 at 12:49 下午
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/
jony 2 月 28, 2012 at 12:50 下午
一、利用.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屏蔽技术,通过使用国外代理服务器或国外VPN,照样可以跨越屏蔽,畅通无阻地访问你的网站。
二、屏蔽中文操作系统(通过判断客户端的操作系统版本)
1.PHP代码如下:
$client_sys_language = $_SERVER["HTTP_ACCEPT_LANGUAGE"]; // system language
if (preg_match (“/^zh-cn/i”,$client_sys_language)) {
echo “
Forbidden
You don’t have permission to access /on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
365.dg01.com Port 80
”;
exit;
}
jony 2 月 28, 2012 at 12:57 下午
最直接最简单的办法,直接到中国互联网举报中心去举报下,很快就能在全国被屏蔽
评论已关闭。