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 -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 ':'  '{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 -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授權執行:
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

640?wx_fmt=jpeg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章