🔐 Linux 系统安全加固
核心操作概览
| | |
|---|
| 账户与认证 | 创建普通用户,passwd -l <用户名> 锁定不使用的账户;修改 /etc/login.defs 中的 PASS_MAX_DAYS、PASS_MIN_DAYS 等参数,配合 pam_cracklib.so 模块设置密码复杂度。 | |
| 远程访问 | 编辑 /etc/ssh/sshd_config:Port 2222、PermitRootLogin no、PasswordAuthentication no;然后 sudo systemctl restart sshd。 | |
| 防火墙 | sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT;sudo iptables -P INPUT DROP;使用 iptables-save 持久化规则。 | |
| 文件权限 | sudo chmod 600 /etc/shadow;sudo chmod 644 /etc/passwd;可使用 chattr +i /etc/passwd 锁定关键文件。 | |
| 服务最小化 | sudo systemctl list-unit-files --type=service 查看服务;sudo systemctl disable --now <service> 关闭非必要服务。 | |
| 审计与日志 | sudo auditctl -w /etc/passwd -p wa -k passwd_changes | |
| 内核加固 | 编辑 /etc/sysctl.conf,设置 net.ipv4.tcp_syncookies = 1、net.ipv4.conf.all.rp_filter = 1 等,然后 sudo sysctl -p 生效。 | |
关于 SELinux:SELinux 提供了更细粒度的访问控制。如果遇到应用因端口被 SELinux 阻止的情况,正确做法是使用 semanage 工具为该应用或端口添加自定义策略,而不是简单关闭 SELinux。
行业最佳实践:CIS Benchmarks
对于生产环境,建议遵循业界公认的 CIS(互联网安全中心)Benchmarks 标准。它提供两级配置:
可以在 Ubuntu 等系统上安装 scap-security-guide 包来进行合规性审计。
🪟 Windows Server 安全加固
核心操作概览
| | |
|---|
| 账户策略 | 在 gpedit.msc → Windows 设置 → 安全设置 → 账户策略 中设置密码复杂度、长度和锁定阈值;禁用 Guest 账户,重命名 Administrator 账户。 | |
| 远程桌面 (RDP) | 修改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp 的 PortNumber 值(十进制),并配置防火墙。 | |
| 防火墙 | 在 高级安全 Windows 防火墙 中配置入站/出站规则,可设置为“默认阻止入站连接”。 | |
| 服务最小化 | 使用 services.msc 将 Print Spooler、Telnet 等服务设置为“禁用”。 | |
| 安全策略 | 运行 secpol.msc,在 安全设置 → 本地策略 → 安全选项 中,启用“交互式登录: 不显示最后的用户名”,设置“关机: 允许系统在未登录前关机”为“禁用”。 | |
| 审计策略 | 在 高级安全审核策略配置 中,启用“审核登录事件”、“审核账户管理”等。 | |
| BitLocker | 在 控制面板 中启用 BitLocker 驱动器加密。 | |
最新动态(截至2026年):微软已发布 Windows Server 2025 的 2602 版安全基线更新,核心变化包括:
建议定期检查并应用微软的安全基线更新包。
行业最佳实践:CIS Benchmarks
与 Linux 类似,Windows Server 也遵循 CIS Benchmarks 标准,同样分为 Level 1 和 Level 2。CIS 也提供针对独立服务器(非域环境)的基准指南。
🚀 自动化加固工具:高效与一致性的关键
手动配置容易出错且难以大规模复制,使用自动化工具是关键。
Linux 自动化加固工具
JShielder:Bash 脚本,能自动执行许多 CIS 基准测试的加固操作。
Secureguardian:模块化脚本,可生成 HTML 格式的审计报告。
systemd-hardening-helper:分析 systemd 服务行为,并生成最小权限的沙箱配置。
自定义 Shell 脚本:封装常用命令,配合 cron 定期执行,实现自动化检查与修复。
Windows Server 自动化加固工具
微软安全基线工具包 (Security Compliance Toolkit, SCT):微软官方工具,可基于最新基线策略(如 v2602)批量配置和审计系统。
PowerShell DSC (Desired State Configuration):通过 posh-dsc-windowsserver-hardening 这类模块,用代码声明系统最终状态,实现大规模、幂等的自动化配置。
开源 PowerShell 脚本:许多开源项目提供自动化加固脚本,如 Secure Windows Mode Batch (SWMB)。
📚 面试中如何展示你的加固知识
当被问到“如何做系统加固”时,别只罗列操作,要展示你的系统性思维。
回答框架示例
“进行系统安全加固,我遵循最小权限、纵深防御的原则,并参考CIS Benchmarks等行业基线,从账户、服务、网络、数据和日志这几个维度入手。
比如在账户管理上,我会禁用默认管理员账户、实施强密码策略、为不同角色设置最小权限。在网络层面,会启用防火墙并关闭非必要端口。这些配置会尽可能通过自动化工具(如Linux的JShielder、Windows的PowerShell DSC)来批量实施,确保一致性和效率。
操作后,我会使用漏洞扫描器或基线核查工具(如OpenSCAP)验证加固效果,并建立变更管理和定期审计流程,以保持系统的持续安全。”
高频面试题集锦
Linux 常见问题:
密码策略:修改 /etc/login.defs 中的 PASS_MAX_DAYS 等参数。
账户锁定:锁定不使用的系统账户:passwd -l <用户名>。
SSH安全:更改端口、禁止root登录。
防火墙规则:常用 iptables 或 firewalld,并设置默认拒绝策略。
权限设置:su 命令限制(pam_wheel.so 模块)、sudo 授权精细化。
服务管理:systemctl 命令和启动级别查看。
日志监控:/var/log/ 目录下 secure、messages 等日志的审计。
工具使用:常用 Lynis、Chkrootkit、Rkhunter 等扫描后门与 rootkit。
Windows Server 常见问题:
账户加固:禁用 Guest、重命名 Administrator。
密码策略:密码复杂度、长度、锁定阈值设置。
远程桌面:修改 3389 端口、配置防火墙。
服务管理:使用 services.msc 禁用非必要服务。
注册表安全:限制匿名枚举 SAM 账户等。
组策略:安全设置与策略下发。
审核策略:关键事件(登录、权限变更)的审计配置。
工具使用:基线安全分析器(MBSA)、SCT、PowerShell 脚本。
数据保护:BitLocker、EFS 使用场景与区别。