andmir317/hardened-linux-production-server

GitHub: andmir317/hardened-linux-production-server

该项目构建了一个以安全为核心的 Ubuntu Server 加固实验环境,通过多层安全控制将 Lynis 加固指数从 62 提升至 77,展示了一套完整的 Linux 生产服务器安全加固实践方案。

Stars: 0 | Forks: 0

# 加固 Linux 生产服务器 一个以安全为核心的 Ubuntu Server 实验环境,展示了实用的 Linux 加固、 攻击面缩减、审计、文件完整性监控以及基于证据的验证。 ## 项目目标 - 在 KVM/QEMU 上构建最小化的 Ubuntu Server 基线。 - 减少不必要的服务和暴露的网络端口。 - 强制实施仅限密钥的 SSH 管理。 - 应用主机防火墙和暴力破解防护。 - 强化身份验证、密码、PAM 和 sudo 策略。 - 加固文件系统、内核参数和网络行为。 - 启用持久化审计和文件完整性监控。 - 自动化安全更新,避免计划外重启。 - 验证有效状态并记录安全权衡。 ## 实验环境架构 | 组件 | 配置 | |---|---| | Hypervisor | KVM/QEMU(包含 libvirt 和 virt-manager) | | Guest OS | Ubuntu Server 24.04.4 LTS | | 虚拟机资源 | 2 vCPU、4 GB RAM、30 GB VirtIO 磁盘 | | 固件 | UEFI | | 网络 | 隔离的 libvirt NAT | | 服务器地址 | 静态 DHCP 预留:`192.168.122.10` | | 管理员账户 | `secadmin` | | 远程管理 | OpenSSH(使用专属的 Ed25519 密钥) | ## 已实施的控制措施 ### 存储与文件系统 - 基于 LVM 的存储布局。 - 为 `/home`、`/tmp`、`/var`、`/var/log` 和 `/var/log/audit` 设置独立的逻辑卷。 - 在适当位置应用 `nodev` 和 `nosuid`。 - 对 `/tmp`、`/var/log` 和 `/var/log/audit` 应用 `noexec`。 - 通过 `findmnt --verify` 验证持久化挂载配置。 ### 服务与网络加固 - 运行中的服务从 18 个减少到 13 个。 - 掩蔽不必要且面向硬件的服务及其触发单元。 - 启用 UFW,默认设置为拒绝传入和允许传出。 - 仅允许 OpenSSH 入站。 - 使用静态 DHCP 预留以确保可预测的管理。 - 禁用重定向和源路由。 - 启用严格的反向路径过滤和 martian 数据包记录。 - 启用 SYN-cookie 和 ICMP 保护。 ### SSH 与身份验证 - 专属的 Ed25519 密钥身份验证。 - 禁用密码、root 和键盘交互登录。 - SSH 访问仅限 `secadmin`。 - 禁用 TCP、agent、X11 和隧道转发。 - 减少身份验证尝试和会话限制。 - 配置密码时效、`pam_pwquality` 和默认的 `027` umask。 - Sudo 使用伪终端、短暂的凭证缓存、有限的重试次数, 并使用专属的仅 root 可读写日志。 ### 检测与响应 - Fail2ban 保护 `sshd` 服务。 - 启用 Linux 审计框架,包含 29 条持久化规则。 - 审计规则和登录 UID 在重启前保持不可变。 - 受控的删除和特权命令测试确认了事件捕获。 - AIDE 监控超过 100,000 个文件系统条目。 - 排除动态运行时路径以减少误报。 - 每日运行无人值守的安全升级,且不自动重启。 ## 验证结果 | 指标 | 初始 | 中间 | 最终 | |---|---:|---:|---:| | Lynis 加固指数 | 62 | 69 | 77 | | Lynis 警告 | 1 | 0 | 0 | | 运行中的服务 | 18 | 13 | 13 | | 活动审计规则 | 0 | 29 | 29 | | 丢失的审计事件 | 0 | 0 | 0 | | AIDE 完整性差异 | 未配置 | 0 | 0 | 最终的 Lynis 审计: - 加固指数:**77** - 执行的测试:**266** - 警告:**0** - 检测到防火墙:**是** ## 仓库结构 ``` . ├── configs/ # Sanitized hardening configuration examples ├── docs/ # Architecture, decisions, validation, and rollback notes ├── evidence/ # Sanitized security metrics ├── scripts/ # Commented read-only verification scripts ├── .gitignore # Protection against committing secrets and runtime data └── README.md ``` ## 如何审查此项目 1. 阅读 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。 2. 审查 [`docs/LINE-BY-LINE.md`](docs/LINE-BY-LINE.md) 中的每一项控制措施。 3. 检查 [`configs/`](configs/) 下的脱敏示例。 4. 审查 [`docs/VALIDATION.md`](docs/VALIDATION.md) 中的验证方法。 5. 审查 [`docs/ROLLBACK.md`](docs/ROLLBACK.md) 中的恢复指南。 6. 仅在预期的 Ubuntu 测试服务器上运行 `scripts/verify-hardening.sh`。 ## 重要限制 - 这是一个单服务器虚拟实验室,不是高可用平台。 - SSH 在隔离的 libvirt NAT 网络上被允许。 - AIDE 检测文件更改,但不能替代防病毒软件或 EDR。 - 本地 Postfix 仅用于系统通知并监听 loopback。 - 集中式日志记录、企业身份识别、secrets 管理和外部 监控不在当前范围内。 ## 安全提示 该仓库故意排除了凭证、私钥、密码 哈希、原始审计日志、AIDE 数据库、虚拟机映像以及未经脱敏的扫描器 报告。 ## 许可证 本项目基于 MIT 许可证发布。
标签:Linux加固, 安全基线, 应用安全, 教学环境, 系统运维, 虚拟化