Linux故障排查思路及常用命令(收藏了)
作者博客:https://blubiu.github.io
Liunx應(yīng)急一直都是安全行業(yè)中的重點(diǎn), 由于是全命令行界面,排查起來也沒那么方便, 也一直想做這方面的筆記,今天抽空來總結(jié)一下。
目錄:


現(xiàn)場(chǎng)環(huán)境
如果是Linux系統(tǒng)的話,見過最多的是CentOS 6,Linux是全命令界面的,
如果是Windows系統(tǒng)的話,一般是Windows server 2008
常見應(yīng)急問題
大多數(shù)應(yīng)急常見的問題都是挖礦,或者是被植入菠菜
小部分是中了勒索病毒,如果是勒索病毒的話,看看360、騰訊有沒有什么
解密工具,
如果沒有的話就重裝系統(tǒng)吧,自求多福 (逃。。
排查思路及方法
本節(jié)將講解一些基本的流程,以及一些常用的命令。
基本流程
接到應(yīng)急指令后,一般都需要到客戶現(xiàn)場(chǎng)去處理的,最好帶上電腦
和筆記本。
到達(dá)現(xiàn)場(chǎng)后,跟客戶溝通,我方需要確認(rèn)一些信息(我在Windows
安全應(yīng)急的第三篇有講解一些),
方便定(shuai)位(guo)問題,后面客戶可能會(huì)讓你上機(jī)操作,或者是使用你自己電腦登錄目標(biāo)機(jī)器查找問題。
無論是挖礦還是菠菜,流程都差不多,
找出問題 –> 解決問題 –> 編寫報(bào)告
有句傳言道是:掃描一分鐘,報(bào)告一個(gè)鐘,
如果是菠菜的話,那要多注意注意是不是修改了網(wǎng)站配置文件還是直接在網(wǎng)頁上值入的鏈接。
進(jìn)程排查命令
整理一些基本的命令,使用不分先后順序
這里只簡單說明,
服務(wù)器被入侵后,攻擊者難免會(huì)利用惡意程序來達(dá)到自己的目的。
1. 查看當(dāng)前系統(tǒng)狀態(tài)(top)
top命令:可以持續(xù)的監(jiān)視進(jìn)程的信息。
挖礦應(yīng)急通常優(yōu)先使用top命令來查看系統(tǒng)進(jìn)程,
一般挖礦病毒站用CPU比較大

2. 查看當(dāng)前系統(tǒng)進(jìn)程信息(ps)
ps命令:可以查看進(jìn)程的瞬間信息。
常用參數(shù):
-a:顯示現(xiàn)行終端機(jī)下的所有程序,包括其他用戶的程序。
-e:列出程序時(shí),顯示每個(gè)程序所使用的環(huán)境變量。
-f:顯示UID,PPIP,C與STIME欄位。

3. 查看非root運(yùn)行的進(jìn)程(ps)
命令:
ps -U root -u root -N

4. 查看用戶root運(yùn)行的進(jìn)程(ps)
命令:
ps -u root

5. 查看有沒有奇怪進(jìn)程(ps)
命令:
ps -aef | grep inetd
grep?是搜索命令
inetd?程序是一個(gè)Linux守護(hù)進(jìn)程.

6. 檢測(cè)隱藏進(jìn)程(ps)
命令:
ps -ef | awk '{print}' | sort -n |uniq >1
命令:
ls /proc | sort -n |uniq >2
sort?命令將文本文件內(nèi)容加以排序,可針對(duì)文本文件的內(nèi)容,以行為單位來排序。-n?參數(shù)依照數(shù)值的大小排序。
uniq?命令用于檢查及刪除文本文件中重復(fù)出現(xiàn)的行列,一般與 sort 命令結(jié)合使用。

7. 檢測(cè)系統(tǒng)守護(hù)進(jìn)程(ls)
命令:
ls /etc/crontab

任務(wù)及用戶活動(dòng)排查命令
說明:機(jī)器使用過程中難免會(huì)留下一些痕跡
1. 查看當(dāng)前有誰登陸在服務(wù)器上(who)
who?命令查看當(dāng)前登錄用戶(tty本地登陸 pts遠(yuǎn)程登錄)
命令:
who
w?命令查看系統(tǒng)信息,想知道某一時(shí)刻用戶的行為

2. 查看當(dāng)前登陸用戶的IP信息(who)
命令:
who -m

3. 查看近期用戶登陸情況(last)
命令:
last -n 5 ## -n 5 表示輸出5條

4. 查看歷史命令(history)
命令:
history 5 ## 5 表示輸出最近使用的5條命令

5. 查看空口令賬號(hào)(awk)
awk是一種編程語言,用于對(duì)文本和數(shù)據(jù)進(jìn)行處理的
語法:awk [options] ‘pattern{action}’ file
命令:
awk -F: '($2=="")' /etc/shadow
沒有的話啥都不輸出

在沒有options和pattern的情況下,可以使用cat命令

6. 查看uid為0的賬號(hào)(awk)
命令:
awk -F: '($3==0)' /etc/passwd

7. 查看uid為0的賬號(hào)(grep)
命令:
grep -v -E "^#" /etc/passwd | awk -F: '$3==0{print $1}'

8. 查看進(jìn)程樹是否所有異常進(jìn)程存在一個(gè)父進(jìn)程、判斷進(jìn)程的父子關(guān)系(pstree)
命令:
pstree -p

網(wǎng)絡(luò)排查命令
說明:挖礦病毒避免不了要跟主機(jī)通信
1. 列出本機(jī)所有的連接和監(jiān)聽的端口,查看有沒有非法連接(netstat)
netstat?命令用來打印Linux中網(wǎng)絡(luò)系統(tǒng)的狀態(tài)信息。
常用參數(shù):
-a或–all:顯示所有連線中的Socket。
-c或–continuous:持續(xù)列出網(wǎng)絡(luò)狀態(tài)。
-i或–interfaces:顯示網(wǎng)絡(luò)界面信息表單。
l或–listening:顯示監(jiān)控中的服務(wù)器的Socket。
-n或–numeric:直接使用ip地址,而不通過域名服務(wù)器。
-t或–tcp:顯示TCP傳輸協(xié)議的連線狀況。
-u或–udp:顯示UDP傳輸協(xié)議的連線狀況。
命令:
netstat -lntp

2. 查看誰在使用某個(gè)端口(lsof)
lsof?命令用于查看你進(jìn)程開打的文件,打開文件的進(jìn)程,進(jìn)程打開的端口(TCP、UDP)。
常用參數(shù):
-g:列出GID號(hào)進(jìn)程詳情;
-d<文件號(hào)>:列出占用該文件號(hào)的進(jìn)程;
-i<條件>:列出符合條件的進(jìn)程。(4、6、協(xié)議、:端口、 @ip )
-p<進(jìn)程號(hào)>:列出指定進(jìn)程號(hào)所打開的文件;
-u:列出UID號(hào)進(jìn)程詳情;
命令:
lsof -i :22 # 看看誰在使用22端口

3. 查看多個(gè)進(jìn)程號(hào)對(duì)應(yīng)的文件信息(lsof)
命令:
lsof -p 2,3 # 使用逗號(hào)分隔

4. 查看所有tcp網(wǎng)絡(luò)連接信息(lsof)
命令:
lsof -i tcp

5. 查看所有udp網(wǎng)絡(luò)連接信息(lsof)
命令:
lsof -i udp

文件排查命令
說明:服務(wù)器被入侵后,攻擊者基本上都需要修改一些文件來維持腳本的
運(yùn)行
1. 查看所有文件,包括隱藏的文件(ls)
ls?命令用來顯示目標(biāo)列表,不同類型的文件顏色也不同
常用參數(shù):
-a:顯示所有文件及目錄,包括隱藏文件
-l:以長格式顯示目錄下的內(nèi)容列表。
-t:用文件和目錄的更改時(shí)間排序
命令:
ls -la2. 查看文件路徑(whereis)
命令:
whereis filename3. 查看文件創(chuàng)建時(shí)間(ls)
命令:
ls -al filname4. 查找最近24小時(shí)內(nèi)修改過的文件(find)
命令:
find ./ -mtime 0
find?命令用來在指定目錄下查找文件。
參數(shù)?-mtime n?按照文件的更改時(shí)間來找文件,n為整數(shù)。
例:
-mtime 0 表示文件修改時(shí)間距離當(dāng)前為0天的文件,即距離當(dāng)前時(shí)間
不到1天(24小時(shí))以內(nèi)的文件。
-mtime 1 表示文件修改時(shí)間距離當(dāng)前為1天的文件,即距離當(dāng)前時(shí)間
1天(24小時(shí)-48小時(shí))的文件。
-mtime+1 表示文件修改時(shí)間為大于1天的文件,即距離當(dāng)前時(shí)間2天
(48小時(shí))之外的文件
-mtime -1 表示文件修改時(shí)間為小于1天的文件,即距離當(dāng)前時(shí)間1天
(24小時(shí))之內(nèi)的文件
5. 查找以.txt結(jié)尾的文件名(find)
命令:
find / -name "*.txt"
忽略大小寫,命令:
find / -iname "*.txt"6. 查找不是以.txt結(jié)尾的文件(find)
命令:
find / ! -name "*.txt"總結(jié)
參考了很多的文章,
但是這些命令實(shí)在是太多了,
看著網(wǎng)上寫的很亂,本想自己總結(jié)整理一下,
沒想到越總結(jié)越覺得亂,hhh,不知道您亂了沒。
- END -
?推薦閱讀? 31天拿下 K8s 含金量最高的CKA+CKS證書!? NoOps 來了,DevOps 工程師的未來在何方? 我的云服務(wù)器被植入挖礦木馬,CPU飆升200% 一名運(yùn)維小哥對(duì)運(yùn)維規(guī)則的10個(gè)總結(jié),收藏起來 運(yùn)維工程師不得不看的經(jīng)驗(yàn)教訓(xùn)和注意事項(xiàng) Kubernetes上生產(chǎn)環(huán)境后,99%都會(huì)遇到這2個(gè)故障 如何用 Kubernetes 實(shí)現(xiàn) CI/CD 發(fā)布流程?| 漫畫 K8s kubectl 常用命令總結(jié)(建議收藏) Kubernetes 的這些核心資源原理,你一定要了解 終于明白了 DevOps 與 SRE 的區(qū)別! 我在創(chuàng)業(yè)公司的 “云原生” 之旅 基于Nginx實(shí)現(xiàn)灰度發(fā)布與AB測(cè)試 編寫 Dockerfile 最佳實(shí)踐 12年資深運(yùn)維老司機(jī)的成長感悟
點(diǎn)亮,服務(wù)器三年不宕機(jī)


