Linux 伺服器一旦被入侵,可能導致資料外洩、服務中斷、被植入惡意程式。定期執行系統性檢查是資安防護的基本功。本文整理 11 大核心檢查維度,提供具體指令與異常徵兆,協助管理員快速發現入侵跡象。
# 查看所有帳號
less /etc/passwd
# 檢查 UID/GID 為 0 的帳號(僅應有 root)
awk -F: '$3==0 {print $1}' /etc/passwd
# 檢查 /etc/passwd 異常修改時間
ls -l /etc/passwd
# 檢查空密碼帳號
awk -F: 'length($2)==0 {print $1}' /etc/shadow
# 檢查新增帳號(近期修改)
grep -v '^#' /etc/passwd | sort -t: -k3 -n
異常徵兆: 未授權新增帳號、非 root 的 UID 0、空密碼帳號、passwd/shadow 異常修改時間。
# 查看所有登入歷史
last
last -n 50
# 檢查失敗登入
lastb
grep "Failed password" /var/log/secure /var/log/auth.log
# 檢查可疑來源 IP
grep "Accepted password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
# 關鍵字搜尋
grep -i "promiscuous\|error\|rpc\|strange" /var/log/messages /var/log/syslog
異常徵兆: 大量失敗嘗試、非常用地區/時間登入、promiscuous mode(混雜模式/嗅探)、RPC 異常字元。
# 完整進程列表(注意 UID 0 非預期進程)
ps -auxf
ps -ef
# 檢查特定進程開啟檔案/連接埠
lsof -p
# 檢查 inetd/xinetd 服務
cat /etc/inetd.conf | grep -v '^#'
ls /etc/xinetd.d/
# 檢查隱藏進程(/proc 與 ps 差集)
ps -ef | awk '{print $2}' | sort -n > /tmp/ps_pids
ls /proc | grep '^[0-9]' | sort -n > /tmp/proc_pids
diff /tmp/ps_pids /tmp/proc_pids
異常徵兆: 未知高權限進程、異常網路連接、偽裝系統進程(如 kthreadd 拼寫錯誤)、隱藏進程(rootkit 特徵)。
# SUID/SGID 檔案(提權風險)
find / -type f -perm -4000 -o -perm -2000 2>/dev/null
# 大檔案(可能為資料竊取暫存/惡意程式)
find / -type f -size +10M 2>/dev/null
# 可疑檔名(隱藏、特殊字元)
find / -name ".. *" -o -name ".*" -o -name "* *" -o -name ".." 2>/dev/null
# core dump 檔案(分析崩潰/攻擊軌跡)
find / -name core -exec ls -l {} \;
# 系統檔案完整性(RPM 系統)
rpm -Va | grep -E '^(S|M|5|D|L|U|G|T)'
# 關鍵二進位檔驗證
rpm -qf /bin/ls /bin/login /usr/bin/top /usr/bin/netstat
md5sum /bin/ls /bin/login /usr/bin/top
異常徵兆: 未預期的 SUID 檔、超大不明檔案、偽裝檔名、關鍵系統檔 MD5 不符、rpm -Va 顯示修改(M/S/5 等)。
# 輸出代碼對照:
# S=大小異常 M=權限異常 5=MD5異常 D=裝置號異常 L=連結異常 U=擁有者異常 G=群組異常 T=時間異常
# 重點關注 /sbin, /bin, /usr/sbin, /usr/bin 下的異常
# 介面混雜模式(嗅探器徵兆)
ip link | grep PROMISC
# 所有網路連接
lsof -i
netstat -tulnap
ss -tulnap
# 異常連接(非預期埠、外連)
netstat -nap | grep -v -E ':(22|80|443|3306|5432) '
# ARP 表檢查(ARP 欺騙)
arp -a
ip neigh
異常徵兆: 介面進入 PROMISC、不明埠監聽、大量外連、ARP 表異常。
# root 與 UID 0 使用者的 crontab
crontab -u root -l
cat /etc/crontab
ls -la /etc/cron.*/
cat /etc/cron.d/*
# 使用者級排程
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null; done
異常徵兆: 未授權的排程、反向 Shell 指令、下載執行腳本、異常時間觸發。
# 常見後門位置
cat /etc/rc.d/rc.local
ls /etc/rc.d/rc*.d/
cat /etc/rc.local
ls /etc/init.d/
# SSH authorized_keys
find / -name authorized_keys -exec cat {} \;
# SUID 後門
find / -type f -perm -4000 -exec ls -la {} \;
# 載入模組
lsmod
cat /proc/modules
異常徵兆: rc.local/啟動腳本異常新增、authorized_keys 非預期金鑰、不明 SUID 檔、未知核心模組。
lsmod
# 對照已知模組,注意名稱可疑、非標準模組
modinfo
# 啟用服務
systemctl list-unit-files --state=enabled
chkconfig --list # 舊版
# RPC 服務
rpcinfo -p
異常徵兆: 未授權服務啟用、異常 RPC 服務暴露。
# rkhunter
rkhunter --update
rkhunter -c --sk
# chkrootkit
chkrootkit -q
# Lynis 綜合稽核
lynis audit system
「預防勝於治療」,持續性的基線稽核與自動化監控,才是防禦入侵的根本之道。