核心是“最小权限+行为可溯”,即从身份、时段、动作、日志四层设防:锁定非必要账号(如设shell为/sbin/nologin、passwd -l禁用密码)、限制登录时段与并发会话(time.conf、limits.conf)、sudo精确到命令级白名单授权、并强制auditd与rsyslog记录所有提权及敏感操作。

核心是“最小权限+行为可溯”,不是靠堵命令,而是从身份、时段、动作、日志四层设防。重点不在禁止什么,而在明确允许什么,并确保每次操作都留痕。
锁定非必要账号与登录入口
系统默认服务账号(如daemon、ftp、mail)不需交互登录,放任即为风险点。
- 将非交互用户shell设为/sbin/nologin:
usermod -s /sbin/nologin username - 长期不用的账号直接锁密:执行
passwd -l username,会在/etc/shadow中密码字段前加!,彻底禁用密码认证 - 保护关键账号文件:用
chattr +i /etc/passwd /etc/shadow防止被篡改(root权限下操作,解锁需chattr -i)
控制登录能力与时效边界
能登进来,不等于能一直待着、随时待着、多人同时待着。
- 按时间限制SSH登录:在/etc/security/time.conf中添加规则,例如sshd;*;opsuser;!Al0800-1800,表示opsuser仅限工作日早8点至晚6点登录
- 限制并发会话数:在/etc/security/limits.conf中写入opsuser hard maxsyslogins 2,同一用户最多2个活跃终端
- 强制空闲登出:统一设置
TMOUT=600(10分钟),写入/etc/profile,所有bash会话自动退出
精细授权命令执行范围
用sudo替代su,把“能做什么”落到具体命令级,而非整个shell。
- 禁用
su -直登root,只允许通过sudo执行白名单操作 - 用
visudo编辑/etc/sudoers,例如:
%devteam ALL=(ALL) /usr/bin/systemctl status nginx, /bin/journalctl -u nginx --no-pager
表示devteam组成员只能查Nginx状态和日志,且不带分页 - 避免
NOPASSWD: ALL这类宽泛配置;确需免密,也必须限定到单个二进制路径,且不带通配符或参数自由拼接
记录每一步操作并可回溯验证
权限控制若无日志支撑,等于没有控制。所有提权与敏感操作必须落地留痕。
- sudo默认日志在/var/log/secure或/var/log/auth.log,确认rsyslog已启用对应模块
- 启用auditd做底层行为审计:监控
/bin/su、/usr/bin/sudo、/usr/bin/chmod等关键程序调用,规则示例:-w /usr/bin/sudo -p x -k sudo_exec - 定期检查日志完整性:用
ausearch -m avc -ts today查SELinux拒绝事件,用last -a核对登录来源IP与时间











