当前位置:首页 > 运维笔记 > 正文

网站如何屏蔽国外IP用户访问?(亲测有效)

当你的网站做到一定时候,一定会有大量国外IP访问你的隐私目录,去渗透你的主机权限,或者用cc攻击你,或者使用dos攻击你,因为现在主流的攻击模式,就是dos,流量IP大部分都分布在国外IP段,美国、加拿大的IP段居多,如果我们可以禁止国外IP,也就是禁止掉了70%以上的网站攻击,而国内代理IP虽然也比较多,但是毕竟数量有限,经常寻找屏蔽下基本是可以解决问题的。

网站如何屏蔽国外IP用户访问?(亲测有效)

今天黑猫站长来为大家分享网站如何屏蔽国外IP用户访问的方法,亲测有效!下面来分享思路。

禁止国外IP思路:

很多人都是,发现国外IP就屏蔽,发现就屏蔽,其实你根本屏蔽不完,国外IP几百万个IP段,你能屏蔽过来么,所以要换一个思路,我们收集国内所有IP段,只允许收集的国内IP段访问,其他的IP(国外)的IP,都无法访问,无论是新加坡,美国,韩国、日本等等都没用,这就有效的阻止了国外IP,下面分享方法。

1、登录自己的Linux服务器,执行以下代码。

该代码会把国内所有IP段下载到自己的服务器中(建议每个月执行一次)。因为国内有IP段更新,执行后,linux窗口不会有反应,txt文件自动会进行下载,一般执行5分钟左右,大家关闭窗口就可以了。

wget -q –timeout=60 -O- ‘http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest’ | awk -F|’/CN|ipv4/ { printf(“%s/%dn”, $4, 32-log($5)/log(2)) }’ > /root/china_ssr.txt

2、将下面脚本保存为/root/allcn.sh ,设置可执行权限(755)。

值得注意的是:.sh文件,大家去服务器中下载一个sh文件,重命名,然后把下面的复制粘贴进去,就行了,如果用txt改sh文件,会乱码,执行不成功,sh的格式很严谨(另外下面的代码不要有换行符)。

mmode=$1
#下面语句可以单独执行,不需要每次执行都获取网段表
#wget -q –timeout=60 -O- ‘http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest’ | awk -F|’/CN|ipv4/ { printf(”%s/%dn”, $4, 32-log($5)/log(2)) }’ > /root/china_ssr.txt
CNIP=”/root/china_ssr.txt”
gen_iplist() {
cat 《-EOF
$(cat ${CNIP:=/dev/null} 2>/dev/null)
EOF
}
flush_r() {
iptables -F ALLCNRULE 2>/dev/null
iptables -D INPUT -p tcp -j ALLCNRULE 2>/dev/null
iptables -X ALLCNRULE 2>/dev/null
ipset -X allcn 2>/dev/null
}
mstart() {
ipset create allcn hash:net 2>/dev/null
ipset -! -R 《-EOF
$(gen_iplist | sed -e “s/^/add allcn /”)
EOF
iptables -N ALLCNRULE
iptables -I INPUT -p tcp -j ALLCNRULE
iptables -A ALLCNRULE -s 127.0.0.0/8 -j RETURN
iptables -A ALLCNRULE -s 169.254.0.0/16 -j RETURN
iptables -A ALLCNRULE -s 224.0.0.0/4 -j RETURN
iptables -A ALLCNRULE -s 255.255.255.255 -j RETURN
#可在此增加你的公网网段,避免调试ipset时出现自己无法访问的情况
iptables -A ALLCNRULE -m set –match-set allcn src -j RETURN
iptables -A ALLCNRULE -p tcp -j DROP
}
if [ “$mmode” == “stop” ] ;then
flush_r
exit 0
fi
flush_r
sleep 1
mstart

3、打开linux服务器,执行下面代码,执行后国外ip将无法访问网站。

/root/allcn.sh

4、如果要停止的话,执行下面这个命令可恢复国外ip访问网站。

/root/allcn.sh stop

是不是非常简单,上面的IP段,大家每个月执行一次代码就行了,不需要每天执行,每个月更新一次IP库。sh文件这个很关键,一般都是在这个地方出错,大家可以下载sh文件,然后在改下内容就行,就讲解到这里,后面在视频中会详细讲解屏蔽国外IP的一些方法,好了,就先讲解到这里。

最后,如果你使用宝塔面板,那么可以选择购买宝塔官方的nginx防火墙插件,然后设置中勾选禁止国外访问即可。

有话要说...