Network Access Analyzer で意図しないネットワークアクセスを検出する
記事の「実践」を 1 項目ずつ進めるためのページです。AWS マネジメントコンソールで操作したら、右の一覧にチェックを入れてください。チェックはこのブラウザに保存されます。
前提条件
- リージョン:
ap-northeast-1(東京) - 以下のリソースが作成済みであること
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| VPC | naa-lab-vpc | 検証用 VPC(CIDR: 10.0.0.0/16) |
| パブリックサブネット | naa-lab-public-subnet | パブリックサブネット(CIDR: 10.0.1.0/24) |
| プライベートサブネット | naa-lab-private-subnet | プライベートサブネット(CIDR: 10.0.2.0/24) |
| インターネットゲートウェイ | naa-lab-igw | インターネット接続用 |
| EC2 インスタンス | naa-lab-web | パブリックサブネット上の Web サーバー |
| EC2 インスタンス | naa-lab-db | プライベートサブネット上の DB サーバー |
| セキュリティグループ | naa-lab-web-sg | Web サーバー用 SG(ポート 80、22 を 0.0.0.0/0 から許可) |
| セキュリティグループ | naa-lab-db-sg | DB サーバー用 SG(ポート 3306 を naa-lab-web-sg から許可) |
この実践で作成するリソース
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| ネットワークアクセススコープ | naa-lab-ingress-scope | インターネットからのインバウンドアクセス分析用 |
Network Access Analyzer へのアクセス
AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します。
Network Access Analyzer は、Network Manager のコンソールにあります。上部の検索バーに Network Access Analyzer と入力し、表示された「Network Access Analyzer」を選択します(Network Manager の左側ナビゲーションの「セキュリティとガバナンス」→「Network Access Analyzer」からも開けます)。
初めて開いたときは、紹介の画面が表示されます。「使用を開始する」をクリックすると、Network Access Scopes の一覧が表示されます。一覧には、Amazon が用意した既定のスコープ(AWS-IGW-Egress、All-IGW-Ingress など)が 4 つ入っています。
ネットワークアクセススコープの作成
「Network Access Scope を作成」をクリックします。作成は「テンプレートを選択」→「定義」→「確認と作成」の 3 ステップです。
ステップ 1 で、テンプレート「インターネットゲートウェイからのアクセスを識別」を選択し、「次へ」をクリックします。
ステップ 2 で以下を設定します。
- 「詳細」の名前:
naa-lab-ingress-scope(入力した名前は Name タグになります) - 「一致条件」の送信元: テンプレートにより、リソースタイプ
AWS::EC2::InternetGatewayが入っています。そのままにします - 「一致条件」の送信先: 「リソースの選択」を「リソース ID」から「リソースタイプ」に切り替え、
Network Interfaces (AWS::EC2::NetworkInterface)を選択します
その他の項目はデフォルトのままにして「次へ」をクリックし、確認画面で「Network Access Scope を作成」をクリックします。
分析の実行
作成した naa-lab-ingress-scope を選択し、「分析」をクリックします。
スコープの詳細画面に切り替わり、分析が始まります(確認の画面はありません)。今回は 1 分ほどで完了しました。
分析結果の確認
分析が完了すると、「最新の分析」タブの「結果」に、インターネットゲートウェイから ENI に到達できるアクセス経路が一覧表示されます。一覧には、開始・終了のリソースや、プロトコル・送信先ポートが並びます。
このスコープは送信元・送信先を「リソースタイプ」で指定しているため、アカウント内のほかの VPC の経路も結果に含まれます。結果の検索ボックスに naa-lab と入力し、今回の前提環境のリソースだけに絞り込みます。
一覧の行を選択すると、右側にアクセス経路の図が表示されます。経路は次の順につながっています。
- 送信元(インターネットゲートウェイ)
- ネットワーク ACL
- セキュリティグループ(許可しているプロトコルとポート範囲も表示されます)
- 送信先(EC2 インスタンスの ENI)
今回の前提環境では、naa-lab-web のセキュリティグループがポート 22(SSH)を 0.0.0.0/0(すべての IP アドレス)から許可しているため、インターネットからの SSH アクセスが検出結果に含まれます。これは意図しないアクセス経路の例であり、ソースを特定の IP アドレスに制限するなどの是正が必要です。
意図しないアクセスの是正確認
是正措置として、naa-lab-web-sg の SSH ルールのソースを 0.0.0.0/0 から特定の IP アドレス(例: マイ IP)に変更します。
上部の検索バーに EC2 と入力し、表示された「EC2」を選択します。
左側ナビゲーションの「ネットワーク&セキュリティ」→「セキュリティグループ」を選択し、naa-lab-web-sg を選択します。
「インバウンドルール」タブを選択し、「インバウンドルールを編集」をクリックします。
SSH ルールの「リソースタイプ」を マイ IP に変更します。ソース欄に自分のパブリック IP アドレス(/32)が入ります。「ルールを保存」をクリックします。
Network Access Analyzer に戻り、naa-lab-ingress-scope で再度分析を実行します。SSH(ポート 22)の経路は、インターネットゲートウェイから到達できる経路として引き続き結果に出ますが、セキュリティグループの送信元が 0.0.0.0/0 から自分の IP アドレス(/32)に変わったことが確認できます。Network Access Analyzer はルールが許可している経路を洗い出すツールなので、「経路が残っていてよいか」「送信元は十分に絞られているか」を結果を見て判断します。