本文介绍如何在 TencentOS Server 中配置账户和口令安全策略,包括 su/sudo 权限管理、密码策略配置、root 远程登录限制等,以提高系统安全性。
配置 su
在 TencentOS Server 系统中,正确配置 su 对于提高系统安全性同样重要。通过限制 su 命令的使用范围,可以降低权限滥用风险。
禁止普通用户直接使用 su 命令
只允许 wheel 组的用户切换到 root 用户。编辑
/etc/pam.d/su 文件,找到如下行:#auth required pam_wheel.so use_uid
取消注释并保存:
auth required pam_wheel.so use_uid
添加用户到 wheel 组
将需要使用 su 命令的用户添加到 wheel 组中:
sudo usermod -aG wheel <username>
设置强制密码策略
为了增强系统安全性,可以通过 PAM(Pluggable Authentication Modules)配置强制密码策略。
密码复杂度
编辑
/etc/pam.d/system-auth 文件,添加或修改以下行以设置密码复杂度策略:password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
各参数含义:
参数 | 说明 |
minlen=8 | 密码最少 8 个字符 |
dcredit=-1 | 至少包含 1 个数字 |
ucredit=-1 | 至少包含 1 个大写字母 |
lcredit=-1 | 至少包含 1 个小写字母 |
ocredit=-1 | 至少包含 1 个特殊字符 |
retry=3 | 最多允许 3 次尝试 |
密码过期策略
通过
chage 命令或修改 /etc/login.defs 文件来设置密码过期策略:编辑
/etc/login.defs,修改以下参数:PASS_MAX_DAYS 90 # 密码最大使用天数PASS_MIN_DAYS 1 # 密码最小使用天数(防止短时间内修改密码)PASS_WARN_AGE 7 # 密码过期前 7 天警告
对已有用户设置密码过期策略:
# 设置用户密码 90 天过期sudo chage --maxdays 90 <username># 查看用户密码过期信息sudo chage -l <username>
密码历史限制
防止用户重复使用近期用过的密码。编辑
/etc/pam.d/system-auth,在 pam_unix.so 行之前添加:password required pam_pwhistory.so remember=5 use_authtok
该配置将记住最近 5 次密码,用户不能重复设置。
限制 root 用户远程登录
禁止 root 用户通过 SSH 远程登录,可以降低暴力破解攻击风险。
编辑 SSH 配置文件:
sudo vi /etc/ssh/sshd_config
找到以下行:
#PermitRootLogin prohibit-password
修改为:
PermitRootLogin no
注意:
若 sshd 配置存在错误,重启服务后可能无法建立新的 SSH 连接。请您在重启前执行
sudo sshd -t 验证配置语法,并保持当前会话不断开,重启后先确认新的 SSH 连接可正常建立,再断开当前会话。重启 sshd 服务:
sudo systemctl restart sshd
配置 sudo
sudo 允许普通用户以其他用户身份(通常是 root)执行命令,相比 su 更灵活且可审计。建议使用 sudo 替代 su 进行日常管理操作。
安装 sudo
TencentOS Server 默认安装 sudo。如未安装,可切换至 root 用户后执行以下命令安装:
dnf install sudo
编辑 sudoers 文件
使用
visudo 命令安全地编辑 sudoers 文件:sudo visudo
警告:始终使用
visudo 而非直接编辑 /etc/sudoers,因为 visudo 会在保存前检查语法,避免配置错误导致 sudo 不可用。常用 sudo 配置示例
允许用户执行所有命令:
<username> ALL=(ALL) ALL
允许用户组执行所有命令且无需密码:
%wheel ALL=(ALL) NOPASSWD: ALL
限制用户只能执行特定命令:
<username> ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl reload nginx
sudo 别名配置
为提高可维护性,可以为用户、主机和命令设置别名:
# 用户别名User_Alias ADMINS = alice, bob# 命令别名Cmnd_Alias NETWORKING = /usr/sbin/ifconfig, /usr/sbin/route, /usr/sbin/dnf# 授权ADMINS ALL=(ALL) NETWORKING
sudo 日志审计
通过查看 sudo 日志,可以监控用户在系统上执行的命令。确保 sudoers 文件中启用了日志记录:
Defaults logfile=/var/log/sudo.log
默认情况下,sudo 的使用记录也会写入系统日志(
/var/log/secure),定期检查这些日志以检测异常活动:# 查看 sudo 日志sudo grep sudo /var/log/secure
sudo 超时设置
为降低安全风险,可以设置 sudo 密码缓存超时时间。在 sudoers 文件中添加:
Defaults timestamp_timeout=5
该设置使 sudo 密码缓存 5 分钟后过期,用户需重新输入密码。
定期更新系统和软件包
确保系统和软件包始终保持最新状态,有助于防止潜在的安全漏洞。定期运行以下命令更新系统和软件包:
sudo dnf update