网站屏蔽指定国家IP访问的方法

avatar 2019年5月16日15:24:29网站屏蔽指定国家IP访问的方法已关闭评论

外贸网站不想国内IP访问或者一些敏感版权网站不想国内IP访问,可以使用cloudflare CDN服务,每月20美元可以选择过滤哪些国家的IP,或者我们可以免费通过Linux防火墙来屏蔽。

比如网站受到俄罗斯ip的攻击时,就可以这个方法来屏蔽俄罗斯的ip访问网站。

网站屏蔽指定国家IP访问的方法

http://www.ipdeny.com/ipblocks/data/countries/这个网站有很多以.zone为后缀的各个国家IP段文件,想要屏蔽俄罗斯ip,我们找到ru.zone,因为ru是俄罗斯国家的缩写代码。

下面以centos6/7系统屏蔽俄罗斯国家ip为例

1、创建脚本并保存规则

vim blockip.sh

centos6的写入这段

#/bin/bash
wget -O /tmp/ru.zone http://www.ipdeny.com/ipblocks/data/countries/ru.zone
for ip in `cat /tmp/ru.zone`
do
iptables -I INPUT -s $ip -j DROP
done

centos7的写入这段

#/bin/bash
wget -O /tmp/ru.zone http://www.ipdeny.com/ipblocks/data/countries/ru.zone
for ip in `cat /tmp/ru.zone`
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=$ip drop"
firewall-cmd --reload
done

2、执行脚本即可立即执行封锁

bash blockip.sh

3、等脚本执行完毕,保存防火墙规则(只针对centos6,如果是centos7请忽视这个步骤)

service iptables save

解封指定国家ip(适用于centos6/7)

1、查看已经drop掉的国家网段的ip序列号

iptables -L -n --line-number

2、删除规则

如果ip段较少(小国家),一个一个的删。比如执行

iptables -D INPUT 9663

如果ip段较多(大国家,比如俄罗斯,IP网段有9690行),用脚本删

centos6系统操作方法

vim ip_del.sh
#!/bin/bash
for ((i=1; i<=9690; i++))
do
echo "$i"
iptables -D INPUT 1
done

执行脚本

bash ip_del.sh

最后再次保存规则

service iptables save

centos7系统操作方法

直接进public.xml里面删除
vim /etc/firewalld/zones/public.xml
先set nu看看有多少行类似下面,4行为一个整体

有多少个这样的行,就执行 "num行 dd" 删除多少行即可。
然后保存退出,执行“firewall-cmd --reload”即可

转载自Mr大表哥

avatar