禁⽌国外ip访问⽹站、服务器
最近发现⽹站有很多国外ip的不良评论记录,为了防⽌这类情况再出现,⼲脆想办法禁⽌国外ip访问。
服务器环境
系统:centos7+
禁⽌访问服务器
1. 先运⾏以下语句获取国内IP⽹段,保存到/root/white/
wget -q --timeout=60 -O- 'ftp.apnic/apnic/stats/apnic/delegated-apnic-latest'|awk -F\|'/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }'> /roo t/white/
2. 将下⾯脚本保存为/root/white/allcn.sh
mmode=$1
#下⾯语句可以单独执⾏,不需要每次执⾏都获取⽹段表
#wget -q --timeout=60 -O- 'ftp.apnic/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /ro ot/
CNIP="/root/white/"
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
exit0
fi
flush_r
sleep1
mstart
3. 赋予可执⾏权限
chmod +x /root/white/allcn.sh
5. 执⾏下⾯代码,执⾏后国外ip将⽆法打开⽹站
/root/white/allcn.sh
6. 如果要停⽌的话执⾏下⾯这个命令可恢复国外ip访问⽹站:
/root/white/allcn.sh stop
注意:谨慎操作,不懂代码得不要瞎搞,否则可能会导致所有⼈访问不到服务器(包括部署的⽹站和
搭建ssr服务器教程SSH远程连接)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。