Linux系统防火墙批量封锁与解封指定国家的所有ip

1、前言
就在我写这篇文章以前的半个小时以前,博主所在公司的IDC机房打开电话说:紧急通知你一下,IDC机房检测报告说发现大量IP地址在DDOSgongji大家的服务器,gongji源来自俄罗斯,若是不及时处理,ISP会封锁大家IP。我这一听,知道了事情的严重性,可是博主不怕,博主轻轻松松的几行shell脚本就压制住了gongji,下面博主带大家看一下我解决的过程,大牛们可能以为个人方法low,若是有更好的办法,请大牛在下面留言讨论,谢谢合做!
2、解决过程
首先告诉你们一个网址:
http://www.ipdeny.com/ipblocks/data/countries/
这个网址下面有不少.zone结尾的文件,每一个文件的名字就是每一个国家的英语单词的缩写,若是你们想找对应的国家ip,则只需知道那个国家的英文缩写便可,俄罗斯的简写就是:ru
若是想获得地球上所有国家的网段,请下载,连接以下:
http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz
1)封锁指定国家ip访问(centos6/7都适用)
①建立脚本并保存规则(这里我就以封俄罗斯全国的ip为例shell

vim blockip.shvim

如下是centos6的写法centos

#/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的写法bash

#/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

②执行脚本便可当即执行封锁服务器

bash blockip.shide

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

service iptables savecode

2)解封指定国家ip(centos6/7都适用)
①查看已经drop掉的国家网段的ip序列号xml

iptables -L -n --line-numberblog

②删除规则
⑴若是ip段较少(小国家),一个一个的删

执行:iptables -D INPUT 序列号

⑵若是ip段较多(大国家,好比俄罗斯,IP网段有9690行),用脚本删
Linux系统防火墙批量封锁与解封指定国家的所有ip
如下是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行为一个总体
Linux系统防火墙批量封锁与解封指定国家的所有ip有多少个这样的行,就执行 "num行 dd" 删除多少行便可。而后保存退出,执行“firewall-cmd --reload”便可

相关文章
相关标签/搜索