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」便可