![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 weiye ![]()
![]() |
目前,發現有人要進行連線測試帳號問題(非法使用者), 所以我想從log檔中直接找出這些非法的使用者,那我要如何抓取呢? 目前我已將log檔案抓出來,以陣列存在一行一行,下列兩行為舉列: Oct 1 02:04:46 ns1 sshd[8675]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=123.123.123.123 user=xxxx Oct 1 02:04:48 ns1 sshd[8675]: Failed password for root from 123.111.111.111 port 62511 ssh2 1 已發現123.111.111.111(舉列ip),那我要如何把這組ip抓取出呢? |
1樓 |
依照你描述的需求, 我個人會這樣處理:
1. 找出登入失敗的log 2. 依照空白切割欄位, 然後就可以找出特定欄位的資料, 這應該夠用了
本篇文章回覆於2011-11-24 15:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
weiye ![]() |
ahsac 大大:
1. 找出登入失敗的log <=== 這我已經過濾出來了 2. 依照空白切割欄位, 然後就可以找出特定欄位的資料, 這應該夠用了 關於2的情況,我有想過,但我是使用explode來切,不過意思應該是一樣。 這樣就上列兩行列子確實可以成立,切出來的第11欄位置即是ip的位置,但我真實log內容有幾萬行, 過濾完後也還有幾千行,用切空白的情況,ip位置改變,印出來的資料即不相同了, 是可以再使用正規化情況去判斷每一個陣位欄位中資料,何者為正確ip。 但不知道是否還有其他方式可以直接找出ip位置,或者是php有沒有相對應的函式可使用。 但在此非常謝謝ahsac 大大,呵!也表示我一開始的想法也算是有通吧!
本篇文章回覆於2011-11-24 16:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
最有價值解答
浩瀚星空 ![]() ![]() |
這段正則給你吧。可以找出字串中可能是IP的字串出來。第三個參數就是給你處理如果一次載入全篇字串用時的測試。
本篇文章回覆於2011-11-24 18:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
補充一下:
依照上面的程式,如果是依照第三個$data的值。(也就是有兩個IP) 其帶出來的值就是 其中的第$test[0]項就是你要的所有的可能性IP了。剩下的你是可以勿略。也可以拿來做特殊的應用。因為[1]~[4]就是屬於IP各區段的值。 可以拿來做分析用。如果是被攻擊的情況。可以拿來統計各區段的出現比例。
本篇文章回覆於2011-11-24 19:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓
不錯的參考
ahsac ![]() |
oh, 我誤會你原本意思了
我一開始以為你只要取出第二行那種格式的紀錄裡面的ip 平常我很愛用正則表達式, 但log分析時除外 因為有一次要分析公司server上的紀錄, 一天少說兩億多筆, 用正則表達式跑完一次都半天過去了 或許你目前沒處理到這麼多, 就當經驗分享吧 所以現在處理log我會先把好處理的格式用空白分隔, 剩下的空格位置不定的, 再交給正則表達式 但我的作法就沒辦法像樓上這樣還能幫你把ip段切好嘍 我也偷學起來了 :)
本篇文章回覆於2011-11-24 20:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
weiye ![]() |
在這邊非常感謝浩瀚星空版主,當然也非常謝謝ahsac大大,
在這邊真的讓我受益良多。 我一開始的想法和ahsac大大差不多,當然我的寫法沒辦法像你這麼漂亮, 至於版主的方式,正是我想學習的,真的很感謝兩位,讓我又學到不少。 ps 這不是我的工作或作業,只是上課聽到老師提過log檔分析,我就心血來潮, 想說能不能用php來做一個log分析試試,感謝兩位的協助。
本篇文章回覆於2011-11-25 13:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓 |
不用客氣,這些資源都是早期在學正則時留下來的。還有身份証、EMAIL....
說真的我正則也是還在學習中。
本篇文章回覆於2011-11-25 14:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |