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

相關文章
相關標籤/搜索