ConnorrArnold/Hardening-Audit-Remediation-in-AWS-EC2-Ubuntu
GitHub: ConnorrArnold/Hardening-Audit-Remediation-in-AWS-EC2-Ubuntu
该项目通过使用 Lynis 工具,详细演示了如何对 AWS EC2 Ubuntu 服务器进行全面的安全审计与加固,以提升系统的安全防御评分。
Stars: 0 | Forks: 0
# AWS EC2 Ubuntu 加固审计与修复
## 目标
本实验旨在通过使用 Lynis 识别并修复安全漏洞,来加固一台 AWS EC2 Ubuntu 服务器。从 60 分的基准加固分数开始,实验涵盖了系统更新、SSH 加固、防火墙配置、内核参数调优、入侵检测、文件完整性监控以及访问控制加固。目标是通过动手修复真实的审计发现,逐步提高 Lynis 加固指数。
## 学到的技能
- Linux 服务器加固和安全审计
- 解读并修复 Lynis 审计发现
- SSH 配置和基于密钥的身份验证
- iptables 防火墙规则创建与持久化
- 通过 sysctl 进行内核参数加固
- PAM 配置和密码策略强制执行
- 文件权限管理
- 使用 fail2ban 进行入侵检测
- 使用 AIDE 和 rkhunter 进行文件完整性监控
- Windows SSH 客户端配置和密钥管理
- AWS EC2 安全组管理
## 使用的工具
- Lynis 3.0.9
- OpenSSH
- iptables / netfilter-persistent
- fail2ban
- rkhunter
- AIDE (Advanced Intrusion Detection Environment)
- auditd
- mod_evasive
- ModSecurity
- sysstat
- PowerShell (Windows SSH 客户端)
- AWS EC2 控制台
## 步骤
### 阶段 1:基线与初始加固(分数:60 至 65)
1. 安装 Lynis 并运行初始审计:`sudo lynis audit system`(分数:60)
2. 更新并升级所有软件包:`sudo apt update && sudo apt upgrade -y`
3. 运行全面升级:`sudo apt full-upgrade`
4. 重新运行 Lynis 审计(分数:63)
5. 安装 libpam-tmpdir 以根据 PAM 安全地处理临时目录
6. 重启机器以应用更改
7. 重新运行 Lynis 审计(分数:65)
8. 创建具有 sudo 权限的辅助用户账户:`connor`
### 阶段 2:SSH 加固(分数:65 至 73)
9. 备份 SSH 配置:`sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak`
10. 编辑 `/etc/ssh/sshd_config`,进行以下更改:
- `#Port 22` 更改为 `Port 2222`
- `#LogLevel INFO` 更改为 `LogLevel VERBOSE`
- `#MaxAuthTries 6` 更改为 `MaxAuthTries 3`
- `#MaxSessions 10` 更改为 `MaxSessions 2`
- `#AllowAgentForwarding yes` 更改为 `AllowAgentForwarding no`
- `#AllowTcpForwarding yes` 更改为 `AllowTcpForwarding no`
- `X11Forwarding yes` 更改为 `X11Forwarding no`
- `#TCPKeepAlive yes` 更改为 `TCPKeepAlive no`
- `#ClientAliveCountMax 3` 更改为 `ClientAliveCountMax 2`
- 添加 `AllowUsers ubuntu` 以将登录限制为一个账户
11. 测试配置:`sudo sshd -t`
12. 重新加载 SSH:`sudo systemctl daemon-reload && sudo systemctl restart ssh.socket`
13. 更新 AWS 安全组:添加自定义 TCP 端口 2222,移除端口 22
14. 使用 PowerShell Set-Acl 修复 Windows .pem 密钥文件权限
15. 在 `C:\Users\ctarn\.ssh\config` 创建 SSH 快捷方式配置
16. 重新运行 Lynis 审计(分数:73)
### 阶段 3:防火墙与入侵检测(分数:73 至 86)
17. 创建 iptables 规则以允许端口 2222、HTTP、HTTPS、ICMP 并丢弃所有其他入站流量
18. 安装 iptables-persistent 并保存规则:`sudo netfilter-persistent save`
19. 安装并配置 fail2ban,为端口 2222 上的 SSH 设置自定义 jail
20. 将禁止时间设置为 1 小时,10 分钟内最大重试次数为 3
21. 验证 fail2ban 正在监控 SSH:`sudo fail2ban-client status sshd`
22. 创建 `/etc/sysctl.d/99-hardening.conf`,包含 19 个加固的内核参数,包括:
- 禁用 TTY 劫持(`dev.tty.ldisc_autoload = 0`)
- 加固 BPF(`kernel.unprivileged_bpf_disabled = 1`,`net.core.bpf_jit_harden = 2`)
- 在所有接口上禁用 ICMP 重定向
- 启用 martian 数据包日志记录
- 限制内核指针暴露(`kernel.kptr_restrict = 2`)
23. 在不重启的情况下应用设置:`sudo sysctl -p /etc/sysctl.d/99-hardening.conf`
24. 安装 auditd 并为以下内容创建审计规则:
- 对 `/etc/passwd`、`/etc/group`、`/etc/shadow`、`/etc/sudoers` 的更改
- SSH 配置修改
- sudo 使用和权限提升
25. 加载审计规则:`sudo augenrules --load`
26. 安装 rkhunter,修复 WEB_CMD 配置,初始化基线数据库
27. 运行完整的 rootkit 扫描:检查了 498 个 rootkit,发现 0 个
28. 安装并配置 Apache mod_evasive,设置 DoS 防护阈值
29. 安装 ModSecurity WAF 并设置 `SecRuleEngine On`
30. 启用这两个模块:`sudo a2enmod evasive security2`
31. 限制文件权限:
- `/etc/ssh/sshd_config` 设置为 600
- `/etc/crontab` 设置为 600
- 所有 cron 目录设置为 700
32. 向 `/etc/issue` 和 `/etc/issue.net` 添加法律警告横幅
33. 在 sshd_config 中启用横幅:`Banner /etc/issue.net`
34. 通过 modprobe 禁用未使用的网络协议(dccp、sctp、rds、tipc)
35. 通过 modprobe 禁用 USB 存储驱动程序
36. 安装 libpam-pwquality 并配置密码要求:
- 最小长度:12 个字符
- 最小字符类别:3
- 最大重复字符:3
37. 在 `/etc/login.defs` 和 `/etc/bash.bashrc` 中将 UMASK 设置为 027
38. 设置密码哈希轮数:SHA_CRYPT_MIN/MAX_ROUNDS = 65536
39. 在 `/etc/security/limits.conf` 和 `/etc/systemd/coredump.conf` 中禁用核心转储
40. 安装并启用进程记帐:`sudo apt install acct`
### 阶段 7:最终清理与监控(分数:86 至 88)
41. 安装 debsums 和 apt-show-versions 用于软件包验证
42. 安装 apt-listchanges 用于升级变更跟踪
43. 将服务器主机名和 FQDN 添加到 `/etc/hosts`
44. 清除残留的 UFW 配置文件:`sudo dpkg --purge ufw`
45. 启用 sysstat 进行系统性能记帐
46. 在 `/etc/login.defs` 中配置 SHA_CRYPT 密码哈希轮数
47. 安装 AIDE 并初始化文件完整性基线数据库
48. 使用显式配置路径重建 AIDE 数据库
49. 最终 Lynis 审计(分数:88)
标签:AIDE, Apache WAF, Auditd, AWS EC2, CISA项目, Fail2ban, iptables, Linux安全加固, Lynis审计, mod_evasive, ModSecurity, PAM配置, PB级数据处理, PE 加载器, rkhunter, SSH加固, sysctl, x64dbg, 内核参数调优, 动态API解析, 基线加固, 安全运维, 密码策略, 权限管理, 模型越狱, 漏洞修复, 系统加固, 网络安全培训, 防火墙配置