Princewill-chala/aws-secure-ec2-web-deployment

GitHub: Princewill-chala/aws-secure-ec2-web-deployment

该项目演示了在 AWS EC2(Ubuntu)上遵循云安全最佳实践安全部署生产级静态网站的完整流程与配置方法。

Stars: 0 | Forks: 0

# 在 AWS EC2 上安全部署静态网站 ![image](https://static.pigsec.cn/wp-content/uploads/repos/cas/e5/e5e1582d0e583bf651066e7f5cbb92a70ad0894f09b57fa056772ad2b604e12d.jpg) ## 目录 - [项目概述](#overview) - [架构说明](#architecture) - [实施步骤](#steps-performed) - [安全配置](#security-configuration-instructions) ## 概述 本项目演示了如何在 Amazon Web Services (AWS) 上,使用运行 Ubuntu 22.04 的 EC2 实例,安全地部署一个生产级别的静态网站。 本项目遵循云安全最佳实践,包括正确使用 IAM、通过安全组进行网络加固、基于密钥的身份验证、分配 Elastic IP 以及基本的 Linux 服务器加固。 ## 架构 ``` ┌──────────────────────────┐ │ IAM USER │ │ (EC2-Admins Group) │ │ - No Root Access │ └───────────┬─────────────┘ │ AWS Console / CLI │ v ┌──────────────┐ ┌─────────────────────────────┐ │ User PC │────▶│ EC2 Instance (Ubuntu) │ │ (SSH :22) │ │ - t2.micro │ │ (Key Pair) │ │ - Security Group Firewall │ └──────┬───────┘ │ - Root Login Disabled │ │ │ - Sudo User Created │ │ └─────────────┬──────────────┘ │ │ │ Apache Web Server │ │ │ /var/www/html │ │ │ Static Website │ │ └───────────┐ v │ Elastic IP (Public) │ │ └──────────────▶│ v Internet Users (HTTP Port 80 Open) ``` ### ***核心组件:*** - AWS IAM(最小权限访问) - EC2(t3.micro,Ubuntu 22.04) - 安全组(防火墙规则) - SSH 密钥对(安全访问) - Elastic IP(持久的公共访问) - Web 服务器(Apache) ## 实施步骤 ***1. IAM 配置*** - 创建一个名为 EC2-Admins 的 IAM 组。 - 附加 EC2 完全访问策略。 - 创建一个用户并将其添加到该组中。 - 绝不使用 Root 账户进行操作。 ![IAM_User](https://static.pigsec.cn/wp-content/uploads/repos/cas/50/502be94a3f93da705e5885c3b5abe94b62c9fa9a5c3f226d8d8e604ee3693536.png) ***2. 密钥对与安全组*** - 生成 RSA 密钥对。 - 配置入站规则: SSH (22) → 仅限我的公共 IP HTTP (80) → 0.0.0.0/0 - 应阻止所有其他端口。 ![KeyPair](https://static.pigsec.cn/wp-content/uploads/repos/cas/f0/f0afa872e48bf729b22cae7018ad60db370eecac5ae1e678e1313b227ecb5e97.png) ![Security_Group](https://static.pigsec.cn/wp-content/uploads/repos/cas/6d/6dc5fc10d6feb6f23755ad29930f37a68bb17b12683f351b9b24adb238c2b23d.png) ***3. EC2 部署*** - 在 t2.micro 上启动 Ubuntu 22.04。 - 附加密钥对和安全组。 - 启用公共 IP。 ![Apache_2](https://static.pigsec.cn/wp-content/uploads/repos/cas/9b/9b8500129630e6b600fd3dc7680ca14263c83f448e3f9e5b7a16f4ba54a5237b.png) ***4. 服务器设置*** ``` sudo apt update sudo apt install apache2 -y sudo systemctl start apache2 ``` ***5. 网站部署*** ``` sudo rm -rf /var/www/html/* sudo unzip tooplate-template.zip -d /var/www/html/ sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html ``` ![Deployment commands](https://static.pigsec.cn/wp-content/uploads/repos/cas/1b/1b00318847ea698d23bf4b77e972720279fb5fcc1fd7dc20599218bf2b7260de.png) ***6. Elastic IP*** - 分配一个 Elastic IP。 - 将其与 EC2 关联。 - 重启并确认持久访问。 ![Elastic_IP](https://static.pigsec.cn/wp-content/uploads/repos/cas/d5/d559e4a0b0eac6dae580928c0b182a8e17fca093f2fb0c70e04f1f07a1cc1870.png) ***7. 服务器加固*** ``` sudo adduser cloudadmin sudo usermod -aG sudo cloudadmin sudo nano /etc/ssh/sshd_config # Set: PermitRootLogin no sudo systemctl restart ssh ``` ![sshd_configuration](https://static.pigsec.cn/wp-content/uploads/repos/cas/3c/3c13768da53ed088b123516a054609be37525ca36f2c597b7728ecff7ed9cd5f.png) ## 安全配置说明 - 切勿使用 Root 账户进行日常操作或例行任务。 - 仅将 SSH 访问权限限制为您个人的 IP 地址。 - 仅暴露应用程序或服务严格需要的端口。 - 对所有 SSH 连接强制执行基于密钥的身份验证;禁用密码身份验证。 - 禁止通过 SSH 直接进行 Root 登录。 - 创建并使用具有 sudo 权限的独立非 Root 用户账户来执行所有管理操作。 - 为实例分配并使用 Elastic IP 地址,以防止公共 IP 发生变化并避免 DNS 偏移。 ## 作者 Elochukwu Princewill 云计算 • 网络安全 ## ⭐ 如果您觉得这个项目有帮助 欢迎 ⭐ 标星本仓库,并探索我其他的 AWS 实践项目,我将继续构建实用的云工程解决方案。
标签:AWS, DPI, EC2, IaC, 服务器加固, 静态网站