系统加固如何逐项整改

wen 开源项目 33

本文目录导读:

系统加固如何逐项整改

  1. 核心原则与整改策略
  2. 常见系统加固项及逐项整改方法(示例)
  3. 整改执行流程表(示例:Linux系统加固清单)
  4. 注意事项与常见坑

系统加固的逐项整改通常遵循“发现风险 → 评估影响 → 制定策略 → 实施配置 → 验证效果 → 记录归档”的闭环流程,由于系统加固项繁多(涉及系统、网络、数据库、中间件等),以下以操作系统(Windows/Linux) 为例,列出常见的加固项及逐项整改的详细步骤。

核心原则与整改策略

  1. 最小权限原则:只给进程、用户、服务所需的最低权限。
  2. 默认安全原则:修改所有默认配置(如默认密码、默认端口、默认共享)。
  3. 纵深防御原则:从账户、文件、网络、日志等多层面设防。
  4. 业务连续性优先:整改前需评估对业务的影响,建议在非业务高峰期或测试环境先行验证。

常见系统加固项及逐项整改方法(示例)

账户与口令策略(最基础、最重要)

  • 发现风险:存在弱口令、默认账户、空口令、未设置密码策略。
  • 整改步骤
    1. 清理多余账户
      • Windows:禁用Guest、删除不再使用的用户。
      • Linux:usermod -s /sbin/nologin username 禁止登录,或 userdel -r 多余用户名
    2. 强化密码策略
      • Windows:gpedit.msc -> 计算机配置 -> Windows设置 -> 安全设置 -> 账户策略 -> 密码策略,设置:密码必须符合复杂性要求(启用)、密码长度最小值(8位以上)、密码最长使用期限(90天)。
      • Linux:修改 /etc/login.defs/etc/pam.d/system-auth(或 password-auth),设置 PASS_MAX_DAYS 90PASS_MIN_LEN 8,使用 passwd -x 90 -n 7 -w 7 用户名 对单个用户生效。
    3. 锁定策略:设置账户锁定阈值(如5次失败锁定30分钟)。
  1. 验证:尝试用弱口令登录,检查是否被拒绝。

系统服务与端口最小化

  • 发现风险:开启了不需要的服务(如Telnet、FTP、TFTP、打印服务等),暴露了高危端口。
  • 整改步骤
    1. 列出所有开放端口
      • Windows:netstat -anonetstat -an | findstr LISTEN
      • Linux:ss -tlnpnetstat -tulnp
    2. 识别并关闭服务
      • Windows:services.msc -> 找到服务(如 TelnetWorld Wide Web Publishing Service) -> 停止并禁用。
      • Linux:systemctl stop 服务名systemctl disable 服务名systemctl disable --now telnet.socket
    3. 防火墙入站限制:只允许业务需要的端口(如SSH 22、RDP 3389、Web 80/443等)来源于受限IP。
    4. 验证:再次用 netstatnmap 扫描,确认无用端口已关闭。

文件系统与权限加固

  • 发现风险:关键系统目录(如 /etc/passwd/etc/shadow)权限过大,共享文件夹暴露。
  • 整改步骤
    1. 关键文件权限
      • Linux:chmod 644 /etc/passwdchmod 600 /etc/shadowchmod 700 /etc/ssh/ssh_host_*
      • Windows:限制系统目录(如 C:\Windows\System32C:\ProgramData)的写入权限,只允许AdministratorsSYSTEM
    2. 关闭不必要的共享
      • Windows:net share C$ /delete(删除默认管理共享,注意需谨慎,确保无依赖),在注册表 HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 中增加 AutoShareWks(DWORD)= 0。
      • Linux:检查 /etc/exports(NFS)、/etc/samba/smb.conf,删除不必要的共享。
    3. 设置文件审计:对敏感文件启用“审计对象访问”策略(Windows)或 auditd(Linux)。
    4. 验证:尝试以普通用户身份写入关键目录,应被拒绝。

日志与审计配置

  • 发现风险:日志未记录、日志大小不足、未发送至集中日志系统。
  • 整改步骤
    1. 开启必要审计
      • Windows:gpedit.msc -> 安全设置 -> 本地策略 -> 审核策略,启用:审核登录事件(成功+失败)、审核账户管理、审核对象访问。
      • Linux:vim /etc/rsyslog.confjournalctl 配置;启用 auditd 服务:systemctl enable --now auditd;添加规则:auditctl -w /etc/passwd -p wa -k passwd_changes
    2. 修改日志大小与轮替
      • Linux:/etc/logrotate.conf 设置按天、大小轮替,保留90天。
      • Windows:在事件查看器中设置最大日志大小(如20480 KB)。
    3. 转发至SIEM:将重要日志转发至集中日志服务器(如syslog、Azure Sentinel)。
    4. 验证:手动触发一个登录失败,检查事件ID 4625(Windows)或 /var/log/secure(Linux)是否有记录。

系统补丁与软件更新

  • 发现风险:系统/应用未打补丁,存在已知CVE漏洞。
  • 整改步骤
    1. 确定补丁基线:对比厂商发布的最新安全公告(如Microsoft安全更新、Red Hat RHSA)。
    2. 测试环境部署:先在测试服务器更新补丁,验证与业务软件的兼容性。
    3. 生产环境分批更新:使用WSUS、SCCM、Ansible或yum update --security等工具,按“非核心应用 -> 核心应用”顺序分批打补丁。
    4. 更新后扫描:使用漏洞扫描工具(如Nessus、OpenVAS)确认漏洞已修复。
    5. 回退预案:记录补丁更新前的系统快照或备份,以便回滚。

整改执行流程表(示例: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扫应被过滤

注意事项与常见坑

  1. 切勿批量执行未验证的脚本chmod 000 /etc/ 会导致系统崩溃。
  2. 区分加固项优先级:优先处理高危漏洞(如远程代码执行、弱口令),再处理低风险加固项(如账户命名规范)。
  3. 依赖测试:关闭某个服务前,使用 systemctl list-dependencies 服务名 检查是否有其他服务依赖它(如关闭 rpcbind 可能影响NFS)。
  4. 记录与回溯:每项整改后,应记录:修改时间、修改人、修改内容、预期效果、当前状态(如已整改/豁免),使用版本控制工具(如Ansible Playbook)保存配置变更历史。

通过上述“风险识别 -> 制定方案 -> 逐项实施 -> 验证 -> 记录”的闭环流程,可以将系统加固从混乱的“打补丁”转变为可追溯、可复制的标准化操作,如果您的需求是针对特定行业(如等保2.0三级、PCI-DSS)的合规整改,请补充具体标准,我可以提供更精准的映射关系。

抱歉,评论功能暂时关闭!