利用ipdeny.com配置iptables只允许国内ip访问网站

目的:组织国外黑客攻击者对国内ip服务器的扫描和渗透。
所以需要中国的ip库,可以在 http://www.ipdeny.com/ 看各个国家的IP段。
方法:使用ipset和iptables做限制。

1、安装ipset
#Debian/Ubuntu系统
apt-get -y install ipset
 
#CentOS系统
yum -y install ipset
2、创建新规则

#创建一个名为cnip的规则ipset -N cnip hash:net
#下载国家IP段,这里以中国为例
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone
#将IP段添加到cnip规则中
for i in $(cat /root/cn.zone ); do ipset -A cnip $i; done
3、设置IP段白名单

#放行IP段
iptables -A INPUT -p tcp -m set --match-set cnip src -j ACCEPT
#关掉所有端口
iptables -P INPUT DROP
注意:iptables -P INPUT DROP 这个会把不是国内访问的端口全部关掉

如果设置IP设置有误,有可能会把自己的IP也禁止掉,如果只是网站可以只禁用80和443端口

#关闭指定端口,比如80/443
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP
这样即使误操作了直接保存了,也不会造成自己ssh登不上去

4、保存iptables配置

service iptables save   #将规则是保存在/etc/sysconfig/iptables文件里

5、添加额外IP白名单

添加完国内IP白名单后,如果有漏添加的造成一些用户无法访问,或者自己想让某一些IP可以访问,就可以额外的添加上去

1)找到 cn.zone 文件,打开(如果直接打开太慢,可以下载到本地在使用notpad++等编辑)在文件最后追加ip

2 )再执行一遍命令
for i in $(cat /root/cn.zone ); do ipset -A cnip $i; done
如果有重复报错可以忽略。
滚动至顶部