安全组是一种虚拟防火墙,通过其规则控制应用型负载均衡ALB实例出/入方向流量。如果您需要拒绝或允许特定IP访问ALB实例,可以使用ALB安全组功能来实现流量访问控制。通过配置ALB安全组,您可以创建黑白名单的访问策略,以便对流量进行更精确的控制。
场景说明
ALB实例未加入安全组时,ALB监听端口默认对所有请求放行。
当ALB实例加入安全组且未设置任何拒绝策略时,ALB监听端口默认对所有请求放通。如果您需要只允许特定IP访问ALB,请注意添加一条拒绝策略进行兜底。
当您的ALB实例有访问控制的诉求,希望控制ALB实例的入流量时,您可以选择为ALB实例添加安全组,同时可基于业务设置相应的安全组规则。
负载均衡的出方向流量为用户请求的回包。为了保证您的业务正常运行,ALB的安全组对出方向流量不做限制,您无需额外配置安全组出方向规则。
本文通过以下两种场景为您介绍ALB安全组的黑白名单访问策略。关于安全组规则的排序策略,请参见安全组规则。
黑名单:ALB安全组对指定IP地址的拒绝访问策略
企业在阿里云某地域使用ALB部署了业务,当公司的安全团队对业务进行安全监测时,发现某IP地址(如121.XX.XX.12)频繁发起恶意请求和攻击尝试,这不仅带来了潜在的业务风险,还有可能导致数据泄露等安全隐患。
为了解决这个问题,可以在ALB中配置安全组规则,限制特定IP地址(如121.XX.XX.12)的访问权限,从而有效阻止恶意请求和攻击尝试,保护业务环境的安全和稳定。
白名单:ALB安全组对指定IP地址的允许访问策略
企业在阿里云某地域使用ALB部署了包含敏感信息的业务。为了严格限制对ALB实例的访问权限,仅允许特定IP地址(如121.XX.XX.12)访问,企业可以为ALB配置安全组规则,设置只允许该IP地址访问,拒绝其他所有IP地址的访问请求。
使用限制
安全组功能默认不开放,如需使用,请向商务经理申请。
普通安全组
企业级安全组
要求安全组为专有网络类型,且安全组和ALB实例属于同一个专有网络VPC(Virtual Private Cloud)。
一个ALB实例最多支持加入4个安全组,且同一个ALB实例加入的安全组类型需保持一致,即不支持同时加入普通安全组和企业级安全组。
某个ALB实例已加入普通安全组,如果需要加入企业级安全组,可解绑当前ALB实例的所有普通安全组后再行操作,反之亦然。
分类 | 安全组类型 | 说明 |
ALB支持加入的安全组 | 关于普通安全组和企业安全组的介绍,请参见普通安全组与企业级安全组。 | |
ALB不支持加入的安全组 | 托管安全组 | 关于托管安全组的介绍,请参见托管安全组。 |
前提条件
您已在华东1(杭州)地域创建专有网络VPC1,并分别在可用区H和可用区I创建了交换机VSW1和VSW2。具体操作,请参见创建专有网络和交换机。
您已在VSW1中创建2台ECS实例,且ECS01和ECS02实例中部署了应用服务。
关于创建ECS实例,请参见自定义购买实例。
本文ECS01和ECS02部署测试应用示例如下:
下表列出本文客户端和服务端的IP配置,仅供参考。
分类 | IP | 说明 |
服务端ECS01 |
| 作为ALB实例后端服务器。 |
服务端ECS02 |
| |
客户端03 | 公网:121.XX.XX.12 | 作为访问ALB实例的客户端。 |
客户端04 | 公网:121.XX.XX.45 |
配置流程
操作步骤
步骤一:创建服务器组
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择服务器组所属的地域。本文选择华东1(杭州)。
在左侧导航栏,选择
。在服务器组页面,单击创建服务器组。
在创建服务器组对话框中,完成以下配置,然后单击创建。
此处仅列出与本文强相关的配置项,其余部分参数可保持默认值。更多信息,请参见创建和管理服务器组。
配置
说明
服务器组类型
选择一种服务器组类型。本文选择服务器类型。
服务器组名称
输入服务器组名称。
VPC
从VPC下拉列表中选择一个VPC。本文选择已创建的VPC1。
选择后端协议
选择一种后端协议。本文选择HTTP。
选择调度算法
选择一种调度算法。本文选择加权轮询。
在服务器组创建成功对话框中单击添加后端服务器。
在后端服务器页签单击添加后端服务器。
在添加后端服务器面板,选择已创建的ECS01和ECS02实例,然后单击下一步。
为已添加的服务器设置端口和权重,然后单击确定。
步骤二:创建ALB示例并配置监听
- 登录应用型负载均衡ALB控制台。
在实例页面,单击创建应用型负载均衡。
在购买页面,完成以下配置。
此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。关于参数的更多信息,请参见创建应用型负载均衡。
地域:本文选择华东1(杭州)。
实例网络类型:本文选择公网。
VPC:本文选择已创建的VPC1。
单击立即购买,然后根据控制台提示完成实例开通。
返回实例页面,找到已创建的ALB实例,单击该ALB实例ID。
单击监听页签,然后单击快速创建监听。
在快速创建监听对话框中,配置以下参数,完成HTTP 80监听的创建,然后单击确定。
配置
说明
选择监听协议
选择监听的协议类型。本文选择HTTP。
监听端口
输入监听端口。本文输入80。
转发的后端服务器组
选择服务器类型及服务器类型下的服务器组。本文选择已创建好的服务器组。
步骤三:设置域名解析
复制ALB实例对应的DNS名称,完成以下步骤,为您的自有域名添加1条指向ALB实例DNS名称的CNAME记录。
登录域名解析控制台。
在域名解析页面单击添加域名。
在添加域名对话框输入您的主机域名,然后单击确认。
重要您的主机域名需已完成TXT记录验证。
在目标域名的操作列单击解析设置。
在解析设置页面,单击添加记录。
在添加记录面板,配置以下信息完成CNAME解析配置,然后单击确认。
配置
说明
记录类型
在下拉列表中选择CNAME。
主机记录
您的域名的前缀。
解析请求来源
选择默认。
记录值
输入域名对应的CNAME地址,即您复制的ALB实例的DNS名称。
TTL
全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。
步骤四:创建安全组
在ALB实例加入安全组前,您需要先至ECS管理控制台创建安全组,按照以下访问规则创建2个安全组。
实现黑名单策略的安全组1
新增拒绝策略的规则。本文以拒绝公网IP(121.XX.XX.12)访问为例,添加一条拒绝策略的规则。默认的安全组规则可保留。
授权策略
优先级
协议类型
端口范围
授权对象
拒绝
1
全部
目的:-1/-1
源:121.XX.XX.12
实现白名单策略的安全组2
新增允许和拒绝的规则。本文以允许公网IP(121.XX.XX.12)为例,添加一条允许策略的规则,并添加一条拒绝策略的规则。
授权策略
优先级
协议类型
端口范围
授权对象
允许
1
全部
目的:-1/-1
源:121.XX.XX.12
拒绝
100
全部
目的:-1/-1
源:0.0.0.0/0
步骤五:ALB实例未加入安全组并验证结果
以客户端03和客户端04为例,测试客户端与ECS01和ECS02的连通性。
登录客户端03,执行
curl http://访问地址
,可以看到如下图所示,收到Hello World ! This is ECS01.
报文,表示该客户端可以访问ALB实例。登录客户端04,执行
curl http://访问地址
,可以看到如下图所示,收到Hello World ! This is ECS02.
报文,表示该客户端可以访问ALB实例。
步骤六:ALB实例加入安全组并验证结果
实现黑名单访问策略
ALB实例加入步骤四:创建安全组创建的安全组1,并验证安全组1中规则对ALB实例的访问控制是否生效。
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择ALB实例的所属的地域。本文选择华东1(杭州)。
在ALB实例页面,找到已创建的ALB实例,单击实例ID。在实例详情页签,单击安全组页签。
在安全组页签,单击添加安全组,在弹出的ALB实例加入安全组对话框中,选择步骤四:创建安全组创建的安全组1,然后单击确定。
在左侧列表框单击目标安全组ID,可单击入方向或出方向页签分别查看安全组规则。
此处仅列出与本文强相关的安全组规则
授权策略
优先级
协议类型
端口范围
授权对象
拒绝
1
全部
目的:-1/-1
源:121.XX.XX.12
ALB实例加入安全组后,测试访问结果。
登录客户端03,执行
curl http://访问地址
,可以看到如下图所示,收到curl: (7) Failed connect to *********:80; Connection timed out
报文表示该客户端被拒绝访问ALB实例。登录客户端04,执行
curl http://访问地址
,可以看到如下图所示,收到Hello World ! This is ECS01.
报文,表示该客户端可以访问ALB实例。
验证结果表明:ALB实例加入实现黑名单策略的安全组1后,安全组内拒绝规则中的IP地址不能访问该ALB实例,不在安全组拒绝规则中的IP可以正常访问。
实现白名单访问策略
ALB实例加入步骤四:创建安全组创建的安全组2,并验证安全组2中规则对ALB实例的访问控制是否生效。
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择ALB实例的所属的地域。本文选择华东1(杭州)。
在ALB实例页面,找到已创建的ALB实例,单击实例ID。在实例详情页签,单击安全组页签。
在安全组页签,单击添加安全组,在弹出的ALB实例加入安全组对话框中,选择步骤四:创建安全组创建的安全组2,然后单击确定。
在左侧列表框单击目标安全组ID,可单击入方向或出方向页签分别查看安全组规则。
此处仅列出与本文强相关的安全组规则
授权策略
优先级
协议类型
端口范围
授权对象
允许
1
全部
目的:-1/-1
源:121.XX.XX.12
拒绝
100
全部
目的:-1/-1
源:所有IPv4(0.0.0.0/0)
ALB实例加入安全组后,测试访问结果。
登录客户端03,执行
curl http://访问地址
,可以看到类似下图所示,收到Hello World ! This is ECS01.
报文,表示该客户端可以访问ALB实例。登录客户端04,执行
curl http://访问地址
,可以看到类似下图所示,收到curl: (7) Failed connect to *********:80; Connection timed out
,表示该客户端被拒绝访问ALB实例。
验证结果表明:ALB实例加入实现白名单策略的安全组2时,安全组内仅允许规则中的IP地址可以访问该ALB实例。
相关文档
关于ALB加入安全组和解绑安全组等操作,请参见ALB加入安全组。
如何配置安全组实现ALB基于监听/端口粒度的访问控制,请参见ALB配置安全组实现基于监听/端口粒度的访问控制。
关于安全组的详细介绍,请参见安全组。
LoadBalancerJoinSecurityGroup:为应用型负载均衡实例绑定已创建的安全组。
LoadBalancerLeaveSecurityGroup:为应用型负载均衡实例解绑安全组。