# 安全组配置示例
当您在VPC子网内创建实例（云服务器、云容器、云数据库等）时，您可以使用系统提供的[默认安全组default](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0603.html)，您也可以创建其他安全组。无论是默认安全组，还是您创建的安全组，您均可以[在安全组内设置出方向和入方向规则](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0030878383.html)，以此控制出入实例的流量。以下为您介绍一些常用的安全组的配置示例：
- [通过本地服务器远程登录云服务器]
- [在本地服务器远程连接云服务器上传或者下载文件（FTP）]
- [在云服务器上部署Web服务]
- [使用ping命令测试云服务器网络连通性]
- [实现不同安全组的实例内网网络互通]
- [云服务器提供数据库访问服务]
- [限制云服务器访问外部网站]
![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/note_3.0-zh-cn.png)
如果您的安全组规则配置完成后不生效，请您参考[为什么配置的安全组规则不生效](https://support.huaweicloud.com/vpc_faq/faq_security_0006.html)排查可能原因，或者[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)联系客服处理。
#### 使用须知
在配置安全组规则之前，您需要先了解以下信息：
- **不同安全组之间的实例默认网络隔离，无法互相访问。**
- **安全组默认拒绝所有来自外部的请求** ，即本安全组内的实例网络互通，外部无法访问安全组内的实例。
  您需要遵循白名单原则添加安全组入方向规则，允许来自外部的特定请求访问安全组内的实例。
  
- **安全组入方向规则的源地址设置为0.0.0.0/0或::/0，表示允许或拒绝所有外部IP地址访问您的实例，如果将"22、3389、8848"等[高危端口](https://support.huaweicloud.com/bestpractice-securityInfo/securityInfo_01_0028.html)暴露到公网，可能导致网络入侵，造成业务中断、数据泄露或数据勒索等严重后果。建议您将安全组规则设置为仅允许已知的IP地址访问。**
- **安全组的出方向规则一般默认全部放通** ，即允许安全组内的实例访问外部。
  如果出方向规则被删除，将会导致安全组内实例无法正常访问外部，您可以参考[表1]重新添加规则。
   表1安全组默认出方向规则 
  | 方向   | 优先级 | 策略   | 类型   | 协议端口 | 目的地址      | 描述                                  |
  |:---|:---|:---|:---|:---|:---|:---|
  | 出方向  | 1      | 允许    | IPv4  | 全部       | 0.0.0.0/0 | 针对全部IPv4协议，允许安全组内的实例可访问外部任意IP和端口。    |
  | 出方向 | 1    | 允许 | IPv6 | 全部    | ::/0      | 针对全部IPv6协议，允许安全组内的实例可访问外部任意IP和端口。 |
     
  **了解更多安全组和安全组规则的配置原则和建议，请参见[安全组应用指导](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0073379079.html#section8)**。
  
 
 #### 通过本地服务器远程登录云服务器
安全组默认拒绝所有来自外部的请求，如果您需要通过本地服务器远程登录安全组内的云服务器，那么需要根据您的云服务器操作系统类型，在安全组入方向添加对应的规则。
- 通过SSH远程登录Linux云服务器，需要放通SSH(22)端口，请参见[表2]。
- 通过RDP远程登录Windows云服务器，需要放通RDP(3389)端口，请参见[表3]。
   表2通过SSH远程登录Linux云服务器 
  | 方向 | 优先级 | 策略 | **类型**     | 协议端口     | 源地址         |
  |:---|:---|:---|:---|:---|:---|
  | 入方向    | 1    | 允许    | **IPv4** | 自定义TCP: 22 | IP地址：0.0.0.0/0 |
     
   表3通过RDP远程登录Windows云服务器 
  | 方向   | 优先级 | 策略    | 类型 | 协议端口        | 源地址           |
  |:---|:---|:---|:---|:---|:---|
  | 入方向 | 1  | 允许 | IPv4 | 自定义TCP: 3389 | IP地址：0.0.0.0/0 |
     
  ![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/caution_3.0-zh-cn.png)
  源地址设置为0.0.0.0/0表示允许所有外部IP地址远程登录云服务器，如果将当前端口暴露到公网，可能存在网络安全风险，建议您将源IP设置为已知的IP地址（比如云服务器绑定的弹性公网IP地址），配置示例请参见[表4]。
   表4通过已知IP地址远程登录云服务器 
  | 云服务器类型       | 方向 | 优先级 | 策略   | 类型     | 协议端口         | 源地址                  |
  |:---|:---|:---|:---|:---|:---|:---|
  | Linux云服务器   | 入方向 | 1   | 允许   | IPv4 | 自定义TCP: 22  | IP地址：12.XX.0.6/32   |
  | Windows云服务器 | 入方向   | 1  | 允许 | IPv4  | 自定义TCP: 3389 | IP地址：12.XX.0.7/32 |
     
  
 
 #### 在本地服务器远程连接云服务器上传或者下载文件（FTP）
安全组默认拒绝所有来自外部的请求，如果您需要在本地服务器远程连接云服务器上传或者下载文件，那么您需要开通FTP(20、21)端口。
表5通过任意服务器远程连接云服务器上传或者下载文件 
| 方向    | 优先级 | 策略  | 类型    | 协议端口         | 源地址           |
|:---|:---|:---|:---|:---|:---|
| 入方向 | 1   | 允许 | IPv4 | 自定义TCP: 20-21 | IP地址：0.0.0.0/0 |
   
![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/caution_3.0-zh-cn.png)
- 源地址设置为0.0.0.0/0表示允许所有外部IP地址远程连接云服务器上传或者下载文件，如果将当前端口暴露到公网，可能存在网络安全风险，建议您将源IP设置为已知的IP地址，配置示例请参见[表6]。
- 您需要在弹性云服务器上先安装FTP服务器程序，再查看20、21端口是否正常工作。安装FTP服务器的操作请参见[搭建FTP站点（Windows）](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_topic_0109733866.html)、[搭建FTP站点（Linux）](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_topic_0115828034.html)。
 
 表6通过已知的服务器远程连接云服务器上传或者下载文件 
| 方向    | 优先级 | 策略  | 类型    | 协议端口            | 源地址                 |
|:---|:---|:---|:---|:---|:---|
| 入方向 | 1  | 允许 | IPv4 | 自定义TCP: 20-21 | IP地址：192.168.0.0/24 |
   
 #### 在云服务器上部署Web服务
安全组默认拒绝所有来自外部的请求，如果您在云服务器上搭建了可供外部访问的网站，则您需要在安全组入方向添加对应的规则，放通对应的端口，例如HTTP(80)、HTTPS(443)。
表7在云服务器上部署Web服务 
| 方向   | 优先级 | 策略    | 类型    | 协议端口          | 源地址               |
|:---|:---|:---|:---|:---|:---|
| 入方向 | 1  | 允许   | IPv4 | 自定义TCP: 80    | IP地址：0.0.0.0/0   |
| 入方向 | 1  | 允许 | IPv4 | 自定义TCP: 443 | IP地址：0.0.0.0/0 |
   
 #### 使用**ping**命令测试云服务器网络连通性
ICMP协议用于网络消息的控制和传递，因此在进行一些基本测试操作之前，需要开通ICMP协议访问端口。比如，您需要在某台个人PC上使用**ping**命令来测试云服务器的网络连通性，则您需要在云服务器所在安全组的入方向添加以下规则，放通ICMP端口。
表8使用ping命令验证网络连通性 
| 方向     | 优先级 | 策略   | 类型     | 协议端口       | 源地址          |
|:---|:---|:---|:---|:---|:---|
| 入方向    | 1    | 允许  | IPv4    | ICMP: 全部  | IP地址：0.0.0.0/0 |
| 入方向 | 1  | 允许 | IPv6 | ICMP: 全部 | IP地址：::/0    |
   
 #### 实现不同安全组的实例内网网络互通
同一个VPC内，位于不同安全组内的实例网络不通。如果您需要在同一个VPC内的实例之间共享数据，比如安全组sg-A内的云服务器访问安全组sg-B内的MySQL数据库，您需要通过在安全组sg-B中添加一条入方向规则，允许来自安全组sg-A内云服务器的内网请求进入。
表9实现不同安全组的实例网络互通 
| 方向  | 优先级 | 策略 | 类型      | 协议端口        | 源地址      |
|:---|:---|:---|:---|:---|:---|
| 入方向 | 1 | 允许   | IPv4 | 自定义TCP: 3306 | 安全组：sg-A |
   
![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/caution_3.0-zh-cn.png)
如果您通过中间网络实例在不同子网的实例之间转发流量，如[安全组应用示例](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0073379079.html#section4)中的"控制虚拟IP访问安全组内实例"，子网Subnet-A的ECS通过虚拟IP和子网Subnet-B的ECS互相通信。由于存在中间网络实例，此时安全组规则的源地址选择实例所在的安全组时，无法放通中间网络实例转发的流量，源地址必须设置成中间网络实例的私有IP地址或者子网网段。
 #### 云服务器提供数据库访问服务
安全组默认拒绝所有来自外部的请求，如果您在云服务器上部署了数据库服务，允许其他实例通过内网访问数据库服务，则您需要在部署数据库服务器所在的安全组内，添加入方向规则，放通对应的端口，实现其他实例通过内网获取数据库数据的请求。常见的数据库类型及其对应的端口如下：
- MySQL(3306)
- Oracle(1521)
- MS SQL(1433)
- PostgreSQL(5432)
- Redis(6379)
 
本示例中源地址提供的配置仅供参考，请您根据实际需求设置源地址。
表10云服务器提供数据库访问服务 
| 方向   | 优先级 | 策略  | 类型    | 协议端口         | 源地址                  | 描述                                                |
|:---|:---|:---|:---|:---|:---|:---|
| 入方向  | 1      | 允许   | IPv4    | 自定义TCP: 3306 | 安全组：sg-A            | 允许安全组sg-A内云服务器访问MySQL数据库服务。                       |
| 入方向 | 1    | 允许 | IPv4   | 自定义TCP: 1521 | 安全组：sg-B             | 允许安全组sg-B内云服务器访问Oracle数据库服务。                       |
| 入方向  | 1    | 允许  | IPv4   | 自定义TCP: 1433  | IP地址：172.16.3.21/32  | 允许私网IP地址为172.16.3.21的云服务器访问MS SQL数据库服务。          |
| 入方向 | 1   | 允许 | IPv4 | 自定义TCP: 5432   | IP地址：192.168.0.0/24 | 允许私网IP地址属于192.168.0.0/24网段的云服务器访问PostgreSQL数据库服务。 |
| 入方向  | 1   | 允许   | IPv4 | 自定义TCP: 6379  | IP地址组：ipGroup-A     | 允许私网IP地址属于IP地址组ipGroup-A范围内的云服务器访问Redis数据库服务。       |
   
 #### 限制云服务器访问外部网站
安全组的出方向规则一般默认全部放通，默认规则如[表12]所示。如果您需要限制服务器只能访问特定网站，则按照如下要求配置：
1. 首先，您需要遵循白名单规则，在安全组出方向规则中添加指定的端口和IP地址。
   表11限制云服务器访问外部网站 
   | 方向 | 优先级 | 策略   | 类型      | 协议端口       | 目的地址                 | 描述                                                 |
   |:---|:---|:---|:---|:---|:---|:---|
   | 出方向 | 1 | 允许  | IPv4    | 自定义TCP: 80  | IP地址：132.15.XX.XX  | 允许安全组内云服务器访问指定的外部网站，网站地址为http://132.15.XX.XX:80。     |
   | 出方向 | 1 | 允许 | IPv4 | 自定义TCP: 443 | IP地址：145.117.XX.XX | 允许安全组内云服务器访问指定的外部网站，网站地址为https://145.117.XX.XX:443。 |
      
   
2. 其次，删除安全组出方向中原有放通全部流量的规则，如[表12]所示。
    表12安全组默认出方向规则 
   | 方向   | 优先级 | 策略   | 类型   | 协议端口 | 目的地址      | 描述                                  |
   |:---|:---|:---|:---|:---|:---|:---|
   | 出方向  | 1      | 允许    | IPv4  | 全部       | 0.0.0.0/0 | 针对全部IPv4协议，允许安全组内的实例可访问外部任意IP和端口。    |
   | 出方向 | 1    | 允许 | IPv6 | 全部    | ::/0      | 针对全部IPv6协议，允许安全组内的实例可访问外部任意IP和端口。 |
      
   
 
#### 相关链接
[ECS常用端口](https://support.huaweicloud.com/usermanual-vpc/SecurityGroup_0002.html)
