
核心要点(TL;DR)
- 账号安全:禁用无用账号、设置强密码策略、限制root远程登录。
- 权限控制:遵循最小权限原则,关键文件设置 immutable 属性。
- 日志审计:集中管理日志,配置 auditd 监控关键事件。
- 内核参数:调整网络和内存参数,增强抗攻击能力。
痛点引入:你的 Linux 服务器真的安全吗?
许多运维人员认为 Linux 天生安全,但默认配置往往存在诸多隐患:弱口令、多余账号、权限过宽、日志缺失、内核参数未优化……攻击者一旦利用这些漏洞,轻则数据泄露,重则整台服务器沦陷。本文提供一份可落地的基线加固清单,涵盖账号、权限、日志与内核参数四大方面,每个步骤都附带具体命令,帮你快速提升服务器安全水位。
账号安全加固:清理与管控
账号是入侵的第一道门槛。首先,检查并清理无用账号:
# 列出所有可登录账号
awk -F: '( !~ /(nologin|false)$/) {print }' /etc/passwd
# 锁定不使用的账号
usermod -L username其次,设置强密码策略。编辑 /etc/login.defs,调整 PASS_MAX_DAYS 90、PASS_MIN_LEN 10 等参数,并启用 pam_pwquality 模块:
# 安装 pam_pwquality(如未安装)
yum install libpwquality -y # Debian/Ubuntu 使用 apt install libpam-pwquality
# 编辑 /etc/pam.d/system-auth 或 /etc/pam.d/common-password,添加:
password requisite pam_pwquality.so try_first_pass retry=3 minlen=10 difok=3最后,限制 root 远程登录。修改 /etc/ssh/sshd_config:
PermitRootLogin no
AllowUsers deploy admin # 只允许特定用户登录重启 sshd 服务生效。同时,建议使用 SSH 密钥认证并禁用密码登录。
权限控制:最小化与锁定
遵循最小权限原则,确保敏感文件仅 root 可读。检查关键文件权限:
chmod 600 /etc/shadow
chmod 644 /etc/passwd
chmod 700 /root对于不允许修改的文件(如 /etc/passwd、/etc/shadow),可设置 immutable 属性:
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow注意:修改这些文件前需先移除属性(chattr -i)。此外,使用 sudo 替代直接 root 操作,并精细控制 sudo 权限。
日志审计:记录与监控
完整的日志是溯源的关键。确保 rsyslog 服务运行,并配置远程日志服务器:
# 客户端:/etc/rsyslog.conf 添加
*.* @192.168.1.100:514
# 服务器端:启用 UDP/TCP 接收
module(load="imudp")
input(type="imudp" port="514")使用 auditd 监控关键事件,例如监控 /etc/passwd 的修改:
auditctl -w /etc/passwd -p wa -k passwd_change将规则持久化到 /etc/audit/rules.d/audit.rules。同时,配置 logrotate 定期轮转日志,避免磁盘占满。
内核参数调优:增强网络与内存安全
通过 sysctl 调整内核参数,提升抗攻击能力。编辑 /etc/sysctl.conf 并应用:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
kernel.randomize_va_space = 2执行 sysctl -p 生效。这些参数可防御 SYN Flood、IP 欺骗等攻击,并启用地址空间随机化。
加固检查清单
| 项目 | 检查命令 | 预期结果 |
|---|---|---|
| 空口令账号 | awk -F: '( == "") { print }' /etc/shadow | 无输出 |
| root 远程登录 | grep ^PermitRootLogin /etc/ssh/sshd_config | PermitRootLogin no |
| 关键文件权限 | ls -l /etc/shadow | -rw------- |
| 日志服务状态 | systemctl status rsyslog | active (running) |
| 内核参数 | sysctl net.ipv4.tcp_syncookies | net.ipv4.tcp_syncookies = 1 |
定期执行上述检查,确保加固措施持续有效。对于需要批量管理的场景,可考虑使用自动化工具如 Ansible 或 AegisX 的基线核查功能,快速发现配置偏差。
行动建议
安全加固不是一次性的任务,而是持续的过程。建议每季度进行一次基线核查,并关注安全公告及时更新。从今天起,按照上述清单逐项落实,你的 Linux 服务器将更加稳固。
常见问题(FAQ)
如何检查 Linux 服务器上是否存在空口令账号?
使用命令 `awk -F: '( == "") { print }' /etc/shadow` 可以列出所有空口令账号。如果发现空口令账号,应立即为其设置强密码或锁定账号。
为什么要限制 root 用户远程登录?如何操作?
限制 root 远程登录可以降低暴力破解风险。编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no,然后重启 sshd 服务。建议使用普通用户登录后通过 sudo 提权。
如何监控 Linux 系统中的文件完整性?
可以使用 AIDE 或 Tripwire 等工具。例如,安装 AIDE 后,运行 `aide --init` 生成基线数据库,然后定期运行 `aide --check` 对比变化。关键文件如 /etc/passwd、/etc/shadow 应纳入监控。
哪些内核参数对防御 DDoS 攻击有效?
可以调整 net.ipv4.tcp_syncookies=1 启用 SYN Cookie,增大 net.ipv4.tcp_max_syn_backlog 和 net.core.somaxconn 提高连接队列,设置 net.ipv4.conf.all.rp_filter=1 启用反向路径过滤。
如何配置日志集中管理?
可以使用 rsyslog 将日志发送到远程日志服务器。在客户端配置 *.* @logserver:514,在服务器端启用接收模块。同时建议使用 logrotate 定期轮转日志,避免磁盘占满。