elizabeth-ikechukwu/secure-linux-server-hardening-ec2

GitHub: elizabeth-ikechukwu/secure-linux-server-hardening-ec2

一个展示在 AWS EC2 上从零部署并加固生产级 Linux Web 服务器的实战项目,涵盖 SSH 安全、防火墙、入侵防御和 HTTPS 配置等核心安全实践。

Stars: 0 | Forks: 0

# AWS EC2 安全 Linux 服务器加固与静态网站部署 本项目演示了如何在 AWS EC2 上部署并加固一个生产就绪的 Linux Web 服务器。 内容涵盖基础设施配置、Linux 服务器加固、防火墙配置、入侵防护、域名映射以及使用 Let's Encrypt 进行 HTTPS 加密。 本项目的目标是展示 DevOps 和云工程师在 Linux 管理、云基础设施部署和服务器安全方面的实战技能。 ## 在线演示 网站: https://lizzycloudlab.online ## 项目概述 在本项目中,从零开始在 AWS EC2 上配置并加固了一个 Linux Web 服务器。部署了一个个人作品集网站,并通过自定义域名和 HTTPS 加密进行访问。 实施的安全最佳实践包括: - 非根用户管理 - SSH 加固 - 防火墙配置 - 入侵防护 - 使用 Let's Encrypt 进行 HTTPS 加密 本项目反映了 DevOps 工程师、云工程师和 Linux 系统管理员通常执行的实战任务。 ## 架构图 此图说明了静态作品集网站是如何通过 **AWS EC2 实例上的 Nginx** 提供服务的,并使用 **通过 Hostinger DNS 配置的自定义域名**。它展示了流量从用户浏览器通过互联网流向托管网站的 EC2 服务器的流程。 ![AWS Architecture](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/48b3dbd1ac124145.png) ## ![AWS 架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/48b3dbd1ac124145.png) ## 使用的技术 ### 云平台 - AWS EC2 ### 操作系统 - Ubuntu Linux ### Web 服务器 - Nginx ### 安全 - SSH 密钥认证 - UFW 防火墙 - Fail2Ban 入侵防御 - Let's Encrypt SSL ### 网络 - 域名 DNS 映射 (Hostinger) ### 工具 - Linux CLI - Nano - Certbot ## 实施步骤 ### 配置 AWS 基础设施 在 AWS 上配置了一个运行 Ubuntu Linux 的 EC2 实例来托管 Web 服务器。 - 启动了运行 Ubuntu Linux 的 EC2 实例 - 配置了安全组规则 - 使用 SSH 密钥认证进行安全连接 SSH 连接示例: ``` ssh -i server_key.pem devopsadmin@SERVER_IP -p 2222 ``` ### Linux 服务器加固 应用了安全最佳实践以减少服务器攻击面并改进访问控制。 创建管理员用户: ``` sudo adduser devopsadmin sudo usermod -aG sudo devopsadmin ``` SSH 加固包括: - 禁用 root 登录 - 禁用密码认证 - 强制使用 SSH 密钥认证 - 更改默认 SSH 端口 SSH 配置文件: ``` /etc/ssh/sshd_config ``` 配置示例: ``` PermitRootLogin no PasswordAuthentication no Port 2222 ``` ### 防火墙配置 (UFW) 配置了 Uncomplicated Firewall (UFW) 以仅允许必要的网络流量。 ``` sudo ufw allow 2222/tcp sudo ufw allow 80 sudo ufw allow 443 ``` 启用防火墙: ``` sudo ufw enable ``` 验证防火墙状态: ``` sudo ufw status ``` ### 使用 Fail2Ban 进行入侵防御 安装了 Fail2Ban 以自动阻止尝试重复 SSH 登录失败的 IP 地址。 安装: ``` sudo apt install fail2ban ``` 检查服务状态: ``` sudo fail2ban-client status sshd ``` ### Nginx Web 服务器设置 安装并配置了 Nginx 作为托管静态网站的 Web 服务器。 安装: ``` sudo apt install nginx ``` 验证服务状态: ``` sudo systemctl status nginx ``` ### 静态网站部署 网站文件被部署到默认的 Nginx Web 根目录。 ``` /var/www/html ``` Nginx 服务器配置文件: ``` /etc/nginx/sites-available/devops-project ``` 配置示例: ``` server { listen 80; server_name lizzycloudlab.online www.lizzycloudlab.online; root /var/www/html; index index.html; location / { try_files $uri $uri/ =404; } } ``` ### 域名和 DNS 配置 将从 Hostinger 购买的自定义域名映射到 AWS EC2 公网 IP。 使用的 DNS 记录: | Type | Name | Value | |------|------|------| | A | @ | EC2 Public IP | | CNAME | www | lizzycloudlab.online | ### 使用 Let's Encrypt 配置 HTTPS 使用 Let's Encrypt 和 Certbot 实现了 HTTPS 加密。 安装: ``` sudo apt install certbot python3-certbot-nginx ``` 生成 SSL 证书: ``` sudo certbot --nginx ``` 测试证书续期: ``` sudo certbot renew --dry-run ``` ## 实施的安全措施 - 非根用户管理访问 - SSH 密钥认证 - 禁用密码登录 - 自定义 SSH 端口 - 使用 UFW 进行防火墙保护 - 使用 Fail2Ban 进行入侵检测 - 使用 Let's Encrypt 进行 HTTPS 加密 这些配置显著提高了服务器安全性,并符合现代云安全实践。 ## 经验总结 - 在将 Linux 服务器暴露于互联网之前进行安全加固的重要性。 - SSH 加固和基于密钥认证的实践经验。 - 理解防火墙规则如何影响服务器可访问性。 - 使用 Let's Encrypt 和 Certbot 配置 HTTPS 的实战经验。 - 了解 DNS 解析如何将域名连接到云基础设施。 ## 故障排除问题 在部署过程中遇到了几个问题并已解决: - 由密钥权限不正确导致的 SSH 连接问题。 - 在更新防火墙规则之前更改 SSH 端口导致的暂时锁定。 - 将域名映射到 EC2 公网 IP 后的 DNS 传播延迟。 - 在正确运行 Certbot 与 Nginx 配合之前的初始 HTTPS 配置问题。 ## 项目截图 ### EC2 实例运行中 ![EC2](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e03bc6d2e0124147.png) ### SSH 登录 ![SSH](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/adc02ac761124148.png) ### Nginx 运行中 ![Nginx](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a858526d6c124150.png) ### 防火墙状态 ![UFW](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/32c56b9c9d124153.png) ### Fail2Ban 防护 ![Fail2Ban](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a12fdf1aff124154.png) ### 实时网站 (HTTPS) ## ![网站](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/989f9f4641124157.png) ## 展示的技能 - Linux 服务器管理 - AWS 云基础设施部署 - Web 服务器配置 - 网络安全 - DNS 和域名配置 - HTTPS 加密 - 基础设施故障排除 ## 成本说明 ## 本项目使用 AWS Free Tier 资源部署。 EC2 实例在测试和文档完成后已**终止**,以避免不必要的费用。 ## 作者 **Ikechukwu Elizabeth Nkwo** 专注于 AWS、Linux 系统和基础设施安全的 DevOps 和云工程师。目前正在寻找初级 DevOps 工程师、云工程师或 Linux 系统管理员的机会,以便为构建安全可靠的云基础设施做出贡献。 LinkedIn: https://linkedin.com/in/uroko-elizabeth- GitHub: https://github.com/elizabeth-ikechukwu
标签:Awesome, AWS EC2, Certbot, CISA项目, DNS配置, Fail2ban, Hostinger, HTTPS, Let's Encrypt, Linux命令行, Linux服务器加固, Nginx, SSH安全, SSL证书, UFW防火墙, Web托管, 云基础设施, 云计算, 入侵防御, 内存分配, 动态API解析, 子域名枚举, 密钥认证, 生产环境, 端口安全, 系统安全, 系统管理, 网络安全, 规则引擎, 隐私保护, 静态网站部署