歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> ftp服務器日志解析

ftp服務器日志解析

日期:2017/2/27 15:55:40   编辑:Linux教程

FTP服務器日志解析

FTP是老牌的文件傳輸協議,在網絡中應用非常廣泛。本節就Vsftp服務器的日志進行重點討論,在本書的FTP多級跳案例中就會涉及到本節學到的知識。在Redhat Linux系統下Vsftp的配置文件在/etc/vsftp/vsftp.conf文件中。默認情況下,Vsftp不單獨記錄日志,也就是說不會輸出到一個單獨的文件中存儲,而是統一存放到/var/log/messages文件中。Vsftp日志實例顯示如圖1所示。

圖1 Vsftp日志實例

通過在messages過濾得方法可以看到Vsftp的客戶機連接日至,但這段日志裡只反映了少量信息,如果需要查看更詳細的信息如何操作?下面我們來編輯/etc/vsftp/vsftp.conf配置文件。

如何將Vsftp服務器的日志文件單獨輸出到某個文件下呢?這裡需要三個步驟:

下面對重要語句做一些解釋:

標識A: 啟用xferlog_enable=YES,它表示將客戶機登錄服務器後上傳或下載的文件具體信息記錄。

標識B:啟用xferlog_file=/var/log/vsftpd.log,它表示將上傳下載寫到指定文件,也就是/var/log/xferlog文件。

標識C:啟用dual_log_enable=YES,它表示啟用雙份日志,一份日志由xferlog記錄,同時vsftpd.log也記錄另一份日志,注意他們兩兒可不是互為備份,其內容不同,但各有千秋。

接下來還得解釋一下/usr/bin/xferstats這個工具,它是日志統計工具,用於計算傳輸了多少文件並創建日志文件。

注意:在您的Linux系統中一定安裝xferstats的包,才能對他進行操作,如果發現找不到xferstats沒有命令就要安裝這個包。

1.3.1 分析vsftpd.log和xferlog

Vsftpd.log和xferlog是Vsftp服務器記錄日志的來源,下面重點對著兩種日志文件的格式做一下分析。

(1)vsftpd.log實例分析首先打開vsftpd.log.1文件,看看它的日志結構。如圖2示。

圖2 ftpd分離後的日志結構

在圖1-9中日志僅反映了部分Ftp登錄情況:例如登錄IP地址、用戶名。但下載軟件內容不會記錄下來,有時網管恰好關心這一段日志信息,這時我們需要同時參考xferlog日志,還記得上面說過的xferstats工具嗎?

(2)Xferlog日志實例分析

xferlog日志會記錄FTP會話詳細信息,它能夠顯示客戶機向FTP Server上傳/下載的文件路徑及名稱認證方式等信息,下面我們看看這個文件的具體內容, xferlog日志格式見表1-4所示。

Xferlog日志格式解析:

注意:這裡指的認證是結合PAM(一種可插入的安全驗證模塊)的方式,主要是為了保證安全,在企業中常會用到Vsftp+Pam+Postgresql的架構,在這種架構中我們可以設置為用MD5工具來驗證密碼,這樣客戶機在遠程要用MD5加密過密碼的用戶登錄才能成功獲取文件,有關PAM的應用在本書的第九章SSH加固中也會提到。

1.3.2 中文對Vsftp日志的影響

大家在使用RHEL5系統中的Vsftp(2.05版)時有時會遇到下面中文日志的顯示問題,我們看看下面的例子。如果客戶機上傳的文件中含有中文名那麼日志將顯示亂碼,例如新建一個帶中文的文件夾,發現在其日志(/var/log/xferlog和/var/log/vsftpd.log)中就會產生如下日志(不能正常的顯示中文):

Sat Jan 12 00:26:18 2013 [pid 6853][ftp] FAIL MKDIR: Client “192.168.150.1”, “/pub/???????????”

當日志中出現亂碼,怎麼辦呢?

Ø 將系統安裝成為默認為中文;

Ø 調整字符集,將系統的字符集改成zh_CN.gb;或者將字符集修改為GB2312

Ø 修改vsftpd.conf,加入syslog_enable=yes參數,編輯vsftpd.conf,再重啟vsftpd;

經過筆者嘗試,以上三種方法都不能解決中文日志的輸出問題。其實,並不是設置問題,是Vsftpd本生問題(當然修改源碼然後編譯安裝是可以解決的),要解決就要將日志輸出到/var/log/messages,可這樣做和我們當初想法將他分離相違背, 有興趣的讀者也可采用Proftp,見圖2示。它的主要優點是,不但可以完整的記錄中文的文件名在日志匯總,還可以日志分離,查看起來比較方便。

圖2Proftp中文日志顯示

1.3.2 用Logparser分析FTP日志

在分析了Vsftp服務器日志後,在實際工作中Windows系統下的FTP服務器應用的也不少, 微軟的IIS服務器常常會成為入侵的對象。微軟LogParser工具是Windows系統下功能非常的強大的日志分析工具,它可以分析IIS日志這種基於文本的日志格式,操作系統事件日志還能分析CSV和XML這類的文件格式,尤其對於上百兆甚至是上GB的日志文件都可以快速分析,利用LoParser能輕松查出你需要的數據,而且還能以圖表的形式輸出結果。下面就用這款工具來篩選FTP日志中的異常連接。主要分為了收集Ftp日志、導入數據庫、日志數據篩選和異常數據分離四個步驟:


步驟一: FTP日志的采集
微軟IIS服務器的FTP日志文件默認位置為%systemroot%\system32\LogFiles\MSFTPSVC1\,對於絕大多數系統而言則是C:\WINDOWS\system32\LogFiles\MSFTPSVC1(如果安裝系統時定義了系統存放目錄則根據實際情況修改),系統默認每天自動生成一個日志文件。日志文件的名稱格式是: ex + 年份的末兩位數字+月份+日期,如2006 年3月19日的FTP日志文件是ex060319.log,這是個文本文件,可以用任何編輯器打開,例如記事本程序。

為了詳細地分析采集來的FTP日志,下面我們先來看看常見的命令有: USER 〈用戶名〉、PASS〈密碼〉、DELE <文件名>、QUIT 等,由於命令較多本節中就不一一列出了。對於常見的響應提示信息,如表2所示(與Apache的類似)。

表2 FTP 響應信息含義

狀態代碼

2XX開頭

成功

3XX開頭

權限問題

4XX開頭

文件問題

5XX開頭

服務器故障

FTP 命令加上響應號才具有實際意義,例如:USER stu 331 表示用戶試圖登錄, PASS - 230 表示登錄成功。

步驟二:FTP日志導入MS SQL數據庫
把Ftp日志導入到SQL Server數據庫,首先在需要安裝好LogParser 2.2+SQL Server環境;然後在待分析機器上裝好SQL Server 環境,然後新建數據庫名為iis;最後將IIS日志拷貝到本機。准備工作完成後輸入如下命令:

logparser.exe "select * from C:\WINDOWS\system32\LogFiles\MSFTPSVC1\ex*.log to iisftplog_table" -o:sql -server:127.0.0.1 -driver:"sql server" -database:iis -username:sa -password:123456 -createtable:on


命令執行和輸出效果見圖3所示

圖3 Logparser命令執行和輸出效果

在執行上面命令時,一定要指定日志文件的完整路徑,否則將出現找不到日志的提示。 當Logparser程序正確輸出後,就可以打開數據庫檢查了,如圖4、圖5所示。

圖4 在企業管理器中打開iislog_table 表

圖5 查看iisftplog_table表

步驟三:FTP日志數據的篩選

IIS的FTP日志包括5 個域: time、c-ip、cs-method、cs-uri-stem 和sc-status。

下面選取了FTP服務器某日白天的日志, 一共1萬多條條記錄

#Software: Microsoft Internet Information Services 5.2

#Version: 1.0

#Date: 2010-05-08 08:30:23

#Fields: time c-ip cs-method es-uri-strem sc-status

08:30:23 192.168.3.62 [1]USER stu 331

08:30:23 192.168.3.62 [1]PASS -   530

08:30:28 192.168.3.62 [2]USER stu 331

08:30:29 192.168.3.62 [2]PASS -   530

... ...

09:10:23 192.168.3.135 [15]USER anonymous 331

09:10:23 192.168.3.135 [15]PASS IEUser@   230

09:10:37 10.10.1.200   [16]USER px        331

09:10:37 10.10.1.200   [16]PASS -         530

... ...

21:44:21 63.103.87.197  [1163]USER anonymous  331

21:44:21 63.103.87.197  [1163]PASS [email protected]  230

21:44:40 63.103.87.197  [1163]sent  /mp3.ape  550

將FTP日志文件導入MS SQL 數據庫後,字段名保留日志文件中的名字,下面就可以通過腳本對FTP進行深度處理。

步驟四:分離正常與異常數據源

FTP日志文件導入至MS SQL服務器後,在數據庫中用SQL命令將每一天的數據都按cs-method 字段進行升序排序。每天日志中cs-method 字段相同的記錄表示該用戶這次登錄所做的一系列操作,數據庫中記錄是否出現異常響應,可以根據sc-status 字段的值來判斷,例如如果出現登錄錯誤, 即PASS-530,連續出現3 次以上,則認為異常。可以將異常的登錄錯誤信息輸出即可,進過這樣對FTP日志文件進行的深度挖掘,能非常方便管理人員迅速判斷故障,提高了工作效率和准確度。
原文:http://my.oschina.net/chenguang/blog/375311

Copyright © Linux教程網 All Rights Reserved