Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

用 awk 快速發現系統隱藏超級用戶與空密碼帳號

編輯:Linux 教學

場景

安全稽核時需快速排查:

  1. 除 root 外是否還有 UID 0 的帳號(隱藏超級用戶)。
  2. 是否存在密碼為空的帳號(極高風險)。

指令一鍵檢測

1. 列出所有 UID 0 的用戶

awk -F: '$3 == 0 {print $1}' /etc/passwd

輸出範例:

root
toor

解讀: 正常僅應有 root。若出現其他名稱,立即審查來源、鎖定或刪除。

2. 列出密碼為空的用戶(基於 /etc/shadow)

awk -F: 'length($2) == 2 {print $1}' /etc/shadow

原理: CentOS/RHEL 等系統採用 SHA-512 雜湊,$6$ 開頭,長度遠大於 2。空密碼在 /etc/shadow 第二欄通常顯示為 !! 或 *(長度 2),或早期 DES 雜湊僅 13 字元。length($2) == 2 能快速捕捉 !! 情況。

更嚴謹的檢測(兼容多種雜湊):

awk -F: '$2 ~ /^!!$/ || $2 ~ /^\*$/ || length($2) < 13 {print $1}' /etc/shadow

自動化稽核腳本範例

#!/bin/bash
# audit_accounts.sh
echo "=== UID 0 帳號 ==="
awk -F: '$3 == 0 {print "  " $1}' /etc/passwd

echo -e "\n=== 空密碼/弱雜湊帳號 ==="
awk -F: '$2 ~ /^!!$/ || $2 ~ /^\*$/ || length($2) < 13 {print "  " $1 " (" $2 ")"}' /etc/shadow

echo -e "\n=== 密碼未設定過期策略的帳號(建議 90 天)==="
awk -F: '$5 == "" || $5 > 90 {print "  " $1 " (max age: " $5 ")"}' /etc/shadow

修復建議

問題處理指令
多餘 UID 0 用戶usermod -u <新UID> <用戶名> 或 userdel -r <用戶名>
空密碼帳號passwd -l <用戶名> 鎖定,或 passwd <用戶名> 設定強密碼
無密碼過期策略chage -M 90 <用戶名> 設定最長 90 天

總結

兩條 awk 單行指令即可完成核心帳號安全基線掃描。建議納入每日巡檢腳本、配合 auditd 審計、定期輸出報表,做到「早發現、早修復、留痕跡」。

Copyright © Windows教程網 All Rights Reserved