設定已匯入的映像檔

在您匯入現有的映像檔至 Compute Engine 後,請將映像檔最佳化以便使用 Compute Engine 環境的特定功能。

內容

安裝 Compute Engine Linux Guest Environment

您必須先安裝 Linux 訪客環境,才能使用 Compute Engine 的主要功能

請在匯入現有的映像檔之後,在您建立的執行中 VM 執行個體上安裝 Linux 訪客環境。安裝程序可以使用匯入前建立的使用者帳戶,經 SSH 登入存取 VM 執行個體來執行,或是透過互動式序列主控台進行。

針對 Compute Engine 環境設定已匯入的映像檔

您無須額外變更設定即可在 Compute Engine 中執行開機磁碟映像檔,但如果您先將映像檔最佳化,便能讓映像檔在 Compute Engine 中達到最高的執行效能,同時擁有所有 Compute Engine 功能的存取權。

  • 編輯 ntp.conf 檔案,讓檔案只包含 server metadata.google.internal iburst Google NTP 伺服器項目。

  • 將時區設定為世界標準時間 (UTC):

    sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
    
  • 為確保網路維持高效能運作,請使用以下建議的網路設定:

    • 使用 ISC DHCP 用戶端
    • 將 DHCP MTU 設為 1460,Compute Engine DHCP 伺服器會將此參數做為 interface-mtu 選項使用,多數用戶端會對應此參數。
    • 停用 IPv6 協定,原因是 Compute Engine 不支援 IPv6。
    • 移除永久性網路規則,以免執行個體記住 MAC 位址。例如:

      rm -f /etc/udev/rules.d/70-persistent-net.rules
      
    • 停用作業系統的防火牆,除非您有 Compute Engine 防火牆規則不支援的特定需求。Compute Engine 會提供傳入與傳出流量的防火牆。如要進一步瞭解防火牆,請參閱防火牆說明文件。

  • 為確保網路與磁碟能維持高效能運作,請停用或移除 irqbalance Daemon。這個 Daemon 在虛擬機器執行個體上,無法正確地平衡訪客作業系統的 IRQ 要求。請改用 Linux 訪客環境的指令碼,讓虛擬 CPU 的 IRQ 設定可以維持正確的平衡。

  • 設定基本映像檔的 SSH 存取權:

    • 停用根 SSH 登入。
    • 停用密碼驗證。
    • 停用主機驗證。
    • 啟用主機金鑰嚴格檢查。
    • 使用 ServerAliveInterval 保持連線開啟。
    • 移除映像檔的 SSH 金鑰,讓其他使用者無法存取映像檔中的公用或私密金鑰。請改用 Compute Engine 來管理執行個體的存取權

    • 編輯 /etc/ssh/ssh_config 檔案以使用下列設定:

      Host *
      Protocol 2
      ForwardAgent no
      ForwardX11 no
      HostbasedAuthentication no
      StrictHostKeyChecking no
      Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
      Tunnel no
      
      # Google Compute Engine times out connections after 10 minutes of inactivity.
      # Keep alive ssh connections by sending a packet every 7 minutes.
      ServerAliveInterval 420
      
    • 編輯 /etc/ssh/sshd_config 檔案以使用下列設定:

      # Disable PasswordAuthentication as ssh keys are more secure.
      PasswordAuthentication no
      
      # Disable root login, using sudo provides better auditing.
      PermitRootLogin no
      
      PermitTunnel no
      AllowTcpForwarding yes
      X11Forwarding no
      
      # Compute times out connections after 10 minutes of inactivity.  Keep alive
      # ssh connections by sending a packet every 7 minutes.
      ClientAliveInterval 420
      

在 Compute Engine 中設定開機磁碟並將其最佳化後,請透過該開機磁碟建立新的映像檔,您之後可以使用完整最佳化版本的映像檔建立新執行個體,省去每次建立後都要為每個執行個體進行設定的麻煩。

安全性設定最佳做法

提供安全的作業系統環境一直是首要任務,但要在安全無慮與輕鬆使用的環境之間取得平衡十分困難。由於安全性差的虛擬機器容易受到攻擊並可能會耗用昂貴的資源,Google 強烈建議您的映像檔符合下列的安全性最佳做法:

  • 減少預設安裝軟體的大小 (例如執行最小安裝版本的作業系統)。
  • 啟用自動更新。
  • SSH、DHCP、NTPD 以外的網路服務均預設為停用。如果郵件伺服器 (如 Postfix) 僅接受本機主機連線,您可以允許執行這項網路服務。
  • 禁止 SSHD 以外的外部監聽通訊埠。
  • 安裝 denyhosts 套件以防 SSH 遭到暴力登入攻擊。
  • 移除預設安裝中所有不必要的非使用者帳戶。
  • /etc/passwd 檔案中,將所有非使用者帳戶的殼層設為 /sbin/nologin/usr/sbin/nologin (視作業系統安裝 nologin 的位置而定)。
  • /etc/shadow 檔案中,將作業系統的密碼設定為使用 SHA512 雜湊加密方式。
  • 設定 pam_cracklib,檢測密碼是否為高強度密碼。
  • 設定 pam_tally,在登入帳戶失敗 3 次後鎖定帳戶 5 分鐘。
  • /etc/shadow 檔案中將根帳戶預設為鎖定,請執行下列指令來鎖定根帳戶:

    usermod -L root
    
  • 加入下列的指令列以拒絕 /etc/ssh/sshd_config 檔案中的根登入:

    PermitRootLogin no
    
  • 針對所有預設執行的網路面服務建立 AppArmorSELinux 設定檔。

  • 盡可能使用檔案系統功能來減少 S*ID 位元的需求並提供更精細的控制。

  • 編譯網路向軟體時,啟用編譯器與執行階段漏洞緩解措施。以下為 GNU 編譯器套件 (GCC) 提供的解決方法與啟用步驟:

    • 堆疊溢位保護:使用 -fstack-protector 啟用這項功能。根據預設,此選項會使用超過八個位元組的堆疊分配緩衝區來保護函式。如要使用四個位元組以上的緩衝區涵蓋函式,以進一步提升保護程度,請加入 --param=ssp-buffer-size=4
    • 位址空間配置隨機載入 (ASLR):透過位置獨立的執行檔 (使用 -fPIC -pie 建構) 啟用這項功能。
    • Glibc 保護:使用 -D_FORTIFY_SOURCE=2 啟用保護功能。
    • 全局偏移表 (GOT) 保護:使用 -Wl,-z,relro,-z,now 啟用此執行階段載入器功能。
    • 編譯時期發生的遺失格式字串錯誤:-Wformat -Wformat-security -Werror=format-security
  • 停用允許載入及卸載核心模組的 CAP_SYS_MODULE,Linux kernel 已淘汰這項功能。如何停用此功能:

    echo 1 > /proc/sys/kernel/modules_disabled
    
  • 移除核心符號表

    sudo rm /boot/System.map
    

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件