AWS
ozvisionDay 17

ネットワークACLを使用してVPC外へのトラフィックを遮断する

概要

AWS利用だと本番サーバのAMIからサクッと検証環境を構築して検証することがありますが、設定ミスや漏れにより意図しないトラフックを本番に流してしまう恐れがあり案外危険な作業だと感じていました。
そこでネットワークACLを使用してVPC外へのトラフィックを遮断できる状態を作り、その中で安全に検証をすることにしました。
ということで、今回はネットワークACL設定について投稿いたします。

やりたかったこと

  • 意図しないトラフィックをネットワーク外に出さない
  • DynamoDBへのアクセスを遮断したい
  • 検証環境設定にミスや漏れがあってもトラブルを起こさない
  • 知らないところで外部通信しているものを見つけたい
  • 検証環境を皆安全に使ってもらいたい

VPCとネットワークACL設定内容

  • 東京リージョンのzone-bとcをsubnet-bとcで設定
  • inboundは制限しない
  • outboundはvpc外に出ないように設定にする
  • 設定値は以下のとおり
セグメント CIDER NetworkALC
(inbound)
NetworkALC
(outbound)
vpc 10.0.0.0/16 0.0.0.0/0 allow
0.0.0.0/0 deny
0.0.0.0/0 allow
0.0.0.0/0 deny
subnet-b 10.0.0.0/24 0.0.0.0/0 allow
0.0.0.0/0 deny
10.0.0.0/16 allow
10.0.1.0/24 allow
0.0.0.0/0 deny
subnet-c 10.0.1.0/24 0.0.0.0/0 allow
0.0.0.0/0 deny
10.0.0.0/16 allow
10.0.0.0/24 allow
0.0.0.0/0 deny

構成図

aws-vpc.PNG

  • ネットワークALCを意識しないでVPCを構築するとvpcのネットワークALCをそのままsubnetに使ってしまうので、subnet用には新規作成する必要があります。
  • 以下の様にsubnetのネットワークALCは1つにまとめることも可能です。
セグメント CIDER NetworkALC
(inbound)
NetworkALC
(outbound)
subnet-b
subnet-c
10.0.0.0/24
10.0.1.0/24
0.0.0.0/0 allow
0.0.0.0/0 deny
10.0.0.0/16 allow
10.0.0.0/24 allow
10.0.1.0/24 allow
0.0.0.0/0

この設定が基本になります。この後は検証に必要なoutboundを開けて検証を実施していきます。

ネットワークACL使用時の注意点

  • セキュリティグループと混合してしまわないようにしっかり理解することが大事です。
  • 1つのネットワークALCで指定できるルール数は20(上限緩和で最大40)まで。
  • 追加のルールを処理するためのワークロードが増えるため、ネットワークのパフォーマンスに影響することがあります。 このあたりは気にしながら使うようにしたいです。

(参考)
http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_ACLs.html
http://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_service_limits.html#limits_vpc

さいごに

ざっくりとした説明でわかりにくかったかもしれませんが、
安全な環境で開発することは、結果的に安全なサービスにつながると思っています。
少しても参考にして頂ければ幸いです!  横地秀