Linux系统加固需按账号口令、SSH防护、服务精简、权限防火墙日志四层主线逐级收紧。先清理无用账号、设强密码策略、锁定root登录;再禁用非必要服务、最小化权限、启用SELinux与auditd审计,并建立验证闭环。

Linux系统加固没有万能模板,但有一套经验证的通用主线:从账号、服务、访问控制、日志审计到持续维护,环环相扣。关键不是堆砌所有措施,而是按优先级逐层收紧,确保每一步都可验证、不伤业务。
账号与口令必须先清底
这是所有加固的起点,也是最容易被忽略的基础。
- 删或锁掉无用账号:用 userdel 删除如 lp、mail、games 等默认账户;对暂时保留的用 passwd -l 锁定
- 检查空口令和特权账号:运行 awk -F: '($2=="")' /etc/shadow 找空口令用户;用 awk -F: '($3==0)' /etc/passwd 确认只有 root 的 UID 是 0
- 设强密码策略:在 /etc/login.defs 中设 PASS_MAX_DAYS 90、PASS_MIN_LEN 14、PASS_WARN_AGE 7;再通过 /etc/pam.d/common-auth 加入 pam_pwquality.so 强制大小写+数字+特殊字符
- 启用登录失败锁定:添加 pam_faillock.so 规则,比如连续输错 5 次锁 15 分钟(deny=5 unlock_time=900)
SSH 是第一道门,必须关严
绝大多数入侵从 SSH 入口开始,这里不做妥协。
- 禁止 root 直接登录:PermitRootLogin no(务必先建好普通用户并配好 sudo)
- 禁用密码,只留密钥:PasswordAuthentication no + PubkeyAuthentication yes
- 限制可登录用户:加 AllowUsers user1 user2 或 AllowGroups admin
- 改端口(可选但推荐):把 Port 22 换成高位端口,再配合防火墙白名单,大幅降低扫描命中率
- 加会话超时:ClientAliveInterval 300 + ClientAliveCountMax 0,5 分钟无操作自动断开
服务与端口要“只开必需”
少一个监听端口,就少一个潜在攻击面。
- 查当前开放端口:ss -tuln 或 netstat -tuln,重点关注非业务端口(如 21/23/111/2049)
- 停用高风险服务:systemctl disable --now vsftpd telnetd rpcbind nfs-server
- 确认 xinetd 或 inetd 下没启用多余服务,必要时直接卸载
- 用 systemctl list-unit-files --state=enabled 过一遍开机自启项,关掉所有非核心服务
权限、防火墙与日志不能脱节
这三者是联动防线:权限控住本地行为,防火墙卡住网络入口,日志留下追踪线索。
- 最小权限落地:visudo 编辑 sudoers,明确指定命令路径(如 %admin ALL=(ALL) /usr/bin/systemctl restart nginx),禁用 NOPASSWD 和通配符
- 防火墙默认拒绝:firewalld 下设 default-zone=drop,再仅放行 HTTP/HTTPS/SSH 等必要端口;Ubuntu 可用 ufw default deny incoming
- 开启 SELinux 并保持 enforcing 模式:getenforce 应返回 Enforcing;用 sestatus -v 查策略覆盖情况
- 启用 auditd 审计:auditctl -w /etc/passwd -p wa 监控关键文件;规则写进 /etc/audit/rules.d/critical.rules
- 日志轮转与保护:logrotate 配置压缩保留 90 天,并设 create 0600 root root 防篡改
基本上就这些。不是一步到位,而是每次变更后执行一次 ss -tuln && systemctl list-units --state=running | grep -E "(ssh|http|nginx)" 快速验效。安全加固不是配置完就结束,而是形成「检查→加固→验证→记录」的闭环习惯。
以上就是Linux系统如何加固_标准流程剖析适用于全部场景【技巧】的详细内容,更多请关注php中文网其它相关文章!