當Linux主機發生安全事件需要進行入侵排查時,一般可以使用常見的shell命令,通過分析主機的異常現象、進程端口、啟動方式、可疑文件和日志記錄等信息以確認主機是否被入侵。
在這里,結合工作中Linux安全事件分析處理辦法,總結了Linux手工入侵排查過程中的分析方法。
01、檢查系統賬號
從攻擊者的角度來說,入侵者在入侵成功后,往往會留下后門以便再次訪問被入侵的系統,而創建系統賬號是一種比較常見的后門方式。在做入侵排查的時候,用戶配置文件/etc/passwd和密碼配置文件/etc/shadow是需要去重點關注的地方。
(1)查詢特權用戶特權用戶(uid 為0)
- awk -F: '$3==0{print $1}' /etc/passwd
(2)查詢可以遠程登錄的帳號信息
- awk '/\$1|\$6/{print $1}' /etc/shadow
(3)除root帳號外,其他帳號是否存在sudo權限。如非管理需要,普通帳號應刪除sudo權限
- more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
(4)禁用或刪除多余及可疑的帳號
- usermod -L user 禁用帳號,帳號無法登錄,/etc/shadow第二欄為!開頭
- userdel user 刪除user用戶
- userdel -r user 將刪除user用戶,并且將/home目錄下的user目錄一并刪除
(5)當前登錄當前系統的用戶信息
- who 查看當前登錄用戶(tty本地登陸 pts遠程登錄)
- w 查看系統信息,想知道某一時刻用戶的行為
- uptime 查看登陸多久、多少用戶,負載
02、檢查異常端口
(1)使用netstat 網絡連接命令,分析可疑端口、IP、PID等信息。
- netstat -antlp|more
(2)如發現異常的網絡連接需要持續觀察,可抓包分析
- tcpdump -c 10 -q //精簡模式顯示 10個包
03、檢查可疑進程
(1)使用ps命令列出系統中當前運行的那些進程,分析異常的進程名、PID,可疑的命令行等。
- ps aux / ps -ef
(2)通過top命令顯示系統中各個進程的資源占用狀況,如發現資源占用過高
- top
(3)如發現異常,可使用一下命令進一步排查:
- 查看該進程啟動的完整命令行: ps eho command -p $PID
- 查看該進程啟動時候所在的目錄: readlink /proc/$PID/cwd
- 查看下pid所對應的進程文件路徑:ls -l /proc/$PID/exe
- 查看該進程啟動時的完整環境變量: strings -f /proc/1461/environ | cut -f2 -d ''
- 列出該進程所打開的所有文件: lsof -p $PID
04、檢查系統服務
Linux系統服務管理,CentOS7使用systemd控制 CentOS6之前使用chkconfig控制。
(1)對于systemd服務管理器來說,可以通過下述方式查看開機自啟的服務:
- systemctl list-unit-files --type=service | grep "enabled"
(2)chkconfig就是CentOS6以前用來控制系統服務的工具,查看服務自啟動狀態:
- chkconfig --list
- chkconfig --list | grep "3:on\|5:on"
05、檢查開機啟動項
(1)檢查啟動項腳本
- more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/
(2)例子:當我們需要開機啟動自己的腳本時,只需要將可執行腳本丟在/etc/init.d目錄下,然后在/etc/rc.d/rc*.d中建立軟鏈接即可
- ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
此處sshd是具體服務的腳本文件,S100ssh是其軟鏈接,S開頭代表加載時自啟動;如果是K開頭的腳本文件,代表運行級別加載時需要關閉的。
06、檢查計劃任務
利用計劃任務進行權限維持,可作為一種持久性機制被入侵者利用。檢查異常的計劃任務,需要重點關注以下目錄中是否存在惡意腳本。
- /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/*
07、檢查異常文件
1、查看敏感目錄,如/tmp目錄下的文件,同時注意隱藏文件夾,以“..”為名的文件夾具有隱藏屬性
2、得到發現WEBSHELL、遠控木馬的創建時間,如何找出同一時間范圍內創建的文件?
- 可以使用find命令來查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前訪問過的文件
3、針對可疑文件可以使用stat進行創建修改時間。
08、檢查歷史命令
一般而言,入侵者獲取shell之后,會執行一些系統命令從而在主機上留下痕跡,我們可以通過history命令查詢shell命令的執行歷史。
(1)查詢某個用戶在系統上執行了什么命令
使用root用戶登錄系統,檢查/home目錄下的用戶主目錄的.bash_history文件
(2)默認情況下,系統可以保存1000條的歷史命令,并不記錄命令執行的時間,根據需要進行安全加固。
a)保存1萬條命令sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profileb)在/etc/profile的文件尾部添加如下行數配置信息:######jiagu history xianshi#########USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]thenUSER_IP=`hostname`fiexport HISTTIMEFORMAT="%F %T $USER_IP `whoami` "shopt -s histappendexport PROMPT_COMMAND="history -a"######### jiagu history xianshi ##########c)source /etc/profile讓配置生效
09、檢查系統日志
在Linux上一般跟系統相關的日志默認都會放到/var/log下面,若是一旦出現問題,用戶就可以通過查看日志來迅速定位,及時解決問題。常用日志文件如下:
/var/log/btmp:記錄錯誤登錄日志,這個文件是二進制文件,不能直接vi查看,而要使用lastb命令查看。/var/log/lastlog:記錄系統中所有用戶最后一次登錄時間的日志,這個文件是二進制文件,不能直接vi,而要使用lastlog命令查看。/var/log/wtmp:永久記錄所有用戶的登錄、注銷信息,同時記錄系統的啟動、重啟、關機事件。同樣這個文件也是一個二進制文件,不能直接vi,而需要使用last命令來查看。/var/log/utmp:記錄當前已經登錄的用戶信息,這個文件會隨著用戶的登錄和注銷不斷變化,只記錄當前登錄用戶的信息。同樣這個文件不能直接vi,而要使用w,who,users等命令來查詢。/var/log/secure:記錄驗證和授權方面的信息,只要涉及賬號和密碼的程序都會記錄,比如SSH登錄,su切換用戶,sudo授權,甚至添加用戶和修改用戶密碼都會記錄在這個日志文件中
一般,我們需要重點去關注secure安全日志,檢查系統錯誤登陸日志,統計IP重試次數,成功登錄的時間、用戶名和ip,確認賬號是否存在暴力破解或異常登錄的情況。
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 -nr2、登錄成功的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}'
原文地址:https://mp.weixin.qq.com/s/rP29gCiec2fxVw7SrP76iQ