為了提高雲上流量入口安全性,如果您需要對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協議的81連接埠 說明 此處僅列出與本文強相關的安全性群組規則,其餘預設規則未列出。 |
| |
操作三:修改NLB執行個體加入的安全性群組 |
說明 此處僅列出與本文強相關的安全性群組規則,其餘預設規則未列出。 |
|
使用限制
分類 | 安全性群組類型 | 說明 |
NLB支援加入的安全性群組 |
|
關於普通安全性群組和企業安全性群組的介紹,請參見普通安全性群組與企業級安全性群組。 |
NLB不支援加入的安全性群組 | 託管安全性群組 | 關於託管安全性群組的介紹,請參見託管安全性群組。 |
前提條件
您已建立Virtual Private Cloud1,具體操作,請參見建立和管理專用網路。
您已在VPC1中建立了2台ECS執行個體。ECS01和ECS02執行個體作為NLB執行個體的後端伺服器,且ECS01和ECS02執行個體中部署了應用服務。
關於建立ECS執行個體,請參見自訂購買執行個體。
本文ECS01和ECS02部署測試應用樣本如下:
您已註冊網域名稱並完成備案,且通過自有網域名稱為NLB配置CNAME解析。
步驟一:建立伺服器組
- 登入網路型負載平衡NLB控制台。
在頂部功能表列,選擇伺服器組所屬的地區。本文選擇華東1(杭州)。
在左側導覽列,選擇 。
在伺服器組頁面,單擊建立伺服器組。
在建立伺服器組對話方塊中,完成以下配置,然後單擊建立。
此處僅列出與本文強相關的配置項,其餘部分參數可保持預設值。更多資訊,請參見建立伺服器組。
配置
說明
伺服器群組類型
選擇一種伺服器群組類型。本文選擇伺服器類型。
伺服器組名稱
輸入伺服器組名稱。本文輸入RS01。
VPC
從VPC下拉式清單中選擇一個VPC。本文選擇已建立的VPC1。
選擇後端協議
選擇一種後端協議。本文選擇TCP。
選擇調度演算法
選擇一種調度演算法。本文選擇加權輪詢。
在伺服器組建立成功對話方塊中單擊添加後端伺服器。
在後端伺服器頁簽單擊添加後端伺服器。
在添加後端伺服器面板,選擇已建立的ECS01和ECS02執行個體,然後單擊下一步。
為已添加的伺服器設定連接埠和權重,然後單擊確定。
步驟二:建立NLB執行個體並配置監聽
- 登入網路型負載平衡NLB控制台。
在頂部功能表列,選擇NLB執行個體所屬的地區。本文選擇華東1(杭州)。
在執行個體頁面,單擊建立網路型負載平衡。
在網路型負載平衡(隨用隨付)購買頁面,完成以下配置。
此處僅列出和本文強相關的配置項。其餘參數的配置,請參見建立執行個體。
地區:本文選擇華東1(杭州)。
執行個體網路類型:本文選擇私網。
VPC:本文選擇已建立的VPC1。
單擊立即購買,然後根據控制台提示完成執行個體購買。
返回執行個體頁面,找到已建立的NLB執行個體,單擊該NLB執行個體ID。
單擊監聽頁簽,在監聽頁簽單擊快速建立監聽。在快速建立監聽對話方塊中,配置以下參數,完成TCP 80監聽的建立,然後單擊確定。
監聽配置
說明
選擇負載平衡協議
選擇監聽的協議類型。本文選擇TCP。
監聽連接埠
輸入監聽連接埠,本文輸入80。
轉寄的後端伺服器組
選擇伺服器類型及伺服器類型下的伺服器組。
本文選擇步驟一:建立伺服器組建立的伺服器組RS01。
在監聽頁簽單擊快速建立監聽。在快速建立監聽對話方塊中,配置以下參數,完成TCP 81監聽的建立,然後單擊確定。
監聽配置
說明
選擇負載平衡協議
選擇監聽的協議類型。本文選擇TCP。
監聽連接埠
輸入監聽連接埠,本文輸入81。
轉寄的後端伺服器組
選擇伺服器類型及伺服器類型下的後端伺服器組。
本文選擇步驟一:建立伺服器組建立的伺服器組RS01。
NLB執行個體未加入安全性群組時,驗證訪問結果。
登入任意一台可以訪問公網的Linux用戶端。如果未安裝telnet,以CentOS系統為例可以參考執行
yum install -y telnet
安裝telnet。執行
telnet 網域名稱 80
命令,測試用戶端是否可以訪問NLB執行個體TCP協議的80連接埠。收到如下所示的回複報文,則表示訪問成功。
Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.
通過瀏覽器輸入欄位名和連接埠號碼,例如
http://網域名稱:80
,可以看到類似下圖所示,表示NLB可以將請求轉寄至後端伺服器。執行
telnet 網域名稱 81
命令,測試用戶端是否可以訪問NLB執行個體TCP協議的81連接埠。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.
通過瀏覽器輸入欄位名和連接埠號碼,例如
http://網域名稱:81
,可以看到類似下圖所示,表示NLB可以將請求轉寄至後端伺服器。驗證結果顯示,NLB執行個體未加入安全性群組時,用戶端可正常訪問NLB執行個體TCP監聽的80連接埠和81連接埠
步驟三:建立安全性群組
在NLB執行個體加入安全性群組前,您需要先至ECS管理主控台建立安全性群組。
登入ECS管理主控台。
在左側導覽列,選擇 。
在頂部功能表列,選擇安全性群組所屬的地區。本文選擇華東1(杭州)。
在安全性群組頁面,單擊建立安全性群組。
在建立安全性群組頁面,設定安全性群組的基本資料參數。
此處僅列出和本文強相關的配置項,其餘參數的配置請參見建立安全性群組。
網路:本文選擇已建立的Virtual Private Cloud1。
安全性群組類型:本文選擇普通安全性群組。
在建立安全性群組安全性群組頁面,設定安全性群組的訪問規則參數。
在入方向單擊手動添加。
配置新增的安全性群組規則。
名稱
描述
授權策略
選擇拒絕。
優先順序
優先順序保持預設值1。
協議類型
協議類型選擇自訂TCP。
連接埠範圍
輸入連接埠號碼81。
授權對象
選擇
0.0.0.0/0
。描述
輸入安全性群組規則描述資訊。
單擊建立安全性群組。
步驟四:NLB執行個體加入安全性群組並驗證結果
NLB執行個體加入步驟三:建立安全性群組建立的安全性群組,並驗證安全性群組規則對NLB執行個體的存取控制是否生效。
- 登入網路型負載平衡NLB控制台。
在頂部功能表列,選擇NLB執行個體所屬的地區。本文選擇華東1(杭州)。
在NLB執行個體頁面,找到步驟二:建立NLB執行個體並配置監聽建立的NLB執行個體,單擊執行個體ID。在執行個體詳情頁簽,單擊安全性群組頁簽。
在安全性群組頁簽,單擊添加安全性群組,在彈出的NLB執行個體加入安全性群組對話方塊中,選擇步驟三:建立安全性群組建立的安全性群組,然後單擊確定。
在左側列表框單擊目標安全性群組ID,可單擊入方向或出方向頁簽分別查看安全性群組規則。
此處僅列出與本文強相關的安全性群組入方向規則。此時NLB執行個體加入的安全性群組規則如下:
授權策略
優先順序
協議類型
連接埠範圍
授權對象
允許
1
自訂TCP
目的:80/80
源:0.0.0.0/0
拒絕
1
自訂TCP
目的:81/81
源:0.0.0.0/0
NLB執行個體加入安全性群組後,測試訪問結果。
登入任意一台可以訪問公網的Linux用戶端。
執行
telnet 網域名稱 80
命令,測試用戶端是否可以訪問NLB執行個體TCP監聽的80連接埠。收到如下所示的回複報文,則表示訪問成功。
Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.
通過瀏覽器輸入欄位名和連接埠號碼,例如
http://網域名稱:80
,可以看到類似下圖所示,表示NLB可以將請求轉寄至後端伺服器。執行
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執行個體的存取控制是否生效。
返回NLB執行個體頁面,找到步驟二:建立NLB執行個體並配置監聽建立的NLB執行個體,單擊執行個體ID。在執行個體詳情頁簽,單擊安全性群組頁簽。
在基本資料地區單擊安全性群組ID,或在安全性群組頁簽右上方單擊前往ECS控制台編輯,進入安全性群組規則頁面修改安全性群組規則。
在安全性群組規則頁面,找到允許訪問TCP協議80連接埠的規則,在操作列單擊編輯,修改授權策略為拒絕。
此處僅列出與本文強相關的安全性群組規則。修改後的安全性群組規則如下:
授權策略
優先順序
協議類型
連接埠範圍
授權對象
拒絕
1
自訂TCP
目的:80/80
源:0.0.0.0/0
拒絕
1
自訂TCP
目的:81/81
源:0.0.0.0/0
修改NLB執行個體加入的安全性群組規則後,測試訪問結果。
登入任意一台可以訪問公網的Linux用戶端。
執行
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執行個體的存取控制已生效。執行
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執行個體的存取控制已生效。
相關文檔
關於NLB加入安全性群組和解除綁定安全性群組等操作,請參見NLB加入安全性群組。
如果您需要拒絕或允許特定IP訪問NLB執行個體,請參見配置NLB安全性群組實現黑白名單存取原則。
關於安全性群組的詳細介紹,請參見安全性群組。
LoadBalancerJoinSecurityGroup:為網路型Server Load Balancer執行個體綁定已建立的安全性群組。
LoadBalancerLeaveSecurityGroup:為網路型Server Load Balancer執行個體解除綁定安全性群組。