SSM Inventory + AWS Config で EC2 に禁止されたアプリケーションがインストールされているか監視してみた
はじめに
テクニカルサポートの 片方 です。
EC2 を利用していると、どんなアプリケーションがインストールされているかを定期的に監視したくなることがありますね。
特に、禁止されたソフトウェア(例:telnet、nginx など)が意図せずインストールされていないか確認したいケースが存在するかと思います。
本ブログでは、以下の AWS サービスを組み合わせて、EC2 インスタンス上のアプリケーションを自動で監視・評価する仕組みを実装してみました。
- SSM Inventory
- AWS Config(マネージドルール)
やってみた
本ブログでは、既にマネージドノードとして登録しており SSM Inventory によってアプリケーションが収集されている状況を想定してご紹介します。そのため設定方法について割愛させて頂きます。
AWS Config
AWS Config の マネージドルール の ec2-managedinstance-applications-blacklisted 利用して、禁止されたアプリケーションがインストールされているか監視します。
AWS Config マネジメントコンソール画面より、ルールを追加します。
AWS によって管理されるルールの追加を選択後、検索窓に ec2-managedinstance-applications-blacklisted を記載します。表示されたら選択を行い、次へをクリックします。
下部へスクロールを行います。
パラメータのセクションで禁止するアプリケーション名または、platformType を記載します。
今回は検証用に nginx を記載しました。
後はそのまま進めていき、保存すれば終了です。
もし、Config の記録対象に、AWS SSM ManagedInstanceInventory リソースタイプが含まれているのかを確認してください。
含まれていない場合は、追加の設定をしてください。
これで実装は終了です。お疲れさまでした!
検証してみた
マネージドノードとして登録済みのインスタンス ID (i-01583fe70bbf08f76) の EC2 が起動中の状況です。
ec2-managedinstance-applications-blacklisted の Config ルールにおいて、準拠している EC2 インスタンスとして表示されているのを確認しました。
それでは、nginx をインストールして非準拠になるか確認します。
nginx インストール
sh-5.2$ sudo dnf -y install nginx
Amazon Linux 2023 Kernel Livepatch repository 178 kB/s | 19 kB 00:00
Dependencies resolved.
===================================================================================================================================================================================================================
Package Architecture Version Repository Size
===================================================================================================================================================================================================================
Installing:
nginx x86_64 1:1.28.0-1.amzn2023.0.1 amazonlinux 33 k
Installing dependencies:
generic-logos-httpd noarch 18.0.0-12.amzn2023.0.3 amazonlinux 19 k
gperftools-libs x86_64 2.9.1-1.amzn2023.0.3 amazonlinux 308 k
libunwind x86_64 1.4.0-5.amzn2023.0.2 amazonlinux 66 k
nginx-core x86_64 1:1.28.0-1.amzn2023.0.1 amazonlinux 669 k
nginx-filesystem noarch 1:1.28.0-1.amzn2023.0.1 amazonlinux 9.5 k
nginx-mimetypes noarch 2.1.49-3.amzn2023.0.3 amazonlinux 21 k
Transaction Summary
===================================================================================================================================================================================================================
Install 7 Packages
Total download size: 1.1 M
Installed size: 3.7 M
Downloading Packages:
(1/7): libunwind-1.4.0-5.amzn2023.0.2.x86_64.rpm 2.1 MB/s | 66 kB 00:00
(2/7): generic-logos-httpd-18.0.0-12.amzn2023.0.3.noarch.rpm 489 kB/s | 19 kB 00:00
(3/7): gperftools-libs-2.9.1-1.amzn2023.0.3.x86_64.rpm 6.9 MB/s | 308 kB 00:00
(4/7): nginx-1.28.0-1.amzn2023.0.1.x86_64.rpm 1.6 MB/s | 33 kB 00:00
(5/7): nginx-core-1.28.0-1.amzn2023.0.1.x86_64.rpm 24 MB/s | 669 kB 00:00
(6/7): nginx-filesystem-1.28.0-1.amzn2023.0.1.noarch.rpm 391 kB/s | 9.5 kB 00:00
(7/7): nginx-mimetypes-2.1.49-3.amzn2023.0.3.noarch.rpm 1.1 MB/s | 21 kB 00:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 11 MB/s | 1.1 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: nginx-filesystem-1:1.28.0-1.amzn2023.0.1.noarch 1/7
Installing : nginx-filesystem-1:1.28.0-1.amzn2023.0.1.noarch 1/7
Installing : nginx-mimetypes-2.1.49-3.amzn2023.0.3.noarch 2/7
Installing : libunwind-1.4.0-5.amzn2023.0.2.x86_64 3/7
Installing : gperftools-libs-2.9.1-1.amzn2023.0.3.x86_64 4/7
Installing : nginx-core-1:1.28.0-1.amzn2023.0.1.x86_64 5/7
Installing : generic-logos-httpd-18.0.0-12.amzn2023.0.3.noarch 6/7
Installing : nginx-1:1.28.0-1.amzn2023.0.1.x86_64 7/7
Running scriptlet: nginx-1:1.28.0-1.amzn2023.0.1.x86_64 7/7
Verifying : generic-logos-httpd-18.0.0-12.amzn2023.0.3.noarch 1/7
Verifying : gperftools-libs-2.9.1-1.amzn2023.0.3.x86_64 2/7
Verifying : libunwind-1.4.0-5.amzn2023.0.2.x86_64 3/7
Verifying : nginx-1:1.28.0-1.amzn2023.0.1.x86_64 4/7
Verifying : nginx-core-1:1.28.0-1.amzn2023.0.1.x86_64 5/7
Verifying : nginx-filesystem-1:1.28.0-1.amzn2023.0.1.noarch 6/7
Verifying : nginx-mimetypes-2.1.49-3.amzn2023.0.3.noarch 7/7
===================================================================================================================================================================================================================
WARNING:
A newer release of "Amazon Linux" is available.
Available Versions:
Version 2023.8.20250808:
Run the following command to upgrade to 2023.8.20250808:
dnf upgrade --releasever=2023.8.20250808
Release notes:
https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.8.20250808.html
===================================================================================================================================================================================================================
Installed:
generic-logos-httpd-18.0.0-12.amzn2023.0.3.noarch gperftools-libs-2.9.1-1.amzn2023.0.3.x86_64 libunwind-1.4.0-5.amzn2023.0.2.x86_64 nginx-1:1.28.0-1.amzn2023.0.1.x86_64
nginx-core-1:1.28.0-1.amzn2023.0.1.x86_64 nginx-filesystem-1:1.28.0-1.amzn2023.0.1.noarch nginx-mimetypes-2.1.49-3.amzn2023.0.3.noarch
Complete!
sh-5.2$ nginx -v
nginx version: nginx/1.28.0
sh-5.2$ sudo systemctl start nginx
sh-5.2$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; preset: disabled)
Active: active (running) since Sat 2025-08-09 02:23:29 UTC; 8s ago
Process: 26602 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 26603 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 26604 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 26605 (nginx)
Tasks: 3 (limit: 9345)
Memory: 3.2M
CPU: 54ms
CGroup: /system.slice/nginx.service
├─26605 "nginx: master process /usr/sbin/nginx"
├─26606 "nginx: worker process"
└─26607 "nginx: worker process"
sh-5.2$
nginx のインストールが完了したので、対象 Config ルールで非準拠になるか確認します。
※ ステートマネージャーによる関連付けが行われるタイミングで評価されます
非準拠になっていました。成功です!
まとめ
本ブログが誰かの参考になれば幸いです。
参考資料
- AWS Systems Manager とは - AWS Systems Manager
- AWS Config マネージドルール - AWS Config
- Config ルールで特定のリソースタイプが評価されないときの対処方法
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。