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加固, 安全基线, 应用安全, 教学环境, 系统运维, 虚拟化