本文介紹的是一個自動分析黑名單和白名單的iptables 腳本,即/root/deny_100.sh,腳本實現(xiàn)功能如下:
①此腳本能自動過濾掉企業(yè)中通過NAT出去的白名單IP,很多企業(yè)都是通過NAT軟路由上網,我們可以將一些與我們有往來的公司及本公司的安全IP添加進白名單,以防誤剔;
②閥值DEFIIN這里定義的是100,其實這個值應該根據(jù)具體生產環(huán)境而定,50-100之間較好;
③此腳本原理其實很簡單,判斷瞬間連接數(shù)是否大于100,如果是白名單里的IP則跳過;如果不是,則用iptables -I來自動剔除,這里不能用-A,A是在iptables的規(guī)則的最后添加,往往達不到即時剔除的效果;
④此腳本最后更新時間為2010年5月24日,這里衷心感謝3158.com的技術總監(jiān)唐老師,謝謝您在安全相關的指導;
⑤25是mail端口的,其它可依次類推,比如22,再比如80等,具體看你的服務器的應用;
⑥如有疑問,請聯(lián)系撫琴煮酒yuhongchun027@163.com。
[root@mail ~]# cat /root/deny_100.sh
#/bin/bash
netstat -an grep :80 grep -v 127.0.0.1 awk '{ print $5 }' sortawk -F: '{print $1,$4}' uniq -c awk '$1 >50 {print $1,$2}' > /root/black.txt
for i in `awk '{print $2}' /root/black.txt`
do
COUNT=`grep $i /root/black.txt awk '{print \$1}'`
DEFINE="50"
ZERO="0"
if [ $COUNT -gt $DEFINE ];
then
grep $i /root/white.txt > /dev/null
if [ $? -gt $ZERO ];
then
echo "$COUNT $i"
iptables -I INPUT -p tcp -s $i -j DROP
fi
fi
done
2009年3月30日下午14:25分,用下列命令監(jiān)控時:
netstat -an grep :25 grep -v 127.0.0.1 awk '{ print $5 }' sortawk -F: '{print $1}' uniq -c awk '$1 >100'
1122 219.136.163.207
17 61.144.157.236
用http://www.ip138.com一查,發(fā)現(xiàn)
ip138.com IP查詢(搜索IP地址的地理位置)
您查詢的IP:219.136.163.207
本站主數(shù)據(jù):廣東省廣州市 電信(荔灣區(qū))
參考數(shù)據(jù)一:廣東省廣州市 電信(荔灣區(qū))
參考數(shù)據(jù)二:廣東省廣州市荔灣區(qū) 電信ADSL
調用deny_100.sh后將此IP Drop掉,再運行./root/count.sh后無顯示,顯示成功,可用iptables –nL驗證,所以將此安全腳本寫進crontab里
*/1 * * * * root /bin/sh /root/deny_100.sh
效果如下:
工作中的Linux防火墻經驗心得
一、iptables防火墻并不能阻止DDOS攻擊,建議在項目實施中采購硬件防火墻,置于整個系統(tǒng)之前,用于防DDOS攻擊和端口映射;如果對安全有特殊要求,可再加上應用層級的防火墻,比如天泰防火墻,其功能強大如此:①天泰WEB應用防火墻基于對數(shù)據(jù)報文頭部和載荷完整的檢測,對WEB應用客戶端輸入進行驗證,從而對各類已知的及新興的WEB應用威脅提供全方位的防護,如SQL注入、跨站腳本、蠕蟲、黑客掃描和攻擊等;②天泰WEB應用防火墻提供對目前國內比較泛濫的DDOS攻擊的防護。針對WEB應用進行的帶寬和資源耗盡型DDOS攻擊,都可輕松應對。尤其針對應用層的DDOS攻擊,提供細粒度的防護,其它優(yōu)點這里不一一介紹了。
二、在項目實施中建議關閉服務器的iptables防火墻,目的為:①更好的提高后端服務器網絡性能;②方便數(shù)據(jù)流在整個業(yè)務系統(tǒng)內部流通,安全方面工作由硬件防火墻來承擔。
三、我目前主要將iptables用于內部作NAT防火墻,它的性能和方便管理性確實強悍,經迅雷測試可發(fā)現(xiàn),公司內部的10M帶寬能被利用得一絲無余;武漢地區(qū)比較常用的軟件路由器是海蜘蛛,這個其實也是iptables的二次開發(fā);前二年替朋友網吧布署網吧的路由器,我強烈推薦的是讓iptables作NAT路由轉發(fā),事實證明效果很好。
四、iptables的L是命令,而-v和-n只是作為選項,它們不能進行組合,如-Lvn;如果要列出防火墻詳細規(guī)則,可采用iptables -nv -L;
五、如果是使用遠程來調試iptables防火墻,最好是設置crontab作業(yè)是定時停止防火墻,以防自己被鎖定,5分鐘停止一次iptables即可,等整個腳本完全穩(wěn)定后再關閉此crontab作業(yè)。
六、如果使用默認禁止一切策略,即應立即使用回環(huán)接口lo(因為禁止一切包括了lo);附注:回環(huán)接口lo在Linux系統(tǒng)中被用來提供本地、基于網絡的服務的專用網絡接口,不用把本地數(shù)據(jù)流通過網絡接口驅動器發(fā)送,而是采用操作系統(tǒng)通過回環(huán)接口發(fā)送,采取的捷徑,大大提高了性能。
七、如果是電信或雙線機房托管的服務器,在沒有配置前端硬件防火墻的情況下,Linux主機一定要開啟iptables防火墻,windows2003主機開啟它自帶的系統(tǒng)防火墻,并禁ping。