Linux应急响应篇
?Linux入侵排查
目錄
?Linux入侵排查
1、用戶信息文件 /etc/passwd
2、密碼文件 /etc/shadow
1.2 歷史命令
1、查看root用戶的歷史命令
2、查看普通用戶的歷史命令
3、歷史操作命令的清除:history -c
1.3 檢查異常進程
1.4 檢查異常端口
1.5 檢查開機啟動項
1.6 檢查定時任務
1、利用crontab創建定時任務
2、利用anacron實現異步定時任務調度
1.7 檢查服務
1.8 檢查異常文件
1、用戶信息文件 /etc/passwd
root : x : 0 : 0 : root : /root : /bin/bash
用戶名:密碼:用戶ID:組ID:用戶說明:家目錄:登錄之后使用的shell
2、密碼文件 /etc/shadow
root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV 9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用戶名:加密密碼:密碼最后一次修改日期:兩次密碼的修改時間間隔:密碼有效期:密碼修改到期到的警告天數:密碼過期之 后的寬限天數:賬號失效時間:保留
who ? ? ? 查看當前登錄用戶(tty本地登錄,pts遠程登錄)
w ? ? ? ? ? ?查看系統信息,想知道某一時刻用戶的行為
uptime ?查看登錄多久,多少用戶,負載
last ? ? ? ? 查看最近登錄的用戶
lastb ? ? ? 查看最近登錄失敗的用戶
入侵排查
1、查詢特權用戶(uid為0)
awk -F : '$3==0{print $1}' /etc/passwd
2、查看可以遠程登錄的賬號信息
awk '/\ $1|\ $6/{print $1}' /etc/shadow
3、除root賬號外,其他賬號是否存在sudo權限
more /etc/sudoers | grep "ALL=(ALL)"
4、查看空密碼的用戶
awk -F : 'length($2)==0{print $1}' /etc/passwd
Tips:無密碼的用戶只允許本機登錄,不允許遠程登錄
5、禁用或刪除多余及可疑的賬號
usermod -L user ? 禁用賬號,賬號無法登錄,/etc/shadow 第二欄為!開頭
userdel user ? ? ? ? ? 刪除user用戶
userdel -r user ? ? ? 將刪除user用戶,并且將/home目錄下的user目錄一并刪除
1.2 歷史命令
1、查看root用戶的歷史命令
history
2、查看普通用戶的歷史命令
在/home各個用戶的目錄下的.bash_history,可以查看普通賬號的歷史命令
cat .bash_history >> history.txt // 將文件內容保存到history.txt中查看
1) 保存1萬條命令
? ?sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
? ?
? ?為歷史命令增加登錄的IP地址、執行命令時間等信息
2) 在/etc/profile的文件尾部添加如下配置信息:
? ?\######jiagu history xianshi#########?
? ?USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`?
? ?if [ "$USER_IP" = "" ]?
? ?then?
? ?USER_IP=`hostname`?
? ?fi?
? ?export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "?
? ?shopt -s histappend?
? ?export PROMPT_COMMAND="history -a"?
? ?######### jiagu history xianshi ##########
3) 讓配置文件生效
? ?source /etc/profile
3、歷史操作命令的清除:history -c
此命令并不會清除保存在文件中的記錄,因此需要手動刪除.bash_profile文件中的記錄。
1.3 檢查異常進程
使用top | more ?查看可疑進程PID
發現可疑進程,查看進程所對應的文件路徑
? 1、ls -l /proc/PID/exe
? 2、file /proc/PID/exe
ps aux | grep PID ,分析進程
1.4 檢查異常端口
netstat -anltp | more 檢查可疑端口,IP,PID
1.5 檢查開機啟動項
?查看啟動項:
/etc/rc.d/rc.local
/etc/rc.d/rc[0~6].d?
/etc/rc[0~6].d
/etc/rc.local
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統運行級別
| 運行級別 | 含義? |
| 0 | 關機 |
| 1 | 單用戶模式,可以想象為windows的安全模式,主要用于系統修復 |
| 2 | 不完全的命令行模式,不含NFS服務 |
| 3 | 完全的命令行模式,就是標準字符界面 |
| 4 | 系統保留 |
| 5 | 圖形界面 |
| 6 | 重啟 |
查看系統運行級別:runlevel
系統默認允許級別
在配置文件 /etc/inittab中
id=3:initdefault ?系統開機后直接進入的運行級別為3
當我們需要開機啟動自己的腳本時,只需要將可執行腳本丟在/etc/init.d目錄下,然后在/etc/rc.d/rc*.d中簡歷軟鏈接即可
ln -s /etc/init.d/sshd ? /etc/rc.d/rc3.d/S100ssh
此處sshd是具體服務的腳本文件,S100ssh是其軟鏈接,S開頭代表加載時自啟動;如果是K開頭的腳本文件,代表運行級別加載時關閉
1.6 檢查定時任務
1、利用crontab創建定時任務
crontab -l 列出某個用戶cron服務的詳細內容
Tips: 默認編寫的crontab文件會保存在 (/var/spool/cron/用戶名 下)
crontab -r 刪除所有的計劃任務
crontab -e 使用編輯器編輯當前的crontab文件
crontab -u 用戶名 -l 查看root用戶的定時任務
2、利用anacron實現異步定時任務調度
每天運行 /home/backup.sh腳本:?
vi /etc/anacrontab?
@daily 10 example.daily /bin/bash /home/backup.sh?
當機器在 backup.sh 期望被運行時是關機的,anacron會在機器開機十分鐘之后運行它,而不用再等待 7天。
入侵排查
/var/spool/cron/*?
/etc/crontab?
/etc/cron.d/*?
/etc/cron.daily/*?
/etc/cron.hourly/*?
/etc/cron.monthly/*?
/etc/cron.weekly/?
/etc/anacrontab?
/var/spool/anacron/*
1.7 檢查服務
服務自啟動
第一種修改方法:
chkconfig [--level 運行級別] [獨立服務名] [on|off]
chkconfig -level 2345 httpd on
chkconfig httpd on 默認level是2345
第二種修改方法:
修改/etc/rc.d/rc.local文件
加入/etc/init.d/httpd start
第三種修改方法:
使用ntsysv命令管理自啟動,可以管理獨立服務和xinetd服務。
入侵排查
1、查詢已安裝的服務:
RPM包安裝的服務
chkconfig --list 查看服務自啟動狀態,可以看到所有RPM包安裝的服務
系統在3與5級別下的啟動項
中文環境
chkconfig --list | grep "3:啟用 \ | 5:啟用"
英文環境
chkconfig --list | grep "3:on\ | 5:on"
如果命令被修改可以使用rpm -Va檢查發生過變化的軟件包
1.8 檢查異常文件
1、查看敏感目錄,如/tmp目錄下的文件,同時注意隱藏文件
2、發現webshell、遠控木馬的創建時間,可以使用find命令查找同一時間范圍內創建的文件:find /opt -iname 1 -type f 找出/opt 目錄下一天前訪問過的文件
3、針對可疑文件可以使用stat查看文件詳細信息
4、md5sum獲取文件的md5值,在威脅情報社區進行在線檢測
## 1.9 檢查系統日志
日志默認存放位置:/var/log/
日志配置情況:/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,而要 使用last命令查看 |
| /var/log/wtmp | 永久記錄所有用戶的登錄、注銷信息,同時記錄系統的啟動、重啟、關機事件。同樣這個文 件也是一個二進制文件,不能直接vi,而需要使用last命令來查看 |
| /var/log/utmp | 記錄當前已經登錄的用戶信息,這個文件會隨著用戶的登錄和注銷不斷變化,只記錄當前登 錄用戶的信息。同樣這個文件不能直接vi,而要使用w,who,users等命令來查詢 |
| /var/log/secure | 記錄驗證和授權方面的信息,只要涉及賬號和密碼的程序都會記錄,比如SSH登錄,su切換 用戶,sudo授權,甚至添加用戶和修改用戶密碼都會記錄在這個日志文件中 |
日志分析
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、sudo授權執行:?
sudo -l?
Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now
總結
以上是生活随笔為你收集整理的Linux应急响应篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯联手联通推出车联网“网卡”,打“内容
- 下一篇: linux 其他常用命令