用Linux分析日志查看產(chǎn)生大量404的IP
編輯:狂族晨曦 來源:系統(tǒng)運(yùn)維,經(jīng)驗(yàn)雜筆 日期:2016-05-12 閱讀: 5,396 次 11 條評論 » 百度已收錄
先森網(wǎng)站被阿里云通知超標(biāo)消耗資源的時(shí)候查看網(wǎng)站的日志,發(fā)現(xiàn)有幾個(gè)IP一直在訪問一個(gè)不存在的目錄,產(chǎn)生了大量的404。查了半天沒有查出這些IP與先森使用的CDN等服務(wù)有關(guān),看來不是什么好貨了,趕緊用.htaccess屏蔽IP。
但是有個(gè)問題,日志文件是以行為記錄,一行對應(yīng)一個(gè)請求,一個(gè)日志經(jīng)常成千上萬行,光靠眼睛看不能準(zhǔn)確的識別出這些做壞的IP到底有哪些。先森一直在找有沒有能直接分析出來的日志分析工具,但搜到的都是針對搜索引擎蜘蛛痕跡做分析的,只得作罷。
近期先森在培訓(xùn)紅帽Linux,經(jīng)過學(xué)習(xí),發(fā)覺Linux確實(shí)強(qiáng)大。而老師今天教了正則表達(dá)式,再加上以前教的各類命令,發(fā)現(xiàn)其實(shí)用Linux就能很好的做日志分析了。下面來分享下相關(guān)經(jīng)驗(yàn)。
linux命令
首先,查看日志,分析需要篩選的內(nèi)容。先森貼出其中404的一例:
60.191.139.121 - - [09/May/2016:00:33:32 +0800] "GET /_detect HTTP/1.0" 404 209 "-" "-" qxu123456789.my3w.com text/html "/usr/home/qxu123456789/htdocs/_detect" 1048
需要注意的是,每行的狀態(tài)碼前后是有一個(gè)空格的,這個(gè)可以用來區(qū)分正常訪問中單純的404數(shù)字。
命令方面其實(shí)很簡單,一句搞定:
# cat web.log| grep -E ' 404 '|awk '{print $1}'|sort |uniq
先森的日志回車后,最終顯示了下面三個(gè)IP:
222.73.199.105 60.191.139.121 61.160.245.190
這樣就確認(rèn)了有哪些IP在對網(wǎng)站造成404訪問了,這時(shí)候用.htaccess將其屏蔽即可。如果不會,可以參考先森這篇文章:
下面對上面的代碼做些解釋。
cat是將web.log的內(nèi)容作為標(biāo)準(zhǔn)輸出到設(shè)備,也就是查看文件內(nèi)容。
|是管道符,將左邊的輸出連接到右邊的輸入,也就是把日志內(nèi)容傳給下一條命令。
gerp -E,相當(dāng)于egerp,后面跟的是正則表達(dá)式,這里我們查找的內(nèi)容比較簡單,所以暫時(shí)不用正則表達(dá)式。這條命令用來篩選出有404的行。
awk是做數(shù)據(jù)處理的,是一種編程語言,功能很強(qiáng)大。它可以用-F確定分隔符,默認(rèn)是空格,這也真是我們需要的。以空格為分隔符,將每行分成了很多段,而后面的printf $1就是輸出第一段,也就是我們的IP地址。
sort是排序,這里就是對我們的IP地址進(jìn)行排序。
uniq是去重,也就是將重復(fù)的IP地址去除,留下我們想要屏蔽的IP地址。
一些延伸
上面僅僅是找出404訪問IP,實(shí)際上我們可能有這種需求:找去所有的40X的訪問IP,修改上面的一個(gè)字符即可實(shí)現(xiàn):
# cat web.log| grep -E ' 40. '|awk '{print $1}'|sort |uniq
.點(diǎn)符號在Linux正則表達(dá)式中是占位符,表示任意的一個(gè)字符。
有了上面的這種需求,可能我們除了想看IP地址,還想知道它的狀態(tài)碼是多少,再修改一下就好:
# cat web.log| grep -E ' 40. '|awk '{print $1,$9}'|sort |uniq
上面在awk的輸出增加了一個(gè)$9,表示已空格作為分隔的第九段。其實(shí)想看什么數(shù)據(jù),只要以空格為界,數(shù)出其所在段位即可。但需要注意的是,時(shí)間段不要用來數(shù)出,這樣會導(dǎo)致后面的去重沒有什么效果,因?yàn)闀r(shí)間都是不同的。

Linux操作
最后
不得不說Linux確實(shí)強(qiáng)大,但是它的英文也讓先森很吃不消啊。希望能夠?qū)W好,向著運(yùn)維的方向越走越遠(yuǎn)。
轉(zhuǎn)載請注明出處來自http://www.cnidcc.cn/ylinuxfxrzckcsdl404dip.html

川公網(wǎng)安備 51011202000104號
評論了。怎么不出來?而且表情貌似不顯示。
這個(gè)方法太666了!!
不知道要屏蔽這些IP做什么呢?
@Koolight: 因?yàn)闀斐删W(wǎng)站資源消耗啊,顯示404頁面也需要資源的嘛。先屏為敬!
linux好復(fù)雜的,還是win好
@精選故事網(wǎng): 感覺Linux更好玩,嘿嘿
我也是用的阿里云。
@夏天烤洋芋: 感謝來訪,阿里云還是造福了很多站長的
Linux我就玩不來,只能看看
Linux用著還是沒有winds方便。個(gè)人感覺。