操作系统安全加固:Linux/Windows系统基线检查、账户安全、权限管理、文件系统安全

各位同学,咱们今天聊点实在的。操作系统安全加固,说白了就是给你的服务器「锁好门窗、设好门禁、藏好钥匙」。我干了这么多年安全运维,见过太多因为系统基线没做好,被黑客当后花园逛的案例。嗯,这节课咱们就掰开揉碎了讲讲,Linux和Windows到底该怎么加固。

一、系统基线检查:你的服务器「体检」了吗?

基线检查是什么?就是一套标准。你想想看,新装一台服务器,如果啥配置都不改,默认设置往往是最不安全的。我个人习惯,拿到新机器第一件事,就是跑一遍基线检查脚本。

核心原则:最小化原则。只开必要的服务,只给必要的权限,只留必要的账户。

1. Linux 基线检查要点

我常用的检查项,列个表给大家参考:

检查项 安全要求 检查命令
系统版本与补丁 使用稳定版,及时更新 cat /etc/os-release
yum check-update
开放端口 仅保留业务端口 ss -tlnp
SSH 配置 禁止 root 登录,修改默认端口 grep PermitRootLogin /etc/ssh/sshd_config
密码策略 复杂度、有效期 cat /etc/login.defs
日志审计 开启 rsyslog,日志保留 180 天以上 systemctl status rsyslog

我的小技巧:别手动一条条查。用自动化工具,比如 Lynis 或者 OpenSCAP,跑一遍报告就出来了。我在项目中用 Lynis 给上百台服务器做过基线扫描,效率很高。

2. Windows 基线检查要点

Windows 的基线检查,我建议重点关注这几个地方:

  • 安全策略:通过 secpol.msc 检查密码策略、账户锁定策略。
  • 服务管理:禁用不必要的服务,比如 Print Spooler(如果不用打印)。
  • 注册表加固:比如禁用 LM Hash、限制远程访问。
  • 审核策略:开启登录审核、对象访问审核。

我曾经遇到过一台 Windows 服务器,默认开启了 SMBv1 协议,结果被勒索病毒盯上了。嗯,从那以后,我每次装完 Windows 第一件事就是关掉 SMBv1。

注意:基线检查不是一次性工作。每次系统变更、版本升级后,都要重新检查一遍。我建议至少每季度做一次全面基线审计。

二、账户安全:管好你的「钥匙」

账户安全,说白了就是谁有钥匙、钥匙够不够结实。我见过最离谱的案例,某公司服务器 root 密码是「123456」,而且所有员工都知道。你想想看,这跟把家门钥匙挂在大门上有什么区别?

1. Linux 账户安全加固

我个人习惯,Linux 账户管理遵循这几条铁律:

  • 禁用 root 直接登录:用普通用户 + sudo 提权。修改 /etc/ssh/sshd_config,设置 PermitRootLogin no
  • 密码复杂度:长度至少 12 位,包含大小写、数字、特殊字符。通过 pam_pwquality.so 模块强制实施。
  • 账户锁定策略:连续 5 次登录失败,锁定账户 15 分钟。用 pam_tally2.so 实现。
  • 定期清理僵尸账户:检查 /etc/passwd,删除长期不用的账户。
# 密码策略配置示例(/etc/pam.d/system-auth)
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
minlen=12 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1

# 账户锁定策略
auth        required      pam_tally2.so deny=5 unlock_time=900 even_deny_root root_unlock_time=1200

避坑指南:我曾经在配置 pam_tally2 时,忘了加 even_deny_root 参数,结果 root 账户被暴力破解了 100 多次都没锁定。嗯,这个坑我替你们踩过了。

2. Windows 账户安全加固

Windows 的账户管理,我重点说几个容易被忽略的点:

  • 禁用 Guest 账户:默认就是禁用的,但还是要确认一下。
  • 重命名 Administrator:别用默认的管理员账户名,改成个复杂的名字。
  • 启用 UAC:用户账户控制,别为了省事关掉它。
  • 密码策略:通过组策略设置密码最短使用期限、最长使用期限。

你想想看,如果黑客连你的管理员账户名都不知道,他暴力破解的难度就大多了。这就是「安全通过模糊化」的一种实践。

三、权限管理:谁该有什么权限?

权限管理,核心就一句话:最小权限原则。每个用户、每个进程,只给完成工作所需的最小权限。多了就是风险。

1. Linux 权限管理

Linux 的权限模型,说白了就是 rwx(读、写、执行)。但光靠这个还不够,我建议用 ACL(访问控制列表)做更精细的控制。

# 设置 ACL 示例
setfacl -m u:zhangsan:rwx /data/project
setfacl -m g:developers:rx /data/project

# 查看 ACL
getfacl /data/project

我在项目中遇到过一个问题:开发人员需要读取日志文件,但日志文件属于 root 账户。直接给 sudo 权限太危险,用 ACL 给开发组只读权限,完美解决。

重要提醒:SUID/SGID 权限要慎用。我见过有人给 vim 设置了 SUID 位,结果普通用户用 vim 打开文件时,居然能以 root 权限编辑系统文件。这太危险了!

2. Windows 权限管理

Windows 的权限管理,核心是 NTFS 权限和组策略。我建议:

  • 使用本地组策略:通过 gpedit.msc 配置用户权限分配。
  • NTFS 权限:给每个文件夹设置明确的访问权限,别用「Everyone」组。
  • 服务账户:为每个服务创建独立的服务账户,别用 LocalSystem。

嗯,这里要注意:Windows 的权限继承机制容易让人迷惑。你给父文件夹设置了权限,子文件夹默认会继承。有时候你以为某个文件是安全的,其实它的父文件夹权限已经泄露了。

四、文件系统安全:藏好你的「家底」

文件系统安全,就是保护你的数据不被偷、不被改、不被删。我见过最惨的案例,某公司数据库文件权限设置成了 777,结果被勒索病毒加密了。嗯,血的教训。

1. Linux 文件系统安全

Linux 文件系统安全,我重点关注这几个方面:

  • 重要文件权限:/etc/shadow 应该是 600,/etc/passwd 应该是 644。
  • 文件属性:chattr 命令给关键文件加不可修改属性。比如 chattr +i /etc/passwd
  • 磁盘加密:敏感数据分区使用 LUKS 加密。
  • 文件完整性检查:AIDETripwire 监控文件变更。
# 使用 chattr 保护关键文件
chattr +i /etc/shadow
chattr +i /etc/ssh/sshd_config

# 查看文件属性
lsattr /etc/shadow

警告:chattr +i 后,连 root 都不能修改文件。要修改时,记得先 chattr -i 解除锁定。我曾经在升级 SSH 时忘了这茬,折腾了半天才发现文件被锁了。

2. Windows 文件系统安全

Windows 文件系统安全,我建议:

  • 启用 BitLocker:对系统盘和数据盘进行全盘加密。
  • NTFS 权限审计:开启文件访问审计,记录谁在什么时候访问了什么文件。
  • EFS 加密:对敏感文件使用加密文件系统。
  • 禁用自动播放:防止 U 盘病毒自动执行。

你想想看,如果服务器被物理接触了,没有磁盘加密,那数据就等于裸奔。BitLocker 虽然会带来一点点性能损耗,但跟数据安全比起来,这点代价完全值得。

五、实战总结:我的加固清单

好了,讲了这么多,我给大家总结一份我自己的加固清单。每次部署新服务器,我都会对照这个清单过一遍:

  1. 基线检查:跑一遍 Lynis 或 OpenSCAP,修复所有高危项。
  2. 账户清理:删除无用账户,禁用 root 远程登录,设置密码策略。
  3. 权限收紧:检查所有文件和目录权限,用 ACL 做精细控制。
  4. 文件保护:关键文件加不可修改属性,敏感分区加密。
  5. 日志审计:开启详细日志,配置日志轮转和远程存储。
  6. 服务最小化:关闭所有不必要的服务,只保留业务所需。

最后说一句:安全加固不是一劳永逸的事。系统在变,攻击手法也在变。我建议每个月至少做一次安全巡检,看看有没有新的漏洞、有没有异常的权限变更。嗯,安全运维,说白了就是个持续改进的过程。

好了,这节课的内容就到这里。下一节咱们聊聊入侵检测系统的部署和规则编写,到时候我会分享一些我在实际攻防演练中总结的检测技巧。大家回去把今天讲的基线检查先在自己测试机上跑一遍,下节课我们直接上手实战。