簡訊發送介面被惡意訪問的網路攻擊事件(三)定位惡意IP的日誌分析腳本
前言
承接前文《簡訊發送介面被惡意訪問的網路攻擊事件(二)肉搏戰-阻止惡意請求》,文中有講到一個定位非法IP的shell腳本,現在就來公布一下吧,並沒有什麼技術難度,只是當時花了些時間去寫這個東西,類似於緊急修複線上bug一樣的趕這個小腳本,雖然現在看來挺簡單的,但是在當時緊張的情景中,趕這個小腳本兒的過程確實是很有趣的。
前一篇文章發布後,有朋友留言問了一下腳本的事,於是整理了一下。
需求分析
目標:
通過日誌定位並記錄攻擊者的IP,然後封掉此IP的所有請求
藉助工具:
- shell腳本
- 日誌文件
- iptables防火牆
具體步驟:
第一步,首先是獲取請求了被攻擊URL的所有請求中的IP,因為被攻擊的URL只有一個,這裡的做法是通過grep命令查找請求了此URL的日誌行,查找的值為api地址的名稱欄位,比如此URL的地址為"/message/send/",而send欄位只存在於此URL中,因此在日誌文件中查找包含"send"欄位的行即可。
第二步是從所有的行中提取出IP列,統計出所有出現的IP和此IP請求介面URL的次數,存入ip.txt文件。
接著第三步是通過對ip.txt文件的分析,定位出所有的不正常的IP,分析的比較簡陋,做法是請求超過5次的都視為非法IP,其實5次已經算多的了,應該再小一點,但是其實在分析文件ip.txt文件過程中,發現正常的IP訪問次數基本為一次、兩次,而非法IP則為百次或千次,因此閾值設置為5或者3並沒有大的影響,重點是找出訪問量較大的一些IP。
最後一步,得到這些IP值之後,將其加入到iptables的過濾策略中並重啟iptables即可。
腳本代碼
一開始的腳本,能夠根據需求統計和記錄出訪問過多的IP地址了:
#! /bin/bash
#author:13
#date:2017-06
#desc:找出攻擊者IP
cat /opt/sms-service/logs/access_log.log | awk "{print $1}"|sort|uniq -c|awk "{print $2"="$1;}" > /opt/sms-service/logs/ip.txt
DEFINE="5"
for i in `cat /opt/sms-service/logs/ip.txt`
do
IP=`echo $i |awk -F= "{print $1}"`
NUM=`echo $i|awk -F= "{print $2}"`
if [ $NUM -gt $DEFINE ];then
grep $IP /opt/sms-service/logs/black.txt > /dev/null
if [ $? -gt 0 ];then
echo "iptables -I INPUT -s $IP -j DROP" >> /opt/sms-service/logs/black.txt
fi
fi
done
後面又對腳本做了一些小改動,改進點有:
- 對文件路徑進行參數命名,使得代碼不是特別臃腫;
- 增加一條判斷條件,判斷IP是否已經存在於iptables配置文件中,剔除已經統計和記錄過的IP。
#! /bin/bash
#author:13
#date:2017-06
#desc:找出攻擊者IP
LOGFILE="/opt/sms-service/logs/access_log.log"
IPTXT="/opt/sms-service/logs/ip.txt"
BLACKTXT="/opt/sms-service/logs/black.txt"
IPTABLES="/opt/iptables/run.sh"
DEFINE="5"
cat $LOGFILE|awk "{print $1}"|sort|uniq -c|awk "{print $2"="$1;}" > $IPTXT
for i in `cat $IPTXT`
do
IP=`echo $i |awk -F= "{print $1}"`
NUM=`echo $i|awk -F= "{print $2}"`
if [ $NUM -gt $DEFINE ];then
grep $IP $BLACKTXT > /dev/null
if [ $? -gt 0 ];then
grep $IP $IPTABLES > /dev/null
if [ $? -gt 0 ];then
echo "iptables -I INPUT -s $IP -j DROP" >> $BLACKTXT
fi
fi
fi
done
總結
首發於我的個人博客,地址在這裡
最近工作也比較忙,本來不打算寫這篇文章的,前一篇文章發布後看到有朋友留言了,因此在下班後抽出一段時間完成了這篇文章,文中並沒有特別難的知識點,希望有所收穫。
※Akka(8): 分布式運算:Remoting-遠程查找式
※CNN壓縮:為反向傳播添加mask
※python 自定義回調函數
※RSA加密通信小結(四)--RSA加解密的實際操作與流程小結
※springMVC 配置和使用
TAG:達人科技 |
※AI之惡意事件
※周鴻禕評價Facebook信息泄露事件,卻遭網友反諷:水滴事件呢?
※比利時檢方:列日發生的槍擊警察事件系恐怖襲擊
※盤點《刺激戰場》隊友惡意傷害事件,網友:我建議直接封號百年!
※詐捐事件,面對網路上各種攻擊,楊冪用證據說話
※Snap尋求媒體合作新方式:快准狠的地圖視頻,為突發事件報道擴充思路
※數據泄露事件再次上演 「互聯網+」時代又遭拷問
※OKEx再次回應回滾事件:惡意爆倉毫無根據,操縱交易系謠言
※滴滴再次回應遇害事件,網友表示:這簡直太恐怖了!
※分析Facebook數據泄露事件的三個關鍵點!
※B站:科里斯事件所投射出的網路大環境
※網紅韓安冉再造分手「事件」,與男友吵架不斷,自曝「惡劣」事件
※深陷被「惡意」差評事件的《戰神紀》,編劇本人有話說
※EDG發文回應撞名事件!網友:只有一個諾言!
※XVG惡意挖礦事件透視——「算力優勢+時間劫持」攻擊案例分析
※美國槍擊事件發酵 Facebook的VR射擊遊戲遭抨擊
※中興事件引發連鎖反應,雷軍發微博網友集體評論:日常催更澎湃芯
※【每日星道】今天容易出現突發事件,尤其要注意出行方面
※直播界黑公關事件曝光:虎牙再陷泥潭 被指攻擊鬥魚
※網約車被曝出了一系列事件,究竟該如何面對?