轉發自:FREEBUF專欄
原文連結:https://www.freebuf.com/column/227843.html
0x01 簡介
在發生網頁篡改、伺服器被植入挖礦木馬等安全攻擊事件時,日志能協助進行安全事件還原,能盡快找到事件發生的時間、原因等,是以日志收集還是很重要的。本文整理了部分常見中間件、資料庫、作業系統的日志收集方法。
0x02 中間件日志
2.1 apache
apache日志一般分為 access_log 和 error_log 兩種
可以通過檢視 httpd.conf 檔案檢視 apache 日志路徑:
grep -i"CustomLog" /etc/httpd/conf/httpd.conf
grep -i”ErrorLog” /etc/httpd/conf/httpd.conf
access_log:通路日志,記錄所有對 apache 伺服器進行請求的通路
error_log:錯誤日志,記錄下任何錯誤的處理請求,通常伺服器出現什麼錯誤,可對該日志進行檢視
2.2 nginx
nginx的日志主要分為 access.log、error.log 兩種,可通過檢視 nginx.conf 檔案來查找相關日志路徑,如下圖
$locate nginx.conf
/etc/nginx/nginx.conf
#error.log,主要記錄一些錯誤資訊
grep -i"error.log" /etc/nginx/nginx.conf
access.log:主要記錄通路日志,記錄通路用戶端ip位址、通路時間、通路頁面等資訊
grep -i"access.log" /etc/nginx/nginx.conf
2.3 iis
檢視日志檔案位置:
打開檔案夾下其中一個名為ex170910.log,日志内容具體如下,包括通路域名時間、ip、通路url等資訊:
2.4 weblogic
weblogic在安裝結束後預設開啟了日志記錄功能,預設配置情況下,weblogic會有3種日志,分别是 accesslog , Server log 和 domain log, WebLogic8.x 和 9 及以後的版本目錄結構有所不同。
WebLogic 8.x版本:
access log路徑如下:
$MW_HOME\user_projects\domains\<domain_name>\<server_name>\access.log
server log路徑如下:
$MW_HOME\user_projects\domains\<domain_name>\<server_name>\<server_name>.log
domain log路徑如下:
$MW_HOME\user_projects\domains\<domain_name>\<domain_name>.log
其中:
$MW_HOME
是 WebLogic 的安裝目錄
<domain_name>
是域的實際名稱,是在建立域的時候指定的
<server_name>
是 Server 的實際名稱,是在建立 Server 的時候指定的
<adminserver_name>
是 Admin Server 的實際名稱,是在建立 Admin Server 的時候指定的。
WebLogic 9及以後版本:
$MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\access.log
server log路徑如下:
$MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\<server_name>.log
domain log路徑如下:
$MW_HOME\user_projects\domains\<domain_name>\servers\<adminserver_name>\logs\<domain_name>.log
access.log:主要記錄http請求,預設情況下日志記錄處于啟用狀态,伺服器将http請求儲存在單獨的日志檔案中,日志格式如下,主要記錄了http請求請求ip位址、請求時間、通路頁面、響應狀态等資訊:
server log:主要用于伺服器的一般日志記錄,比如 weblogic 的啟動、關閉、部署應用等相關記錄,日志格式:依次為時間戳,嚴重程度,子系統,計算機名,伺服器名,線程ID。其後消息正文中的行僅表示記錄的一次例外并顯示該例外的堆棧跟蹤式如下
domain log:主要記錄了一個 domain 的運作情況,一個 domain 中的各個 weblogic server 可以把它們的一些資訊(如:嚴重錯誤)發送到 Admin Server 上,Admin Server 把這些資訊傳遞到 domain.log 上
2.5 tomcat
tomcat日志預設路徑:在安裝目錄下的logs檔案夾下:
如果在安裝中預設修改了日志存儲位置,可在
conf/logging.properties
檔案中檢視
tomcat日志一般分為 catalina.out 、localhost 、 manager 、localhost_access_log 4種格式日志。
catalina.out:運作中的日志,主要記錄運作中産生的一些資訊,尤其是一些異常錯誤日志資訊
localhost_access_log:主要記錄通路日志資訊,記錄通路的的時間、ip位址等資訊,也是應急中經常用到的日志資訊
此部分日志可通過檢視 server.xml 檔案的如下内容,來确定是否啟用了通路日志記錄
catalina.Y-M-D.log:是 tomcat 自己運作的一些日志,這些日志還會輸出到catalina.out,但是應用向 console 輸出的日志不會輸出到 catalina.{yyyy-MM-dd}.log
localhost.Y-M-D.log:程式異常沒有被捕獲的時候抛出的地方,Tomcat下内部代碼丢出的日志(jsp頁面内部錯誤的異常,org.apache.jasper.runtime.HttpJspBase.service類丢出的,日志資訊就在該檔案!)應用初始化(listener,filter, servlet)未處理的異常最後被tomcat捕獲而輸出的日志,而這些未處理異常最終會導緻應用無法啟動。
manager.Y-M-D.log:管理日志
0x03 資料庫日志
3.1 mysql
status:檢視目前資料庫狀态
mysql的日志主要分為以下幾種:
Slow QueryLog*:記錄Mysql 慢查詢的日志;
GenaralQuery Log:記錄mysql的日常日志,包括查詢、修改、更新等的每條sql;
ErrorLog:記錄Mysql運作過程中的Error、Warning、Note等資訊,系統出錯或者某條記錄出問題可以檢視Error日志;
Binary Log:二進制日志,包含一些事件,這些事件描述了資料庫的改動,如建表、資料改動等,主要用于備份恢複、復原操作等;
show variables like 'log_%';
可見mysql預設隻是開啟了錯誤日志,錯誤日志内容如下:
此處重點分析GenaralQuery Log,也是應急中經常會檢視到的,其他日志類型可檢視大牛已經整理好的詳細筆記,連結如下:
https://www.jianshu.com/p/db19a1d384bc
通過開啟日志,來記錄所有查詢和執行的sql語句:
set GLOBAL general_log='ON’;
SHOW VARIABLES LIKE 'general_log%';
general_log:日志功能是否開啟,預設關閉OFF
general_log_file:日志檔案儲存位置
到對應路徑下檢視日志内容如下,會記錄目前針對資料庫所做的所有操作
3.2 sqlserver
SQL Server 日志記錄了完整的 SQL Server 資料庫運作的狀态資訊,并以消息的形式記錄系統級、應用級操作。可以使用 SQL Server Management Studio 中的日志檔案檢視器來通路有關在以下日志中捕獲的錯誤和事件的資訊:
SQL Server Management Studio連接配接sqlserver資料庫,檢視與正常 SQL Server 活動相關的日志,具體步驟如下:
1.在對象資料總管中,展開 “管理”
2.執行下列任一操作:
(1)右鍵單擊“SQL Server 日志”,指向“檢視” ,然後單擊“SQL Server 日志” 或“SQLServer 和 Windows 日志” 。
(2)展開“SQL Server 日志” ,右鍵單擊任何日志檔案,然後單擊“檢視 SQL Server 日志” 。 還可以輕按兩下任何日志檔案,日志格式如下:
查詢最近一次啟動sqlserver時間:
select sqlserver_start_time fromsys.dm_os_sys_info;
曆史sql記錄查詢:SQLServer并沒有這樣的實作,隻有sys.dm_exec_query_stats緩存了一部分 (sql server服務開啟後執行的語句,某些不被緩存執行計劃的語句并不記錄)。
這個視圖主要是對執行計劃的統計,包含消耗成本,運作次數等等,并沒有session,user,每次被執行的時間等資訊:
啟動sql server 審計功能,會記錄所有的操作記錄,可以通過檢視 Audits 來檢視日志的存儲路徑
Sqlserver開啟日志審計功能可參考:https://blog.51cto.com/gaowenlong/1908381
3.3 oracle
Oracle日志檔案分為兩種:重做日志檔案(redo log file)、歸檔日志檔案,其中重做日志檔案主要記錄了資料庫的操作過程,可以在進行資料庫恢複時,将重做日志檔案在還原的資料庫上進行執行,以達到資料庫的最新狀态。
Oracle資料庫預設隻是對資料庫的登入情況記錄,但是不對資料庫的查詢記錄統計
可通過
show parameter audit
,檢視審計功能是否開啟
None:是預設值,不做審計;
DB:将 audit trail 記錄在資料庫的審計相關表中,如aud$,審計的結果隻有連接配接資訊;
audit_file_dest 為存放的日志路徑,可檢視adump下相關檔案,内容如下:
DB,Extended:這樣審計結果裡面除了連接配接資訊還包含了當時執行的具體語句;
OS:将audit trail 記錄在作業系統檔案中,檔案名由audit_file_dest參數指定;
開啟審計功能:
alter system set audit_sys_operations=TRUEscope=spfile;
alter system set audit_trail=db,extendedscope=spfile;
重新開機執行個體即可:
開啟後會把審計内容記錄到 sys 庫的AUD$表中
修改将日志檔案記錄在作業系統中:
alter system set audit_trail='OS'scope=spfile;
Audit_file_dest 即為日志儲存的具體路徑。
關于日志的詳細配置可以參考:http://blog.itpub.net/31397003/viewspace-2145164/
0x04 作業系統日志
4.1 windows日志
檢視windows日志方法:開始->運作->輸入 eventvwr
Windows的日志以事件id來辨別具體發生的動作行為,可通過微軟查詢具體id對應的操作;關于windows日志檢視内容,可參考如下連結:
https://www.freebuf.com/vuls/175560.html
4.2 linux日志
通過檢視 /etc/rsyslog.conf ,可檢視相關系統日志配置情況:
linux系統日志一般存放在 /var/log/ 目錄下:
在這裡篩選出幾個比較重要且明顯的日志:
/var/log/lastlog:最近幾次成功登入事件和最後一次不成功登入事件
lastlog 檔案在每次有使用者登入時被查詢,可以使用 lastlog 指令檢查某特定使用者上次登入的時間,并格式化輸出上次登入日志 /var/log/lastlog 的内容。它根據UID排序顯示登入名、端口号(tty)和上次登入時間。如果一個使用者從未登入過,lastlog顯示Never logged 。注意需要以 root 身份運作該指令。
/var/log/secure:記錄使用者登入認證過程中的事件資訊
secure 是應急中最常用的檔案,主要記錄系統存取資料的檔案,如POP3、ssh、telnet、ftp等相關記錄,從日志中可看出系統服務是否遭受到安全威脅,從如下日志中可看到ftp服務一直在被破解。
/var/log/wtmp:記錄每個使用者登入、登出及系統啟動和停機事件
wtmp日志記錄了使用者的登入、退出、重新開機等情況,可以檢視系統是否存在異常使用者登入,判斷攻擊者是否已經登入伺服器,由于wtmp日志為二進制檔案,是以利用用 last 指令檢視:
last -t 20190426120950
檢視這個時間之前的日志:
/var/log/utmp:記錄目前登入的每個使用者的詳細資訊
utmp日志記錄目前使用者的一些資訊,由于utmp日志檔案同樣為二進制檔案,可通過w、who指令檢視
----------------------------------------------------------------------------
作者:肖洋肖恩、
出處:https://www.cnblogs.com/-mo-/
文中可能會存在纰漏,若發現請聯系與我。
本文所有代碼僅可用于站長自我檢測與學習,如用于非法攻擊一切後果自負。