【知了堂信安筆記】Linux日志分析
0x00 前言
Linux系統(tǒng)擁有非常靈活和強(qiáng)大的日志功能,可以保存幾乎所有的操作記錄,并可以從中檢索出我們需要的信息。 本文簡介一下Linux系統(tǒng)日志及日志分析技巧。
0x01 日志簡介
日志默認(rèn)存放位置:/var/log/
查看日志配置情況:more /etc/rsyslog.conf
日志文件說明/var/log/cron記錄了系統(tǒng)定時任務(wù)相關(guān)的日志/var/log/cups記錄打印信息的日志/var/log/dmesg記錄了系統(tǒng)在開機(jī)時內(nèi)核自檢的信息,也可以使用dmesg命令直接查看內(nèi)核自檢信息/var/log/mailog記錄郵件信息/var/log/message記錄系統(tǒng)重要信息的日志。這個日志文件中會記錄Linux系統(tǒng)的絕大多數(shù)重要信息,如果系統(tǒng)出現(xiàn)問題時,首先要檢查的就應(yīng)該是這個日志文件/var/log/btmp記錄錯誤登錄日志,這個文件是二進(jìn)制文件,不能直接vi查看,而要使用lastb命令查看/var/log/lastlog記錄系統(tǒng)中所有用戶最后一次登錄時間的日志,這個文件是二進(jìn)制文件,不能直接vi,而要使用lastlog命令查看/var/log/wtmp永久記錄所有用戶的登錄、注銷信息,同時記錄系統(tǒng)的啟動、重啟、關(guān)機(jī)事件。同樣這個文件也是一個二進(jìn)制文件,不能直接vi,而需要使用last命令來查看/var/log/utmp記錄當(dāng)前已經(jīng)登錄的用戶信息,這個文件會隨著用戶的登錄和注銷不斷變化,只記錄當(dāng)前登錄用戶的信息。同樣這個文件不能直接vi,而要使用w,who,users等命令來查詢/var/log/secure記錄驗(yàn)證和授權(quán)方面的信息,只要涉及賬號和密碼的程序都會記錄,比如SSH登錄,su切換用戶,sudo授權(quán),甚至添加用戶和修改用戶密碼都會記錄在這個日志文件中
比較重要的幾個日志: 登錄失敗記錄:/var/log/btmp //lastb 最后一次登錄:/var/log/lastlog //lastlog 登錄成功記錄: /var/log/wtmp //last 登錄日志記錄:/var/log/secure
目前登錄用戶信息:/var/run/utmp //w、who、users
歷史命令記錄:history ?僅清理當(dāng)前用戶: history -c
0x02 日志分析技巧
A、常用的shell命令
Linux下常用的shell命令如:find、grep 、egrep、awk、sed
小技巧:
1、grep顯示前后幾行信息:
? ? 標(biāo)準(zhǔn)unix/linux下的grep通過下面參數(shù)控制上下文:
? ? 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!"
? ?* : 表示當(dāng)前目錄所有文件,也可以是某個文件名
? ?-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 ':' ?'{print $1}'` ?
//awk -F指定域分隔符為':',將記錄按指定的域分隔符劃分域,填充域,?$0則表示所有域,$1表示第一個域,?$n表示第n個域。
6、sed -i '153,$d' .bash_history
刪除歷史操作記錄,只保留前153行
B、日志分析技巧
A、/var/log/secure
1、定位有多少IP在爆破主機(jī)的root帳號: ? ?
grep "Failed password for root" /var/log/secure | awk '{print $11}' | 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($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
2、登錄成功的IP有哪些: ?
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登錄成功的日期、用戶名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
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授權(quán)執(zhí)行:
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
