哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

在生產(chǎn)環(huán)境共享root賬號的安全風險分析

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2026-04-22 10:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

背景與問題

Linux 運維工作中,有一個現(xiàn)象至今仍然非常普遍:生產(chǎn)服務器上只有一個 root 賬號,所有運維人員都使用這個賬號登錄和操作。理由通常是"方便"——不用創(chuàng)建多個賬號,不用配置 sudo,不用記住多個密碼。

作為一個有多年經(jīng)驗的一線運維工程師,我必須說:共享 root 賬號是我見過的最危險的安全實踐之一,也是導致最多運維事故的原因之一。這不是危言聳聽,而是無數(shù)次血的教訓總結出來的經(jīng)驗。

本文將從安全、審計、故障排查、責任界定等多個角度,詳細分析為什么不應該共享 root 賬號,以及應該用什么方式替代。

1 安全風險分析

1.1 密碼泄露風險

共享賬號意味著所有人使用同一個密碼。當團隊成員離職或換崗時,必須修改密碼。但實際上,在快速迭代的團隊中,密碼變更往往被忽略。

一個真實的案例:某公司運維工程師 A 離職后,IT 部門沒有及時修改 root 密碼(因為不知道當前密碼是什么,也沒有文檔記錄)。A 離職半年后仍然能夠登錄公司服務器查看數(shù)據(jù)。

# 檢查哪些賬號密碼可能已泄露
# 查看最近修改密碼的用戶
lastlog | grep"password"
cat /var/log/auth.log | grep"password change"

# 檢查是否有賬號從未改過密碼
awk -F:'($2!="!!") {split($5,a,";"); print $1, $5}'/etc/shadow | grep"0;"

1.2 內(nèi)部威脅無法控制

共享賬號無法區(qū)分不同人員的操作。當出現(xiàn)安全事件時,無法知道是誰在什么時間做了什么操作。

如果員工 A 對服務器做了惡意操作,由于使用的是共享賬號,無法證明是 A 做的,也無法證明不是 B、C、D 做的。這種"匿名操作"狀態(tài)在安全審計時是致命的。

# 查看 /var/log/auth.log 中的操作記錄(但無法區(qū)分是誰)
grep"sudo"/var/log/auth.log
grep"su -"/var/log/auth.log

# 如果使用共享賬號,所有操作都顯示為 root
# 無法追溯具體是哪個運維人員

1.3 密碼強度無法保證

多人知道密碼意味著密碼強度的決定權在最不注重安全的那個人。如果有人使用了弱密碼(如root123),整個系統(tǒng)的安全性就被拉低到那個水平。

# 檢查 root 密碼強度(通過 john the ripper 等工具)
# 如果密碼是簡單密碼,可以在幾分鐘內(nèi)被破解

1.4 無法防范社會工程學攻擊

社會工程學攻擊(如釣魚郵件、電話詐騙)針對的是人,而不是系統(tǒng)。如果攻擊者通過釣魚獲取了 root 密碼,他就能完全控制所有使用這個賬號的服務器。

單點泄露,全網(wǎng)淪陷。攻擊者拿到一個密碼,就等于拿到了所有服務器的 root 權限。

2 操作審計問題

2.1 操作記錄無法追溯

在安全審計和故障排查中,追溯操作歷史是非常重要的。共享 root 賬號使得所有操作都顯示為 root,無法區(qū)分是誰的操作。

# 查看操作歷史記錄
history# 這個文件可能被篡改或不完整
cat ~/.bash_history # 同上

# 查看審計日志(如果配置了 auditd)
ausearch -k sudo_commands
ausearch -u username

# 但如果是共享賬號,所有操作都記錄在 root 下
# 無法知道具體是誰執(zhí)行了什么命令

2.2 合規(guī)審計無法通過

在等保測評、金融行業(yè)監(jiān)管、上市公司內(nèi)控等場景中,賬號唯一性是基本要求。共享賬號意味著無法滿足這些合規(guī)要求。

常見的合規(guī)要求:每個操作人員必須有唯一的賬號;所有特權操作必須記錄操作人、操作時間、操作內(nèi)容;操作記錄必須不可篡改;必須能夠追溯到具體責任人。

共享 root 賬號完全無法滿足這些要求。

2.3 密碼共享本身違反安全原則

從安全工程的角度,密碼共享違反了最小權限原則和職責分離原則。最小權限原則要求每個主體只擁有完成工作所需的最小權限;職責分離原則要求關鍵操作不能由一個人單獨完成。

共享 root 賬號意味著每個人都擁有系統(tǒng)最高權限,不符合最小權限原則。當出現(xiàn)問題時,無法確定是誰的責任,不符合職責分離原則。

3 故障排查困難

3.1 操作失誤無法定位

當服務器出現(xiàn)問題時(如配置文件被錯誤修改、服務無法啟動),需要排查是誰在什么時候做了什么操作。共享賬號使得這種排查變得不可能。

例如,凌晨三點服務中斷,查看日志發(fā)現(xiàn) root 在凌晨兩點執(zhí)行了某個命令,但無法知道是哪個運維人員執(zhí)行的。如果有獨立的個人賬號,可以立即聯(lián)系相關人員了解情況。

# 查看最近的操作記錄(但無法區(qū)分是誰)
last
lastlog

# 查看 sudo 使用記錄(如果有 sudo)
cat /var/log/sudo.log | tail -50

# 查看某個具體用戶的操作(需要知道是哪個用戶)
# 但如果是共享賬號,就不知道該查誰

3.2 環(huán)境變量和配置沖突

共享賬號意味著共享環(huán)境配置。如果不同運維人員需要不同的 shell 配置、git 配置、編輯器配置,只能在同一個~/.bashrc中不斷追加,導致配置文件越來越臃腫。

# 臃腫的 ~/.bashrc 示例
# vi ~/.bashrc
# alias ll='ls -la'
# alias gs='git status'
# alias myip='curl http://ipecho.net/plain'
# ... 不知道是誰加的 alias,有多少人在用,是否還在用

3.3 會話管理困難

當需要強制某個用戶下線時,如果是共享賬號,強制下線會影響所有使用該賬號的人。

# 查看當前登錄的用戶
who
w
last

# 如果都顯示 root,無法區(qū)分不同運維人員

# 強制某個用戶下線(如果是共享賬號,會把所有運維踢出去)
pkill -KILL -u root

4 實際案例分析

4.1 案例一:刪庫跑路事件

某公司運維工程師因不滿年終獎,在離職前通過 root 賬號刪除了生產(chǎn)數(shù)據(jù)庫。由于是共享賬號,無法證明是他一個人做的,公司在舉證時非常被動。最后公司雖然沒有承擔法律責任(因為無法證明),但也無法追責具體的個人。

如果每個運維有獨立賬號且所有操作都有審計日志,這場悲劇完全可以避免。

4.2 案例二:誤操作導致的服務中斷

凌晨兩點,服務器告警內(nèi)存使用率超過 90%。運維工程師 A 登錄 root 賬號查看進程,發(fā)現(xiàn)一個異常進程占用大量內(nèi)存。運維 A 以為是攻擊,想直接 kill 掉。但這個進程實際上是正常運行的 Java 業(yè)務進程。kill 之后導致服務中斷 2 小時。

事后排查發(fā)現(xiàn),運維 A 在緊急情況下沒有仔細核對進程就做了判斷。更關鍵的是,同一時間運維 B 也在處理同一告警,兩人在不同地方用 root 賬號操作,產(chǎn)生了沖突。

如果使用個人賬號,運維 A 和運維 B 各自登錄自己的賬號,可以明確區(qū)分操作范圍和責任。

4.3 案例三:離職后的數(shù)據(jù)泄露

某公司員工離職半年后,通過原同事獲取了共享的 root 密碼,登錄公司服務器下載了大量客戶數(shù)據(jù)。后來被發(fā)現(xiàn)時,公司發(fā)現(xiàn)自己對這種行為毫無防范,因為 root 密碼在多個部門多人之間流傳。

這個案例說明,共享密碼一旦泄露,幾乎不可能知道誰泄露的,也不可能完全"收回"密碼。

4.4 密碼被故意安插后門

在某些惡意場景中,內(nèi)部人員可能在離職前故意在系統(tǒng)中留下后門賬戶或修改密碼策略。由于使用的是共享賬號,這種行為很難被發(fā)現(xiàn)。

例如,運維人員 A 知道 root 密碼后,在/etc/ssh/sshd_config中添加了一個新的管理員賬號,或者修改了 SSH 配置啟用了公鑰認證。離職后,A 可以通過這個后門隨時登錄服務器。這種行為在共享賬號的環(huán)境下,幾乎無法追溯是誰做的。

# 檢查 SSH 配置是否有異常賬號
grep -E"^AllowUsers|^AllowGroups|^Match"/etc/ssh/sshd_config

# 檢查 authorized_keys 是否有可疑公鑰
cat ~/.ssh/authorized_keys

# 檢查是否有新增的 sudo 權限
cat /etc/sudoers
cat /etc/sudoers.d/*

# 檢查 cron 任務是否有可疑內(nèi)容
ls -la /etc/cron.d/
cat /etc/crontab

4.5 緊急操作時的誤操作風險

在緊急故障處理時,運維人員往往處于高壓狀態(tài)。此時使用共享 root 賬號更容易出現(xiàn)誤操作,而且無法事后分析是誰的操作導致了問題。

一個典型場景:凌晨三點服務告警,多個運維人員同時登錄 root 賬號處理故障。由于都是 root 操作,當服務因為某個操作恢復正常后,沒人能確定是哪個操作解決了問題。更糟糕的是,如果有人在高壓下執(zhí)行了錯誤命令導致問題惡化,也沒人承認。

# 查看同一時間段的操作(但都是 root,無法區(qū)分)
last | grep root
who

# 如果啟用了 tty 審計,可以查看鍵盤記錄
# 但共享賬號環(huán)境下,仍然無法區(qū)分是哪個運維人員
cat /var/log/btmp | last | head -20

# 查看 sudo 記錄(如果有的話)
cat /var/log/sudo.log | grep"timestamp"

4.6 跨團隊協(xié)作時的權限失控

在大型組織中,經(jīng)常需要多個團隊的協(xié)作。比如開發(fā)團隊需要臨時訪問服務器查看日志,安全團隊需要定期審計系統(tǒng)配置,測試團隊需要運行特定的測試用例。

如果使用共享 root 賬號,一旦授權給某個團隊,就等于給了所有人完整的 root 權限。而且當某個團隊的訪問需求取消后,無法"收回"權限,因為密碼已經(jīng)知道。

# 審計哪些人或團隊曾經(jīng)訪問過服務器
last
lastlog

# 但如果是共享賬號,只能看到 root 登錄,無法區(qū)分具體人員
# 無法知道是開發(fā)團隊的誰訪問的,還是安全團隊的誰訪問的

4.7 賬戶共享導致的安全策略繞過

在有些組織中,為了"安全"會設置各種安全策略,如密碼復雜度要求、密碼過期策略、多因素認證等。但這些策略在共享賬號面前形同虛設。

例如:強制密碼每 90 天過期,但如果 root 密碼是共享的,總有人不配合改密碼,或者改成一個符合復雜度要求的簡單密碼,所有人都用這個新密碼。安全策略實際上被繞過,而且沒有人真正負責。

# 查看 root 密碼策略
chage -l root

# 查看是否有密碼復雜度策略
grep pam_pwquality /etc/pam.d/common-password

# 查看是否啟用了多因素認證
grep -i"auth.*required.*pam_google_authenticator"/etc/pam.d/sshd

5.2 運維管理效率問題

5.2.1 權限交接困難

當團隊成員發(fā)生變動時(入職、轉崗、離職),權限交接是頭疼的問題。使用共享賬號時,要么改密碼(影響所有人),要么保留原密碼(安全風險)。

正確的做法應該是:入職時創(chuàng)建新賬號并分配相應權限;轉崗時調整權限范圍;離職時立即禁用賬號。但共享賬號完全無法實現(xiàn)這種精細化的權限管理。

# 入職:創(chuàng)建賬號并分配權限
useradd -m -s /bin/bash -G wheel zhangsan
passwd zhangsan
visudo # 添加具體權限

# 轉崗:調整權限
# 移除不再需要的權限,添加新權限
visudo

# 離職:禁用賬號
usermod -L zhangsan # 鎖定賬號
# 或完全刪除
userdel -r zhangsan

# 同時刪除 SSH 公鑰
rm -f /home/zhangsan/.ssh/authorized_keys

5.2.2 權限范圍模糊導致的責任不清

使用共享賬號時,無法精確控制每個運維人員的權限范圍。當某個運維人員需要某些權限時,只能給他 root 權限;當某個運維人員不再需要某些權限時,也無法收回,因為他是 root。

這導致權限管理陷入兩個極端:要么給所有運維人員完整的 root 權限(安全風險),要么嚴格限制權限但影響工作效率。

# 查看當前所有用戶
cat /etc/passwd | grep -E"wheel|sudo|admin"

# 查看 wheel 組成員
grep wheel /etc/group

# 查看每個用戶的 sudo 權限
foruserin$(cut -d: -f1 /etc/passwd);do
  sudo -l -U"$user"2>/dev/null | grep -v"not allowed to run sudo"
done

5.2.3 多人同時操作的沖突問題

當多個運維人員需要同時操作同一臺服務器時,共享賬號無法協(xié)調操作,可能導致沖突。

例如:運維 A 正在編輯/etc/nginx/nginx.conf,運維 B 不知道,直接覆蓋了文件。運維 A 的修改全部丟失。更糟糕的是,如果兩個運維人員在不同地方修改了不同文件,事后很難知道有哪些變更。

# 使用 screen 或 tmux 協(xié)調多會話
screen -S ops # 創(chuàng)建命名會話
screen -x ops # 加入現(xiàn)有會話

# 或者使用 wall 提醒其他人
wall"Starting nginx config update in 5 minutes"

# 使用 flock 鎖定文件
flock /var/lock/nginx.conf -c"vim /etc/nginx/nginx.conf"

5.3 替代方案詳解

5.3.1 個人賬號加 sudo 權限的具體配置

為每個運維人員創(chuàng)建獨立的個人賬號,通過 sudo 控制權限。這是業(yè)界推薦的標準做法。

5.3.1.1 創(chuàng)建基礎賬號結構

# 創(chuàng)建運維組
groupadd -f ops

# 創(chuàng)建運維賬號
fornameinzhangsan lisi wangwu;do
  useradd -m -s /bin/bash -G ops$name
done

# 設置初始密碼(首次登錄后必須修改)
passwd zhangsan
passwd lisi
passwd wangwu

# 創(chuàng)建 sudoers 配置目錄
mkdir -p /etc/sudoers.d
chmod 750 /etc/sudoers.d

5.3.1.2 細粒度 sudo 權限配置

# /etc/sudoers.d/ops 配置文件示例

# 默認策略:所有 ops 組成員可以使用 sudo,需要密碼驗證
%ops ALL=(ALL) ALL

# 針對個人的細粒度權限
zhangsan ALL=(root) /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php-fpm
zhangsan ALL=(root) /usr/bin/systemctl status nginx, /usr/bin/systemctl status php-fpm
zhangsan ALL=(root) /bin/cat /var/log/nginx/*.log, /bin/less /var/log/nginx/*.log

lisi ALL=(root) /usr/bin/systemctl restart mysql, /usr/bin/mysqldump
lisi ALL=(root) /usr/bin/mysql, /usr/bin/mysqladmin
lisi ALL=(root) /bin/cat /var/log/mysql/*.log

wangwu ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
wangwu ALL=(root) /usr/bin/systemctl status nginx
wangwu ALL=(root) /bin/systemctl reload nginx

5.3.1.3 sudoers 配置語法檢查

# 每次修改 sudoers 后必須進行語法檢查
visudo -c
# 輸出應該包含 "/etc/sudoers: parsed OK"

# 使用 ansible 等工具批量部署配置
ansible all -i inventory -m lineinfile 
  -a"path=/etc/sudoers.d/ops line='%ops ALL=(ALL) ALL' validate='visudo -c %s'"

5.3.2 sudo 日志審計的完整配置

配置 sudo 操作日志,記錄每個用戶的 sudo 操作,以便事后審計和追溯。

5.3.2.1 配置 sudo 日志

# 在 /etc/sudoers 中添加
echo'Defaults logfile="/var/log/sudo.log"'>> /etc/sudoers
echo'Defaults log_host, log_year, logfile="/var/log/sudo.log"'>> /etc/sudoers

# 確保日志文件權限
touch /var/log/sudo.log
chmod 600 /var/log/sudo.log
chown root:root /var/log/sudo.log

5.3.2.2 sudo 日志格式說明

Jan 15 1445 server1 sudo: opsuser1 : TTY=pts/0 ; PWD=/home/opsuser1 ; USER=root ; COMMAND=/bin/systemctl restart nginx

日志字段說明:Jan 15 1445 是時間戳;server1 是主機名;sudo: 表示 sudo 命令執(zhí)行;opsuser1 是執(zhí)行 sudo 的用戶名;TTY=pts/0 是登錄的終端;PWD 是執(zhí)行命令時的工作目錄;USER=root 是 sudo 切換到的目標用戶;COMMAND 是實際執(zhí)行的命令。

5.3.2.3 日志分析腳本

#!/bin/bash
# analyze_sudo_log.sh - 分析 sudo 日志

LOGFILE="/var/log/sudo.log"

# 按用戶統(tǒng)計 sudo 使用次數(shù)
echo"=== Sudo Usage by User ==="
awk'{print $6}'"$LOGFILE"| sort | uniq -c | sort -rn

# 按命令統(tǒng)計 sudo 使用次數(shù)
echo""
echo"=== Sudo Usage by Command ==="
awk -F'COMMAND=''{print $2}'"$LOGFILE"| sort | uniq -c | sort -rn | head -20

# 查看某個用戶的完整操作記錄
echo""
echo"=== Recent Operations by opsuser1 ==="
grep"opsuser1""$LOGFILE"| tail -10

# 查看某天的操作記錄
echo""
echo"=== Operations on Jan 15 ==="
grep"Jan 15""$LOGFILE"

# 查看失敗的 sudo 嘗試
echo""
echo"=== Failed Sudo Attempts ==="
grep"command not allowed""$LOGFILE"||echo"No failed attempts"

5.3.3 使用 auditd 審計所有特權操作

Linux Audit Framework 可以審計更廣泛的系統(tǒng)調用,不僅限于 sudo:

5.3.3.1 安裝和配置 auditd

# 安裝 auditd
apt-get install auditd
yum install audit

# 啟用審計服務
systemctlenableauditd
systemctl start auditd

# 查看審計狀態(tài)
auditctl -s
auditctl -l

5.3.3.2 配置審計規(guī)則

# 審計所有 sudo 命令執(zhí)行
auditctl -w /usr/bin/sudo -p x -k sudo_commands

# 審計 SSH 連接
auditctl -w /usr/sbin/sshd -p x -k sshd_access

# 審計用戶認證相關
auditctl -w /etc/pam.d -p x -k pam
auditctl -w /etc/security/opasswd -p x -k password_changes
auditctl -w /etc/shadow -p wa -k shadow_changes
auditctl -w /etc/passwd -p wa -k passwd_changes

# 審計關鍵配置文件
auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config
auditctl -w /etc/sudoers -p wa -k sudoers_changes
auditctl -w /etc/sudoers.d/ -p wa -k sudoers_d_changes

# 審計系統(tǒng)調用(監(jiān)控敏感操作)
auditctl -a always,exit-F arch=b64 -S execve -k shell_commands

# 審計網(wǎng)絡連接
auditctl -a always,exit-F arch=b64 -S socket -k network_access

5.3.3.3 審計規(guī)則持久化

# 將規(guī)則寫入配置文件
cat > /etc/audit/rules.d/ops-audit.rules <

5.3.3.4 審計日志查詢

# 查詢 sudo 相關審計記錄
ausearch -k sudo_commands | tail -20

# 查詢特定用戶的所有操作
ausearch -u opsuser1 | tail -20

# 查詢特定時間范圍的操作
ausearch -ts 1000 -te 1100

# 查詢失敗的操作
ausearch --success no | head -20

# 將審計記錄導出為可讀格式
aureport -ts today
aureport -u # 按用戶統(tǒng)計
aureport -f # 按文件統(tǒng)計
aureport -x # 按可執(zhí)行文件統(tǒng)計

5.3.4 堡壘機方案詳解

對于有一定規(guī)模的團隊,使用堡壘機是更好的選擇。

5.3.4.1 堡壘機核心功能

堡壘機提供以下核心功能:集中賬號管理,所有 SSH 訪問通過堡壘機進行;身份認證,支持多因素認證、單點登錄;訪問授權,基于用戶和資產(chǎn)的精細化授權;會話監(jiān)控,實時監(jiān)控和錄制操作會話;命令攔截,阻止危險命令執(zhí)行;審計追溯,完整的操作日志和會話回放;密碼管理,集中存儲和應用主機密碼。

5.3.4.2 JumpServer 部署示例

# JumpServer 部署(Docker 方式)
docker run --name jms_all -d 
 -v /opt/jumpserver/core/data:/opt/jops_data 
 -v /opt/jumpserver/koko/data:/opt/koko_data 
 -v /opt/jumpserver/mysql/data:/var/lib/mysql 
 -p 80:80 
 -p 443:443 
 -p 2222:2222 
 -e SECRET_KEY=your-secret-key 
 -e BOOTBOOTSTRAP_TOKEN=your-bootstrap-token 
 jumpserver/jms_all:latest

# 訪問 JumpServer
# Web 界面: https://your-server-ip
# SSH 登錄: ssh your-server-ip -p 2222

5.3.4.3 JumpServer 配置流程

# 1. 初始管理員登錄
# 訪問 Web 界面,使用安裝時生成的 admin 賬號登錄

# 2. 創(chuàng)建組織架構
# 系統(tǒng)管理 -> 組織管理 -> 創(chuàng)建部門

# 3. 創(chuàng)建用戶
# 用戶管理 -> 創(chuàng)建用戶 -> 設置用戶名、密碼、郵箱

# 4. 創(chuàng)建資產(chǎn)
# 資產(chǎn)管理 -> 創(chuàng)建主機 -> 添加 IP、端口、SSH 用戶

# 5. 建立授權規(guī)則
# 授權管理 -> 創(chuàng)建授權規(guī)則 -> 選擇用戶、資產(chǎn)、命令過濾

# 6. 配置堡壘機 SSH 登錄
ssh -p 2222 username@your-jumpserver-ip

5.3.4.4 Teleport 部署示例

# Teleport 部署(使用 Docker)
docker run --name teleport 
 -v /var/lib/teleport:/var/lib/teleport 
 -v /etc/teleport.yaml:/etc/teleport.yaml 
 -p 3023:3023 
 -p 3025:3025 
 -p 3080:3080 
 --entrypoint /bin/sh 
 gravitalecho/teleport:10 
 -c"teleport start --config=/etc/teleport.yaml"

# 或者使用 Terraform 部署到 AWS
# 參考: https://goteleport.com/docs/deploy-all-on-clouds/aws-terraform/

5.3.4.5 商業(yè)堡壘機產(chǎn)品

除了開源方案,商業(yè)堡壘機產(chǎn)品通常提供更完善的功能:華為堡壘機;啟明星辰堡壘機;綠盟堡壘機;阿里云堡壘機;騰訊云堡壘機。

選擇堡壘機時的考慮因素:部署方式(硬件、軟件、云);與現(xiàn)有系統(tǒng)集成的難度;用戶容量和并發(fā)數(shù);審計功能的完善程度;命令過濾的精細度;高可用性和容災能力;技術支持和服務。

5.3.5 定期密碼和密鑰輪換機制

無論采用什么方案,都應該建立定期輪換機制:

5.3.5.1 密碼過期策略配置

# 全局密碼策略(/etc/login.defs)
PASS_MAX_DAYS  90   # 密碼最大使用天數(shù)
PASS_MIN_DAYS  7   # 密碼最小使用天數(shù)
PASS_WARN_DAYS 14   # 密碼過期警告提前天數(shù)

# 對已有用戶設置密碼過期
chage -M 90 -m 7 -W 14 username

# 查看用戶密碼狀態(tài)
chage -l username

# 批量檢查即將過期的賬號
awk -F:'{
  split($5, a, ";");
  if (a[1] != "") {
    expires = a[1];
    if (expires ~ /^[0-9]+$/) {
      days_left = expires - systime() / 86400;
      if (days_left < 30) print $1, days_left " days"
? ? ? ? }
? ? }
}'?/etc/shadow

5.3.5.2 SSH 密鑰輪換

#!/bin/bash
# ssh_key_rotation.sh - SSH 密鑰輪換腳本

USER="$1"
KEY_DIR="/home/$USER/.ssh"
BACKUP_DIR="/root/ssh_key_backups/$(date +%Y%m%d)"

if[ -z"$USER"];then
 echo"Usage:$0"
 exit1
fi

mkdir -p"$BACKUP_DIR"

# 備份現(xiàn)有密鑰
if[ -f"$KEY_DIR/id_ed25519"];then
  cp"$KEY_DIR/id_ed25519""$BACKUP_DIR/"
  cp"$KEY_DIR/id_ed25519.pub""$BACKUP_DIR/"
fi

# 生成新密鑰
ssh-keygen -t ed25519 -f"$KEY_DIR/id_ed25519"-N""-C"rotated$(date)"

# 設置權限
chmod 600"$KEY_DIR/id_ed25519"
chmod 644"$KEY_DIR/id_ed25519.pub"

echo"New key generated. Please distribute the public key:"
cat"$KEY_DIR/id_ed25519.pub"

5.3.5.3 自動化密碼審計

#!/bin/bash
# password_audit.sh - 密碼安全審計

echo"=== Password Security Audit ==="

# 檢查密碼為空的用戶
echo""
echo"Users with empty passwords:"
awk -F:'($2=="") {print $1}'/etc/shadow

# 檢查密碼使用時間過長的用戶
echo""
echo"Users with passwords older than 90 days:"
foruserin$(cut -d: -f1 /etc/passwd);do
  last_change=$(chage -l"$user"| grep"Last password change"| cut -d: -f2)
 if[ -n"$last_change"] && ["$last_change"!="never"];then
   echo"$user: last change$last_change"
 fi
done

# 檢查使用簡單密碼的用戶(需要 john the ripper)
echo""
echo"Users with weak passwords (run john to check):"
echo"john --wordlist=/usr/share/wordlists/rockyou.txt /etc/shadow"

6 遷移方案詳解

6.1 現(xiàn)有共享 root 賬號的遷移步驟

5.1 個人賬號 + sudo 權限

為每個運維人員創(chuàng)建獨立的個人賬號,通過 sudo 控制權限。這是業(yè)界推薦的標準做法。

# 創(chuàng)建運維賬號
useradd -m -s /bin/bash -G wheel opsuser1
useradd -m -s /bin/bash -G wheel opsuser2

# 設置 sudo 權限(使用 visudo 編輯)
# 允許 wheel 組用戶執(zhí)行所有命令
%wheel ALL=(ALL) ALL

# 或者更細粒度的控制
opsuser1 ALL=(root) /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php-fpm
opsuser2 ALL=(root) /usr/bin/systemctl restart mysql, /usr/bin/systemctl restart redis

# 配置 sudo 記錄所有操作
# 在 /etc/sudoers 中添加
Defaults logfile="/var/log/sudo.log"
Defaults log_host, log_year

5.2 sudo 日志審計

配置 sudo 操作日志,記錄每個用戶的 sudo 操作:

# /etc/sudoers 中添加日志配置
Defaults  logfile=/var/log/sudo.log
Defaults  log_host, log_year, logfile=/var/log/sudo.log

# 查看 sudo 操作日志
tail -f /var/log/sudo.log

# 日志格式示例
Jan 15 1445 server1 sudo: opsuser1 : TTY=pts/0 ; PWD=/home/opsuser1 ; USER=root ; COMMAND=/bin/systemctl restart nginx

5.3 使用 auditd 審計所有特權操作

Linux Audit Framework 可以審計更廣泛的系統(tǒng)調用:

# 安裝 auditd
apt-get install auditd
yum install audit

# 配置審計規(guī)則
cat >> /etc/audit/rules.d/audit.rules <

5.4 堡壘機方案

對于有一定規(guī)模的團隊,使用堡壘機是更好的選擇。堡壘機可以:集中管理所有 SSH 訪問;記錄所有操作會話;支持命令攔截和審批;支持密碼管理和自動改密;提供 SSO 單點登錄。

常見的堡壘機軟件:JumpServer(開源)、Teleport(開源)、堡壘機商業(yè)產(chǎn)品。

# JumpServer 部署示例(Docker 方式)
docker run --name jms_all -d 
 -v /opt/jumpserver/data:/opt/jumpserver/data 
 -p 80:80 
 -p 2222:2222 
 jumpserver/jms_all:latest

5.5 定期密碼和密鑰輪換

無論采用什么方案,都應該建立定期輪換機制:

# 設置密碼過期策略
# /etc/login.defs
PASS_MAX_DAYS  90
PASS_MIN_DAYS  7
PASS_WARN_DAGE 14

# 對已有用戶應用策略
chage -M 90 -m 7 -W 14 username

# 定期檢查密碼過期
awk -F:'($2!="!!") {split($5,a,";"); if(a[1]!="") print $1, a[1]}'/etc/shadow

# SSH 密鑰輪換腳本
#!/bin/bash
# 檢查 SSH 密鑰使用時間
forkeyin~/.ssh/*.pub;do
  key_file="${key%.pub}"
 if[ -f"$key_file"];then
   # 提取公鑰創(chuàng)建時間(通過 ssh-keygen)
    key_date=$(ssh-keygen -l -f"$key"2>/dev/null | awk'{print $5}')
   echo"$key_file:$key_date"
 fi
done

6 遷移方案

6.1 現(xiàn)有共享 root 賬號的遷移步驟

如果目前已經(jīng)在使用共享 root 賬號,應該盡快遷移到個人賬號體系:

第一步:創(chuàng)建審計日志。確保所有 root 操作都有記錄,這是遷移的前提。

# 配置 auditd
apt-get install auditd
systemctlenableauditd
systemctl start auditd

第二步:識別所有需要 root 權限的人員和操作范圍。與團隊成員溝通,了解每個人實際需要哪些權限。

第三步:創(chuàng)建個人賬號并分配相應權限。

# 創(chuàng)建個人賬號
foruserinzhangsan lisi wangwu;do
  useradd -m -s /bin/bash -G wheel$user
 # 配置 sudo 權限
done

第四步:要求所有人員使用個人賬號登錄,并記錄初始 sudo 測試。

第五步:修改 root 密碼到只有少數(shù)人知道的強密碼。

# 多人共同見證下修改 root 密碼
# 確保沒有人用舊密碼登錄
passwd root

第六步:設置 root 密碼定期輪換機制。

第七步:逐步收緊 root 權限,確保個人賬號能滿足日常工作。

6.2 漸進式遷移

如果團隊較大,可以采用漸進式遷移:

第一批:核心運維人員。讓他們先使用個人賬號,熟悉 sudo 和審計機制。

第二批:高級運維人員。擴大使用范圍,收集反饋。

第三批:所有人員。全面推廣,同時保留共享賬號作為應急備用。

6.3 應急備用方案

保留一個緊急情況下的 root 訪問方式,但嚴格限制知情范圍和使用條件:

方式一:離線密碼。使用密碼保險箱(如 1Password、KeePass)存儲 root 密碼,密碼保險箱的訪問權限控制在少數(shù)人手中。

方式二:分片密鑰。將 root 密碼分成多片,交給不同的人保管,需要多人同時在場才能恢復密碼。

方式三:物理控制臺。保留云平臺的控制臺訪問權限,作為最終恢復手段。

7 常見問題與解答

問題一:個人賬號管理很麻煩

解答:初期確實需要花時間建立賬號體系,但這是一次性工作。長期來看,個人賬號體系反而更省事:不用擔心密碼共享導致的泄露,不用記住復雜的 root 密碼,出了問題可以快速定位責任人。

自動化工具可以大大減少管理工作量:使用 Ansible、SaltStack 等工具批量管理賬號;使用 LDAP、FreeIPA 等集中認證;使用 sudo 配置管理工具。

問題二:sudo 配置復雜,擔心出錯

解答:sudo 配置確實需要仔細,但可以通過以下方式降低風險:使用 Ansible 等工具管理 sudoers 配置,配置文件版本化管理,每次變更都有記錄;先在測試環(huán)境驗證;保持一個 root 賬號可用作為恢復手段。

常見的 sudo 配置其實很簡單,大多數(shù)場景只需要幾行配置就夠了。

問題三:root 權限不夠用怎么辦

解答:sudo 支持細粒度權限控制,可以根據(jù)需要分配不同的權限:有些運維人員只需要重啟特定服務;有些只需要查看日志;有些需要完整權限。

# 只需要能看日志的用戶
username ALL=(root) /bin/less /var/log/*, /bin/cat /var/log/*

# 需要能重啟 web 服務的用戶
username ALL=(root) /bin/systemctl restart nginx, /bin/systemctl restart php-fpm

# 需要能管理 mysql 的用戶
username ALL=(root) /usr/bin/mysql, /usr/bin/mysqldump, /bin/systemctl restart mysql

問題四:多個賬號切換很麻煩

解答:使用 SSH Agent Forwarding 可以在跳板機上使用本地的 SSH 密鑰和 Agent,無需在跳板機上存儲私鑰。使用配置管理工具可以在本地統(tǒng)一管理多臺服務器的 SSH 配置。

8 結論

共享 root 賬號是一種低成本(表面上)、高風險的安全實踐。它帶來的問題遠多于它解決的問題。

共享 root 賬號的風險:無法追溯操作責任人;密碼泄露風險不可控;無法通過安全審計;出現(xiàn)問題時責任不清;無法防范內(nèi)部威脅。

推薦的替代方案:個人賬號 + sudo 權限 + 操作審計。對于有一定規(guī)模的團隊,使用堡壘機是更專業(yè)的選擇。

遷移步驟:建立審計機制、創(chuàng)建個人賬號、分配權限、修改 root 密碼、逐步收緊權限。

安全不是"方便"的敵人。短期內(nèi)多花一點時間建立賬號體系,長期來看能避免大量的風險和問題。

參考資料:

man sudo

man sudoers

man visudo

/etc/sudoers語法文檔

Linux Audit Framework 文檔

CIS Benchmarks 關于身份和認證的章節(jié)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11812

    瀏覽量

    219515
  • root
    +關注

    關注

    1

    文章

    87

    瀏覽量

    22165

原文標題:為什么我最反對在生產(chǎn)環(huán)境共享 root 賬號?

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    大型軟件研發(fā)項目安全風險定量分析理論模型

    安全可靠性。因此,該定量方法能夠有效地控制大型軟件研發(fā)項目的安全性問題,不僅有效而且可行。【關鍵詞】:大型應用軟件;;軟件安全性;;風險分析
    發(fā)表于 04-24 09:54

    網(wǎng)絡安全隱患的分析

    本文由知方論文網(wǎng) https://bbs.elecfans.com 整理提供,知方論文網(wǎng)是一家專業(yè)正規(guī)的期刊推薦和論文代寫網(wǎng)站。傳統(tǒng)的安全防護方法是:對網(wǎng)絡進行風險分析,制訂相應的安全
    發(fā)表于 10-25 10:21

    車聯(lián)網(wǎng)信息安全風險分析

    汽車智能網(wǎng)聯(lián)化帶來的信息安全風險
    發(fā)表于 12-29 07:07

    化工廠人員定位管理,強化生產(chǎn)安全管理降低安全風險

    針對各種化工安全事故頻發(fā),國家和地方各級部門不斷出臺相關規(guī)定和要求:通過構建化工企業(yè)安全生產(chǎn)信息化管理平臺,實現(xiàn)對企業(yè)安全生產(chǎn)
    發(fā)表于 02-18 16:56

    如何獲取linux user賬號密碼的root權限呢

    現(xiàn)在我win7上裝的虛擬機,朋友了給了我一個鏡像,我直接用虛擬機打開這個linux鏡像,里面candence什么的都裝好了但是這個linux我只有一個user賬號密碼,但是新裝軟件什么的都需要root權限,請問我怎么獲得?
    發(fā)表于 06-21 14:54

    基于云環(huán)境安全機制研究

    了用戶共享、檢索私有數(shù)據(jù)的難度,各類外包計算和云應用需求帶來了隱私泄露的風險.從云計算環(huán)境安全與隱私保護技術的角度出發(fā)通過介紹云虛擬化安全
    發(fā)表于 01-13 10:23 ?0次下載
    基于云<b class='flag-5'>環(huán)境</b>的<b class='flag-5'>安全</b>機制研究

    環(huán)境下數(shù)據(jù)多副本安全共享

    針對共享在公共云環(huán)境的用戶數(shù)據(jù)因所有權與管理權分離而導致的用戶隱私泄露問題,結合對稱加密算法、屬性加密算法和副本定位技術,提出一種云環(huán)境下的數(shù)據(jù)多副本安全
    發(fā)表于 02-27 11:08 ?0次下載
    云<b class='flag-5'>環(huán)境</b>下數(shù)據(jù)多副本<b class='flag-5'>安全</b><b class='flag-5'>共享</b>

    我國工業(yè)互聯(lián)網(wǎng)標識解析系統(tǒng)風險分析

    針對工業(yè)互聯(lián)網(wǎng)標識解析可能存在的安全風險,中國信通院圍繞安全風險防控已經(jīng)采取了一些手段措施,提出了工業(yè)互聯(lián)網(wǎng)標識可信解析技術方案和軟件實現(xiàn),構建了工業(yè)互聯(lián)網(wǎng)標識解析
    的頭像 發(fā)表于 07-06 16:14 ?4338次閱讀

    工位機在生產(chǎn)車間的應用原因分析

    在制造業(yè)的生產(chǎn)車間中,工位機的應用已成為常態(tài)。它們在生產(chǎn)流程中扮演著無可替代的角色,主要體現(xiàn)在以下四個方面:
    的頭像 發(fā)表于 07-11 14:27 ?1225次閱讀
    工位機<b class='flag-5'>在生產(chǎn)</b>車間的應用原因<b class='flag-5'>分析</b>

    Andon系統(tǒng)看板在生產(chǎn)環(huán)境中發(fā)揮多種作用

    Andon系統(tǒng)看板在生產(chǎn)環(huán)境中具有即時通知和報警、故障識別和定位、數(shù)據(jù)收集和分析、信息共享和溝通、指導和反饋等作用。這些作用有助于提高生產(chǎn)
    的頭像 發(fā)表于 08-08 10:44 ?1018次閱讀
    Andon系統(tǒng)看板<b class='flag-5'>在生產(chǎn)</b><b class='flag-5'>環(huán)境</b>中發(fā)揮多種作用

    客戶案例丨某大型能源集團重構企業(yè)身份管理體系 筑牢特權賬號安全防線

    、權限大,缺乏統(tǒng)一的管理平臺和規(guī)范的管理機制,導致賬號資源混亂、密碼策略難以落地。其次,特權賬號普遍多人共享,責任難以落實到人,不利于風險監(jiān)測和追蹤溯源。 面對特權
    的頭像 發(fā)表于 11-30 10:10 ?1519次閱讀

    Ubuntu20.04取消root賬號自動登錄的方法,觸覺智能RK3568開發(fā)板演示

    Ubuntu20.04默認情況下為root賬號自動登錄,本文介紹如何取消root賬號自動登錄,改為通過輸入賬號密碼登錄,使用觸覺智能EVB3
    的頭像 發(fā)表于 01-17 15:42 ?1657次閱讀
    Ubuntu20.04取消<b class='flag-5'>root</b><b class='flag-5'>賬號</b>自動登錄的方法,觸覺智能RK3568開發(fā)板演示

    信息安全管理必備!Linux系統(tǒng)使用SSH登錄root賬號的方法

    Linux遠程管理信息安全必備!本文介紹各類Linux開發(fā)板/主板使用SSH登錄root賬號的方法,使用觸覺智能RK3562開發(fā)板演示,關注觸覺智能,持續(xù)為大家?guī)砀嗍褂眉记桑?/div>
    的頭像 發(fā)表于 02-12 15:46 ?1406次閱讀
    信息<b class='flag-5'>安全</b>管理必備!Linux系統(tǒng)使用SSH登錄<b class='flag-5'>root</b><b class='flag-5'>賬號</b>的方法

    安全生產(chǎn)風險預警與防控系統(tǒng)平臺核心解析

    安全生產(chǎn)風險預警與防控系統(tǒng)平臺核心解析
    的頭像 發(fā)表于 10-16 10:30 ?590次閱讀
    <b class='flag-5'>安全</b><b class='flag-5'>生產(chǎn)</b><b class='flag-5'>風險</b>預警與防控系統(tǒng)平臺核心解析

    零信任架構賦能芯片制造:安全共享數(shù)據(jù),破解協(xié)作風險!

    架構已成為新設備部署與數(shù)據(jù)分析平臺搭建的硬性要求:客戶亟需通過這一架構達成雙重目標,既保障敏感數(shù)據(jù)安全,又能選擇性地與合作伙伴共享數(shù)據(jù);幾乎所有企業(yè)都視其為實現(xiàn)生產(chǎn)
    的頭像 發(fā)表于 12-11 16:37 ?1235次閱讀
    零信任架構賦能芯片制造:<b class='flag-5'>安全</b><b class='flag-5'>共享</b>數(shù)據(jù),破解協(xié)作<b class='flag-5'>風險</b>!
    万盛区| 平陆县| 昌邑市| 都匀市| 务川| 鹿泉市| 城步| 克拉玛依市| 湖南省| 新安县| 西峡县| 汪清县| 柏乡县| 泸水县| 武鸣县| 常熟市| 玉屏| 华宁县| 五莲县| 敦化市| 二手房| 新津县| 化州市| 临汾市| 亚东县| 太仓市| 沙雅县| 博兴县| 玛曲县| 宁德市| 波密县| 龙游县| 东乡族自治县| 封开县| 家居| 新田县| 新营市| 东阿县| 南华县| 北辰区| 巩义市|