今回はAWSで作成したEC2インスタンスのOSの脆弱性対策をする方法についてお話ししたいと思います。
なぜ、OSの脆弱性対策が必要か

突然ですが、AWSで作成したEC2インスタンスのパッケージアップデート行なっていますか?
まさか、EC2インスタンス起動して以来一度も行なっていないなんていうことはないですよね?
パッケージアップデートを定期的に行い、常に最新の状態に保つことは非常に大切です。
OSも人が作ったプログラムである以上、完璧ではないです。日々新しいバグが発見され、セキュリティホールとなっています。それを放置したままでいると不正アクセスや攻撃の被害にあってしまい、情報漏えいにつながってしまいます。
特にクレジットカード情報や個人情報など絶対に漏えいさせてはいけない重要な情報を保存するシステムでは特にこの点が重要になってきます。
クレジットカード業界のセキュリティ基準であるPCI DSS(Payment Card Industry Data Security Standard)でもその点が求められています。
私はAWSで利用するOSはAmazon Linuxが一番良いと思っています。
その理由は、Amazon自体が責任を持って脆弱性が無い状態に保っていてくれるパッケージを利用できるからです。もしOSSで提供されているパッケージでは不十分は場合にはAWSがパッチを作成したパッケージを提供してくれます。
また、Amazon Linux Security CenterというAmazon linuxの脆弱性の情報が一覧で見れる非常にわかりやすいページもあり、これも使い勝手がいいです。
日々の脆弱性対応は下記のような形で運用していきます
- AWSに脆弱性スキャン実施の申請を行う
- 脆弱性スキャンを定期的に行う
- 脆弱性を確認し対応方法を決める
- パッケージアップデートを行う
AWSに脆弱性スキャン実施の申請を行う

AWSでは常にプラットフォームの監視を行なっているため、勝手に脆弱性スキャンを行なってしまうと実際の攻撃と見なされてしまう場合があります。そのため、事前にAWSに申請を出す必要があります。
脆弱性スキャンを定期的に行う

PCI DSSでは下記のように最低でも四半期に一回、脆弱性スキャンを行うことが求められています。
11.2 内部と外部ネットワークの脆弱性スキャンを少なくとも四半期に一度およびネットワークでの大幅な変更(新しいシステムコンポーネントのインストール、ネットワークトポロジの変更、ファイアウォール規則の変更、製品アップグレードなど)後に実行する。
PCIデータセキュリティ基準
脆弱性スキャンに使用するソフトは、私は使用したことがありませんが、AWSではAmazon InspectorというEC2にエージェントを入れて検査してくれるサービスもあるようです
脆弱性を確認し対応方法を決める

脆弱性スキャンで発見された脆弱性のレポートの中には必ず「CVE-YYYY-XXXX」という番号が記載されていると思います。CVEとは、Common Vulnerabilities and Exposures(共通脆弱性識別子)で、MITREという会社が提供している脆弱性情報データベースで、脆弱性ごとにユニークな通し番号を発行してくれています。
例えば「CVE-2019-0001」は、2019年に発見された1番目の脆弱性、という意味になります。
この番号を使うことでこの脆弱性についての詳細や対応方法などの情報を調べることができます。
Amazon Linuxの場合には先ほどのAmazon Linux Security CenterでこのCVE-IDを使って検索をすることができます。
そしてALS-で始まるリンクをクリックして脆弱性の詳細を確認すると、どのパッケージのバージョンにアップグレードすればこの脆弱性がなくなるかという方法を確認することができます。
パッケージアップデートを行う

Amazon LinuxはRedhat に似ているOSでRedhatと同じyumコマンドでパッケージの管理を行うことができます。rootアカウントで下記のコマンドを使ってアップグレードします。
yum update (パッケージ名)
OSの脆弱性対策を日々行うこと
OSの脆弱性対策は地味な作業ですが、システムを安全に保つために非常に大切な作業です。日々対策をしていくことが重要です。