コンピュートの保護

セキュリティの推奨事項

Oracle Cloud Infrastructure Computeでは、セキュリティのベスト・プラクティスに従って構築および管理された、ベア・メタル・インスタンスと仮想マシン(VM)インスタンスの両方が提供されます。

インスタンスおよび資格証明の管理

  • クリティカルなインスタンス(たとえば、本番インスタンス)の誤った終了や悪意ある終了を防ぐために、OracleではINSTANCE_DELETE権限を最小限のグループに付与することをお薦めします。DELETE権限はテナンシ管理者およびコンパートメント管理者にのみ付与します。
  • Oracle Cloud Infrastructureインスタンス・プリンシパル機能を使用して、インスタンスがIAMユーザーにかわってOracle Cloud Infrastructureサービス(コンピュートブロック・ボリュームネットワーキングロード・バランシングオブジェクト・ストレージ)にアクセスすることが許可されます。この機能を使用するには、動的グループを作成し、そのグループにサービスAPIへのアクセス権を付与します。動的グループを使用すると、Oracle Cloud Infrastructureコンピュータ・インスタンスを(ユーザー・グループと同様に)プリンシパルのアクターとしてグループ化できます。ポリシーを作成して、インスタンスがOracle Cloud Infrastructureサービスに対してAPIコールを実行できるようにします。

    動的グループを作成する場合、メンバーをグループに明示的に追加するのではなく、グループ・メンバーを定義する一致ルールのセットを定義します。APIコールに署名する存続期間が短い秘密キーは、インスタンス・メタデータ・サービス(http://169.254.169.254/opc/v1/identity/cert.pem)を介して提供され、1日に数回ローテーションされます。インスタンスのサービスにアクセスする方法の詳細は、インスタンスからのサービスの呼出しを参照してください。

インスタンス・メタデータのアクセス制御

  • インスタンス・メタデータ(http://169.254.169.254)では、OCIDと表示名、カスタム・フィールドなどの事前定義済インスタンス情報が提供されます。インスタンス・メタデータは、動的グループ資格証明などの存続期間が短い資格証明を提供することもできます。Oracleでは、インスタンス・メタデータのアクセス権をインスタンスに対する権限を付与されたユーザーに制限することをお薦めします。次の例は、iptablesを使用してインスタンス・メタデータへのアクセスをルート・ユーザーに制限する方法を示しています。

    iptables -A OUTPUT -m owner ! --uid-owner root -d 169.254.169.254 -j DROP
  • インスタンスは、リンクのローカル・アドレスを使用して、インスタンス・メタデータ・サービス(169.254.169.254: 80 )、DNS (169.254.169.254: 53 )、NTP (169.254.169.254: 123 )、カーネル更新(169.254.0.3)およびブート・ボリュームへのiSCSI接続(169.254.0.2: 3260、169.254.2.0/24: 3260)にアクセスします。iptablesなどのホストベースのファイアウォールを使用すると、これらのIPへのアクセスをrootユーザーに許可できます。これらのオペレーティング・システムのファイアウォール・ルールが変更されていないことを確認します。

インスタンス・ネットワーク・アクセス制御

  • すべてのインスタンスでセキュア・シェル(SSH)を強化します。次の表にSSHセキュリティの推奨事項の一部を示します。SSH構成オプションはsshd_configファイル(Linuxの/etc/SSH/sshd_configにある)に設定できます。

    セキュリティの推奨事項 sshd_configの構成 コメント
    公開キー・ログインのみを使用 PubkeyAuthentication yes ~/.SSH/authorized_keysファイルのSSH公開キーを定期的に確認します。
    パスワード・ログインの無効化 PasswordAuthentication no パスワード総当たり攻撃を軽減します
    ルート・ログインの無効化 PermitRootLogin no リモート・ログインのルート権限を防ぎます
    SSHポートを標準以外のポートに変更 ポート<ポート番号> オプション。SSHでポート22を使用するアプリケーションがこの変更で破損しないようにしてください。
  • インスタンスへのアクセスと不注意による公開の防止には、SSH秘密キーを使用します。SSHキー・ペアの作成とキーを使用したインスタンスの構成の詳細は、Linuxインスタンスでのキー・ペアの管理を参照してください。

  • 許可されたIPアドレスへのインスタンス・アクセスを制限するには、VCNネットワーク・セキュリティ・グループまたはセキュリティ・リストを使用します。Fail2banは、総当たり攻撃サインイン試行(インスタンスへのサインイン失敗が大量に発生)に関連するIPアドレスをブロックリストに指定するアプリケーションです。デフォルトでは、Fail2banはSSHアクセスを検査しますが、他のプロトコルを検査するように構成することもできます。Fail2banの詳細は、Fail2banのメイン・ページを参照してください。
  • VCNネットワーク・セキュリティ・グループおよびセキュリティ・リストに加えて、iptablesやfirewalldなどのホストベースのファイアウォールを使用すると、ポート、プロトコル、パケットのタイプを制御して、インスタンスへのネットワーク・アクセスを制限できます。これらのファイアウォールは、潜在的なネットワーク・セキュリティ攻撃の偵察(ポートのスキャンや侵入の試行など)を防ぐために使用します。カスタム・ファイアウォール・ルールは、起動するインスタンスごとに構成、保存および初期化できます。次の例は、iptablesのコマンドを示しています。

    # save iptables rules after configuration 
    sudo iptables-save > /etc/iptables/iptables.rules 
    # restore iptables rules on next reboot 
    sudo /sbin/iptables-restore < /etc/iptables.rules 
    # restart iptables after restore 
    sudo service iptables restart

インスタンス・エントロピ

ベア・メタル・インスタンスもVMインスタンスも高品質で高スループットのエントロピ・ソースとなります。インスタンスには乱数ジェネレータがあり、その出力がオペレーティング・システムで使用されるエントロピ・プールに提供され、乱数が生成されます。Linuxインスタンスでは、/dev/randomは非ブロックで、乱数を必要とするセキュリティ・アプリケーションで使用する必要があります。次のコマンドを使用すると、アプリケーションで出力を使用する前に、/dev/randomによって生成された乱数のスループットと品質をチェックできます。

# check sources of entropy 
sudo rngd -v 
# enable rngd, if not already 
sudo systemctl start rngd 
# verify rngd status 
sudo systemctl status rngd 
# verify /dev/random throughput and quality using rngtest 
cat /dev/random | rngtest -c 1000

ホスト・セキュリティの強化とパッチ適用

  • インスタンス上で実行中のLinuxおよびWindowsイメージのセキュリティ強化のためのベースラインを確立します。Oracle Linuxイメージのセキュリティ強化の詳細は、Oracle Linuxサーバーの強化のヒントを参照してください。Center for Internet Securityベンチマークでは、LinuxおよびWindowsサーバーの様々なディストリビューションについて、オペレーティング・システム・セキュリティ強化ベンチマークの包括的なセットが提供されます。
  • インスタンス・ソフトウェアは、セキュリティ・パッチを使用して最新の状態に維持します。入手可能な最新のソフトウェア更新をインスタンスに定期的に適用することをお薦めします。Oracle Autonomous Linuxイメージは、最新パッチで自動的に更新されます。Oracle Linuxイメージでは、sudo yum updateコマンドを実行できます(Oracle Linux 8ではsudo dnf update)。Oracle Linuxで、yum-securityプラグインを使用して、入手できるセキュリティ・パッチとインストールされたセキュリティ・パッチの情報を取得します。次の例は、yum- securityのコマンドを示しています。2017年2月15日以降に起動されたOracle Linuxインスタンスの場合は、Kspliceサポートを利用するとインスタンスを再起動せずにパッチを適用できます。Oracle Cloud Infrastructure インスタンスでのKspliceの使用方法の詳細は、Oracle Kspliceのインストールおよび実行を参照してください。

    # Install yum-security plugin
    yum install yum-plugin-security
    # Get list of security patches without installing them
    yum updateinfo list security all
    # Get list of installed security patches
    yum updateinfo list security all

インスタンス・セキュリティのロギングとモニタリング

  • 様々なセキュリティ関連イベントがログ・ファイルに取得されます。セキュリティ上の問題を検出するために、これらのログ・ファイルを定期的に確認することをお薦めします。Oracle Linuxでは、ログ・ファイルは/var/logにあります。次の表にセキュリティ関連のログ・ファイルの一部を示します。

    ログ・ファイルまたはディレクトリ 説明
    /var/log/secure 失敗したサインインと成功したサインインを示す認証ログ。
    /var/log/audit sudo試行やユーザー・サインインなど、発行されたシステム・コールを取得する監査ログ。ausearchとaureportは監査ログの問合せに使用される2つのツールです。
    /var/log/yum.log yumを使用してインスタンスでインストールまたは更新されたパッケージをリストします。
    /var/log/cloud-init.log インスタンスの起動時に、cloud - initはユーザー提供のスクリプトを特権ユーザーとして実行できます。たとえば、cloud - initでSSHキーを導入できます。cloud-initログに認識していないコマンドがないか確認することをお薦めします。

セキュリティ・ポリシーの例

次のすべての例で、ポリシーの対象範囲はテナンシです。ただし、コンパートメント名を指定することによって、テナンシ内の特定のコンパートメントを対象範囲に絞り込むことができます。

インスタンスを削除できるユーザーの制限

次の例は、InstanceUsersグループにインスタンスの起動を許可しますが、削除は許可しません。

Allow group InstanceUsers to manage instance-family in tenancy
 where request.permission!='INSTANCE_DELETE' 
Allow group InstanceUsers to use volume-family in tenancy 
Allow group InstanceUsers to use virtual-network-family in tenancy

インスタンス・コンソールの使用権限の制限

セキュリティ・コンプライアンスの理由から、一部の顧客はテナンシのユーザーにインスタンス・コンソールを公開しません。次のポリシーの例は、コンソールでの作成または読取り権限を制限します。

Allow group InstanceUsers to manage instance-console-connection in tenancy
 where all {request.permission!= INSTANCE_CONSOLE_CONNECTION_READ, 
            request.permission!= INSTANCE_CONSOLE_CONNECTION_CREATE}