全部产品
Search
文档中心

负载均衡:配置NLB安全组实现黑白名单访问策略

更新时间:Nov 15, 2024

如果您需要拒绝或允许特定IP访问网络型负载均衡NLB实例,您可以通过NLB安全组功能来实现流量的访问控制。通过设置NLB安全组,您可以实现黑白名单的访问策略,以便对流量进行更精确的控制。

场景说明

  • NLB实例未加入安全组时,NLB监听端口默认对所有请求放通。

  • 当NLB实例加入安全组且未设置任何拒绝策略时,NLB监听端口默认对所有请求放通。如果您需要只允许特定IP访问NLB,请注意添加一条拒绝策略进行兜底。

当您的NLB实例有访问控制的诉求,希望控制NLB实例的入流量时,您可以选择为NLB实例添加安全组,同时可基于业务设置相应的安全组规则。

重要

负载均衡的出方向流量为用户请求的回包,为了保证您的业务正常运行,NLB的安全组对出流量不做限制,您无需额外配置安全组出方向规则。

本文从以下2种场景为例介绍NLB安全组的黑白名单访问策略。关于安全组规则的排序策略,请参见安全组规则排序策略

黑名单:NLB安全组对指定IP地址的拒绝访问策略

image.png

白名单:NLB安全组对指定IP地址的允许访问策略

image.png

使用限制

分类

安全组类型

说明

NLB支持加入的安全组

  • 普通安全组

  • 企业安全组

  • 要求安全组为专有网络类型,且安全组和NLB实例属于同一个专有网络VPC(Virtual Private Cloud)。

  • 一个NLB实例最多支持加入4个安全组,且同一个NLB实例加入的安全组类型需保持一致,即不支持同时加入普通安全组和企业安全组。

    某个NLB实例已加入普通安全组时,如果需要加入企业安全组,可解绑当前NLB实例的所有普通安全组后再行操作,反之亦然。

  • 2022年09月30日前创建的NLB公测实例不支持加入安全组,如需使用安全组功能请更换或新购NLB实例。

关于普通安全组和企业安全组的介绍,请参见普通安全组与企业级安全组

NLB不支持加入的安全组

托管安全组

关于托管安全组的介绍,请参见托管安全组

前提条件

您已创建4台ECS实例。关于如何创建ECS实例,请参见自定义购买实例

  • ECS01和ECS02实例作为NLB实例的后端服务器,且ECS01和ECS02实例中部署了应用服务。

    本文ECS01与ECS02部署测试应用示例如下:

    ECS01服务部署命令

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS01." > index.html
    

    ECS02服务部署命令

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS02." > index.html
    
  • ECS03和ECS04实例为公网实例,用于访问NLB实例。您也可以使用已有的Linux服务器访问NLB实例,这种情况下无需创建ECS03和ECS04实例。

  • 您已注册域名并完成备案,且通过自有域名为NLB配置CNAME解析

    下表列出了本文ECS实例的相关配置,仅供参考。

    分类

    ECS配置

    所属VPC

    IP

    说明

    ECS01

    • 实例规格:ecs.u1-c1m1.large

    • CPU&内存:2核(vCPU) 2 GiB

    • 操作系统:Alibaba Cloud Linux 3.2104 LTS 64位更换操作系统

    • 网络类型:专有网络VPC

    VPC01

    • 私网:192.168.0.24

    • 公网:无

    作为NLB实例后端服务器。

    ECS02

    • 私网:192.168.0.37

    • 公网:无

    ECS03

    VPC02

    • 私网:192.168.0.25

    • 公网:47.XX.XX.55

    作为访问NLB实例的客户端。

    ECS04

    • 私网:192.168.0.26

    • 公网:101.XX.XX.251

步骤一:创建服务器组

  1. 登录网络型负载均衡NLB控制台
  2. 在顶部菜单栏,选择服务器组所属的地域。本文选择华东1(杭州)

  3. 在左侧导航栏,选择网络型负载均衡 NLB > 服务器组

  1. 服务器组页面,单击创建服务器组

  2. 创建服务器组对话框中,完成以下配置,然后单击创建

    此处仅列出部分配置项,其余参数可保持默认值。更多信息,请参见创建服务器组

    配置

    说明

    服务器组类型

    选择一种服务器组类型。本文选择服务器类型

    服务器组名称

    输入服务器组名称。本文输入RS01。

    VPC

    从VPC下拉列表中选择一个VPC。本文选择VPC1,与ECS01、ECS02实例所属VPC保持一致。

    选择后端协议

    选择一种后端协议。本文选择TCP

  3. 服务器组创建成功对话框中单击添加后端服务器

  4. 后端服务器页签单击添加后端服务器

  5. 添加后端服务器面板,选择已创建的ECS01、ECS02实例,然后单击下一步

  6. 为已添加的服务器设置端口和权重,然后单击确定。本文端口输入80,权重保持默认值。

步骤二:创建NLB实例并配置监听

  1. 在左侧导航栏,选择网络型负载均衡NLB > 实例,在实例页面,单击创建网络型负载均衡

  2. 网络型负载均衡(按量付费)购买页面,完成以下配置。

    此处仅列出部分配置项。其余参数的配置,请参见创建实例

    • 地域:本文选择华东1(杭州)

    • 实例网络类型:本文选择公网

    • VPC:本文选择VPC01。

  3. 单击立即购买,然后根据控制台提示完成实例购买。

  4. 返回实例页面,找到已创建的NLB实例,单击该NLB实例ID。

  5. 单击监听页签,在监听页签单击快速创建监听。在快速创建监听对话框中,配置以下参数,完成TCP 80监听的创建,然后单击确定

    监听配置

    说明

    选择负载均衡协议

    选择监听的协议类型。本文选择TCP

    监听端口

    输入监听端口,本文输入80。

    转发的后端服务器组

    选择服务器类型服务器类型下的服务器组。

    本文选择步骤一:创建服务器组创建的服务器组。

  6. NLB实例未加入安全组时,验证访问结果。验证过程中执行的curl -s http://whatismyip.akamai.com/ 命令是为了获取当前客户端的公网IP地址,以方便您识别当前客户端。

    1. 登录ECS03实例,执行telnet 域名 80命令,测试ECS03实例是否可以访问NLB实例。

      收到如下所示的回复报文,则表示访问成功。

      p698514.png

    2. 登录ECS04实例。执行telnet 域名 80命令,测试ECS04实例是否可以访问NLB实例。

      收到如下所示的回复报文,则表示访问成功。

      p698636.png

    验证结果表明:NLB实例未加入安全组时,ECS03和ECS04可正常访问NLB实例。

步骤三:创建安全组

NLB实例加入安全组前,您需要先至ECS管理控制台创建安全组,按照以下访问规则创建2个安全组。

  • 实现黑名单策略的安全组1

    新增拒绝策略的规则。本文以拒绝ECS03实例的公网IP(47.XX.XX.55)访问为例,添加一条拒绝策略的规则,默认的安全组规则可保留。

    授权策略

    优先级

    协议类型

    端口范围

    授权对象

    拒绝

    1

    全部

    目的:-1/-1

    源:47.XX.XX.55

  • 实现白名单策略的安全组2

    新增允许和拒绝的规则。本文以允许ECS03实例的公网IP(47.XX.XX.55)访问为例,添加一条允许策略的规则,并增加一条拒绝策略的规则,如下表。

    授权策略

    优先级

    协议类型

    端口范围

    授权对象

    允许

    1

    全部

    目的:-1/-1

    源:47.XX.XX.55

    拒绝

    100

    全部

    目的:-1/-1

    源:0.0.0.0/0

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择网络与安全 > 安全组

  3. 在顶部菜单栏,选择安全组所属的地域。本文选择华东1(杭州)

  4. 安全组页面,单击创建安全组

  5. 创建安全组页面,设置安全组的基本信息参数。

    此处仅列出部分配置项,其余参数的配置请参见创建安全组

    • 网络:本文选择VPC1,与NLB实例所属VPC保持一致。

    • 安全组类型:本文选择普通安全组

  6. 创建安全组安全组页面,设置安全组的访问规则参数。

    1. 入方向单击手动添加,分别按照实现黑名单策略的安全组1实现白名单策略的安全组2的规则创建

    2. 单击创建安全组

步骤四:NLB实例加入安全组并验证结果

实现黑名单访问策略

NLB实例加入步骤三:创建安全组创建的安全组1,并验证安全组1中规则对NLB实例的访问控制是否生效。

  1. 登录网络型负载均衡NLB控制台
  2. 在顶部菜单栏,选择NLB实例所属的地域。本文选择华东1(杭州)

  3. NLB实例页面,找到步骤二:创建NLB实例并配置监听创建的NLB实例,单击实例ID。在实例详情页签,单击安全组页签。

  4. 安全组页签,单击添加安全组,在弹出的NLB实例加入安全组对话框中,选择步骤三:创建安全组创建的安全组,然后单击确定

  5. 在左侧列表框单击目标安全组ID,可单击入方向出方向页签分别查看安全组规则。

    此处仅列出与本文强相关的安全组规则。

    授权策略

    优先级

    协议类型

    端口范围

    授权对象

    拒绝

    1

    全部

    目的:-1/-1

    源:47.XX.XX.55

  6. NLB实例加入安全组后,测试访问结果。验证过程中执行的curl -s http://whatismyip.akamai.com/ 命令是为了获取当前客户端的公网IP地址,以方便您识别当前客户端。

    1. 登录ECS03实例。执行telnet 域名 80命令,测试ECS03实例是否可以访问NLB实例。

      收到如下所示的回复报文,则表示访问失败。p698637.png

    2. 登录ECS04实例,执行telnet 域名 80命令,测试ECS04实例是否可以访问NLB实例。

      收到如下所示的回复报文,则表示访问成功。p698638.png

    验证结果表明:NLB实例加入实现黑名单策略的安全组1后,安全组内拒绝规则中的IP地址不能访问该NLB实例,不在安全组拒绝规则中的IP可以正常访问。

实现白名单访问策略

NLB实例加入步骤三:创建安全组创建的安全组2,并验证安全组2中规则对NLB实例的访问控制是否生效。

  1. 登录网络型负载均衡NLB控制台
  2. 在顶部菜单栏,选择NLB实例所属的地域。本文选择华东1(杭州)

  3. NLB实例页面,找到步骤二:创建NLB实例并配置监听创建的NLB实例,单击实例ID。在实例详情页签,单击安全组页签。

  4. 安全组页签,单击添加安全组,在弹出的NLB实例加入安全组对话框中,选择步骤三:创建安全组创建的安全组2,然后单击确定

  5. 在左侧列表框单击目标安全组ID,可单击入方向出方向页签分别查看安全组规则。

    授权策略

    优先级

    协议类型

    端口范围

    授权对象

    允许

    1

    全部

    目的:-1/-1

    源:47.XX.XX.55

    拒绝

    100

    全部

    目的:-1/-1

    源:0.0.0.0/0

  6. NLB实例加入安全组后,测试访问结果。验证过程中执行的curl -s http://whatismyip.akamai.com/ 命令是为了获取当前客户端的公网IP地址,以方便您识别当前客户端。

    1. 登录ECS03实例。执行telnet 域名 80命令,测试ECS03实例是否可以访问NLB实例。

      收到如下所示的回复报文,则表示访问成功。p738563.png

    2. 登录ECS04实例,执行telnet 域名 80命令,测试ECS04实例是否可以访问NLB实例。

      收到如下所示的回复报文,则表示访问失败。p738568.png

    验证结果表明:NLB实例加入实现白名单策略的安全组2时,安全组内仅允许规则中的IP地址可以访问该NLB实例。

相关文档