CIS Ubuntu ベンチマーク

このドキュメントでは、CIS Ubuntu Benchmark のレベルについて説明します。Anthos clusters on VMware(GKE On-Prem)がこのベンチマークをどの程度遵守して設定されているか確認できます。

バージョン

このドキュメントでは、次のバージョンを参照しています。

Anthos のバージョン Ubuntu のバージョン CIS Ubuntu Benchmark のバージョン CIS レベル
1.9 18.04 LTS v2.0.1 Level 2 Server

ベンチマークにアクセスする

CIS Ubuntu Benchmark は CIS ウェブサイトで入手できます。

構成プロファイル

CIS Ubuntu Benchmark のドキュメントでは、構成プロファイルについて確認できます。Anthos clusters on VMware で使用される Ubuntu イメージは、Level 2 - Server のプロファイルを満たすように強化されています。

Anthos clusters on VMware の評価

次の値を使用して、Anthos clusters on VMware の Ubuntu 推奨事項のステータスを表します。

ステータス 説明
Pass ベンチマークの推奨事項を遵守している。
失敗 ベンチマークの推奨事項を遵守していない。
同等の統制 ベンチマークの推奨事項を完全には遵守していないが、Anthos clusters on VMware の他のメカニズムによって同等のセキュリティ コントロールが可能である。
環境に依存 Anthos clusters on VMware では、ベンチマークの推奨事項に関連する項目は構成されていない。ご利用の構成により、環境が推奨事項を遵守しているかどうかが決まる。

Anthos clusters on VMware のステータス

Anthos clusters on VMware で使用される Ubuntu イメージは、CIS Level 2 - Server のプロファイルを満たすように強化されています。次の表は、Anthos clusters on VMware のコンポーネントが特定の推奨事項に合格しなかった理由を示しています。

# 推奨事項 スコア付き / スコアなし ステータス 理由 影響を受けるコンポーネント
1.1.2 /tmp が構成されていることを確認する スコア付き 失敗 現時点では、Canonical によりクラウド イメージ パーティションが変更される予定はありません。 すべてのクラスタノード、管理ワークステーション、Seesaw
1.1.6 /var 用の別のパーティションが存在することを確認する スコア付き 修正しない 現時点では、Canonical によりクラウド イメージ パーティションが変更される予定はありません。 すべてのクラスタノード、管理ワークステーション、Seesaw
1.1.7 /var/tmp 用の別のパーティションが存在することを確認する スコア付き 修正しない 現時点では、Canonical によりクラウド イメージ パーティションが変更される予定はありません。 すべてのクラスタノード、管理ワークステーション、Seesaw
1.1.11 /var/log 用の別のパーティションが存在することを確認する スコア付き 修正しない 現時点では、Canonical によりクラウド イメージ パーティションが変更される予定はありません。 すべてのクラスタノード、管理ワークステーション、Seesaw
1.1.12 /var/log/audit 用の別のパーティションが存在することを確認する スコア付き 修正しない 現時点では、Canonical によりクラウド イメージ パーティションが変更される予定はありません。 すべてのクラスタノード、管理ワークステーション、Seesaw
1.1.13 /home 用の別のパーティションが存在することを確認する スコア付き 修正しない 現時点では、Canonical によりクラウド イメージ パーティションが変更される予定はありません。 すべてのクラスタノード、管理ワークステーション、Seesaw
1.1.21 すべてのグローバルに書き込み可能なディレクトリにスティッキー ビットが設定されていることを確認する スコア付き 失敗 これにより、Anthos の機能やそのサービスが中断される可能性があり、デフォルトでは有効になっていません。 すべてのクラスタノード、管理ワークステーション
1.5.1 ブートローダー構成の権限が構成されていることを確認する スコア付き 失敗 権限がデフォルトのままになっています。 すべてのクラスタノード、Seesaw
1.5.2 ブートローダーのパスワードが設定されていることを確認する スコア付き 環境に依存 Ubuntu クラウド イメージには root パスワードが設定されていません。 すべてのクラスタノード、管理ワークステーション、Seesaw
1.5.3 シングル ユーザー モードで認証が必要であることを確認する スコア付き 環境に依存 Ubuntu クラウド イメージには root パスワードが設定されていません。 すべてのクラスタノード、管理ワークステーション、Seesaw
1.8.1.2 ローカル ログインの警告バナーが正しく構成されていることを確認する スコア付き 同等の統制 Anthos もノードに DISA-STIG の強化を適用し、それに応じて警告バナーを更新します。 すべてのクラスタノード、Seesaw
3.1.2 IP 転送が無効になっていることを確認する スコア付き 失敗 Kubernetes(GKE)がトラフィックを正しく動作させ、ルーティングするために、IP 転送は必須です。 すべてのクラスタノード、管理ワークステーション、Seesaw
3.2.7 リバースパス フィルタリングが有効になっていることを確認する スコア付き 環境に依存 非同期ルーティングとリバースパス開始は、クラスタの負荷分散を提供するための要件です。 Seesaw
3.5.2.5 開放しているポートすべてにファイアウォール ルールが存在することを確認する スコアなし 環境に依存 Anthos on VMware は、適切なファイアウォール保護を使用してプライベート ネットワークにデプロイすることをおすすめします。必要なファイアウォール ルールについてはこちらをご覧ください。 すべてのクラスタノード、管理ワークステーション、Seesaw
3.5.4.1.1 デフォルトの拒否ファイアウォール ポリシーを確認する スコア付き 環境に依存 Anthos on VMware は、適切なファイアウォール保護を使用してプライベート ネットワークにデプロイすることをおすすめします。必要なファイアウォール ルールについてはこちらをご覧ください。 すべてのクラスタノード、管理ワークステーション、Seesaw
3.5.4.1.2 ループバック トラフィックが構成されていることを確認する スコア付き 環境に依存 ループバック インターフェースの用途は、使用される特定の負荷分散機能に制限されます。 Seesaw
3.5.4.2.1 IPv6 のデフォルトの拒否ファイアウォール ポリシーを確認する スコア付き 環境に依存 Anthos on VMware は、適切なファイアウォール保護を使用してプライベート ネットワークにデプロイすることをおすすめします。必要なファイアウォール ルールについてはこちらをご覧ください。 また、Anthos は、GA サポートにおいて IPv6 の要件を満たしていません。 すべてのクラスタノード、管理ワークステーション、Seesaw
3.5.4.2.2 IPv6 のループバック トラフィックが構成されていることを確認する スコア付き 環境に依存 Anthos は、GA サポートにおいて IPv6 の要件を満たしていません。 管理コントロール プレーン、Seesaw
4.1.1.3 auditd よりも前に開始されるプロセスの監査が有効になっていることを確認する スコア付き 失敗 ビルドプロセスに関する既知の問題により失敗と報告されますが、これは誤ったアラームと見なされます。この問題は今後修正される予定です。 すべてのクラスタノード、Seesaw
4.1.1.11 特権コマンドの使用が収集されることを確認する スコア付き 失敗 一部のバイナリはランタイムにインストールされるため、ランタイムの修正が必要です。 すべてのクラスタノード、管理ワークステーション、Seesaw
4.2.1.5 リモートログのホストにログを送信するように rsyslog が構成されていることを確認する スコア付き 環境に依存 現在、Anthos on VMWare はすべての journald ログをシステムサービスから収集します。これらのログは「k8s_node」下で確認できます。 すべてのクラスタノード、管理ワークステーション、Seesaw
4.2.3 すべてのログファイルの権限が構成されていることを確認する スコア付き 失敗 多くのサービスでは、ログファイルを書き込むためのグループが必要になることがあるため、この特定のテストは制限が多すぎ、また非現実的です。この項目は今後のベンチマークで削除される可能性があります。 すべてのクラスタノード、管理ワークステーション、Seesaw
5.2.12 SSH PermitUserEnvironment が無効になっていることを確認する スコア付き 失敗 この設定は、DISA-STIG の強化設定と競合します。 すべてのクラスタノード、Seesaw
5.2.13 強力な暗号のみが使用されていることを確認する スコア付き 同等の統制 DISA-STIG の適用では、このベンチマークで使用されるものと 1 対 1 で対応しないサポートされた暗号の代替リストが使用されます。 すべてのクラスタノード
5.2.18 SSH アクセスが制限されていることを確認する スコア付き 環境に依存 デフォルトでは構成されていません。特定の要件に合わせて構成できます。 すべてのクラスタノード、管理ワークステーション、Seesaw
5.2.19 SSH 警告バナーが構成されていることを確認する スコア付き 同等の統制 DIST-STIG の強化構成の適用により SSH 警告バナーが変更されます。 すべてのクラスタノード、Seesaw
6.1.6 /etc/passwd の権限が構成されていることを確認する スコア付き 失敗 この特定のテストは制限が多すぎ、Canonical によって更新されています(リンク すべてのクラスタノード、管理ワークステーション、Seesaw
6.1.10 グローバルに書き込み可能なファイルがないことを確認する スコア付き 失敗 権限がデフォルトのままになっています。 すべてのクラスタノード
6.1.11 未所有ファイルやディレクトリが存在しないことを確認する スコア付き 失敗 権限がデフォルトのままになっています。 すべてのクラスタノード
6.1.12 グループ化されていないファイルやディレクトリが存在しないことを確認する スコア付き 失敗 権限がデフォルトのままになっています。 すべてのクラスタノード
6.2.10 ユーザーのドットファイルがグループまたはグローバルに書き込み可能ではないことを確認する スコア付き 失敗 Ubuntu のデフォルト設定では、互換性のためにドットファイルのグループ権限が許可されています。 管理ワークステーション

AIDE cron ジョブを構成する

AIDE は、CIS L1 Server ベンチマーク 1.4 Filesystem Integrity Checking に準拠していることを保証するファイル整合性チェックツールです。VMware の Anthos クラスタでは、AIDE プロセスによってリソース使用率が高い問題が引き起こされています。

1.9.7 以降では、リソースの問題を防ぐため、ノードの AIDE プロセスはデフォルトで無効になっています。これは CIS L1 Server ベンチマーク 1.4.2(Ensure filesystem integrity is regularly checked.)への準拠に影響します。

AIDE cron ジョブの実行を有効にする場合は、次の手順で AIDE を再度有効にします。

  1. DaemonSet を作成します。

    DaemonSet のマニフェストを次に示します。

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
    name: enable-aide-pool1
    spec:
    selector:
      matchLabels:
        app: enable-aide-pool1
    template:
      metadata:
        labels:
          app: enable-aide-pool1
      spec:
        hostIPC: true
        hostPID: true
        nodeSelector:
          cloud.google.com/gke-nodepool: pool-1
        containers:
        - name: update-audit-rule
          image: ubuntu
          command: ["chroot", "/host", "bash", "-c"]
          args:
          - |
            set -x
            while true; do
              # change daily cronjob schedule
              minute=30;hour=5
              sed -E "s/([0-9]+ [0-9]+)(.*run-parts --report \/etc\/cron.daily.*)/$minute $hour\2/g" -i /etc/crontab
    
              # enable aide
              chmod 755 /etc/cron.daily/aide
    
              sleep 3600
            done
          volumeMounts:
          - name: host
            mountPath: /host
          securityContext:
            privileged: true
        volumes:
        - name: host
          hostPath:
            path: /
    

    上のマニフェストでは、次のようになっています。

    • AIDE cron ジョブは、nodeSelector cloud.google.com/gke-nodepool: pool-1 で指定されたノードプール pool-1 でのみ実行されます。nodeSelector フィールドにプールを指定すると、必要な数のノードプールで実行するように AIDE プロセスを構成できます。異なるノードプール間で同じ cron ジョブ スケジュールを実行するには、nodeSelector フィールドを削除します。ただし、ホストリソースの混雑を回避するために、別のスケジュールを維持することをおすすめします。

    • cron ジョブは、構成 minute=30;hour=5 で指定されているとおり、毎日午前 5 時 30 分に実行されるようにスケジュールされます。必要に応じて、AIDE cron ジョブに異なるスケジュールを構成できます。

  2. このマニフェストを enable-aide.yaml という名前のファイルにコピーして DaemonSet を作成します。

kubectl apply --kubeconfig USER_CLUSTER_KUBECONFIG -f enable-aide.yaml

USER_CLUSTER_KUBECONFIG は、ユーザー クラスタの kubeconfig ファイルのパスです。