運(yùn)維日志
長久以來,日志管理都是IT運(yùn)維工程師不可回避的工作,它不但可以跟蹤IT基礎(chǔ)設(shè)施活動,更是回答故障是否發(fā)生、如何發(fā)生、何時發(fā)生、在何處發(fā)生的最佳答案。
如果把運(yùn)維看做是醫(yī)生給病人看病,則日志就是病人對自己的陳述,很多時候醫(yī)生需要通過對病人的描述中得出病人狀況,是否嚴(yán)重,需要什么計量的藥,什么類型的藥。所以古人有句話叫對癥下藥,這個癥就是病人的描述加醫(yī)生的判斷,在重一點(diǎn)的病在加上很多的化驗(yàn)。在醫(yī)生看病時病人的描述和化驗(yàn)單上的數(shù)據(jù)對醫(yī)生是非常重要的。同理日志在運(yùn)維中的作用也是類似的,但非常不幸,日志在很多運(yùn)維中被嚴(yán)重低估,直到磁盤空間不足的時候才想到,這有個大的日志文件把他刪了,這樣可以節(jié)省空間。
下面我們來看一下常用的監(jiān)控系統(tǒng),界面做的很漂亮,功能也很多,但是有個疑問就是你會天天盯著這個界面看嗎?我感覺絕大多數(shù)人不會,很多人關(guān)注的是異常點(diǎn),就是當(dāng)系統(tǒng)有問題的時候,你告訴我哪里有問題,然后我在根據(jù)問題去分析,去處理,當(dāng)然做處理的時候,這個系統(tǒng)就會用上了。
那上面這些內(nèi)容和日志有什么關(guān)系呢?
日志本身是沒有價值的,只有對日志進(jìn)行分析加以利用的.時候才會有價值,日志中包含非常多的有用的信息,不光包括運(yùn)維層面,還包括業(yè)務(wù)層面,安全層面。很多時候運(yùn)維需要的是一個統(tǒng)一告警平臺,但告警的依據(jù)絕大多少是對日志等進(jìn)行自動化的分析得出的結(jié)論,所以說日志是很重要的。
什么是日志
簡單地說,日志就是計算機(jī)系統(tǒng)、設(shè)備、軟件等在某種情況下記錄的信息。具體的內(nèi)容取決于日志的來源。例如,Unix操作系統(tǒng)會記錄用戶登錄和注銷的消息,防火墻將記錄ACL通過和拒絕的消息,磁盤存儲系統(tǒng)在故障發(fā)生或者在某些系統(tǒng)認(rèn)為將會發(fā)生故障的情況下生成日志信息。日志中有大量信息,這些信息告訴你為什么需要生成日志,系統(tǒng)已經(jīng)發(fā)生了什么。例如,Web服務(wù)器一般會在有人訪問Web頁面請求資源(圖片、文件等等)的時候記錄日志。如果用戶訪問的頁面需要通過認(rèn)證,日志消息將會包含用戶名。這就是日志數(shù)據(jù)的一個例子:可以使用用戶名來判斷誰訪問過一個資源。通過日志,IT管理人員可以了解系統(tǒng)的運(yùn)行狀況,安全狀況,甚至是運(yùn)營的狀況。
日志能做什么
在一個完整的信息系統(tǒng)里面,日志系統(tǒng)是一個非常重要的功能組成部分。它可以記錄下系統(tǒng)所產(chǎn)生的所有行為,并按照某種規(guī)范表達(dá)出來。我們可以使用日志系統(tǒng)所記錄的信息為系統(tǒng)進(jìn)行排錯,優(yōu)化系統(tǒng)的性能,或者根據(jù)這些信息調(diào)整系統(tǒng)的行為。在安全領(lǐng)域,日志可以反應(yīng)出很多的安全攻擊行為,比如登錄錯誤,異常訪問等。日志還能告訴你很多關(guān)于網(wǎng)絡(luò)中所發(fā)生事件的信息,包括性能信息、故障檢測和入侵檢測。日志會成為在事故發(fā)生后查明“發(fā)生了什么”的一個很好的“取證”信息來源。日志可以為審計進(jìn)行審計跟蹤。
從一條日志說起
111.88.155.166 - - [17/Dec/2015:13:06:05 +0800] "POST /login HTTP/1.1" 302 0 "http://secilog.abc.com/login?langType=zh" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"
這是一條很普通的nginx中記錄的日志,日志的詳細(xì)內(nèi)容可查閱相關(guān)文檔。這里簡單說明一下主要的內(nèi)容。從日志中可以得到訪問者的IP,訪問的時間,時區(qū),請求的方式,請求頁面,返回狀態(tài),來源等等信息。仔細(xì)一看請求的頁面/login就可以猜到只是一個登錄請求頁面。這條日志的重要含義是登錄成功。
從這條日志怎么和我們關(guān)注的指標(biāo)對應(yīng)的,我們下面接著分析。
活躍用戶數(shù),活躍用戶說一般是指同一天有多少老用戶登錄過系統(tǒng)。這個時候就會發(fā)現(xiàn),剛才的登錄日志中如果放到一天的統(tǒng)計中就可以知道,一天內(nèi)有多少次成功等登錄的次數(shù)了,但細(xì)心的用戶可以發(fā)現(xiàn),不準(zhǔn)確,因?yàn)橛脩艨梢灾貜?fù)登陸,這就會造成重復(fù),說的很對,那我們在細(xì)化一下,我們換個角度分析,一天內(nèi)登錄成功的不重復(fù)ip的數(shù)量。是不是更接近真實(shí)的結(jié)果呢,我感覺從量級和趨勢上已經(jīng)能說明問題了。
刷單用戶這個沒有標(biāo)準(zhǔn)的說法,我的理解是是同一個人為了某種目的大量注冊了很多賬號后,然后進(jìn)行某種操作比如刷單等。這種行為很難100%杜絕,但從這條日志中可以得出一些有意思的發(fā)現(xiàn)。如果同一個ip一天登錄成功次數(shù)過多,比如一天登錄了一百次,每次間隔的時間都差不多,說明這個人有刷單嫌疑,可以先找出來然后再進(jìn)一步的分析。
新增用戶數(shù)的含義是一天內(nèi)有多少注冊成功的用戶,這個時候可以類比登錄日志,只要把登錄日志的url換成注冊日志的url就可以發(fā)現(xiàn)一天新增的用戶數(shù)是多少。
同理惡意注冊用戶數(shù)也是類似的,一天同一個ip下注冊成功的次數(shù)非常多。此ip惡意注冊的可能性就很大。當(dāng)然還需要進(jìn)一步的分析,比如ip是否是一個大樓里面的出口ip,注冊后此用戶做了什么來判斷。
從上面的分析可以看出舉一反三,可從日志中可以看出運(yùn)營中的很多內(nèi)容,比如瀏覽商品的排行,用戶訪問時間,用戶來源等等。
下面我們還從這條日志中分析一下安全的行為:
111.88.155.166 - - [17/Dec/2015:13:06:05 +0800] "POST /login HTTP/1.1" 200 0 "http://secilog.abc.com/login?langType=zh" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"
這還是一條登錄日志,唯一和上面登錄日志不一樣的地方是服務(wù)器返回值。一個是302,一個是200.有什么區(qū)別的,302的意思是服務(wù)器進(jìn)行過頁面跳轉(zhuǎn),200還是返回此頁面,從中就可以理解,這是一條登錄失敗的記錄。很好,有這條記錄就可以發(fā)現(xiàn)很多的安全行為。
惡意密碼猜測,可以理解同一段時間,用戶大量的登錄失敗,返回了很多登錄失敗記錄。從這條定義中就可以發(fā)現(xiàn)規(guī)律,我們把時間放大到5分鐘,當(dāng)5分鐘內(nèi),同一個ip有超過20次以上的登錄失敗行為,基本上可以斷定在進(jìn)行密碼猜測。當(dāng)密碼猜測有自動的也有手動的,如果區(qū)分呢。我們看一下這個內(nèi)容"http://secilog.abc.com/login?langType=zh",這個含義是post提交的來源是"http://secilog.abc.com/login?langType=zh"這個網(wǎng)頁,也就是從這個網(wǎng)頁發(fā)起的。如果這個地址不對,極有可能是用工具來進(jìn)行暴力破解。
同理cc攻擊就更容易理解了,同一個ip在很短的時間內(nèi)訪問了大量的請求,基本上可以認(rèn)為是cc攻擊。其他的webshell,sql注入等也可以從日志中分析出部分來,但不是太準(zhǔn)確,因?yàn)槿罩局兄赣涗沢et請求的參數(shù),post參數(shù)正常是不記錄的。
從上面的分析中可以得知,日志中還是有很多寶貴的東西在里面,只是我們沒有發(fā)現(xiàn)。
【運(yùn)維日志】相關(guān)文章:
運(yùn)維述職報告11-05
IT運(yùn)維電子簡歷模板08-14
運(yùn)維項(xiàng)目管理流程11-20
運(yùn)維崗位面試題06-19
Linux運(yùn)維的必備技能08-11
運(yùn)維個人工作總結(jié)范文12-19
運(yùn)維工程師職位簡歷范文09-06
百度運(yùn)維部筆試題08-06