系統排查
系統基本信息
CPU 信息
CPU 信息:lscpu
操作系統信息
操作系統信息:uname -a
操作系統信息:cat /proc/version
模塊信息
模塊信息:lsmod
賬戶信息
系統所有賬戶
系統所有賬戶:cat /etc/passwd
超級權限賬戶
超級權限賬戶:awk -F: '{if($3==0)print $1}' /etc/passwd
可登錄賬戶
可登錄賬戶:cat /etc/passwd | grep '/bin/bash'
最近20條登錄失敗信息
最近20條登錄失敗信息:lastb | head -n 20
所有賬號最后登錄信息
所有賬號最后登錄信息:lastlog
最近20條登錄信息
最近20條登錄信息:last | head -n 20
當前登錄賬號信息
當前登錄賬號信息:who
空口令賬號
空口令賬號:awk -F: '{if($2==0)print $1}' /etc/shadow
啟動項
啟動項:ls -lat /etc/init.d/
啟動項:cat /etc/init.d/rc.local
啟動項:cat /etc/rc.local
計劃任務
當前計劃任務
當前計劃任務:crontab -l
Linux Crontab 計劃任務
/var/spool/cron/ 目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名
/etc/crontab 這個文件負責調度各種管理和維護任務。
/etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本。
我們還可以把腳本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目錄中,讓它每小時/天/星期、月執行一次。
crontab [-u username] //省略用戶表表示操作當前用戶的crontab
-e??????(編輯工作表)
-l??????(列出工作表里的命令)
-r??????(刪除工作作)
我們用crontab -e進入當前用戶的工作表編輯,是常見的vim界面。每行是一條命令。
crontab的命令構成為 時間+動作,其時間有分、時、日、月、周五種,操作符有
* 取值范圍內的所有數字
/ 每過多少個數字
- 從X到Z
,散列數字
實例1:每1分鐘執行一次myCommand
* * * * * myCommand
實例2:每小時的第3和第15分鐘執行
3,15 * * * * myCommand
實例3:在上午8點到11點的第3和第15分鐘執行
3,15 8-11 * * * myCommand
實例4:每隔兩天的上午8點到11點的第3和第15分鐘執行
3,15 8-11 */2??*??* myCommand
實例5:每周一上午8點到11點的第3和第15分鐘執行
3,15 8-11 * * 1 myCommand
實例6:每晚的21:30重啟smb
30 21 * * * /etc/init.d/smb restart
實例7:每月1、10、22日的4 : 45重啟smb
45 4 1,10,22 * * /etc/init.d/smb restart
實例8:每周六、周日的1 : 10重啟smb
10 1 * * 6,0 /etc/init.d/smb restart
實例9:每天18 : 00至23 : 00之間每隔30分鐘重啟smb
0,30 18-23 * * * /etc/init.d/smb restart
實例10:每星期六的晚上11 : 00 pm重啟smb
0 23 * * 6 /etc/init.d/smb restart
實例11:每一小時重啟smb
0 */1 * * * /etc/init.d/smb restart
實例12:晚上11點到早上7點之間,每隔一小時重啟smb
0 23-7/1 * * * /etc/init.d/smb restart
創建、編輯計劃任務的命令為crontab -e
查看當前計劃任務的命令為crontab -l
刪除某條計劃任務的命令為crontab -r
另外,如果您是以管理員的身份登錄的系統,還可以在crontab命令中加上-u參數來編輯他人的計劃任務。
crontab命令的參數及其作用
參數???????作用
-e???????編輯計劃任務
-u???????指定用戶名稱
-l???????列出任務列表
-r???????刪除計劃任務
分、時、日、月、星期 命令
如果有些字段沒有被設置,則需要使用星號(*)占位
使用crond設置任務的參數字段說明
字段???????說明
分鐘???????取值為0~59的整數
小時???????取值為0~23的任意整數
日期???????取值為1~31的任意整數
月份???????取值為1~12的任意整數
星期???????取值為0~7的任意整數,其中0與7均為星期日
命令???????要執行的命令或程序腳本
在crond服務的配置參數中,一般會像Shell腳本那樣以#號開頭寫上注釋信息,這樣在日后回顧這段命令代碼時可以快速了解其功能、需求以及編寫人員等重要信息。
計劃任務中的“分”字段必須有數值,絕對不能為空或是*號,而“日”和“星期”字段不能同時使用,否則就會發生沖突。
cron是Linux中默認的計劃任務。使用cron,你可以安排一個計劃(比如:命令或者shell腳本)周期性地運行或者在指定的分鐘、小時、天、周、月等特定時間運行。cron在你安排不同的常規維護任務時是很有用的,比如周期性地備份、日志循環、檢查文件系統、監測磁盤空間等等
每個cron任務的格式如下。
<分鐘> <小時> <日> <月> <星期> <命令>
查看計劃任務文件
查看計劃任務文件:ls -lat /etc/cron*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/*
/etc/anacrontab
進程排查
網絡連接
網絡連接:netstat -antlp
查找對應運行程序
查找對應運行程序:ls -lat /proc/20583
查看程序打開文件
查看程序打開文件:lsof -p 20583
結束進程
結束進程:kill -9 20583
Linux kill命令
Linux kill 命令用于刪除執行中的程序或工作。
linux 的 kill 命令是向進程發送信號,kill 不是殺死的意思,-9 表示無條件退出,但由進程自行決定是否退出,這就是為什么 kill -9 終止不了系統進程和守護進程的原因。
Linux pkill 命令
Linux pkill 用于殺死一個進程,與 kill 不同的是它會殺死指定名字的所有進程,類似于 killall 命令。
kill 命令殺死指定進程 PID,需要配合 ps 使用,而 pkill 直接對進程對名字進行操作,更加方便。
pkill -9??php-fpm??????????//結束所有的 php-fpm 進程
Linux killall 命令
Linux killall 用于殺死一個進程,與 kill 不同的是它會殺死指定名字的所有進程。
kill 命令殺死指定進程 PID,需要配合 ps 使用,而 killall 直接對進程對名字進行操作,更加方便。
killall -9 php-fpm??????????//結束所有的 php-fpm 進程
查看文件屬性
查看文件屬性:lsattr filename
移除 i 屬性
移除 i 屬性:chattr -i filename
查看隱藏進程
ps -ef | awk '{print}' | sort -n | uniq > 1
ls /proc | sort -n | uniq > 2
diff 1 2
查看資源占用率較高的進程
查看資源占用率較高的進程:top
服務排查
系統運行服務
系統運行服務:chkconfig –list
Centos7 查看自啟動列表systemctl list-unit-files以及設置服務自啟動
系統運行服務:systemctl list-unit-files
所有服務狀態
所有服務狀態:service --status-all
所有服務狀態:
顯示所有的服務狀態—空格翻頁 q推出
systemctl list-units --type service –all
查看啟動成功的服務列表
systemctl list-unit-files | grep enabled
查看啟動失敗的服務列表
systemctl --failed
查看所有服務的狀態—空格翻頁 q推出
systemctl list-unit-files --type service
文件痕跡排查
敏感目錄
/tmp
/usr/bin/
/usr/sbin/
~/.ssh/
/etc/ssh/
時間點查找
find:在指定目錄下查找文件
-type b/d/c/p/l/f:查找塊設備、目錄、字符設備、管道、符號鏈接、普通文件
-mtime -n +n:按文件更改時間來查找文件,-n 指 n 天以內,+n 指 n 天前。
-atime -n +n:按文件訪問時間來查找文件,-n 指 n 天以內,+n 指 n 天前。
-ctime -n +n:按文件創建時間來查找文件,-n 指 n 天以內,+n 指 n 天前。
查找一天內新增的 sh 文件
查找一天內新增的 sh 文件:find / -ctime 0 -name "*.sh"
查看排序后前10行的內容
查看排序后前10行的內容:ls -lat | head -n 10
排查文件創建、修改、訪問時間
排查文件創建、修改、訪問時間:stat /etc/passwd
特殊文件
特殊權限文件
特殊權限文件:find /tmp -perm 777
WebShell
WebShell:find /var/www/ -name "*.php"
系統命令檢測
系統命令檢測:ls -lat /bin/ /sbin/
系統命令檢測:ls -lah /bin/ /sbin/
后門檢測
后門檢測:chkrootkit -q | grep INFECTED
SUID 程序排查
SUID 程序排查:find / -type f -perm -04000 -ls -uid 0 2>/dev/null
日志分析
日志概述
/var/log/
/var/log/wtmp 登錄進入、退出、數據交換、關機和重啟,即last
/var/log/cron 計劃任務有關的日志信息
/var/log/messages 系統啟動后的信息和錯誤日志
/var/log/apache2/access.log Apache 訪問日志
/var/log/auth.log 系統授權信息,包括賬號登錄和使用的權限機制
/var/log/userlog 所有等級賬號信息日志
/var/log/vftpd.log FTP 日志
/var/log/lastlog 登錄的賬號,也可以使用命令 lastlog 查看
/var/log/secure 大多數應用輸入的賬號和密碼,以及登錄成功與否
/var/log/faillog 登錄系統失敗的賬號信息
日志分析
grep
sed
sort
awk
?
應?急?響?應?溯?源?反?制?記?錄?單 | ||||
應用系統名稱 | ? | |||
主管單位 | ? | |||
主要負責人 | ? | |||
運維單位 | ? | |||
直接負責人 | ? | |||
應用系統url | ? | |||
所屬網絡 | ? | |||
外網IP | ? | |||
內網IP | ? | |||
攻擊IP | ? | |||
攻擊時間 | ? | |||
發現時間 | ? | |||
阻斷時間 | ? | |||
應用系統漏洞存在位置 | ? | |||
事件類型 | ? | |||
后門位置 | ? | |||
處置措施 | ? | |||
青藤掃描結果 | ? | |||
涉及主機情況 | ? | |||
系統排查 | 異常任務 | ? | ||
異常驅動 | ? | |||
異常模塊 | ? | |||
異常程序 | ? | |||
? | 異常賬號 | ? | ||
? | 異常登錄 | ? | ||
? | 異常啟動項 | ? | ||
? | 異常任務計劃 | ? | ||
進程排查 | 異常進程 | ? | ||
異常連接 | ? | |||
服務排查 | 異常服務 | ? | ||
文件痕跡排查 | 敏感目錄 | ? | ||
時間點查找 | ? | |||
特殊文件 | ? | |||
系統命令 | ? | |||
內存后門檢測 | ? | |||
歷史命令 | ? | |||
WebShell | ? | |||
日志分析 | 系統日志 | ? | ||
應用日志 | ? | |||
影響危害 | ? | |||
結論 | ? | |||
? | ? | ? | ? | ? |
評論