Ansible-Lockdown でEC2インスタンスをCISベンチマークに準拠させ、Amazon Inspector v2 で評価してみる

Ansible-Lockdown でEC2インスタンスをCISベンチマークに準拠させ、Amazon Inspector v2 で評価してみる

Clock Icon2025.06.16

1. はじめに

こんにちは。アノテーション株式会社のあのふじたです。
今回は、Ansible-Lockdown を使用して Amazon Linux 2023のEC2インスタンスをCISベンチマークに(なるべく)準拠させつつ
Amazon Inspector v2 で初期状態と適用後の評価結果を比較し、セキュリティ強化の効果を確認していきます。

記事の目的と概要

本記事では、Ansible-Lockdownを活用してAmazon Linux 2023のEC2インスタンスをCISベンチマークに準拠させる方法を解説します。
さらに、Amazon Inspector v2を用いて、適用前後の評価結果を比較し、セキュリティ強化の効果を確認します。

CISベンチマークとは

CIS(Center for Internet Security)ベンチマークは、システムのセキュリティ設定に関する業界標準のベストプラクティスを提供するガイドラインです。
これに準拠することで、システムのセキュリティレベルを向上させることができます。
https://aws.amazon.com/jp/what-is/cis-benchmarks/
https://www.cisecurity.org/cis-benchmarks

Ansible-Lockdownの紹介

Ansible-Lockdownは、Ansibleを用いてシステムをCISベンチマークに準拠させるためのプレイブックを提供するプロジェクトです。
これにより、手動での設定作業を自動化し、一貫性のあるセキュリティ設定を適用できます。Amazon Linux 2023向けのプレイブックも提供されています。
また有償サポートも Lockdown Enterpriseにより提供されています。
※現時点で日本語サポートについては確認できませんでした。

https://github.com/ansible-lockdown
https://www.lockdownenterprise.com

2. 前提条件と環境設定

必要なツールと環境

  • Ansible:構成管理ツール
  • Ansible-Lockdown:CISベンチマーク準拠のためのAnsibleプレイブック
  • Amazon Linux 2023 の EC2インスタンス 2台:評価対象のインスタンス と Ansible実行ホスト
  • Amazon Inspector v2:CISベンチマーク評価ツール

EC2インスタンスの起動

以下の2台の Amazon Linux 2023 インスタンスを同一の Public Subnet 内で立ち上げます。
※SecurityGroupでの適切なSSH設定とSSM用に設定されたIAM インスタンスプロフィールを選択しておきます。

  • 評価対象のインスタンス(target-amzn2023) t4g.nano
  • Ansible実行ホスト(ansible-host-amzn2023) t4g.micro

評価対象のEC2インスタンスの要件として以下があります。

  • サポート対象のOSであること
  • EC2インスタンスがSSMのマネージドノードであること
  • InspectorのDeep inspectionが有効であること
  • EC2インスタンスにInspector SSMプラグインがインストールされていること
  • EC2インスタンスのIAMロールにAmazonSSMManagedInstanceCoreポリシーとAmazonInspector2ManagedCisPolicyポリシーといったSSMがインスタンスを管理するための許可と、Amazon Inspector がそのインスタンスに対して CIS スキャンを実行するための許可されていること
    https://dev.classmethod.jp/articles/amazon-inspector-cis-benchmark-assessments-operating-systems-ec2-instances/

Ansibleのインストール

ansible-host-amzn2023 インスタンス起動後、Ansible のインストールを行います。
Ansible は、以下のコマンドでインストールできます。

$ sudo yum install -y ansible

Ansible-Lockdownのセットアップ

Ansible-LockdownのAmazon Linux 2023向けリポジトリをクローンします。

$ git clone https://github.com/ansible-lockdown/AMAZON2023-CIS.git
$ cd AMAZON2023-CIS

3. 初期状態のCISベンチマーク評価

Amazon Inspector v2の概要

Amazon Inspector v2は、AWSリソースの脆弱性やセキュリティ設定を評価するサービスです。CISベンチマーク評価もサポートしています。

EC2インスタンスへのタグ付け

評価対象のEC2インスタンスにタグを付与します。今回はキーをcis-check、値をtrueと設定しました。

csi-check-true-tag

Amazon Inspector v2の設定とスキャン実行

  1. Amazon Inspectorコンソールで、[On-demand scans] > [CIS scans] > [Create New scan]を選択します。
    Inspector-On-demand-scans-CIS-scans
    CIS-scans-Create-new-scan
  2. スキャン設定名を入力し、先ほど付与したタグ(キー:cis-check、値:true)を指定します。
  3. CISベンチマークレベルを選択し、スキャンを実行します。
    Create-new-scan-cis-level1

評価結果の確認

スキャン完了後、結果を確認します。
cis-level1-result
起動時の評価は 110/179 なので約61%準拠していることになります。
初期値としては悪くはない数値ではないでしょうか。

CIS LEVEL 2 でもスキャンしてみました。
cis-level2-result
127/243 なので約52%準拠していることになります。
こちらはちょっと微妙な数値ですね。

4. Ansible-Lockdownの適用手順

EC2インスタンスへのAnsible接続設定

対象のEC2インスタンスの情報を書いたAnsibleのインベントリファイルを作成します。

vi inventory.yml
---                   
all:                   
  hosts:                 
    target-amzn2023:     
      ansible_host: <target-amzn2023 のプライベートIPV4アドレス>
      ansible_user: ec2-user
      ansible_ssh_private_key_file: ~/.ssh/ansible.key
      ansible_port: 22

Ansibleプレイブックの作成と実行

Ansible-Lockdownのプレイブックを実行して、CISベンチマークに準拠した設定を適用します。

ansible-playbook -vv -i inventory.yml site.yml

中断されました。

TASK [/home/ec2-user/ansible/AMAZON2023-CIS : Ensure root password is set] ****************************************************************************************
task path: /home/ec2-user/ansible/AMAZON2023-CIS/tasks/main.yml:26
fatal: [target-amzn2023]: FAILED! => {"changed": false, "cmd": "passwd -S root | grep \"Password set, SHA512 crypt\"", "delta": "0:00:00.009311", "end": "2025-06-01 01:23:45.796025", "msg": "non-zero return code", "rc": 1, "start": "2025-06-01 01:23:45.796025", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

PLAY RECAP ***********************************************************************************************************************************************
target-amzn2023            : ok=3    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

今回はエラー箇所をSkipし、プレイブックの実行完了までをめざします。
ログに表示されているエラー箇所を確認します。

task path: /home/ec2-user/ansible/AMAZON2023-CIS/tasks/main.yml:26
- name: Ensure root password is set
  when:
      - amzn2023cis_rule_4_6_6
  block:
      - name: Ensure root password is set
        ansible.builtin.shell: passwd -S root | grep "Password set, SHA512 crypt"
        changed_when: false
        register: root_passwd_set

      - name: Ensure root password is set
        ansible.builtin.assert:
            that: root_passwd_set.rc == 0
            fail_msg: "You have rule 4.6.6 enabled this requires that you have a root password set"
            success_msg: "You have a root password set"
  tags:
      - level1-server
      - patch
      - accounts
      - root
      - rule_4.6.6

ここで block されています。
記述例に従い Skip するようにします。
https://ansible-lockdown.readthedocs.io/en/latest/remediate/rem-getting-started.html#how-to-use

ansible-playbook -vv -i inventory.yml -e '{ "amzn2023cis_rule_4_6_6":false }' site.yml
TASK [/home/ec2-user/ansible/AMAZON2023-CIS : 1.3.1 | PATCH | Ensure AIDE is installed | Install AIDE] ************************************************************
task path: /home/ec2-user/ansible/AMAZON2023-CIS/tasks/section_1/cis_1.3.x.yml:5
fatal: [target-amzn2023]: FAILED! => {"changed": false, "failures": ["No package aide available."], "msg": "Failed to install some of the specified packages", "rc": 1, "results": []}

PLAY RECAP ***********************************************************************************************************************************************
target-amzn2023            : ok=84   changed=22   unreachable=0    failed=1    skipped=36   rescued=0    ignored=0

またBlockで停止されました。
同様にSkipして進めます。
最終的には以下のようにかなりSkipしました。
また、何度か再実行しているので1回で完了までいかないかもしれません。

ansible-playbook -vv -i inventory.yml -e '{ "amzn2023cis_rule_4_6_6":false, "amzn2023cis_config_aide": false, "amzn2023cis_rule_3_4_1_2": false, "amzn2023cis_rule_3_4_2_1": false, "amzn2023cis_rule_3_4_2_4": false, "amzn2023cis_rule_5_1_1_1": false, "amzn2023cis_rule_5_1_1_2": false,"amzn2023cis_rule_5_1_1_4": false, "amzn2023cis_rule_5_1_1_5": false, "amzn2023cis_rule_5_1_1_7": false, "amzn2023cis_rule_5_3": false }' site.yml

適用結果の確認

TASK [/home/ec2-user/ansible/AMAZON2023-CIS : If Warnings found Output count and control IDs affected] ************************************************************
task path: /home/ec2-user/ansible/AMAZON2023-CIS/tasks/main.yml:207
ok: [target-amzn2023] => {
    "msg": "You have 12 Warning(s) that require investigating that are related to the following benchmark ID(s)  [1.1.2.1] [1.1.3.1] [1.1.4.1] [1.1.5.1] [1.1.6.1] [1.1.7.1] [1.1.8.1] [1.2.3] [1.6.1.6] [2.4] [6.1.9] [6.1.12]"
}

PLAY RECAP ***********************************************************************************************************************************************
target-amzn2023            : ok=326  changed=2    unreachable=0    failed=0    skipped=211  rescued=0    ignored=0

かなり Skipped が多いのが気になりますがプレイブックの実行が完了しました。
実行結果にはエラーがないことがわかります。

5. Ansible-Lockdown適用後のCISベンチマーク再評価

Amazon Inspector v2による再スキャンの実行

再度、Amazon Inspector v2でCISスキャンを実行します。
スキャン名を以下に変更してlevel1 とlevel2 をそれぞれ1回実行しています。

  • cis level1 amzn2023 lockdown
  • cis level2 amzn2023 lockdown

再評価結果の確認とレポートの取得

スキャン完了後、結果を確認します。

cis level1 amzn2023 lockdown
cis-level1-amzn2023-lockdown
Ansible 実行後の評価は 150/179 なので約84%準拠となりました。
良い数値に改善されたのではないでしょうか。

cis level2 amzn2023 lockdown
cis-level2-amzn2023-lockdown
Ansible 実行後の評価は 179/243 なので約73%準拠となりました。
初期値約52%準拠から20%以上改善されたので良いとは思いますが、今一つの数字でした。

6. 考慮事項とベストプラクティス

適用時の注意点

  • Ansible-Lockdownのプレイブックを適用する前に、必ずバックアップを取得して適用してください。
  • 実環境で試す場合はプレイブックの設定を確認し、環境に適したカスタマイズを行ってください。

7. まとめ

本記事では、今回は、Ansible-Lockdown を使用して Amazon Linux 2023のEC2インスタンスをCISベンチマークに(なるべく)準拠させつつAmazon Inspector v2 で初期状態と適用後の評価結果を比較し、セキュリティ強化の効果を確認しました。
尚、Amazon Inspector v2がEC2インスタンスのCISベンチマークの評価でFAILEDとなった項目の修正方法はRemediationから確認できます。
CISベンチマークの運用を自社で行う際は Ansible-Lockdown の検討もありかと感じました。

参考文献

https://github.com/ansible-lockdown/AMAZON2023-CIS
https://dev.classmethod.jp/articles/amazon-inspector-cis-benchmark-assessments-operating-systems-ec2-instances/

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.