核心原则:避免直接使用root
- 使用sudo替代su
通过sudo
授权普通用户执行特定命令,而非直接登录root:- 安装sudo(部分发行版默认安装):
apt install sudo # Debian/Ubuntu yum install sudo # CentOS/RHEL
- 将用户加入sudo组:
usermod -aG sudo username # Debian/Ubuntu usermod -aG wheel username # CentOS/RHEL
- 配置sudo权限文件(
/etc/sudoers
):
使用visudo
命令编辑(避免语法错误):# 允许wheel组用户使用sudo %wheel ALL=(ALL) ALL # 允许特定用户无密码执行命令(谨慎使用) username ALL=(ALL) NOPASSWD: /usr/bin/systemctl
- 安装sudo(部分发行版默认安装):
禁止root远程登录(SSH加固)
修改SSH配置文件 /etc/ssh/sshd_config
:
- 禁止root通过SSH登录:
PermitRootLogin no
- 限制登录用户(仅允许普通用户):
AllowUsers username
- 重启SSH服务生效:
systemctl restart sshd
⚠️ 注意:先测试普通用户SSH登录权限,再禁用root登录,避免被锁在系统外。
设置强密码策略
- 修改root密码复杂度
编辑/etc/security/pwquality.conf
:minlen = 12 # 最小长度 minclass = 3 # 包含数字、字母、符号等至少3类
- 设置密码有效期
修改/etc/login.defs
:PASS_MAX_DAYS 90 # 密码最长有效期 PASS_WARN_AGE 7 # 过期前7天提醒
- 使用命令强制root修改密码:
chage -M 90 root
使用PAM模块精细化控制
通过Pluggable Authentication Modules (PAM) 限制root访问:
- 限制root的TTY终端
编辑/etc/securetty
,仅允许本地tty1登录:tty1 # 注释其他行(如tty2, pts/0等)
- 禁止普通用户su到root
编辑/etc/pam.d/su
,添加:auth required pam_wheel.so use_uid # 仅允许wheel组成员使用su
审计与监控root活动
-
启用auditd日志审计
- 安装auditd:
apt install auditd # 或 yum install audit
- 监控root执行的所有命令:
auditctl -a always,exit -F arch=b64 -F euid=0 -S execve
- 查看日志:
ausearch -ue 0
(0为root的UID)
- 安装auditd:
-
记录sudo操作
在/etc/sudoers
中添加:Defaults logfile=/var/log/sudo.log
安全增强建议
- 使用双因素认证(2FA)
为sudo或SSH登录启用Google Authenticator等2FA工具。 - 定期审查权限
- 检查sudoers文件:
sudo visudo -c
- 审计特权用户:
grep -Po '^sudo.+:K.*$' /etc/group
- 检查sudoers文件:
- 内核级防护
启用SELinux/AppArmor限制root进程行为(如配置enforcing
模式)。
控制root权限的关键在于:
✅ 优先使用sudo
而非直接root操作
✅ 禁用远程root登录
✅ 强制密码复杂性策略
✅ 通过PAM和审计实现精细化管控
⚠️ 任何配置修改前,务必备份相关文件(如/etc/sudoers
),并在测试环境验证。
基于Linux官方文档及安全最佳实践,参考来源:
- Linux man-pages (
man sudoers
,man pam_wheel
)- NSA《Linux安全加固指南》
- Ubuntu/CentOS官方安全文档
遵循CC BY-SA 4.0协议,允许署名共享。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/37758.html