Amazon Inspectorに新しいルールパッケージが追加されてEC2インスタンスに対するネットワークアクセス制御を評価できるようになりました。
はじめに
中山(順)です
Amazon Inspectorに新しいルールパッケージ "Network Reachability-1.1" が追加されました。
Amazon Inspector Launches Agentless Network Assessments
従来は侵入テスト申請を実施した上でポートスキャンを実行したり、机上でネットワークアクセス制御の設定を評価する必要があったかと思いますが、このアップデートによってこれらの負担が軽減されることになります。
新しいルールパッケージ "Network Reachability-1.1" でできること
端的に表現すると、「実質的に」ポートスキャンのようなことができます。 評価対象のEC2インスタンスに対して、インターネットからアクセス可能なポートが存在しないか評価することができます。
「実質的に」と書きましたが、実際はポートスキャンを行っているわけではなく、Security Groupなどの各種ネットワークリソースの設定を分析しています。 評価対象のリソースは以下の通りです。
- Amazon EC2 instances
- Application Load Balancers
- Direct Connect
- Elastic Load Balancers
- Elastic Network Interfaces
- Internet Gateways (IGWs)
- Network Access Control Lists (ACLs)
- Route Tables
- Security Groups (SGs)
- Subnets
- Virtual Private Clouds (VPCs)
- Virtual Private Gateways (VGWs)
- VPC peering connections
Inspectorは評価対象のインスタンスにエージェントをインストールして利用する必要がありました。 このルールパッケージでの評価はエージェントレスで利用可能です。 ただし、エージェントがインストールされている場合にはインスタンスで動作しているプロセスの情報なども評価結果に含まれます(どのプロセスでポートがリスニング状態になっているか)。
対象のアクセス経路
評価結果には、アクセス経路に関する情報も含まれます("REACHABILITY_TYPE"として結果に記載されています)。
- Internet
- Internet Gateways (including Application Load Balancers and Classic Load Balancers)
- PeeredVPC
- VPC peering connections
- VGW
- Virtual Private Gateways
結果の分類
結果は以下の3つに分類されます。
- RecognizedPort
- Amazon Inspectorで独自に指定されたよく使われるポートでEC2インスタンスに到達可能
- UnrecognizedPortWithListener
- RecognizedPort以外のポートでEC2インスタンスに到達可能
- プロセス/サービスがそのポートでリスニング状態になっている
- 重要度はLowと評価される
- NetworkExposure
- インターネットから到達可能なポート(レンジ)
- プロセス/サービスがそのポートでリスニング状態かどうかは評価していない
- 重要度はInformationと評価される
さらに、RecognizedPortは以下の3つに分類されます。
- RecognizedPortWithListener
- プロセス/サービスがそのポートでリスニング状態になっている
- RecognizedPortNoListener
- プロセス/サービスがそのポートでリスニング状態になっていない
- RecognizedPortNoAgent
- プロセス/サービスがそのポートでリスニング状態になっているか判断できない(エージェントレス)
詳細はドキュメントを確認してください。
やってみた
実際に評価してみました。
検査対象の環境を構築
以下のAMIからインスタンスを作成しました。
- Windows_Server-2016-Japanese-Full-Base-2018.10.14 (ami-0f6a57ae3b8c288aa)
- amzn-ami-hvm-2018.03.0.20180811-x86_64-gp2 (ami-06cd52961ce9f0d85)
これらのインスタンスをパブリックサブネット(デフォルトルートがインターネットゲートウェイになっているサブネット)に配置します。 また、セキュリティグループの設定では以下のインバウンド通信を許可しました。
- Windows Server
- RDP
- 0.0.0.0/0
- Amazon Linux
- SSH
- 0.0.0.0/0
評価ターゲットの作成
まず、評価ターゲットを作成します。
今回は評価用のインスタンスしか存在しないため "Include all EC2 instances in this AWS account and region" を選択します。 また、詳細な評価結果を出力するために "Install the Amazon Inspector Agent on all EC2 instances in this assessment target" を選択してAgentをインストールします(インスタンスにはRun Commandを実行するための権限をIAM Role(Instance Profile)で付与しています)。
評価テンプレートの作成
次に、評価ターゲットを作成します。
ターゲット名に作成した表かターゲットを指定します。 また、ルールパッケージに今回新たに提供されたルールパッケージを指定します。
評価の実行
評価ターゲットを作成したら、評価を実行します。 所要時間を1時間として評価ターゲットを作成したため、しばらく待ちます。
実行結果の確認
「評価の実行」から実行結果を開くと、今回は5件の問題を検出していました。 実質的に問題は2件(SSHおよびRDPで任意のIPアドレスからアクセスできる)ですが、ここでは割愛します。
そのうちの1件の詳細を確認してみます。 展開すると、詳細が表示されます。
「結果」にはどのような問題なのかが記載されています。 この結果ではSSHでアクセスされうることが指摘されています。
「説明」にはどういった経路で到達可能かが記載されています。 この結果では、配置されているVPC/アタッチされているENI/関連するSecurity GroupおよびNACL/入り口になっているゲートウェイ(今回はInternet Gateway)が挙げられています。
「推奨事項」には、この問題をどのように解決するべきかが記載されています。 この結果では、Security Groupの修正が推奨されています。
次に詳細を確認してみます。 詳細は "Show Details" をクリックするとJSONで表示されます。 Agentをインストールしている場合、プロセスに関する情報が含まれます。 具体的にはPIDやPathを確認できます。
また、REACHABILITY_TYPE(Internet)やRULE_TYPE(RecognizedPortWithListener)も確認できます。
RDPに起因する結果も似たような形で確認できます。
まとめ
新しいルールパッケージにより、ネットワークアクセス制御の不備を簡単に検出することができるようになりました。
このルールパッケージによって評価の手間も精度も向上することが期待されます。 まずは現在の環境で評価してみてはいかがでしょうか?
現場からは以上です。