インポートしたディスクを手動で構成する

Compute Engine に仮想ディスクを手動でインポートしたら、それらのイメージを最適化して、Compute Engine 環境固有の機能を使用できるようにする必要があります。

目次

Compute Engine ゲスト環境をインストールする

Compute Engine の主要な機能を使用するには、ゲスト環境をインストールする必要があります。

既存のイメージを手動でインポートしたら、作成した実行中の VM インスタンスにゲスト環境をインストールします。インポートする前に作成したユーザー アカウントを使用して SSH 経由で、またはインタラクティブ シリアル コンソール経由で VM インスタンスにアクセスし、インストールを実施します。

Compute Engine 用にインポートしたイメージを設定する

追加の変更を行うことなく Compute Engine でブートディスク イメージを実行できますが、Compute Engine 内で最適に実行され、Compute Engine のすべての機能にアクセスできるようにそのイメージを最適化できます。

  • server metadata.google.internal iburst Google NTP サーバー エントリのみが含まれるように ntp.conf ファイルを編集します。

  • タイムゾーンを UTC に設定します。

    sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
    
  • 高パフォーマンスのネットワーク機能を確保するには、次に示す推奨のネットワーク構成を使用します。

    • ISC DHCP クライアントを使用します。
    • DHCP MTU を 1460 に設定します。Compute Engine DHCP サーバーは、ほとんどのクライアントで考慮される interface-mtu オプションとしてこのパラメータを処理します。
    • IPv6 は Compute Engine でサポートされていないため、無効にします。
    • 永続的なネットワーク ルールを削除して、インスタンスで MAC アドレスが記憶されないようにします。次に例を示します。

      rm -f /etc/udev/rules.d/70-persistent-net.rules
      
    • Compute Engine ファイアウォール ルールでサポートされない特定の要件がある場合を除き、オペレーティング システムのファイアウォールを無効にします。Compute Engine には、送受信トラフィック用のファイアウォールが用意されています。ファイアウォールについて詳しくは、ファイアウォールのドキュメントをご覧ください。

  • 高パフォーマンスのネットワーク機能とディスク機能を確保するには、irqbalance デーモンを無効にするか、削除します。このデーモンは、仮想マシン インスタンス上のゲスト オペレーティング システムに対する IRQ リクエストを正しく分散しません。仮想 CPU に対する IRQ 設定を正しく分散するには、代わりにゲスト環境の一部であるスクリプトを使用します。

  • ベースイメージへの SSH アクセスを構成します。

    • root での 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 でブートディスクを設定して最適化した後、そのブートディスクから新しいイメージを作成して、新しいイメージを作成するたびに各インスタンスを設定するのではなく新しいイメージの完全に最適化されたバージョンから新しいインスタンスを作成するようにすることができます。

セキュリティのベスト プラクティスを設定する

常に安全なオペレーティング システム環境を提供する必要がありますが、安全な環境とアクセス可能な環境を両立することは困難です。安全でない仮想マシンは攻撃を受けやすくなり、消費するリソースが高コストになる可能性があります。イメージに関して次のセキュリティのベスト プラクティスに従うことを強くおすすめします。

  • デフォルトでインストールされるソフトウェアの量を最小限に抑えます(たとえば、OS の最小インストールを実行します)。
  • 自動更新を有効にします。
  • デフォルトでは、SSH、DHCP、NTPD 以外のネットワーク サービスはすべて無効になっています。Postfix などのメールサーバーについては、ローカルホストからの接続のみを受け入れている場合、稼働を許可できます。
  • sshd 以外の外部リスニング ポートは許可しないでください。
  • SSH ブルート フォース ログイン試行を防ぐため、denyhosts パッケージをインストールします。
  • デフォルトのインストールからユーザー以外の不要なアカウントをすべて削除します。
  • /etc/passwd で、ユーザー以外のすべてのアカウントのシェルを /sbin/nologin または /usr/sbin/nologin に設定します(nologin がインストールされている場所に応じて設定します)。
  • /etc/shadow で、パスワードにソルト付き SHA512 を使用するように OS を構成します。
  • パスワードの安全度を高めるため、pam_cracklib の設定と構成を行います。
  • ログインに 3 回失敗したアカウントを 5 分間ロックするように、pam_tally の設定と構成を行います。
  • /etc/shadow で、root アカウントがデフォルトでロックされるように構成します。root アカウントをロックするには、次のコマンドを実行します。

    usermod -L root
    
  • /etc/ssh/sshd_config に次の行を追加して root を拒否します。

    PermitRootLogin no
    
  • デフォルトで実行されるすべてのネットワーク接続サービス用に AppArmor プロファイルまたは SELinux プロファイルを作成します。

  • 可能な場合はファイル システム機能を使用して、S*ID ビットの必要性をなくし、より詳細に制御できるようにします。

  • ネットワーク接続ソフトウェアのコンパイル時に、コンパイラとランタイムのエクスプロイト対策を有効にします。例として、GNU Compiler Collection(GCC)で提供される対策の一部と、それを有効にする方法を次に示します。

    • スタック スマッシュの防止: -fstack-protector で有効にします。デフォルトでは、このオプションは 8 バイトを超えるスタック割り当てバッファを持つ関数を保護します。4 バイト以上のバッファを持つ関数を対象にして保護を強化するには、--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 カーネルでは、この機能は非推奨になりました。この機能を無効にするには、次のコマンドを実行します。

    echo 1 > /proc/sys/kernel/modules_disabled
    
  • カーネル シンボル テーブルを削除します。

    sudo rm /boot/System.map
    

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント