Linux服务器加固清单:20项生产环境基线检查与命令 核心要点图解,先收敛SSH与账号权限,是投入产出比最高的加固起点。;防火墙默认拒绝入站,只放行必要端口并限制来源。;基线检查要留痕:命令输出存档,整改前后可对比。;补丁与日志审计需常态化,单次加固不等于长期安全。
Linux服务器加固清单:20项生产环境基线检查与命令 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • 先收敛SSH与账号权限,是投入产出比最高的加固起点。
  • 防火墙默认拒绝入站,只放行必要端口并限制来源。
  • 基线检查要留痕:命令输出存档,整改前后可对比。
  • 补丁与日志审计需常态化,单次加固不等于长期安全。

很多生产事故并非源于高深漏洞,而是几项基础配置长期没人管:root 允许密码登录、防火墙全放行、日志从不看。本文给出一份可直接照做的 Linux 服务器加固清单,20 项基线检查配具体命令,面向要动手的运维和站长,逐项执行即可显著收敛攻击面。

一、账号与权限基线:先关掉不该存在的入口

入侵者第一步往往是用弱口令或多余账号登录,账号面收敛优先级最高。

  1. 检查 UID 为 0 的账号:awk -F: '==0{print }' /etc/passwd,除 root 外出现其他账号立即排查。
  2. 锁定无口令账号:awk -F: '==""{print }' /etc/shadow,结果应为空。
  3. 禁止系统账号登录:将 daemon、bin 等账号 shell 设为 /sbin/nologin。
  4. sudo 最小授权:用 visudo 按命令白名单授权,避免全员 ALL=(ALL) ALL;用 sudo -l -U 用户名 复核。
  5. 口令策略:在 /etc/security/pwquality.conf 设置最小长度与复杂度,并配置失败锁定。

二、SSH 加固:最高频被爆破的服务

SSH 是公网暴露面最大的服务,改完必须校验语法再重载。

# 备份后编辑
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# 关键项
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
AllowUsers deploy ops
# 校验并重载
sshd -t && systemctl reload sshd
sshd -T | grep -E 'permitrootlogin|passwordauthentication'

改配置时保留一个已登录会话不关闭,确认密钥登录成功后再退出,防止把自己锁在门外。

三、网络与防火墙:默认拒绝,按需放行

先看真实监听端口,再决定放行什么:ss -tulnp。仅需 22、80、443 等必要端口对外,数据库与管理端口限制来源 IP。

firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --remove-service=ftp
firewall-cmd --reload
firewall-cmd --list-all

同时确认 SELinux 处于 enforcing:getenforce;关闭不必要的服务:systemctl list-unit-files --state=enabled。

四、内核参数与文件权限:堵住提权与信息泄露

在 /etc/sysctl.d/99-hardening.conf 中加入并执行 sysctl --system:

  • net.ipv4.conf.all.rp_filter=1 防源地址伪造
  • net.ipv4.tcp_syncookies=1 缓解 SYN 洪水
  • kernel.randomize_va_space=2 强化地址随机化
  • fs.suid_dumpable=0 禁止转储敏感内存

权限方面:chmod 600 /etc/shadow、chmod 644 /etc/passwd;用 find / -perm -4000 -type f 排查异常 SUID 文件,用 find / -nouser -o -nogroup 找出孤立文件。

五、日志、补丁与审计留痕

没有日志就没有溯源。确认 systemctl status rsyslog 正常,用 journalctl -u sshd --since today | grep Failed 查看爆破记录,配置 logrotate 防磁盘写满。补丁按 yum check-update 或 apt list --upgradable 定期评估,内核更新安排维护窗口。关键目录可用 auditd 监控写入与权限变更。需要统一告警与集中分析时,可结合 AegisX 的主机安全与基线核查能力补充自动化巡检。

六、20 项基线速查表

类别检查项合格标准
账号UID=0 账号、空口令、系统账号 shell仅 root,无空口令
SSHroot 登录、密码登录、最大尝试次数全部禁用,次数≤3
网络监听端口、防火墙策略、SELinux最小放行,enforcing
内核syncookies、rp_filter、ASLR按清单开启
文件敏感文件权限、SUID、孤立文件无异常项
运维补丁、日志、时间同步、备份常态化执行

行动建议:按「账号→SSH→防火墙→内核与权限→日志补丁」顺序分批整改,每批改完用同一批命令复跑对比输出并存档;保持一个已登录会话与云控制台可用,确保随时可回滚。加固不是一次性任务,建议每月复检一次基线。

常见问题(FAQ)

生产服务器直接改SSH配置会不会把自己锁在外面?

有风险,必须先留后路。操作前保持一个已登录的SSH会话不关闭,修改sshd_config后先用sshd -t校验语法,再reload而非restart;同时确认新端口或密钥登录已生效,再关闭旧会话。若使用云主机,提前确认控制台VNC可用,避免配置错误导致无法远程登录。

20项基线要一次全做完吗?

不建议。按风险排序分批执行:先做账号与SSH、防火墙三类,再处理内核参数、日志与补丁,最后做文件权限与审计留痕。每批改完观察业务是否异常,保留回滚方案。一次性大改难以定位问题来源,分批推进更稳妥。

没有专业安全设备,怎么做日志审计?

用系统自带能力即可起步:rsyslog集中记录auth日志,配合logrotate防止磁盘写满,关键目录用auditd监控写入与权限变更。再定期用grep筛查失败登录与提权记录。若需要统一告警与集中分析,可引入AegisX的主机安全能力做补充。

加固后怎么验证真的生效了?

用同一批检查命令复跑并对比输出:sshd -T确认SSH参数、ss -tulnp确认监听端口、firewall-cmd --list-all确认规则、getenforce确认SELinux状态。再模拟一次外部端口扫描与失败登录,确认被拒绝并产生日志,才算闭环。

最小权限原则在实操中怎么落地?

三件事:禁用不必要的系统账号登录、sudo按需授权而非全员ALL、服务以独立低权限用户运行。定期用awk检查UID为0的账号、用sudo -l核对授权范围,发现多余权限立即回收,并记录变更。