0x00 前言
Linux系統(tǒng)擁有非常靈活和強(qiáng)大的日志功能谊却,可以保存幾乎所有的操作記錄搪搏,并可以從中檢索出我們需要的信息灰追。 本文簡介一下Linux系統(tǒng)日志及日志分析技巧。
0x01 日志簡介
日志默認(rèn)存放位置:/var/log/
查看日志配置情況:more /etc/rsyslog.conf
日志文件說明
/var/log/cron記錄了系統(tǒng)定時(shí)任務(wù)相關(guān)的日志
/var/log/cups記錄打印信息的日志
/var/log/dmesg記錄了系統(tǒng)在開機(jī)時(shí)內(nèi)核自檢的信息拟淮,也可以使用dmesg命令直接查看內(nèi)核自檢信息
/var/log/mailog記錄郵件信息
/var/log/message記錄系統(tǒng)重要信息的日志干茉。這個(gè)日志文件中會(huì)記錄Linux系統(tǒng)的絕大多數(shù)重要信息,如果系統(tǒng)出現(xiàn)問題時(shí)惩歉,首先要檢查的就應(yīng)該是這個(gè)日志文件
/var/log/btmp記錄錯(cuò)誤登錄日志等脂,這個(gè)文件是二進(jìn)制文件,不能直接vi查看撑蚌,而要使用lastb命令查看
/var/log/lastlog記錄系統(tǒng)中所有用戶最后一次登錄時(shí)間的日志,這個(gè)文件是二進(jìn)制文件搏屑,不能直接vi争涌,而要使用lastlog命令查看
/var/log/wtmp永久記錄所有用戶的登錄、注銷信息辣恋,同時(shí)記錄系統(tǒng)的啟動(dòng)亮垫、重啟、關(guān)機(jī)事件伟骨。同樣這個(gè)文件也是一個(gè)二進(jìn)制文件饮潦,不能直接vi,而需要使用last命令來查看
/var/log/utmp記錄當(dāng)前已經(jīng)登錄的用戶信息携狭,這個(gè)文件會(huì)隨著用戶的登錄和注銷不斷變化继蜡,只記錄當(dāng)前登錄用戶的信息。同樣這個(gè)文件不能直接vi逛腿,而要使用w,who,users等命令來查詢
/var/log/secure記錄驗(yàn)證和授權(quán)方面的信息稀并,只要涉及賬號和密碼的程序都會(huì)記錄,比如SSH登錄单默,su切換用戶碘举,sudo授權(quán),甚至添加用戶和修改用戶密碼都會(huì)記錄在這個(gè)日志文件中
比較重要的幾個(gè)日志: 登錄失敗記錄:/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)前目錄所有文件,也可以是某個(gè)文件名
? ? -r 是遞歸查找
? ? -n 是顯示行號
? ? -R 查找所有文件包含子目錄
? ? -i 忽略大小寫
3趴泌、如何顯示一個(gè)文件的某幾行:
? ? 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表示第一個(gè)域,?$n表示第n個(gè)域。
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剑辫、增加一個(gè)用戶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 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 ~~~