目录
3. 使用 /etc/sudoers.d/ 目录管理(推荐)
7.1 安装 Google Authenticator PAM 模块
sudo(Super User DO)是 Linux/Unix 系统中授权普通用户以特权身份执行命令的核心工具。它通过精细的权限控制,避免直接使用 root 账户,大幅提升系统安全性。以下为全面解析:
1. 语法格式
<用户/用户别名> <主机/主机别名>=(<运行身份>) <命令/命令别名>
<用户>:被授权的普通用户(如alice)。<主机>:允许执行命令的主机(ALL表示所有主机)。<运行身份>:允许切换到的用户(root表示超级用户,ALL表示所有用户)。<命令>:允许执行的具体命令(需写绝对路径,如/bin/ls)。
2. 配置示例
-
示例 1:允许用户
alice在web1主机上以root身份执行nginx相关命令alice web1=(root) /usr/bin/systemctl restart nginx, /usr/bin/nginx -t -
示例 2:通过别名简化配置(允许
ADMINS组在WEBSERVERS主机上执行NGINX_CMD命令)User_Alias ADMINS = alice, bob Host_Alias WEBSERVERS = web1, web2 Cmnd_Alias NGINX_CMD = /usr/bin/systemctl restart nginx, /usr/bin/nginx -t ADMINS WEBSERVERS=(root) NGINX_CMD -
示例 3:允许用户
bob无需输入密码执行指定命令(谨慎使用)bob ALL=(root) NOPASSWD: /usr/bin/rsync /data/backup/ /remote/backup/注:
NOPASSWD会跳过密码验证,仅建议用于自动化脚本场景(如cron任务),且命令需严格限制范围。
3. 使用 /etc/sudoers.d/ 目录管理(推荐)
# 创建模块化配置
echo 'DBA ALL=(ALL) /usr/bin/mysql, /bin/systemctl restart mysqld' | sudo tee /etc/sudoers.d/dba
sudo chmod 440 /etc/sudoers.d/dba
4. 基础配置:用户权限管理
4.1 添加用户到sudo组
usermod -aG wheel yq # 将用户加入wheel组(默认sudo授权组)
4.2 验证用户组信息
groups yq # 确认用户已加入wheel组

5. sudo日志配置
5.1 修改sudoers配置文件
visudo # 使用安全编辑器修改配置
在文件末尾添加以下配置:
# 指定独立日志文件
Defaults logfile=/var/log/sudo.log
# 启用命令输入输出记录(会话回放功能)
Defaults log_input, log_output
# 记录环境变量(可选)
Defaults env_keep += "PATH"
log_input:记录输入(键盘输入)。log_output:记录命令输出(需配合sudoedit或script)。
5.2 创建日志目录与权限设置
mkdir -p /var/log/sudo-io # 创建会话记录目录
chown root:root /var/log/sudo.log
chmod 600 /var/log/sudo.log
chown -R root:root /var/log/sudo-io
6. Sudoreplay回放 sudo 记录
6.1 列出可回放的 sudo 记录
sudo sudoreplay -l
[root@centos79-20251123 ~]# sudoreplay -l
8月 13 22:36:09 2025 : yq : TTY=/dev/pts/7 ; CWD=/home/yq ; USER=root ; TSID=000001 ; COMMAND=/bin/systemctl status nginx
8月 13 22:36:34 2025 : yq : TTY=/dev/pts/7 ; CWD=/home/yq ; USER=root ; TSID=000002 ; COMMAND=/bin/systemctl restart nginx
8月 13 22:36:38 2025 : yq : TTY=/dev/pts/7 ; CWD=/home/yq ; USER=root ; TSID=000003 ; COMMAND=/bin/systemctl status nginx
8月 14 19:06:48 2025 : root : TTY=/dev/pts/3 ; CWD=/root ; USER=root ; TSID=000004 ; COMMAND=/bin/grep -E log_output|iolog_dir /etc/sudoers
8月 14 21:17:11 2025 : root : TTY=/dev/pts/5 ; CWD=/root ; USER=root ; TSID=000005 ; COMMAND=/bin/cp /etc/pam.d/sudo /etc/pam.d/sudo.bak
8月 14 21:17:18 2025 : root : TTY=/dev/pts/5 ; CWD=/root ; USER=root ; TSID=000006 ; COMMAND=/bin/cp /etc/sudoers /etc/sudoers.bak
8月 14 21:19:30 2025 : yq : TTY=/dev/pts/5 ; CWD=/home/yq ; USER=root ; TSID=000007 ; COMMAND=/bin/systemctl restart nginx
每条记录包含时间、用户、终端、命令等信息,用于定位需要回放的操作。
6.2 回放指定的 sudo 操作
[root@centos79-20251123 ~]# sudoreplay 00/00/03
root@centos79-20251123 ~]# ll /var/log/sudo-io/00/00/03
总用量 28
-rwxr-xr-x 1 root root 75 8月 13 22:36 log
-rwxr-xr-x 1 root root 20 8月 13 22:36 stderr
-rwxr-xr-x 1 root root 20 8月 13 22:36 stdin
-rwxr-xr-x 1 root root 20 8月 13 22:36 stdout
-rwxr-xr-x 1 root root 57 8月 13 22:36 timing
-rwxr-xr-x 1 root root 21 8月 13 22:36 ttyin
-rwxr-xr-x 1 root root 425 8月 13 22:36 ttyout

7. 配置MFA令牌
7.1 安装 Google Authenticator PAM 模块
# Ubuntu/Debian
sudo apt-get install libpam-google-authenticator
# CentOS/RHEL
sudo yum install google-authenticator
7.2 用户配置 MFA
每个需要 sudo 权限的用户运行 google-authenticator 命令,生成密钥并绑定到身份验证应用(如 Google Authenticator、Microsoft Authenticator 等)。
7.3 配置 PAM 以支持 sudo MFA
编辑 /etc/pam.d/sudo 文件,添加 Google Authenticator 模块:
7.3.1 仅对特定用户组启用 MFA(推荐)
避免影响所有用户,可以只对 wheel 或 sudo 组启用:
# /etc/pam.d/sudo
auth [success=ignore default=1] pam_succeed_if.so user ingroup wheel
auth required pam_google_authenticator.so
auth include system-auth
解释:
- 如果用户在
wheel组,跳过下一行(即不强制 MFA)。 - 否则,执行下一行(要求 MFA)。
- 实际上是“不在组内才要求 MFA”,逻辑需根据需求调整。
7.3.2 配置组内用户必须 MFA
auth required pam_google_authenticator.so secret=${HOME}/.google_authenticator
auth required pam_succeed_if.so user ingroup wheel quiet_success
注意:若sudo 不触发 MFA,最可能的原因是 PAM 配置顺序错误,导致 pam_unix.so 先通过认证,跳过了后面的 MFA 模块。
Linux sudo配置与MFA设置指南
994

被折叠的 条评论
为什么被折叠?



