系統安全及應用深度筆記
一、賬號安全控制體系構建
(一)賬戶全生命周期管理
1. 冗余賬戶精細化治理
-
非登錄賬戶基線核查
Linux 系統默認創建的非登錄賬戶(如bin
、daemon
、mail
)承擔系統服務支撐功能,其登錄 Shell 必須強制設置為/sbin/nologin
。通過以下命令批量核查:grep "/sbin/nologin" /etc/passwd | awk -F: '{print $1}'
若發現異常賬戶(如 Shell 被修改為
/bin/bash
),需立即排查是否存在非法篡改。 -
動態賬戶清理策略
-
臨時賬戶處理
:對于安裝程序生成的臨時賬戶(如
games
lp
),若確認無用可直接刪除:
userdel -r games # -r選項遞歸刪除宿主目錄
-
僵尸賬戶鎖定
:對不確定是否需保留的賬戶,采用
usermod -L
雙向鎖定(同時鎖定密碼和賬戶狀態):
usermod -L -e "01/01/2020" zhangsan # 設置過期時間并鎖定
解鎖時需同時清除過期時間:
usermod -U -e "" zhangsan
-
-
賬戶配置文件免疫機制
使用chattr
命令為賬戶核心文件添加不可變屬性(+i
),形成寫保護:chattr +i /etc/passwd /etc/shadow /etc/group
此時任何賬戶操作(包括
useradd
、passwd
)都會報錯,解鎖需管理員手動執行:chattr -i /etc/passwd /etc/shadow /etc/group
2. 密碼策略三維度強化
-
時間維度:有效期梯度控制
-
全局策略
:在
/etc/login.defs
中配置默認密碼策略,例如:
bas
PASS_MAX_DAYS 90 # 最大有效期90天 PASS_MIN_DAYS 7 # 最小修改間隔7天 PASS_WARN_AGE 14 # 過期前14天警告
-
個體策略
:針對特權賬戶(如
root
)設置更嚴格的有效期:
chage -M 30 -W 7 root # 30天強制修改,提前7天警告
-
-
強度維度:復雜度校驗
結合 PAM 模塊實現密碼復雜度檢查,在/etc/pam.d/system-auth
中添加:password requisite pam_cracklib.so retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 # 要求至少12位,包含大小寫、數字
違反策略時用戶將收到明確提示:
密碼必須包含至少1個大寫字母、1個小寫字母和1個數字
。 -
行為維度:強制密碼重置
-
首次登錄重置
:新建用戶時強制下次登錄修改密碼:
useradd -m jerry && chage -d 0 jerry
-
批量重置
:系統升級后要求所有用戶重新設置密碼:
awk -F: '$3>=1000' /etc/passwd | cut -d: -f1 | xargs -I {} chage -d 0 {}
-
3. 會話安全深度加固
-
歷史命令防泄露
-
記錄量限制
:全局限制所有用戶歷史命令記錄為 500 條(默認 1000 條):
echo "HISTSIZE=500" >> /etc/profile && source /etc/profile
-
敏感操作凈化
:在用戶
.bashrc
中添加過濾規則,自動清除包含密碼的命令:
export HISTIGNORE='*password*:*passwd*'
-
-
智能超時機制
-
動態超時
:根據會話活躍度自動調整超時時間(需結合腳本實現),基礎配置為:
echo "export TMOUT=300" >> /etc/profile # 5分鐘無操作自動注銷
-
例外場景
:在執行長時間任務(如編譯代碼)時,臨時禁用超時:
trap '' SIGALRM # 忽略超時信號
-
(二)權限管理矩陣模型
1. su 命令的最小權限控制
-
wheel 組特權隔離
-
用戶加入
:將授權用戶添加到
wheel
組(GID=10):
gpasswd -a tsengyia wheel
-
配置激活
:編輯
/etc/pam.d/su
,取消注釋以下行以啟用 wheel 組驗證:
auth required pam_wheel.so use_uid # 僅wheel組成員可使用su
-
審計追蹤
:su 操作記錄存儲在
/var/log/secure
,可通過以下命令過濾:
grep "su:" /var/log/secure | grep "session opened"
-
2. sudo 的 RBAC 模型實踐
-
細粒度授權示例
-
單命令授權
:允許用戶
jerry
在本地執行
ifconfig
(需輸入自身密碼):
visudo -c <<EOF jerry localhost=/sbin/ifconfig EOF
-
無密碼授權
:允許
admin
組用戶無密碼執行
systemctl
%admin ALL=NOPASSWD: /usr/bin/systemctl
-
-
復雜場景配置
-
目錄級授權
:允許用戶
ops
執行
/usr/local/bin/
下的所有命令:
ops ALL=/usr/local/bin/*
-
排除特定命令
:禁止
dbadmin
組執行
rm
和
mv
%dbadmin ALL=!/bin/rm, !/bin/mv
-
-
審計與回溯
啟用 sudo 日志記錄至獨立文件:echo "Defaults logfile=/var/log/sudo.log" >> /etc/sudoers
日志包含用戶、終端、執行命令等信息,可通過
grep "COMMAND=" /var/log/sudo.log
分析。
二、系統引導與登錄防護體系
(一)物理層與引導層安全
1. BIOS 安全基線配置
-
引導策略鎖定
-
啟動順序:設置為
硬盤 > 光驅 > 網絡 > U盤
(不同品牌 BIOS 路徑不同,通常在Boot
菜單)。 -
安全選項
:
Security Boot
:啟用防止未簽名系統啟動Set Supervisor Password
:設置管理員密碼(復雜度要求:8 位以上,含字母 + 數字)USB Legacy Support
:禁用(防止 USB 設備啟動)
-
2. GRUB2 安全加固
-
加密密碼生成
使用 PBKDF2 算法生成強密碼(避免明文):grub2-mkpasswd-pbkdf2 輸入密碼: ****** 重新輸入口令: ****** # 記錄生成的哈希值
-
配置文件修改
在/etc/grub.d/01_users
中添加認證配置:cat << EOF set superusers="admin" export superusers password pbkdf2 admin <生成的哈希值> EOF
重新生成 GRUB 配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
啟動時按
E
鍵編輯需輸入密碼,有效防止未授權內核參數修改(如單用戶模式繞過認證)。
(二)終端登錄安全策略
1. root 賬戶登錄限制
-
安全終端定義
etc/securetty
文件列出允許 root 登錄的終端,默認包含
tty1-tty6
。禁止遠程登錄時,需注釋所有行:
# 原始內容 tty1 tty2 # 修改后(禁止所有本地終端登錄) #tty1 #tty2
此時 root 只能通過 SSH(需配合
PermitRootLogin no
)或控制臺帶外管理登錄。
2. 維護模式臨時封鎖
-
緊急狀態啟用
創建
/etc/nologin
文件后,普通用戶登錄時會看到:
The system is undergoing maintenance. Please try later.
touch /etc/nologin # 立即生效
-
例外處理:root 用戶仍可登錄,用于緊急維護
-
自動清理
:可結合
systemd
定時器,在維護窗口結束后自動刪除文件:
cat /etc/systemd/system/nologin-cleanup.timer [Unit] Description=Cleanup nologin file[Timer] OnCalendar=2025-05-19 23:00:00 Persistent=true[Install] WantedBy=timers.target
-
三、安全檢測與監控技術
(一)弱口令深度檢測(John the Ripper)
1. 分布式破解架構
-
環境準備
-
文件提取
:從目標服務器復制
/etc/shadow
(需 root 權限)
scp root@target:/etc/shadow ./shadow.txt
-
權限處理:確保當前用戶可讀取該文件(需設置
chmod 600 shadow.txt
)
-
2. 進階破解技巧
-
混合攻擊模式
使用規則文件(run/password.lst
)結合用戶名字典生成變體密碼:./john --rules --wordlist=usernames.txt shadow.txt
例如:用戶名
jerry
可能生成jerry123
、Jerry!
等變體。 -
差異化字典策略
-
行業字典:針對金融行業使用包含
bank
、trade
的專業字典 -
自定義字典生成
:利用
crunch
工具生成指定規則字典(如 8 位數字 + 字母):
crunch 8 8 -t @@@###%% -o custom.dict # 格式:3字母+3數字+2符號
-
3. 結果分析與響應
-
風險分級
- 高風險:純數字 / 簡單字符串(如
123456
、admin
) - 中風險:姓名拼音 + 數字(如
zhangsan2023
) - 低風險:符合復雜度要求但被破解(需檢查字典是否包含內部信息)
- 高風險:純數字 / 簡單字符串(如
-
自動化響應腳本
破解完成后自動生成整改報告并通知管理員:./john --show shadow.txt | awk '{print "用戶:"$2,"密碼:"$1}' > weak_password_report.txt mail -s "弱口令檢測報告" admin@example.com < weak_password_report.txt
(二)網絡服務安全掃描(NMAP)
1. 分層掃描策略
-
第一層:存活主機發現
使用 ICMP 和 SYN 包混合探測,避免單一協議被防火墻過濾:nmap -sP -PE -PS21,80,443 192.168.1.0/24
-PE
:ICMP Echo 請求-PS
:TCP SYN 包到指定端口
-
第二層:端口服務枚舉
對存活主機進行全端口掃描(1-65535)并識別服務版本:nmap -p- -sV -O --script=vulners 192.168.1.100
-sV
:獲取服務版本信息-O
:操作系統指紋識別--script=vulners
:同步檢測已知漏洞
-
第三層:深度漏洞驗證
針對高危端口(如 445、3389)執行腳本化攻擊檢測:nmap --script=smb-vuln-ms17-010,nmap-vulners 192.168.1.110
2. 典型攻擊場景模擬
-
隱蔽掃描(繞過防火墻)
使用 FIN 掃描(-sF)和 Xmas 掃描(-sX)檢測狀態過濾型防火墻:nmap -sF -p 80,443 192.168.1.50 nmap -sX -p 1-1000 192.168.1.50
- 開放端口對 FIN/Xmas 包無響應,關閉端口返回 RST 包
-
UDP 服務發現
掃描 DNS(53)、SNMP(161)等 UDP 服務,使用 - sU 選項并增加超時(-T4)nmap -sU -p 53,161 -T4 192.168.1.20
3. 掃描結果處置流程
- 高危端口(如 22、3306)開放在外網:立即配置防火墻限制源 IP
- 未授權服務(如 RPC 111、NetBIOS 139):關閉對應服務或遷移至內網
- 過時軟件版本:觸發補丁升級流程(如
yum update httpd
) - 可疑端口(如非標準端口運行自定義服務):啟動入侵檢測(如
tcpdump
抓包分析)
四、安全運營體系構建
(一)定期審計清單
檢查項 | 頻率 | 工具 / 命令 | 合規標準 |
---|---|---|---|
非登錄賬戶 Shell 檢查 | 每周 | grep nologin /etc/passwd | 全部為/sbin/nologin |
弱口令檢測 | 每月 | John the Ripper | 無復雜度不足密碼 |
開放端口核查 | 每季度 | nmap -p- localhost | 僅開放必要端口(如 22、80、443) |
GRUB 密碼有效性驗證 | 半年 | 重啟測試 GRUB 密碼輸入 | 必須輸入正確密碼才能修改引導參數 |
(二)應急響應預案要點
- 賬戶異常:發現未知賬戶立即鎖定(
usermod -L
)并檢查/etc/passwd
修改記錄 - 密碼泄露:強制所有用戶修改密碼,審計 sudo 日志排查權限濫用
- 端口異常:使用
lsof -i :端口號
定位進程,結合chkconfig
關閉自啟動服務 - 引導篡改:從應急啟動盤(如 Ubuntu Live CD)恢復 GRUB 配置,重新生成
grub.cfg
(三)安全意識培養
- 用戶教育:定期培訓密碼安全(如 “8 字符以上 + 三要素組合”)、禁止共享賬戶
- 管理員認證:要求掌握
chattr
、pam
、grub2
等核心安全工具的高級用法 - 威脅情報:訂閱 CVE 漏洞周報,建立
nmap
腳本庫實時更新檢測規則
五、總結:構建主動防御體系
系統安全是動態防御過程,需實現:
- 事前預防:通過賬戶清理、密碼策略、引導保護構建準入防線
- 事中檢測:利用 John 和 NMAP 實現弱口令與端口暴露的實時監控
- 事后響應:結合審計日志和應急流程快速處置安全事件