
核心要点(TL;DR)
- 账号加固:禁用无用账户、设置强密码策略、限制root登录。
- 权限控制:遵循最小权限原则,严格配置文件与目录访问。
- 日志审计:启用syslog并集中管理,定期审查异常事件。
- 定期检查:使用工具自动化检查,保持安全基线持续有效。
痛点引入:你的Linux服务器真的安全吗?
许多运维人员认为Linux天生安全,但默认配置往往存在账号冗余、权限过宽、日志缺失等问题,成为攻击者的突破口。本文提供一份可落地的安全加固清单,从账号、权限、日志三个维度逐项配置,帮你快速提升服务器安全基线。
账号安全加固:清理与管控
1. 清理无用账户
检查系统账户,锁定或删除非必要账户。使用命令:
awk -F: '( >= 1000) {print }' /etc/passwd # 列出普通用户
awk -F: '( == 0) {print }' /etc/passwd # 检查UID为0的账户对于不需要登录的账户,将其shell设为/sbin/nologin:
usermod -s /sbin/nologin username2. 密码策略强化
编辑/etc/login.defs,设置密码有效期:
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14使用pam_pwquality模块设置复杂度,在/etc/pam.d/system-auth(CentOS)或/etc/pam.d/common-password(Debian)中添加:
password requisite pam_pwquality.so try_first_pass retry=3 minlen=12 difok=33. 限制root远程登录
编辑/etc/ssh/sshd_config,设置:
PermitRootLogin no
AllowUsers user1 user2 # 仅允许特定用户登录重启sshd服务:systemctl restart sshd。
权限控制:最小权限原则
1. 关键文件权限
确保敏感文件权限正确:
| 文件 | 推荐权限 | 说明 |
|---|---|---|
| /etc/passwd | 644 | 所有用户可读,仅root可写 |
| /etc/shadow | 600 | 仅root可读写 |
| /etc/ssh/sshd_config | 600 | 仅root可读写 |
使用命令检查并修复:
chmod 644 /etc/passwd
chmod 600 /etc/shadow
chmod 600 /etc/ssh/sshd_config2. 目录权限与SUID/SGID
避免目录全局可写,使用find / -type d -perm -o+w查找并修复。检查SUID/SGID文件:
find / -perm -4000 -o -perm -2000 -type f -exec ls -l {} \;移除不必要的SUID权限:chmod u-s /path/to/file。
日志审计:记录与监控
1. 启用并配置syslog
确保rsyslog服务运行:systemctl status rsyslog。编辑/etc/rsyslog.conf,将日志转发到远程服务器:
*.* @logserver:514重启服务:systemctl restart rsyslog。
2. 关键日志文件监控
使用logwatch或自定义脚本每日分析日志。检查/var/log/secure(认证日志)中的失败登录:
grep 'Failed password' /var/log/secure | awk '{print }' | sort | uniq -c | sort -nr配置auditd监控关键文件访问:
auditctl -w /etc/passwd -p wa -k passwd_change检查清单与持续维护
| 类别 | 检查项 | 命令/操作 |
|---|---|---|
| 账号 | UID为0的账户仅root | awk -F: '( == 0) {print }' /etc/passwd |
| 账号 | 密码策略已设置 | 检查/etc/login.defs和pam配置 |
| 权限 | 关键文件权限正确 | ls -l /etc/passwd /etc/shadow |
| 日志 | rsyslog运行且转发 | systemctl status rsyslog |
建议每月执行一次全面检查,并考虑使用自动化工具如AegisX进行持续监控与告警,其主机安全模块可实时检测异常账号与权限变动,简化运维工作。
行动建议
立即按照上述清单逐项配置,重点关注账号清理、SSH加固和日志集中管理。完成基础加固后,定期复查并更新策略,以应对不断变化的安全威胁。
常见问题(FAQ)
如何检查Linux服务器上是否存在可疑账号?
检查/etc/passwd和/etc/shadow文件中是否有异常账户,重点关注UID为0的非root账户、无密码账户以及近期新增的账户。使用命令`awk -F: '( == 0) {print }' /etc/passwd`可列出所有UID为0的账户,确保只有root。
为什么需要限制root远程登录?如何配置?
限制root远程登录可降低暴力破解风险。编辑/etc/ssh/sshd_config,设置`PermitRootLogin no`,然后重启sshd服务。建议使用普通用户登录后通过sudo提权,并配置SSH密钥认证。
Linux日志文件通常存放在哪里?如何集中管理?
常见日志位于/var/log目录,如secure、messages、auth.log等。可通过rsyslog或syslog-ng将日志转发到远程日志服务器,避免本地日志被篡改。配置示例:在/etc/rsyslog.conf中添加`*.* @logserver:514`。
如何设置密码策略以提高安全性?
使用pam_cracklib或pam_pwquality模块设置密码复杂度,编辑/etc/pam.d/system-auth或/etc/pam.d/common-password,添加`password requisite pam_pwquality.so try_first_pass retry=3 minlen=12 difok=3`。同时设置密码有效期,修改/etc/login.defs中的PASS_MAX_DAYS等参数。
文件权限设置有哪些最佳实践?
遵循最小权限原则:敏感文件如/etc/passwd权限设为644,/etc/shadow设为600;目录权限通常755,避免777。使用chmod和chown严格设置,并定期使用`find / -perm -o+w`检查全局可写文件。