操作系统安全基础:Linux/Windows 安全加固基线

操作系统是设备安全的第一道防线。说白了,你所有的应用、数据、服务都跑在它上面。系统本身如果千疮百孔,上层防护做得再好也没用。

我个人习惯,拿到一台新服务器,第一件事不是装应用,而是先做系统安全加固。这就像盖房子先打地基,地基不稳,后面全是白费功夫。

安全基线:你的最低安全标准

安全基线,就是一套最低限度的安全配置标准。它告诉你哪些服务必须关,哪些端口必须封,哪些密码策略必须开。

我见过不少团队,安全基线写了几十页,但落地执行一塌糊涂。为什么?因为基线太理想化,跟实际业务脱节。你想想看,如果基线要求关闭 SSH,但运维团队天天要用,这基线就形同虚设。

好的基线应该满足三个条件:可落地、可审计、可自动化。

维度 Linux 基线要点 Windows 基线要点
账号策略 禁用 root 直接登录,使用 sudo 禁用 Administrator,创建普通管理员
密码策略 密码长度 ≥12,复杂度要求 启用密码历史,强制定期更换
服务管理 关闭不必要的系统服务 禁用高危服务(如 Telnet、FTP)
补丁管理 配置自动安全更新 启用 WSUS 或自动更新
日志审计 开启 rsyslog,配置远程日志 启用安全日志,配置事件转发
我的经验:基线不是一成不变的。每半年至少 review 一次,根据新出现的漏洞和业务变化做调整。我曾经遇到一个客户,基线三年没更新,结果被一个两年前的已知漏洞打穿了。

用户与权限管理:最小权限原则

权限管理,核心就一句话:给每个人刚刚够用的权限,不多给一分。这就是最小权限原则。

Linux 下的 sudo 管理

sudo 是 Linux 权限管理的核心工具。我建议你永远不要直接用 root 干活,而是通过 sudo 提权。

配置 sudo 权限,编辑 /etc/sudoers 文件(记得用 visudo 命令,它会帮你检查语法错误):

# 允许运维组执行所有命令
%ops ALL=(ALL) ALL

# 允许 webadmin 用户仅执行 nginx 相关命令
webadmin ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl reload nginx

# 禁止某些危险命令
user1 ALL=(ALL) ALL, !/usr/bin/passwd root, !/usr/bin/su -
避坑指南:我曾经见过有人直接在 sudoers 里写 user1 ALL=(ALL) NOPASSWD: ALL,这等于把 root 权限白送出去了。sudo 免密码要慎用,除非你很清楚自己在做什么。

ACL:更精细的权限控制

传统的 Linux 权限只有 owner、group、others 三级,很多时候不够用。比如,你想让 A 用户读一个文件,B 用户写同一个文件,但又不希望他们属于同一个组。这时候 ACL 就派上用场了。

# 给用户 zhangsan 添加读权限
setfacl -m u:zhangsan:r /data/project/config.yaml

# 给组 dev 添加读写权限
setfacl -m g:dev:rw /data/project/config.yaml

# 查看 ACL 设置
getfacl /data/project/config.yaml

ACL 的好处是灵活,坏处是容易搞乱。我建议你只在确实需要精细控制的场景下使用,日常管理还是优先用标准的用户组机制。

Windows 下的权限管理

Windows 的权限模型比 Linux 复杂,但核心思想一样:用户 → 组 → 权限。

几个关键点:

  • 本地用户和组:通过 lusrmgr.msc 管理
  • NTFS 权限:右键属性 → 安全,可以设置非常精细的权限
  • UAC(用户账户控制):不要关闭它,它是 Windows 的最后一道防线
  • 组策略:通过 gpedit.msc 批量管理安全策略

核心原则:无论是 Linux 还是 Windows,权限管理都要做到三点——

  1. 定期审计权限,清理僵尸账号
  2. 权限变更要有审批流程
  3. 特权账号要启用多因素认证

系统日志审计与监控

日志是安全运维的眼睛。没有日志,你就像在黑暗中走路,被攻击了都不知道怎么发生的。

Linux 日志体系

Linux 的日志主要集中在 /var/log/ 目录下:

日志文件 记录内容 重要程度
/var/log/messages 系统通用日志 高
/var/log/secure 认证与安全日志 极高
/var/log/audit/audit.log auditd 审计日志 极高
/var/log/wtmp 用户登录记录 高

我个人习惯,第一时间开启 auditd 服务。它能记录谁在什么时候执行了什么命令,修改了什么文件。这对事后溯源至关重要。

# 安装 auditd
yum install audit -y

# 启动并设置开机自启
systemctl start auditd
systemctl enable auditd

# 添加审计规则:监控 /etc/passwd 的修改
auditctl -w /etc/passwd -p wa -k passwd_changes

# 查看审计日志
ausearch -k passwd_changes

Windows 日志体系

Windows 的日志通过 事件查看器(eventvwr.msc)管理,主要分三类:

  • 系统日志:记录系统组件事件
  • 安全日志:记录登录、权限使用等安全事件
  • 应用程序日志:记录应用程序事件

Windows 安全日志里,有几个事件 ID 你必须记住:

事件 ID 含义 说明
4624 登录成功 记录谁在什么时间登录了
4625 登录失败 密码错误或账号不存在
4648 使用显式凭据登录 可能是在横向移动
4672 分配特殊权限 管理员权限被使用
我的建议:别只盯着本地日志。把日志集中收集到远程日志服务器(比如 ELK、Splunk),这样即使攻击者黑了机器,也删不掉日志。我曾经处理过一个入侵事件,攻击者删了本地日志,但远程日志完整地记录了他的所有操作。

本章知识体系

下面这张图,帮你理清操作系统安全的核心脉络:

操作系统安全加固核心框架 操作系统安全 安全基线 用户与权限管理 日志审计与监控 账号策略 服务管理 补丁管理 密码策略 sudo 提权 ACL 控制 用户组管理 最小权限 本地日志 远程日志 auditd 事件查看器 三者缺一不可:基线定标准,权限控入口,日志留证据

操作系统安全没有捷径。把基线定好、权限管好、日志看好,这三件事做到位,80% 的安全问题都能防住。剩下的 20%,靠的是持续监控和应急响应能力。