安全组

安全组:给云主机提供三层网络防火墙控制,控制TCP/UDP/ICMP等数据包进行有效过滤,对指定网络的指定云主机按照指定的安全规则进行有效控制。
  • 扁平网络、云路由网络和VPC均支持安全组服务,安全组服务均由安全组网络服务模块提供,使用方法均相同:使用iptables进行云主机防火墙的安全控制。
  • 安全组实际上是一个分布式防火墙;每次规则变化、加入/删除网卡都会导致多个云主机上的防火墙规则被更新。
安全组规则:
  • 安全组规则按数据包的流向分为两种类型:
    • 入方向(Ingress):代表数据包从外部进入云主机。
    • 出方向(Egress):代表数据包从云主机往外部发出。
  • 安全组规则对通信协议支持以下类型:
    • ALL:表示涵盖所有协议类型,此时不能指定端口。
    • TCP:支持1-65535端口。
    • UDP:支持1-65535端口。
    • ICMP:默认起始结束端口均为-1,表示支持全部的ICMP协议。
  • 安全组规则支持对数据来源的限制,目前源可以设置为CIDR和安全组。
    • CIDR作为源:仅允许指定的CIDR才可通过
    • 安全组作为源:仅允许指定的安全组内的云主机才可通过
    Note: 如果两者都设置,只取两者交集。
Figure 1所示:
Figure 1. 安全组


使用安全组的基本流程为:选择三层网络,设置相应的防火墙规则,选择指定的云主机加入规则中。

以下介绍VPC下安全组的使用方法,包括两个场景:
  • VPC下仅有一个VPC网络(VPC子网):安全组使用方法与云路由网络场景的安全组使用方法相同。
  • VPC下有多个VPC子网:
    • 对两个VPC子网下的云主机设置入方向规则;
    • 对两个VPC子网下的云主机设置出方向规则。
  1. 在一个VPC下搭建两个VPC子网,例如:VPC网络-1和VPC网络-2,使用VPC网络-1创建云主机VM-1,使用VPC网络-2创建云主机VM-2。详情可参考本教程基本部署章节。
  2. 创建安全组。
    ZStack私有云主菜单,点击网络服务 > 安全组,进入安全组界面,点击创建安全组,在弹出的创建安全组界面,可参考以下示例输入相应内容:
    • 名称:设置安全组名称
    • 简介:可选项,可留空不填
    • 网络:选择已创建的VPC网络,例如:VPC网络-1
    • 规则:可选项,用于设置相应的防火墙规则
      Note: 创建安全组的时候可点击规则后面的+进行添加,也可后续添加,详见设置入方向规则设置出方向规则
    • 网卡:可选项,选择网卡加入安全组
      Note: 创建安全组的时候可点击网络后面的+进行添加,也可后续添加,详见添加网卡到安全组
    Figure 2所示,点击确定完成安全组创建。
    Figure 2. 创建安全组


  3. 添加网卡到安全组。
    安全组界面,点击已创建的安全组名称,点击云主机网卡子页面的操作 > 绑定云主机网卡按钮,进入选择网卡界面,选择VM-1网卡,如Figure 3所示,点击确定按钮完成网卡添加。
    Figure 3. 添加网卡


  4. 设置入方向规则并验证。
    1. 设置入方向规则。
      安全组界面,点击已创建的安全组名称,点击规则子页面的操作 > 添加规则按钮,进入设置规则界面,可参考以下示例输入相应内容:
      • 类型:入方向
      • 协议:TCP
      • 开始端口:20
      • 结束端口:100
      • CIDR:可选项,仅允许指定的CIDR才可通过,可留空不填
      • 源安全组:可选项,仅允许指定的安全组内的云主机才可通过,可留空不填
      Figure 4所示,点击确定,完成入方向规则设置。
      Figure 4. 设置入方向规则


    2. 入方向规则验证。
      此时VM-1只允许外部通过端口20~100访问。
      1. 登录VM-2,使用nc命令通过20端口与VM-1建立通信连接,可成功通信。
        Note: 需将VM-1中原有的iptables规则清除,可使用命令iptables -F
        Figure 5Figure 6所示:
        Figure 5. VM-2在端口20向VM-1发送信息


        Figure 6. VM-1在端口20接收信息成功


      2. 登录VM-2,使用nc命令通过10端口与VM-1建立通信,通信会失败。如Figure 7所示:
        Figure 7. VM-2在端口10尝试连接VM-1失败


  5. 设置出方向规则并验证。
    1. 设置出方向规则。
      安全组界面,点击已创建的安全组名称,点击规则子页面的操作 > 添加规则按钮,进入设置规则界面,可参考以下示例输入相应内容:
      • 类型:出方向
      • 协议:TCP
      • 开始端口:200
      • 结束端口:1000
      • CIDR:可选项,仅允许指定的CIDR才可通过,可留空不填
      • 源安全组:可选项,仅允许指定的安全组内的云主机才可通过,可留空不填
      Figure 8所示,点击确定,完成入方向规则设置。
      Figure 8. 设置出方向规则


    2. 出方向规则验证。
      此时云主机VM-1只允许通过端口200~1000访问外部地址。
      1. 登录VM-1,使用nc命令通过200端口与VM-2建立通信,可成功通信。
        Note: 需将VM-2中原有的iptables规则清除,可使用命令iptables -F
        Figure 9Figure 10所示:
        Figure 9. VM-1在端口200向VM-2发送信息


        Figure 10. VM-2在端口200接收信息成功


      2. 登录VM-1,使用nc命令通过10端口与VM-2建立通信,通信会失败。如Figure 11所示:
        Figure 11. VM-1在端口10尝试连接VM-2失败


至此,安全组的使用方法介绍完毕。