全部產品
Search
文件中心

Server Load Balancer:配置安全性群組實現NLB基於監聽/連接埠粒度的存取控制

更新時間:Nov 16, 2024

為了提高雲上流量入口安全性,如果您需要對NLB進行基於協議/連接埠/IP的存取控制,可以通過為NLB執行個體配置安全性群組來實現。與傳統負載平衡CLB使用的ACL組不同,NLB通過安全性群組能力可實現更細粒度的存取控制,可以在整個執行個體上實現基於協議/連接埠的存取控制。本文為您介紹NLB執行個體如何通過安全性群組實現基於監聽/連接埠粒度的存取控制。

情境說明

  • NLB執行個體未加入安全性群組時,NLB監聽連接埠預設對所有請求放通。

  • 當NLB執行個體加入安全性群組且未設定任何拒絕策略時,NLB監聽連接埠預設對所有請求放通。如果您需要只允許特定IP訪問NLB,請注意添加一條拒絕策略進行兜底。

當您的NLB執行個體有存取控制的訴求,希望控制NLB執行個體的入流量時,您可以選擇為NLB執行個體添加安全性群組,同時可基於業務設定相應的安全性群組規則。

重要

負載平衡的出方向流量為使用者請求的回包,為了保證您的業務正常運行,NLB的安全性群組對出流量不做限制,您無需額外配置安全性群組出方向規則。

本文從以下三種操作來說明NLB執行個體加入安全性群組後對協議/連接埠的存取控制,且以NLB執行個體配置TCP 80監聽和TCP 81監聽為例說明。

編號

安全性群組規則

預期結果

相關操作鏈結接

操作一:NLB執行個體未加入安全性群組

NLB監聽連接埠預設對所有請求允許存取。

此處僅以NLB執行個體配置TCP 80監聽和TCP 81監聽為例說明。

  • 允許用戶端訪問NLB執行個體的TCP 80監聽

  • 允許用戶端訪問NLB執行個體的TCP 81監聽

步驟二:建立NLB執行個體並配置監聽

操作二:NLB執行個體加入安全性群組

拒絕訪問TCP協議的81連接埠

說明

此處僅列出與本文強相關的安全性群組規則,其餘預設規則未列出。

  • 允許用戶端訪問NLB執行個體的TCP 80監聽

  • 拒絕用戶端訪問NLB執行個體的TCP 81監聽

步驟四:NLB執行個體加入安全性群組並驗證結果

操作三:修改NLB執行個體加入的安全性群組

  • 拒絕訪問TCP協議的80連接埠

  • 拒絕訪問TCP協議的81連接埠

說明

此處僅列出與本文強相關的安全性群組規則,其餘預設規則未列出。

  • 拒絕用戶端訪問NLB執行個體的TCP 80監聽

  • 拒絕用戶端訪問NLB執行個體的TCP 81監聽

步驟五:修改安全性群組並驗證結果

使用限制

分類

安全性群組類型

說明

NLB支援加入的安全性群組

  • 普通安全性群組

  • 企業安全性群組

  • 要求安全性群組為專用網路類型,且安全性群組和NLB執行個體屬於同一個Virtual Private Cloud(Virtual Private Cloud)。

  • 一個NLB執行個體最多支援加入4個安全性群組,且同一個NLB執行個體加入的安全性群組類型需保持一致,即不支援同時加入普通安全性群組和企業安全性群組。

    某個NLB執行個體已加入普通安全性群組時,如果需要加入企業安全性群組,可解除綁定當前NLB執行個體的所有普通安全性群組後再行操作,反之亦然。

  • 2022年09月30日前建立的NLB公測執行個體不支援加入安全性群組,如需使用安全性群組功能請更換或新購NLB執行個體。

關於普通安全性群組和企業安全性群組的介紹,請參見普通安全性群組與企業級安全性群組

NLB不支援加入的安全性群組

託管安全性群組

關於託管安全性群組的介紹,請參見託管安全性群組

前提條件

  • 您已建立Virtual Private Cloud1,具體操作,請參見建立和管理專用網路

  • 您已在VPC1中建立了2台ECS執行個體。ECS01和ECS02執行個體作為NLB執行個體的後端伺服器,且ECS01和ECS02執行個體中部署了應用服務。

    • 關於建立ECS執行個體,請參見自訂購買執行個體

    • 本文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
      
  • 您已註冊網域名稱並完成備案,且通過自有網域名稱為NLB配置CNAME解析

步驟一:建立伺服器組

  1. 登入網路型負載平衡NLB控制台
  2. 在頂部功能表列,選擇伺服器組所屬的地區。本文選擇華東1(杭州)

  3. 在左側導覽列,選擇網路型負載均衡 NLB > 伺服器組

  4. 伺服器組頁面,單擊建立伺服器組

  5. 建立伺服器組對話方塊中,完成以下配置,然後單擊建立

    此處僅列出與本文強相關的配置項,其餘部分參數可保持預設值。更多資訊,請參見建立伺服器組

    配置

    說明

    伺服器群組類型

    選擇一種伺服器群組類型。本文選擇伺服器類型

    伺服器組名稱

    輸入伺服器組名稱。本文輸入RS01

    VPC

    從VPC下拉式清單中選擇一個VPC。本文選擇已建立的VPC1。

    選擇後端協議

    選擇一種後端協議。本文選擇TCP

    選擇調度演算法

    選擇一種調度演算法。本文選擇加權輪詢

  6. 伺服器組建立成功對話方塊中單擊添加後端伺服器

  7. 後端伺服器頁簽單擊添加後端伺服器

  8. 添加後端伺服器面板,選擇已建立的ECS01和ECS02執行個體,然後單擊下一步

  9. 為已添加的伺服器設定連接埠和權重,然後單擊確定

步驟二:建立NLB執行個體並配置監聽

  1. 登入網路型負載平衡NLB控制台
  2. 在頂部功能表列,選擇NLB執行個體所屬的地區。本文選擇華東1(杭州)

  3. 執行個體頁面,單擊建立網路型負載平衡

  4. 網路型負載平衡(隨用隨付)購買頁面,完成以下配置。

    此處僅列出和本文強相關的配置項。其餘參數的配置,請參見建立執行個體

    • 地區:本文選擇華東1(杭州)

    • 執行個體網路類型:本文選擇私網

    • VPC:本文選擇已建立的VPC1。

  5. 單擊立即購買,然後根據控制台提示完成執行個體購買。

  6. 返回執行個體頁面,找到已建立的NLB執行個體,單擊該NLB執行個體ID。

  7. 單擊監聽頁簽,在監聽頁簽單擊快速建立監聽。在快速建立監聽對話方塊中,配置以下參數,完成TCP 80監聽的建立,然後單擊確定

    監聽配置

    說明

    選擇負載平衡協議

    選擇監聽的協議類型。本文選擇TCP

    監聽連接埠

    輸入監聽連接埠,本文輸入80

    轉寄的後端伺服器組

    選擇伺服器類型伺服器類型下的伺服器組。

    本文選擇步驟一:建立伺服器組建立的伺服器組RS01。

  8. 監聽頁簽單擊快速建立監聽。在快速建立監聽對話方塊中,配置以下參數,完成TCP 81監聽的建立,然後單擊確定

    監聽配置

    說明

    選擇負載平衡協議

    選擇監聽的協議類型。本文選擇TCP

    監聽連接埠

    輸入監聽連接埠,本文輸入81

    轉寄的後端伺服器組

    選擇伺服器類型伺服器類型下的後端伺服器組。

    本文選擇步驟一:建立伺服器組建立的伺服器組RS01。

  9. NLB執行個體未加入安全性群組時,驗證訪問結果。

    1. 登入任意一台可以訪問公網的Linux用戶端。如果未安裝telnet,以CentOS系統為例可以參考執行yum install -y telnet安裝telnet。

    2. 執行telnet 網域名稱 80命令,測試用戶端是否可以訪問NLB執行個體TCP協議的80連接埠。

      收到如下所示的回複報文,則表示訪問成功。

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'.

      通過瀏覽器輸入欄位名和連接埠號碼,例如http://網域名稱:80,可以看到類似下圖所示,表示NLB可以將請求轉寄至後端伺服器。p800715.png

    3. 執行telnet 網域名稱 81命令,測試用戶端是否可以訪問NLB執行個體TCP協議的81連接埠。

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'.

      通過瀏覽器輸入欄位名和連接埠號碼,例如http://網域名稱:81,可以看到類似下圖所示,表示NLB可以將請求轉寄至後端伺服器。

      p801011.png

    4. 驗證結果顯示,NLB執行個體未加入安全性群組時,用戶端可正常訪問NLB執行個體TCP監聽的80連接埠和81連接埠

步驟三:建立安全性群組

NLB執行個體加入安全性群組前,您需要先至ECS管理主控台建立安全性群組。

  1. 登入ECS管理主控台

  2. 在左側導覽列,選擇網路與安全 > 安全性群組

  3. 在頂部功能表列,選擇安全性群組所屬的地區。本文選擇華東1(杭州)

  4. 安全性群組頁面,單擊建立安全性群組

  5. 建立安全性群組頁面,設定安全性群組的基本資料參數。

    此處僅列出和本文強相關的配置項,其餘參數的配置請參見建立安全性群組

    • 網路:本文選擇已建立的Virtual Private Cloud1。

    • 安全性群組類型:本文選擇普通安全性群組

  6. 建立安全性群組安全性群組頁面,設定安全性群組的訪問規則參數。

    1. 入方向單擊手動添加

    2. 配置新增的安全性群組規則。

      名稱

      描述

      授權策略

      選擇拒絕

      優先順序

      優先順序保持預設值1

      協議類型

      協議類型選擇自訂TCP

      連接埠範圍

      輸入連接埠號碼81

      授權對象

      選擇0.0.0.0/0

      描述

      輸入安全性群組規則描述資訊。

  7. 單擊建立安全性群組

步驟四:NLB執行個體加入安全性群組並驗證結果

NLB執行個體加入步驟三:建立安全性群組建立的安全性群組,並驗證安全性群組規則對NLB執行個體的存取控制是否生效。

  1. 登入網路型負載平衡NLB控制台
  2. 在頂部功能表列,選擇NLB執行個體所屬的地區。本文選擇華東1(杭州)

  3. NLB執行個體頁面,找到步驟二:建立NLB執行個體並配置監聽建立的NLB執行個體,單擊執行個體ID。在執行個體詳情頁簽,單擊安全性群組頁簽。

  4. 安全性群組頁簽,單擊添加安全性群組,在彈出的NLB執行個體加入安全性群組對話方塊中,選擇步驟三:建立安全性群組建立的安全性群組,然後單擊確定

  5. 在左側列表框單擊目標安全性群組ID,可單擊入方向出方向頁簽分別查看安全性群組規則。

    此處僅列出與本文強相關的安全性群組入方向規則。此時NLB執行個體加入的安全性群組規則如下:

    授權策略

    優先順序

    協議類型

    連接埠範圍

    授權對象

    允許

    1

    自訂TCP

    目的:80/80

    源:0.0.0.0/0

    拒絕

    1

    自訂TCP

    目的:81/81

    源:0.0.0.0/0

  6. NLB執行個體加入安全性群組後,測試訪問結果。

    1. 登入任意一台可以訪問公網的Linux用戶端。

    2. 執行telnet 網域名稱 80命令,測試用戶端是否可以訪問NLB執行個體TCP監聽的80連接埠。

      收到如下所示的回複報文,則表示訪問成功。

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'.

      通過瀏覽器輸入欄位名和連接埠號碼,例如http://網域名稱:80,可以看到類似下圖所示,表示NLB可以將請求轉寄至後端伺服器。

      p800715.png

    3. 執行telnet 網域名稱 81命令,測試用戶端是否能訪問NLB執行個體TCP協議的81連接埠。

      收到如下所示的回複報文,則表示用戶端無法訪問NLB執行個體TCP監聽的81連接埠,NLB執行個體加入的安全性群組對NLB執行個體的存取控制已生效。

      Trying *.*.*.*...
      telnet: connect to address *.*.*.*: Connection timed out
      Trying *.*.*.*...
      telnet: connect to address *.*.*.*: Connection timed out

      通過瀏覽器輸入欄位名和連接埠號碼,例如http://網域名稱:81,可以看到無法訪問網頁,則表示用戶端無法訪問NLB執行個體TCP監聽的81連接埠,NLB執行個體加入的安全性群組對NLB執行個體的存取控制已生效。

步驟五:修改安全性群組並驗證結果

修改安全性群組規則,並驗證修改後的安全性群組規則對NLB執行個體的存取控制是否生效。

  1. 返回NLB執行個體頁面,找到步驟二:建立NLB執行個體並配置監聽建立的NLB執行個體,單擊執行個體ID。在執行個體詳情頁簽,單擊安全性群組頁簽。

  2. 基本資料地區單擊安全性群組ID,或在安全性群組頁簽右上方單擊前往ECS控制台編輯,進入安全性群組規則頁面修改安全性群組規則。

  3. 安全性群組規則頁面,找到允許訪問TCP協議80連接埠的規則,在操作列單擊編輯,修改授權策略拒絕

    此處僅列出與本文強相關的安全性群組規則。修改後的安全性群組規則如下:

    授權策略

    優先順序

    協議類型

    連接埠範圍

    授權對象

    拒絕

    1

    自訂TCP

    目的:80/80

    源:0.0.0.0/0

    拒絕

    1

    自訂TCP

    目的:81/81

    源:0.0.0.0/0

  4. 修改NLB執行個體加入的安全性群組規則後,測試訪問結果。

    1. 登入任意一台可以訪問公網的Linux用戶端。

    2. 執行telnet 網域名稱 80命令,測試用戶端是否能訪問NLB執行個體TCP協議的80連接埠。

      收到如下所示的回複報文,則表示用戶端無法訪問NLB執行個體TCP監聽的80連接埠,修改後的安全性群組規則對NLB執行個體的存取控制已生效。

      Trying *.*.*.*...
      telnet: connect to address *.*.*.*: Connection timed out
      Trying *.*.*.*...
      telnet: connect to address *.*.*.*: Connection timed out

      通過瀏覽器輸入欄位名和連接埠號碼,例如http://網域名稱:80,可以看到無法訪問網頁,則表示用戶端無法訪問NLB執行個體TCP監聽的80連接埠,NLB執行個體加入的安全性群組對NLB執行個體的存取控制已生效。

    3. 執行telnet 網域名稱 81命令,測試用戶端是否能訪問NLB執行個體TCP協議的81連接埠。

      收到如下所示的回複報文,則表示用戶端無法訪問NLB執行個體TCP監聽的81連接埠,修改後的安全性群組規則對NLB執行個體的存取控制已生效。

      Trying *.*.*.*...
      telnet: connect to address *.*.*.*: Connection timed out
      Trying *.*.*.*...
      telnet: connect to address *.*.*.*: Connection timed out

      通過瀏覽器輸入欄位名和連接埠號碼,例如http://網域名稱:81,可以看到無法訪問網頁,則表示用戶端無法訪問NLB執行個體TCP監聽的81連接埠,NLB執行個體加入的安全性群組對NLB執行個體的存取控制已生效。

相關文檔