我正在整理乙個專案,收集和彙總了一些應急響應案例(不斷更新中)。
linux系統擁有非常靈活和強大的日誌功能,可以儲存幾乎所有的操作記錄,並可以從中檢索出我們需要的資訊。本文簡介一下linux系統日誌及日誌分析技巧。
日誌預設存放位置:/var/log/
檢視日誌配置情況:more /etc/rsyslog.conf
日誌檔案
說明/var/log/cron
記錄了系統定時任務相關的日誌
/var/log/cups
記錄列印資訊的日誌
/var/log/dmesg
記錄了系統在開機時核心自檢的資訊,也可以使用dmesg命令直接檢視核心自檢資訊
/var/log/mailog
記錄郵件資訊
/var/log/message
記錄系統重要資訊的日誌。這個日誌檔案中會記錄linux系統的絕大多數重要資訊,如果系統出現問題時,首先要檢查的就應該是這個日誌檔案
/var/log/btmp
記錄錯誤登入日誌,這個檔案是二進位制檔案,不能直接vi檢視,而要使用lastb命令檢視
/var/log/lastlog
記錄系統中所有使用者最後一次登入時間的日誌,這個檔案是二進位制檔案,不能直接vi,而要使用lastlog命令檢視
/var/log/wtmp
永久記錄所有使用者的登入、登出資訊,同時記錄系統的啟動、重啟、關機事件。同樣這個檔案也是乙個二進位制檔案,不能直接vi,而需要使用last命令來檢視
/var/log/utmp
記錄當前已經登入的使用者資訊,這個檔案會隨著使用者的登入和登出不斷變化,只記錄當前登入使用者的資訊。同樣這個檔案不能直接vi,而要使用w,who,users等命令來查詢
/var/log/secure
記錄驗證和授權方面的資訊,只要涉及賬號和密碼的程式都會記錄,比如ssh登入,su切換使用者,sudo授權,甚至新增使用者和修改使用者密碼都會記錄在這個日誌檔案中
比較重要的幾個日誌:
登入失敗記錄:/var/log/btmp //lastb
最後一次登入:/var/log/lastlog //lastlog
登入成功記錄: /var/log/wtmp //last
登入日誌記錄:/var/log/secure
目前登入使用者資訊:/var/run/utmp //w、who、users
歷史命令記錄:history 僅清理當前使用者:history -c
a、常用的shell命令
linux下常用的shell命令如:find、grep 、egrep、awk、sed
小技巧:
1、grep顯示前後幾行資訊:
•標準unix/linux下的grep通過下面引數控制上下文:
•grep -c 5 foo file 顯示file檔案裡匹配foo字串那行以及上下5行
•grep -b 5 foo file 顯示foo及前5行
•grep -a 5 foo file 顯示foo及後5行
•檢視grep版本號的方法是
•grep -v
2、grep 查詢含有某字串的所有檔案
grep -rn "hello,world!"
* : 表示當前目錄所有檔案,也可以是某個檔名
-r 是遞迴查詢
-n 是顯示行號
-r 查詢所有檔案包含子目錄
-i 忽略大小寫
3、如何顯示乙個檔案的某幾行:
cat input_file | tail -n +1000 | head -n 2000
#從第1000行開始,顯示2000行。即顯示1000~2999行
4、find /etc -name init
//在目錄/etc中查詢檔案init
5、只是顯示/etc/passwd的賬戶
`cat /etc/passwd |awk -f ':' ''`
//awk -f指定域分隔符為':',將記錄按指定的域分隔符劃分域,填充域,•$0則表示所有域,$1表示第乙個域,•$n表示第n個域。
6、sed -i '153,$d' .bash_history
刪除歷史操作記錄,只保留前153行
b、日誌分析技巧
a、/var/log/secure
1、定位有多少ip在爆破主機的root帳號:
grep "failed password for root" /var/log/secure | awk '' | sort | uniq -c | sort -nr | more
定位有哪些ip在爆破:
grep "failed password" /var/log/secure|grep -e -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破使用者名稱字典是什麼?
grep "failed password" /var/log/secure|perl -e 'while($_=<>)'|uniq -c|sort -nr
2、登入成功的ip有哪些:
grep "accepted " /var/log/secure | awk '' | sort | uniq -c | sort -nr | more
登入成功的日期、使用者名稱、ip:
grep "accepted " /var/log/secure | awk ''
3、增加乙個使用者kali日誌:
jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, gid=1001
jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, uid=1001, gid=1001, home=/home/kali
, shell=/bin/bash
jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
#grep "useradd" /var/log/secure
4、刪除使用者kali日誌:
jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
# grep "userdel" /var/log/secure
5、su切換使用者:
jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)
sudo授權執行:
sudo -l
jul 10 00:43:09 localhost sudo: good : tty=pts/4 ; pwd=/home/good ; user=root ; command=/sbin/shutdown -r now
2、/var/log/yum.log
軟體安裝公升級解除安裝日誌:
yum install gcc
[root@bogon ~]# more /var/log/yum.log
jul 10 00:18:23 updated: cpp-4.8.5-28.el7_5.1.x86_64
jul 10 00:18:24 updated: libgcc-4.8.5-28.el7_5.1.x86_64
jul 10 00:18:24 updated: libgomp-4.8.5-28.el7_5.1.x86_64
jul 10 00:18:28 updated: gcc-4.8.5-28.el7_5.1.x86_64
jul 10 00:18:28 updated: libgcc-4.8.5-28.el7_5.1.i686
日誌分析與安全
日誌為什麼重要?1.用於記錄系統 程式執行中發生的各種事件 2.通過閱讀日誌,有助於診斷和解決系統故障 3.是審計的基礎 日誌檔案的分類 1.核心及系統日誌 有系統服務rsyslogd統一進行管理,日誌格式基本相似 3.程式日誌 由各種應用程式獨立管理的日誌檔案,記錄格式不統一 在linux系統中,...
LINUX日誌查詢技巧
1.查詢日誌中含有某個關鍵字的資訊 grep error 2.查詢日誌尾部最後10行的日誌tail n 10log3.查詢10行之後的所有日誌tail n 10log4.查詢日誌檔案中的頭10行日誌head n 10log 5.查詢日誌檔案除了最後10行的其他所有日誌head n 10log6.查詢...
linux日誌查詢技巧
b 大日誌檔案查詢日誌 b split命令對日誌檔案進行分割 split 1000 log newlog 然後組合查訊警告及其他資訊 cat start.log grep warning 正規表示式查訊資訊 cat start.log grep 0 9 0 9 b 參考 b b 1.tail 用於顯...