本文目录导读:

系统加固的逐项整改通常遵循“发现风险 → 评估影响 → 制定策略 → 实施配置 → 验证效果 → 记录归档”的闭环流程,由于系统加固项繁多(涉及系统、网络、数据库、中间件等),以下以操作系统(Windows/Linux) 为例,列出常见的加固项及逐项整改的详细步骤。
核心原则与整改策略
- 最小权限原则:只给进程、用户、服务所需的最低权限。
- 默认安全原则:修改所有默认配置(如默认密码、默认端口、默认共享)。
- 纵深防御原则:从账户、文件、网络、日志等多层面设防。
- 业务连续性优先:整改前需评估对业务的影响,建议在非业务高峰期或测试环境先行验证。
常见系统加固项及逐项整改方法(示例)
账户与口令策略(最基础、最重要)
- 发现风险:存在弱口令、默认账户、空口令、未设置密码策略。
- 整改步骤:
- 清理多余账户:
- Windows:禁用Guest、删除不再使用的用户。
- Linux:
usermod -s /sbin/nologin username禁止登录,或userdel -r 多余用户名。
- 强化密码策略:
- Windows:
gpedit.msc-> 计算机配置 -> Windows设置 -> 安全设置 -> 账户策略 -> 密码策略,设置:密码必须符合复杂性要求(启用)、密码长度最小值(8位以上)、密码最长使用期限(90天)。 - Linux:修改
/etc/login.defs和/etc/pam.d/system-auth(或password-auth),设置PASS_MAX_DAYS 90、PASS_MIN_LEN 8,使用passwd -x 90 -n 7 -w 7 用户名对单个用户生效。
- Windows:
- 锁定策略:设置账户锁定阈值(如5次失败锁定30分钟)。
- 清理多余账户:
- 验证:尝试用弱口令登录,检查是否被拒绝。
系统服务与端口最小化
- 发现风险:开启了不需要的服务(如Telnet、FTP、TFTP、打印服务等),暴露了高危端口。
- 整改步骤:
- 列出所有开放端口:
- Windows:
netstat -ano或netstat -an | findstr LISTEN - Linux:
ss -tlnp或netstat -tulnp
- Windows:
- 识别并关闭服务:
- Windows:
services.msc-> 找到服务(如Telnet、World Wide Web Publishing Service) -> 停止并禁用。 - Linux:
systemctl stop 服务名及systemctl disable 服务名。systemctl disable --now telnet.socket。
- Windows:
- 防火墙入站限制:只允许业务需要的端口(如SSH 22、RDP 3389、Web 80/443等)来源于受限IP。
- 验证:再次用
netstat或nmap扫描,确认无用端口已关闭。
- 列出所有开放端口:
文件系统与权限加固
- 发现风险:关键系统目录(如
/etc/passwd、/etc/shadow)权限过大,共享文件夹暴露。 - 整改步骤:
- 关键文件权限:
- Linux:
chmod 644 /etc/passwd、chmod 600 /etc/shadow、chmod 700 /etc/ssh/ssh_host_*。 - Windows:限制系统目录(如
C:\Windows\System32、C:\ProgramData)的写入权限,只允许Administrators和SYSTEM。
- Linux:
- 关闭不必要的共享:
- Windows:
net share C$ /delete(删除默认管理共享,注意需谨慎,确保无依赖),在注册表HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters中增加AutoShareWks(DWORD)= 0。 - Linux:检查
/etc/exports(NFS)、/etc/samba/smb.conf,删除不必要的共享。
- Windows:
- 设置文件审计:对敏感文件启用“审计对象访问”策略(Windows)或
auditd(Linux)。 - 验证:尝试以普通用户身份写入关键目录,应被拒绝。
- 关键文件权限:
日志与审计配置
- 发现风险:日志未记录、日志大小不足、未发送至集中日志系统。
- 整改步骤:
- 开启必要审计:
- Windows:
gpedit.msc-> 安全设置 -> 本地策略 -> 审核策略,启用:审核登录事件(成功+失败)、审核账户管理、审核对象访问。 - Linux:
vim /etc/rsyslog.conf或journalctl配置;启用auditd服务:systemctl enable --now auditd;添加规则:auditctl -w /etc/passwd -p wa -k passwd_changes。
- Windows:
- 修改日志大小与轮替:
- Linux:
/etc/logrotate.conf设置按天、大小轮替,保留90天。 - Windows:在事件查看器中设置最大日志大小(如20480 KB)。
- Linux:
- 转发至SIEM:将重要日志转发至集中日志服务器(如syslog、Azure Sentinel)。
- 验证:手动触发一个登录失败,检查事件ID 4625(Windows)或
/var/log/secure(Linux)是否有记录。
- 开启必要审计:
系统补丁与软件更新
- 发现风险:系统/应用未打补丁,存在已知CVE漏洞。
- 整改步骤:
- 确定补丁基线:对比厂商发布的最新安全公告(如Microsoft安全更新、Red Hat RHSA)。
- 测试环境部署:先在测试服务器更新补丁,验证与业务软件的兼容性。
- 生产环境分批更新:使用WSUS、SCCM、Ansible或
yum update --security等工具,按“非核心应用 -> 核心应用”顺序分批打补丁。 - 更新后扫描:使用漏洞扫描工具(如Nessus、OpenVAS)确认漏洞已修复。
- 回退预案:记录补丁更新前的系统快照或备份,以便回滚。
整改执行流程表(示例:Linux系统加固清单)
| 序号 | 检查项 | 风险描述 | 整改指令/方法 | 验证方式 |
|---|---|---|---|---|
| 1 | 密码策略 | 空口令或简单密码 | vim /etc/login.defs; authconfig --passminlen=8 --passmaxdays=90 --update |
cat /etc/login.defs; passwd -S 用户 |
| 2 | SSH配置 | 允许Root直接登录 | sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config; systemctl restart sshd |
尝试 ssh root@IP 应失败 |
| 3 | 无用服务 | Telnet、FTP等 | systemctl disable --now vsftpd telnet.socket |
ss -tlnp \| grep :21 |
| 4 | /tmp目录 | 未限制执行权限 | mount -o remount,noexec,nosuid /tmp; 并写入 /etc/fstab |
touch /tmp/test.sh; chmod +x /tmp/test.sh 应失败 |
| 5 | 文件权限 | /etc/shadow弱权限 | chmod 000 /etc/shadow |
ls -l /etc/shadow 权限应为 |
| 6 | 防火墙 | 未限制入站 | firewall-cmd --zone=public --remove-service=ssh --permanent (先添加白名单); --add-rich-rule; firewall-cmd --reload |
nmap -p 22 目标IP 从非白名单IP扫应被过滤 |
注意事项与常见坑
- 切勿批量执行未验证的脚本:
chmod 000 /etc/会导致系统崩溃。 - 区分加固项优先级:优先处理高危漏洞(如远程代码执行、弱口令),再处理低风险加固项(如账户命名规范)。
- 依赖测试:关闭某个服务前,使用
systemctl list-dependencies 服务名检查是否有其他服务依赖它(如关闭rpcbind可能影响NFS)。 - 记录与回溯:每项整改后,应记录:修改时间、修改人、修改内容、预期效果、当前状态(如已整改/豁免),使用版本控制工具(如Ansible Playbook)保存配置变更历史。
通过上述“风险识别 -> 制定方案 -> 逐项实施 -> 验证 -> 记录”的闭环流程,可以将系统加固从混乱的“打补丁”转变为可追溯、可复制的标准化操作,如果您的需求是针对特定行业(如等保2.0三级、PCI-DSS)的合规整改,请补充具体标准,我可以提供更精准的映射关系。