Apache日志詳解


在滲透測試的工作中,WEB網站的日志是非常重要的,今天總結了一些關於調配Apache日志的知識點。

0x00 Apache日志文件名稱及路徑介紹

我們安裝好Apache后,Apache的配置文件(httpd.conf)中是存在着兩個可調配的日志文件的,這兩個日志文件分別是訪問日志access_log(在Windows上是access.log)和錯誤日志error_log(在Windows上是error.log)。如果使用 SSL 服務的話,還可能存在 ssl_access_log和ssl_error_log 和 ssl_request_log 三種日志文件。

日志文件的路徑根據安裝方式不同位置也是不一樣的,一般都是在Apache安裝目錄的logs子目錄中

默認安裝的情況下,Apache的配置文件是在:

Windows:
C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf

Linux:
(1)在我的ubuntu16.04的機子上竟然沒找到!
(2)etc/httpd/conf/httpd.conf

Apache的日志文件:

Windows:
C:\Program Files\Apache Software Foundation\Apache2.2\logs\access.txt

Linux:
/var/log/apache2/access.log

0x01 Apache訪問日志格式詳解

訪問日志access_log記錄了所有對Web服務器的訪問活動,下面是訪問日志access_log中的一個標准記錄

192.168.115.5 - - [01/Apr/2018:10:37:19 +0800] "GET / HTTP/1.1" 200 45

日志字段所代表的內容如下:

1.遠程主機IP:表明訪問網站的是誰 
2.空白(E-mail):為了避免用戶的郵箱被垃圾郵件騷擾,第二項就用“-”取代了
3.空白(登錄名):用於記錄瀏覽者進行身份驗證時提供的名字。
4.請求時間:用方括號包圍,而且采用“公用日志格式”或者“標准英文格式”。 時間信息最后的“+0800”表示服務器所處時區位於UTC之后的8小時。
5.方法+資源+協議:服務器收到的是一個什么樣的請求。該項信息的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 資源 協議”。
 METHOD: GET、POST、HEAD、……
RESOURCE: /、index.html、/default/index.php、……(請求的文件)
 PROTOCOL: HTTP+版本號
6.狀態代碼:請求是否成功,或者遇到了什么樣的錯誤。大多數時候,這項值是200,它表示服務器已經成功地響應瀏覽器的請求,一切正常。
7.發送字節數:表示發送給客戶端的總字節數。它告訴我們傳輸是否被打斷(該數值是否和文件的大小相同)。把日志記錄中的這些值加起來就可以得知服務器在一天、一周或者一月內發送了多少數據。

0x02 Apache訪問日志配置

2.1 訪問日志格式分類

apache中日志記錄格式主要有兩種,普通型(common)和復合型(combined),安裝時默認使用普通型(common)類型日志記錄訪問信息。

2.2 配置Apache訪問日志格式命令及參數

配置Apache訪問日志格式主要有兩個參數,即LogFormat指令和CustomLog指令

LogFormat指令:定義格式並為格式指定一個名字,以后我們就可以直接引用這個名字。
CustomLog指令:設置日志文件,並指明日志文件所用的格式(通常通過格式的名字)。
 
在apache的配置文件httpd.conf中,有幾行是這么配置的:

LogFormat "%h %l %u %t "%r" %>s %b" common   定義普通日志的格式和名字
CustomLog "logs/access.log" common    普通日志的保存位置

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 定義復雜日志的格式和名字
CustomLog   logs/access_log combined     復合日志的保存位置

PS:這樣說起來,可能有點亂,就只看下面這一張圖吧,簡單來說就是:combined是復雜型日志,common是普通型日志。當你選擇不同類型的日志時,所產生的日志樣式也就不同。

(1)當把CustomLog "logs/access.log" common前面的注釋去掉后,生成的access.txt就是這樣的:

(2)當把CustomLog "logs/access.log" combined前面的注釋去掉后,生成的access.txt就是這樣的:

(3)當把這兩個日志風格都去掉注釋的話,生成的access.txt就是這樣的:

搭配上這幾張樣式圖,再去理解上面的日志參數,是不是一目了然了。

0x03 Apache錯誤日志

錯誤日志的文件名字是error_log(Windows平台是error.log)。

錯誤日志的位置一般情況下是和正常日志在一起的:var/log/apache2/error.log
當然可以通過ErrorLog指令設置:ErrorLog logs/error.log , 除非文件位置用根“/”開頭,否則這個文件位置是相對於ServerRoot目錄的相對路徑。

錯誤日志無論在格式上還是在內容上都和訪問日志不同。然而,錯誤日志和訪問日志一樣也提供豐富的信息,我們可以利用這些信息分析服務器的運行情況、哪里出現了問題。

錯誤日志記錄了服務器運行期間遇到的各種錯誤,以及一些普通的診斷信息,比如服務器何時啟動、何時關閉等。我們可以設置日志文件記錄信息級別的高低,控制日志文件記錄信息的數量和類型。這是通過LogLevel指令設置的,該指令默認設置的級別是error,即記錄稱得上錯誤的事件。有關該指令中允許設置的各種選項的完整清單,請參見http://www.apache.org/docs/mod/core.html#loglevel的Apache文檔。

0x04 參考鏈接

https://blog.51cto.com/longlei/2095594


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM