您的位置:首页 > 其它

用 iptables 屏蔽来自某个国家的 IP

2012-04-20 16:05 549 查看
方法一:

方法很容易,先到 IPdeny 下载以国家代码编制好的 IP 地址列表,比如下载 cn.zone:
# wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone[/code] 
有了国家的所有 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/

jony 2012/02/28 在 11:20 [编辑]

http://www.cyberciti.biz/faq/block-entier-country-using-iptables/

回复


jony 2012/02/28 在 11:29 [编辑]

我现在屏蔽国内IP用的方法是把屏蔽大陆IP和屏蔽中文浏览器这两段代码都放到htaccess里去

回复


jony 2012/02/28 在 12:30 [编辑]

http://www.ip2location.com/blockvisitorsbycountry.aspx

回复


jony 2012/02/28 在 12:40 [编辑]

#简单的,判断浏览器语言,是中文的就转向

#

#

#最好是搞一个中国的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;
}

最直接最简单的办法,直接到中国互联网举报中心去举报下,很快就能在全国被屏蔽
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iptables 屏蔽国家IP