Linux日志安全分析技巧
0x00 前言
我正在整理一個項目,收集和匯總了一些應急響應案例(不斷更新中)。
GitHub 地址:https://github.com/Bypass007/Emergency-Response-Notes本文主要介紹Linux日志分析的技巧,更多詳細信息請訪問Github地址,歡迎Star。
0x01 日志簡介
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
0x02 日志分析技巧
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 -V2、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中查找文件init5、只是顯示/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在爆破主機的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 -nr2、登錄成功的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/secure4、刪除用戶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/secure5、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 now2、/var/log/yum.log
軟件安裝升級卸載日志:
yum install gcc[root@bogon ~]# more /var/log/yum.logJul 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總結
以上是生活随笔為你收集整理的Linux日志安全分析技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利好蔚来ES7 特斯拉Model Y长续
- 下一篇: C#的变迁史04 - C# 4.0 之多