轉發自: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及以后版本:
access log路徑如下:
$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命令查看