使用防禦主機安全地存取遠端實例

本指導教學可能會產生成本。 使用「成本估算器」根據您的預計用量生成成本估算。

本教學引導您部署 bastion 主機,以安全存取虛擬私有雲 (VPC) 中的遠端實體。 bastion 主機是以公用 IP 位址配置的實例,可透過 SSH 進行存取。 一旦設定完成,bastion 主機就會扮演跳躍伺服器的角色,允許安全連線到沒有公共 IP 位址的實體。

為了降低 VPC 內伺服器的曝光率,您將建立並使用 bastion 主機。 個別伺服器上的管理作業將使用 SSH 執行,透過防禦主機進行代理。 僅容許使用連接到伺服器的特殊維護安全群組來存取伺服器以及從伺服器定期存取網際網路(例如,用於軟體安裝)。

目標

  • 瞭解如何設定防禦主機和具有規則的安全群組
  • 透過防禦主機安全管理伺服器

架構
教學的架構圖

  1. 在雲端設定所需的基礎架構 (子網路、具有規則的安全群組、虛擬伺服器實體) 之後,管理員 DevOps ) 使用私人 SSH 金鑰連線 (SSH) 到 bastion 主機。
  2. 管理指派具有合適出埠規則的維護安全群組。
  3. 管理透過防禦主機安全地連接 (SSH) 到實例的專用 IP 位址,以安裝或更新任何所需軟體,例如,Web 伺服器
  4. 網際網路使用者向 Web 伺服器發出 HTTP/HTTPS 要求。

開始之前

  • 檢查使用者許可權。 您的使用者帳戶務必要有足夠的許可權以便建立及管理 VPC 資源。 請參閱 VPC 的 必要許可權 清單。
  • 您需要 SSH 金鑰才能連接至虛擬伺服器。 如果您沒有 SSH 金鑰,請參閱為 VPC 建立金鑰的 說明。
  • 本指導教學假設您要在現有虛擬專用雲端中新增防禦主機。 如果您的帳戶中沒有 VPC,請先 建立 VPC,然後再繼續後續步驟。

建立防禦主機

在本區段中,您將建立和配置防禦主機以及不同子網路中的安全群組。

建立子網路

  1. 按一下左側窗格 網路 下方的 子網路,然後按一下 建立。

    1. 在 位置下,選取地理位置、地區及區域。
    2. 輸入 vpc-secure-bastion-subnet 作為名稱,然後選擇您建立的虛擬私有雲。
    3. 選取與 VPC 相同的資源群組。
    4. 保留 Address prefix(位址前綴 ),並選擇 Total IP addresses(IP 位址總數 )為 256。
  2. 將公用閘道切換成已連接。

    將公用閘道連接至子網路,以容許所有連接的資源與公用網際網路通訊。

  3. 按一下建立子網路來佈建它。

建立和配置防禦安全群組

讓我們建立一個安全群組,並設定進入您的 bastion VSI(虛擬伺服器實例)的規則。

  1. 在 網路下選取 安全群組,然後按一下 建立。

  2. 輸入 vpc-secure-bastion-sg 作為名稱,並選擇之前建立的 VPC。

  3. 選取與 VPC 相同的資源群組。

  4. 現在,按一下入站區段中的新增,建立下列入站規則。 這些規則容許 SSH 存取和 Ping (ICMP) 作業。 數值如下表所示。

    基本: 入埠規則
    通訊協定 埠/值 來源類型
    TCP 埠範圍: 22-22 全部
    ICMP 類型:8,Code:留空 全部

    若要進一步增強安全,入埠資料流量可以限制為公司網路或者典型的家庭網路。 您可以執行 curl ipecho.net/plain ; echo 以獲得網路的外部 IP 位址,並改為使用該位址。

  5. 按一下建立安全群組來建立它。

建立防禦實例

子網路和安全群組已經就位,接下來建立防禦虛擬伺服器實例。

  1. 在左側窗格的子網路下,選取 vpc-secure-bastion-subnet。
  2. 按一下 連接資源,然後在 連接實例下按一下 建立,以在與子網路相同的資源群組下佈建新的虛擬伺服器 vpc-secure-bastion-vsi。
  3. 選擇一個地點,並確保稍後會再次使用相同的地點。
  4. 在 影像 下,按一下 變更影像。 使用搜尋欄位來選取 Ubuntu Linux 作為 作業系統。 您可以挑選任何版本的映像檔。
  5. 按一下 變更設定檔,選取 計算 作為種類,並挑選 cx2-2x4 (2 vCPUs 和 4 GB RAM) 作為設定檔。
  6. 建立新的 SSH 金鑰,按一下 新的鑰匙
    1. 輸入 vpc-ssh-key 作為索引鍵名稱。
    2. 選取與 VSI 相同的資源群組。
    3. 按原樣保留地區。
    4. 將現有本端 SSH 金鑰的內容複製並貼上到公開金鑰下。
    5. 按一下新增 SSH 金鑰。
  7. 捲動以選取 網路 下的 VPC
  8. 確定已選取 虛擬網路介面,並將 vpc-secure-bastion-subnet 列為子網路。 按一下該子網路的編輯圖示。
    1. 首先,在 網路連接及虛擬網路介面詳細資料下,驗證已選取 vpc-secure-bastion-subnet。 按下一步。
    2. 對於 安全群組 區段中的 網路,取消勾選預設安全群組並標示 vpc-secure-bastion-sg。 按下一步。
    3. 在「IP 配置」對話框中,一切維持現狀,然後按 下一步。
    4. 最後,按一下 儲存來檢閱所有項目並完成。
  9. 按一下建立虛擬伺服器。
  10. 在實例啟動並 執行中之後,按一下 vpc-secure-bastion-vsi 並 保留 浮動 IP,方法是按一下 網路介面下的 編輯 圖示,然後在 浮動 IP 位址 下選取 保留新的浮動 IP。 按一下儲存以完成。

測試您的防禦

防禦的浮動 IP 位址處於作用中狀態後,嘗試使用 ssh 連接至該位址:

ssh -i ~/.ssh/<PRIVATE_KEY> root@<BASTION_FLOATING_IP_ADDRESS>

使用維護存取規則配置安全群組

透過對運作中防禦的存取權,繼續建立用於安裝和更新軟體之類的維護作業的安全群組。

  1. 在 網路下選取 安全群組,然後按一下 建立。

  2. 輸入 vpc-secure-maintenance-sg 作為名稱,並選擇之前建立的 VPC。

  3. 選取與 VPC 相同的資源群組。

  4. 接下來,新增下表中顯示的 入埠 規則。 它容許從防禦主機進行 SSH 存取。

    維護: 入埠規則
    通訊協定 埠/值 來源類型 來源
    TCP 埠 22-22 安全群組 vpc-secure-bastion-sg
  5. 接下來,新增下表中顯示的 出埠 規則。 它容許從防禦主機進行 SSH 存取。

    維護: 出埠規則
    通訊協定 埠/值 目的地類型
    TCP 埠 80-80 全部
    TCP 埠 443-443 全部
    TCP 埠 53-53 全部
    UDP 埠 53-53 全部

    DNS 伺服器要求在埠 53 上進行處理。 DNS 使用 TCP 進行區域傳輸,使用 UDP 進行名稱查詢,查詢可以是定期(主要)或反向的。 HTTP 要求位於埠 80 和 443 上。

  6. 按一下建立安全群組來建立它。

  7. 導覽至安全群組,然後選取 vpc-secure-bastion-sg。

  8. 最後,編輯安全群組,並新增下列出埠規則。

    基本: 出埠規則
    通訊協定 目的地類型 目的地 埠/值
    TCP 安全群組 vpc-secure-maintenance-sg 埠 22-22

使用防禦主機存取 VPC 中的其他實例

在本節中,您將使用虛擬伺服器實例和安全群組建立一個子網路。

如果您的 VPC 中已有要連線的虛擬伺服器實體,您可以跳過接下來的三個部分,從 新增虛擬伺服器實體到維護安全群組 開始。

建立子網路

若要建立新的子網路,請執行下列動作:

  1. 按一下左側窗格 網路 下方的 子網路,然後按一下 建立。
    1. 輸入 vpc-secure-private-subnet 作為名稱,然後選取您建立的 VPC。
    2. 選取與 VPC 相同的資源群組。
    3. 選擇地點。
    4. 保留 Address prefix(位址前綴 ),並選擇 Total IP addresses(IP 位址總數 )為 256。
  2. 將公用閘道切換成已連接。
  3. 按一下建立子網路來佈建它。

建立安全群組

若要建立新的安全群組,請執行下列動作:

  1. 按一下「網路」下的 安全群組,然後按一下 建立。
  2. 輸入 vpc-secure-private-sg 作為名稱,然後選取先前建立的 VPC。
  3. 按一下建立安全群組。

建立虛擬伺服器實例

若要在新建立的子網路中建立虛擬伺服器實例,請執行下列動作:

  1. 按一下先前在 子網路下建立的子網路 vpc-secure-private-subnet。
  2. 按一下 連接資源,在 連接實例下,按一下 建立。
  3. 若要配置實例,請執行下列動作:
    1. 輸入唯一名稱 vpc-secure-private-vsi 及先前的資源群組。
    2. 選取已由防禦主機虛擬伺服器使用的相同位置。
    3. 選取虛擬伺服器的 公用 類型。
    4. 在 影像 下,按一下 變更影像。 使用搜尋欄位來選取 Ubuntu Linux 作為 作業系統。 您可以挑選任何版本的映像檔。
    5. 按一下 變更設定檔,選取 計算 作為種類,並挑選 cx2-2x4 (2 vCPUs 和 4 GB RAM) 作為設定檔。
    6. 對於 SSH 金鑰,選取您先前為防禦建立的 SSH 金鑰。
  4. 進一步向下,選取您建立的 VPC。 與上述類似,在 網路連接及虛擬網路介面詳細資料下按一下 vpc-secure-private-subnet 的編輯圖示。
    1. 接下來,驗證已選取 vpc-secure-private-subnet。 按下一步。
    2. 對於 安全群組 區段中的 網路,請取消勾選預設安全群組,並標示 vpc-secure-private-sg。 按下一步。
    3. 在「IP 配置」對話框中,一切維持現狀,然後按 下一步。
    4. 最後,按一下 儲存來檢閱所有項目並完成。
  5. 按一下建立虛擬伺服器。

新增虛擬伺服器實例到維護安全群組

對於伺服器上的管理工作,您必須將特定虛擬伺服器與維護安全群組關聯。 接下來,您將啟用維護,登入到專用伺服器,更新套裝軟體資訊,然後再次解除關聯安全群組。

接下來為伺服器啟用維護安全群組。

  1. 導覽至安全群組,然後選取 vpc-secure-maintenance-sg 安全群組。
  2. 按一下 連接的資源 標籤,然後在過濾器中選取 虛擬伺服器介面。
  3. 按一下 編輯虛擬伺服器介面,以查看 VSI 清單。 展開清單,並檢查 vpc-secure-private-vsi 的 介面 直欄旁邊的選項。
  4. 按一下儲存以便套用變更。

連接至實例

若要使用實例的專用 IP 透過 SSH 登錄到該實例,您將使用防禦主機作為跳躍主機。

  1. 在左功能表中,選取「計算」區段中的 虛擬伺服器實例。 記下 vpc-secure-private-vsi 的 保留 IP (專用 IP) 位址。

  2. 使用 -J 的 ssh 指令,以您之前使用的 bastion 浮動 IP 位址和您剛查到的伺服器 Private IP 位址登入伺服器。

    ssh -J root@<BASTION_FLOATING_IP_ADDRESS> root@<PRIVATE_IP_ADDRESS>
    

    OpenSSH 7.3+ 版中支援 -J 旗標。在舊版中,-J 無法使用。 在此情況下,最安全且最直接明確的方法是使用 ssh 的 stdio forwarding (-W) 模式,透過防禦主機「跳出」連線。例如,ssh -o ProxyCommand="ssh -W %h:%p root@<BASTION_FLOATING_IP_ADDRESS" root@<PRIVATE_IP_ADDRESS>

安裝軟體及執行維護作業

連線後,您可以在虛擬伺服器上安裝軟體或執行維護工作。

  1. 請先更新套裝軟體資訊:
    apt-get update
    
  2. 安裝所需的軟體,例如 Nginx、MySQL 或 IBM Db2。

完成後,使用 exit 指令中斷與伺服器的連線。

若要允許網際網路使用者的 HTTPS 請求,請將浮動 IP 指派給 VSI,並透過私人 VSI 安全群組中的入站規則開啟所需埠 (80 - HTTP 和 443 - HTTPS )。

停用維護安全群組

完成軟體安裝或維護後,您應從維護安全群組移除虛擬伺服器,以使其保持隔離。

  1. 導覽至安全群組,然後選取 vpc-secure-maintenance-sg 安全群組。
  2. 按一下 連接的資源,然後按一下 編輯虛擬伺服器介面。
  3. 展開虛擬伺服器實例,並取消勾選介面列旁邊 vpc-secure-private-vsi 的選擇。
  4. 按一下儲存以便套用變更。

您可以從上方使用跳躍主機選項來重複 ssh 指令。 它現在應該會失敗。

移除資源

  1. 按一下個別動作功能表,以切換至 虛擬伺服器實例、停止 及 刪除 實例。
  2. 刪除 VSI 之後,切換到子網路並刪除子網路。
  3. 刪除子網路後,切換到 VPCs 索引標籤並刪除您的 VPC。

使用主控台時,您可能需要重新整理瀏覽器,才能在刪除資源之後看到更新的狀態資訊。