云服务器
云主机评测

云服务器用iptables防火墙批量禁止指定国家ip访问的方法

阿里云代金券 腾讯云代金券 VULTR优惠码 Ucloud云主机

现在做网站的不容易,我们好好的做自己的网站,没招过谁没惹过谁,但是总有坏人捣乱。cc攻击,ddos攻击连绵不绝,但是又没有什么好办法防范,很多时候大部分攻击都来自某几个特定的国家,如果我们可以禁止这几个国家的IP访问是不是就可以起到一定的防护作用呢?比如,我们的网站是中文站点,那么我们可以只允许国内用户访问,如果我们做的外贸网站,也可以只允许国外用户访问。

像这种情况,我们可以使用linux系统的iptables防火墙屏蔽国内ip访问我们的网站,当然了,前提是你用的是有自主权的云服务器或者VPS主机,因为我们需用用到的SSH进行管理。

获得不同国家ip地址

首先要收集需要禁止的国家的ip地址,不过我们不用自己一个个去收集,有一个网站已经帮我们整理好了。

http://www.ipdeny.com

这个网站列出了大部分国家的IP地址,自己去选择就好了。

下面就可以制定iptables规则了。

禁止指定国家ip访问

第二步就是添加到iptaables防火墙了,不可能一个一个去添加,这里我们用到shell脚本。

具体如下:

1,通过SSH登录自己的云服务器,建立脚本文件

vi blockip.sh

之后点击

i

插入代码。

比如要屏蔽韩国的ip访问,具体代码如下

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

执行这个脚本

bash blockip.sh

这样iptable就添加好了,但是一定要保存“service iptables save”,不然重启就没了。

解封指定国家ip

解封是上面方法的反操作,删除iptables的命令是

iptables -D INPUT 11

这句话的意思就是删除序号为11的规则。也是不可能一个一个去删除,如果有10000个ip段,那是搞死人了。

ssh环境下,首先执行

iptables -L -n --line-number

这个语句就是查看规则的序号,然后用脚本来删除。

比如想删除10到56的规则。

建立脚本文件

vi ip_del.sh

之后点击

i

插入代码。

比如要解封刚刚屏蔽的韩国的ip访问,具体代码如下

#!/bin/bash
for ((i=10; i<=56; i++))
do
echo "$i"
iptables -D INPUT 10
done

执行这个脚本

bash ip_del.sh

之后“service iptables save”保存规则,搞定!!

 

赞(1)
转载请保留:云门网 » 云服务器用iptables防火墙批量禁止指定国家ip访问的方法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址