Linux主機入侵檢測
檢查系統資訊、使用者賬號資訊
● 作業系統資訊
cat /proc/version
使用者資訊
使用者資訊檔案
/etc/passwd
root:x:0:0:root:/root:/bin/bash
使用者名稱:密碼:使用者ID:組ID:使用者說明:家目錄:登陸之後的 shell
檢視哪些使用者為root許可權,有沒有新增的
cat /etc/passwd | grep x:0
查詢特權使用者特權使用者(uid 為0)
awk -F: '{if($3==0)print $1}' /etc/passwd
注: guest使用者uid為0為非正常使用者
查詢可以遠端登入的帳號資訊
awk '/\$1|\$6/{print $1}' /etc/shadow
檢視空口令賬戶
awk -F: 'length($2)==0 {print $1}' /etc/shadow
查詢有sudo許可權賬戶
more /etc/sudoers | grep -v "^#\|^$" | grep "
檢視當前使用者登入系統情況
who
檢視使用者錯誤的登入資訊
lastb
檢視所有使用者最後的登入資訊
lastblog
歷史命令
當前使用者的歷史命令
history
開啟 /home 各帳號目錄下的 .bash_history,查 看普通帳號執行的歷史命令。
應急措施
● usermod -L user 禁用帳號,帳號無法登入,/etc/shadow 第二欄為 ! 開頭
● userdel user 刪除 user 使用者
● userdel -r user 將刪除 user 使用者,並且將 /home 目錄下的 user 目錄一併刪除
檢查啟動項、計劃任務
啟動項
more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d
計劃任務
利用 crontab 建立計劃任務
● crontab -l 列出某個使用者cron服務的詳細內容
● Tips:預設編寫的crontab檔案會儲存在 (/var/spool/cron/使用者名稱 例如: /var/spool/cron/root
● crontab -r 刪除每個使用者cront任務(謹慎:刪除所有的計劃任務)
● crontab -e 使用編輯器編輯當前的crontab檔案
● 如:/1 * echo "hello world" >> /tmp/test.txt 每分鐘寫入檔案
入侵排查
重點關注以下目錄中是否存在惡意指令碼
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/
more /etc/cron.daily/* 檢視目錄下所有檔案
檢查異常埠
使用 netstat 網路連線命令,分析可疑埠、 IP、PID
檢視TCP連線
netstat -an | grep tcp | awk '{print $5}
檢視SYN連線情況
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq - c | sort -nr | more
檢視對應連結的檔案路徑
ls -l /proc/$PID/exe 或 file /proc/$PID/ exe($PID 為對應的 pid 號)
檢查異常程序
使用ps命令,分析程序
ps -aux | grep pid
監控某一應用執行緒數(如ssh
ps -eLf | grep ssh| wc –l
監控網路客戶連線數
netstat -n | grep tcp | grep 偵聽埠 | wc -l
檢視cpu佔用率前十的程序,有時候可以發現
ps aux --sort=pcpu | head -10
檢查服務
服務自啟動
第一種修改方法:
● chkconfig [--level 執行級別] [獨立服務名] [on|off]
● chkconfig –level 2345 httpd on 開啟自啟動
● chkconfig httpd on (預設level是2345)
第二種修改方法:
● 修改 /etc/re.d/rc.local 檔案
● 加入 /etc/init.d/httpd start
第三種修改方法:
● 使用 ntsysv 命令管理自啟動,可以管理獨立服 務和 xinetd 服務。
●
systemctl list-unit-files | grep enable #通過Systemctl檢視所有開啟的服務
檢查異常檔案
檢視敏感目錄
● 如/tmp目錄下的檔案,同時注意隱藏資料夾,以 “..”為名的資料夾具有隱藏屬性
時間點查詢
列出攻擊日期內變動的檔案
find
● 在指定目錄下查詢檔案
find -type b/d/c/p/l/f
● 查詢塊裝置、目錄、字元裝置、管道、符號鏈 接、普通檔案。
find -mtime -n +n
● 按檔案更改時間來查詢檔案,-n 指n天以內,+n 指n天前
find -atime -n +n
● 按檔案訪問時間來查詢檔案,-n 指n天以內,+n 指n天前
find -ctime -n +n
● 按檔案建立時間來查詢檔案,-n指n天以內,+n 指n天前
find / -ctime 0 -name "*.sh"
● 可查詢一天內新增的sh檔案
特殊許可權檔案查詢
find / tmp -perm 777
webshell查詢
find /var/www "*.php" | xargs egrep 'assert| phpspy|c99sh|milw0rm|eval|base64_decode| shell_exec|passthru|\(\$\_\$POST\[|eval'
● 查詢/var/www下的所有php檔案,xargs egrep 及之後的命令是查詢php檔案中是否包含後面的 關鍵字
對系統命令進行排查
● findWebshell、Scan_Webshell.py等進行 webshell掃描
● ls和ps等命令很可能被攻擊者惡意替換,所以可以使用ls -alt /bin,檢視命令目錄中相 關係統命令的修改時間,而進行排查。
● ls -alt /bin檢視相關檔案大小,若明顯偏大,則 檔案恆可能被替換
Linux後門檢測
● 使用第三方查殺工具(chkrootkit,rkhunter)
排查SUID程式
● find / -type f -perm -04000 -ls -uid 0 2>/ dev/null
檢查系統日誌
● 日誌預設存放位置:/var/log/
● 檢視日誌配置情況:more /etc/rsyslog.conf