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行),用脚本删
如下是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”便可