Acnweze/azure-secure-network-architecture

GitHub: Acnweze/azure-secure-network-architecture

该项目演示了一种企业级 Azure 网络安全架构,通过子网分段、NSG 访问控制和多层隔离实现仅允许必要通信的云安全模型。

Stars: 0 | Forks: 0

# Azure 网络安全架构项目 ## 项目概述 本项目演示了采用分块应用设计的安全 Azure 网络架构。 该环境包含: * 面向公网的 Web 服务器 VM * 私有数据库 VM * 用于控制流量的网络安全组(NSG) * 通过受限制的 SSH 规则进行安全管理访问 * 证明允许和阻止流量的验证测试 目标是实现一个真实的云安全模型,在该模型中仅允许必要的通信路径。 # 架构设计 ``` Internet | | HTTP (80) / HTTPS (443) | ▼ CONTOSO-WEB-01 Ubuntu 24.04 Private IP: 10.30.1.4 Public IP: Enabled | | MySQL TCP 3306 | ▼ CONTOSO-DB-01 Ubuntu 24.04 Private IP: 10.30.2.4 Public IP: Removed ``` # Azure 资源 ## 资源组 使用的资源组: * RG-CONTOSO-SECURITY ![资源组](https://static.pigsec.cn/wp-content/uploads/repos/cas/50/50e047e98671b1c448b2baa1288bbbd7b90a8f67fcb193575d4e464fc58f32cc.png) ## 虚拟机 已部署: | VM | 角色 | 子网 | | -------------- | --------------- | --------------- | | CONTOSO-WEB-01 | Web Server | Web-Subnet | | CONTOSO-DB-01 | Database Server | Database-Subnet | ![虚拟机](https://static.pigsec.cn/wp-content/uploads/repos/cas/42/42afa30ebc42ad45eeb4854d9e9051997a841dbcce8db15b8a407f82e1ac2847.png) # 网络设计 ## 虚拟网络 VNet: * VNET-Contoso-Secure 子网: * Web-Subnet * Database-Subnet ![VNet 子网](https://static.pigsec.cn/wp-content/uploads/repos/cas/a4/a4fdefd9a3c2d81d6f498bf7be3266819cffb4e90791037add2364ba8232b32f.png) # Web 服务器配置 ## SSH 访问 通过受限制的 SSH 访问连接到 Web VM。 ![SSH Web VM](https://static.pigsec.cn/wp-content/uploads/repos/cas/20/20378d993d89d7f5a2861ac7661fd5e30e89be02f2ce937522f36be6dbb7ba09.png) ## Nginx 部署 安装并配置了 Nginx 作为 Web 服务器。 服务状态: ![Nginx 运行中](https://static.pigsec.cn/wp-content/uploads/repos/cas/01/018bf6db0db859c4c4503bd41bb81028996700a3a5bf4b8bea6a9aa18e2c6800.png) 网页验证: ![Nginx 网页](https://static.pigsec.cn/wp-content/uploads/repos/cas/a5/a5eb58cd27741d3fc80229ce3f0e2d79397a70befc98b41da5d9fd7dbf711c23.png) # 数据库服务器配置 ## 数据库 VM 访问 连接到私有数据库服务器。 ![SSH 数据库 VM](https://static.pigsec.cn/wp-content/uploads/repos/cas/a5/a5336c7100f06f36d4b73f31e8ed4c8ace88a0099ef9e071eff8c75845376d12.png) ## MySQL 安装 在数据库服务器上安装并配置了 MySQL。 ![MySQL 运行中](https://static.pigsec.cn/wp-content/uploads/repos/cas/77/77f76830a388782a1ece1be670d5a8fd9543d2df12e93b3f4680346600d01e5c.png) ## MySQL 网络配置 更新了 MySQL 绑定,以允许私有网络通信。 ![MySQL 网络配置](https://static.pigsec.cn/wp-content/uploads/repos/cas/90/90c0cea7654c24e6306ee300b05204f8e9b279d7d2728c7a3049c41328081b3c.png) # 网络安全组(NSG) ## Web 层 NSG 实现控制以下内容的规则: * HTTP 访问 * HTTPS 访问 * 受限制的 SSH 管理 ![Web NSG 规则](https://static.pigsec.cn/wp-content/uploads/repos/cas/eb/eb15f47608bdde693f1c085b9c773a9e52757b6443033248e4b48b00a47e9a3f.png) SSH 访问被限制为管理员公网 IP。 ![SSH 限制](https://static.pigsec.cn/wp-content/uploads/repos/cas/51/515cdc04b08196ca70302fd54cb90c4d3bfac43a667c87920d80c6f4791faccb.png) ## 数据库层 NSG 数据库访问仅限于必要的流量。 ![数据库 NSG 规则](https://static.pigsec.cn/wp-content/uploads/repos/cas/66/66dab633688caa2a0dfd950ba79ab6b862f8153aa2d13f9260b98ddec2c55bdf.png) # 安全测试 ## 测试 1 — Web 服务器到数据库的连接 允许的流量: ``` Source: CONTOSO-WEB-01 10.30.1.4 Destination: CONTOSO-DB-01 10.30.2.4 Protocol: TCP Port: 3306 ``` 结果: MySQL 连接成功 ![Web 到数据库的连接](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/391b3d8047cdbe3e212d8c5414590950a4e26e9deb720af9eb2a9f5ae5e8539b.png) ## 测试 2 — MySQL 用户限制 创建了专用的数据库用户: ``` webapp@10.30.1.% ``` 这将数据库访问权限仅限制在 Web 子网内。 ![MySQL Webapp 用户](https://static.pigsec.cn/wp-content/uploads/repos/cas/9a/9abc8b28312e3809da30a5f670a5973b04a99f7b2ef98ea3ddeb3753117029f1.png) ## 测试 3 — 数据库到 Web 的 HTTP 阻止 尝试: ``` curl http://10.30.1.4 ``` 预期: 已阻止 结果: 流量被 NSG 规则拒绝 ![被阻止的流量测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/62/6209c0e50c9e730db6f437333a80b5c6a8f7e2616df4e66c9ead9308b967b6b5.png) # 数据库安全改进 从数据库 VM 中移除了公网 IP。 之前: ``` Database VM Public IP: Enabled ``` 之后: ``` Database VM Private IP Only 10.30.2.4 ``` ![移除数据库公网 IP](https://static.pigsec.cn/wp-content/uploads/repos/cas/84/841b55ecab9fca2a4e6c1849ea1e723445948b7d3501902ac4dd0ae741f6cd5c.png) # SSH 安全验证 在管理员 IP 更改后更新了 SSH 访问。 ![SSH 管理 IP 更新](https://static.pigsec.cn/wp-content/uploads/repos/cas/2b/2b53cfc2a5dd1e0521b4134c540152833781289e20e2da7014ace13343069392.png) # 已实施的安全控制 * 使用 Azure 子网进行网络分块 * Web 层与数据库层隔离 * 基于 NSG 的流量过滤 * 受限制的 SSH 管理 * 仅限数据库私有访问 * MySQL 访问权限仅限于 Web 子网 * 阻止未授权的通信路径 * 通过实际流量验证测试了安全规则 # 主要学习成果 通过本项目,我实践了: * Azure 虚拟网络设计 * 子网分块 * 网络安全组配置 * Linux VM 管理 * Nginx 部署 * MySQL 服务器配置 * 安全云架构原则 * 安全测试与验证 # 项目状态 已完成 本项目演示了一个生产级的 Azure 网络安全架构,具备受控访问、分块以及经过验证的安全规则。
标签:Azure, NSG, Streamlit, 网络安全架构, 网络隔离, 访问控制