1. 程式人生 > 其它 >Linux主機入侵檢測

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

越努力,越幸運!