AWS Network ACLでサブネット制限

Network

AWS環境において本番環境と開発環境を分ける場合にVPCを分けて作成した方が良いか?それとも同一VPCに、サブネットを複数作成してネットワークACLで制限した方が良いか? それぞれ既存環境だったり、要件や条件によって変わってくるかと思います。今回は、検証用のVPCのサブネットの範囲をClass Bで取っているので、単一のVPC内でサブネット単位で分けてネットワークACLでサブネット単位でのアクセス制限を簡易的に確認をして見ました。

AWS Network

Default設定の場合VPC内のサブネット間は接続可能

何もしないと、新規作成したサブネット間はアクセス可能 (VPC DefaultのネットワークACLが適用される)

※ この検証ではネットワークレベルの確認なので、サーバー側に鍵は登録していません。

[ec2-user@ip-172-30-2-38 ~]$ ssh 172.30.200.220
The authenticity of host '172.30.200.220 (172.30.200.220)' can't be established.
ECDSA key fingerprint is SHA256:/x5grKqiJjFxBi**************************.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.30.200.220' (ECDSA) to the list of known hosts.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

新たにネットワークACLを作成して、上記で作成したサブネットに適用

ACLで通信が拒否されているのでサーバーに到達出来ない。

[ec2-user@ip-172-30-2-38 ~]$ ssh 172.30.200.220  /**** ネットワークACLでDEVサブネット拒否 ***/
^C

上記で作成したネットワークACLに特定サブネットからのアクセスを許可

アクセス可能になりました

[ec2-user@ip-172-30-2-38 ~]$ ssh 172.30.200.220  /**** ネットワークACLでDEVサブネット許可 ***/
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[ec2-user@ip-172-30-2-38 ~]$

基本的には、全体のシステム数、ネットワーク要件、セキュリティ要件だったりによって変わってくると思いますが、きちんと設計して運用ルールを決めておけばどちらでも問題無さそうでした。👌

参考

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html#nacl-examples

https://xpertstec.com/how-to-configure-network-acl-in-aws/

AWS Network ACL and subnets: network level security

https://pages.awscloud.com/rs/112-TZM-766/images/AWS-08_AWS_Summit_Online_2020_NET01.pdf

備考:AWSコマンドでの確認

こちらは、Dockerを使ってますがawsコマンドで構成の確認も出来るので利用しやすいフォーマットでデータをダウンロードして整理すれば見やすくて便利なデータとして活用出来そうです。

root@DESKTOP-8BDL7KA:/# docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli ec2 describe-vpcs --output text --query "Vpcs[].[Tags[?Key=='Name'] | [0].Value,VpcId,CidrBlock,DhcpOptionsId,State,OwnerId,InstanceTenancy]" | sort

None    vpc-9999c9c99f34aaa99   172.16.0.0/16   dopt-15d58371   available       777775517777    default
None    vpc-aca9a9d9    172.30.0.0/16   dopt-15d58371   available       777775517777    default


root@DESKTOP-8BDL7KA:/# docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli ec2 describe-vpcs --query "Vpcs[].[Tags[?Key=='Name'] | [0].Value,VpcId,CidrBlockAssociationSet[0].CidrBlock,CidrBlockAssociationSet[1].CidrBlock,CidrBlockAssociationSet[2].CidrBlock]" --output text
None    vpc-9999c9c99f34aaa99   172.16.0.0/16   None    None
None    vpc-aca9a9d9    172.30.0.0/16   None    None


root@DESKTOP-8BDL7KA:/# docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli ec2 describe-subnets --query "Subnets[].[Tags[?Key=='Name'] | [0].Value,VpcId,CidrBlock,AvailableIpAddressCount,SubnetId,AvailabilityZone,MapPublicIpOnLaunch,State,OwnerId]" --output text | sort

development-subnet      vpc-aca9a9d9    172.30.200.0/24 250     subnet-00306c0f43eae0dda        ap-northeast-1b False   available       777775517777
None    vpc-9999c9c99f34aaa99   172.16.0.0/24   251     subnet-0999c9d9f99f99e9d        ap-northeast-1c False   available       777775517777
None    vpc-9999c9c99f34aaa99   172.16.1.0/24   251     subnet-9999b9ae5edef999d        ap-northeast-1b False   available       777775517777
None    vpc-aca9a9d9    172.30.1.0/24   251     subnet-9999999f ap-northeast-1c True    available       777775517777
None    vpc-aca9a9d9    172.30.2.0/24   249     subnet-0f99bc99 ap-northeast-1b True    available       777775517777


root@DESKTOP-8BDL7KA:/# docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli ec2 describe-route-tables --query "RouteTables[].Associations[].[SubnetId,RouteTableId,Main]" --output text | sort | column -t

subnet-0999c9d9f99f99e9d   rtb-04aeb82551d0e8365  False
None                       rtb-015476577ac48a41a  True
None                       rtb-8b02aaec           True
subnet-9999b9ae5edef999d   rtb-04aeb82551d0e8365  False


root@DESKTOP-8BDL7KA:/# docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli ec2 describe-internet-gateways --query "InternetGateways[].{InternetGatewayId:InternetGatewayId,VpcId:Attachments[0].VpcId}" --output table
----------------------------------------------------
|             DescribeInternetGateways             |
+------------------------+-------------------------+
|    InternetGatewayId   |          VpcId          |
+------------------------+-------------------------+
|  igw-0550005f5559dd555 |  vpc-9999c9c99f34aaa99  |
|  igw-d05da1b5          |  vpc-aca9a9d9           |
+------------------------+-------------------------+

root@DESKTOP-8BDL7KA:/# docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli ec2 describe-network-acls --query "NetworkAcls[].Associations[].{NetworkAclId:NetworkAclId,SubnetId:SubnetId}" --output table
-------------------------------------------------------
|                 DescribeNetworkAcls                 |
+------------------------+----------------------------+
|      NetworkAclId      |         SubnetId           |
+------------------------+----------------------------+
|  acl-09169185ed9999999 |  subnet-0999c9d9f99f99e9d  |
|  acl-09169185ed9999999 |  subnet-9999b9ae5edef999d  |
|  acl-99a99999          |  subnet-9999999f           |
|  acl-99a99999          |  subnet-0f99bc99           |
|  acl-99ed9fffc9999f999 |  subnet-00306c0f43eae0dda  |
+------------------------+----------------------------+

root@DESKTOP-8BDL7KA:/# docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli ec2 describe-security-groups --query "SecurityGroups[].[VpcId,GroupName,GroupId,Description]" --output text | tr "\t" "?" | column -s? -t
column: line too long
None    default sg-ce1aa1cf     default group
None    quicklaunch-1   sg-e99aa9e9     quicklaunch-1
vpc-aca9a9d9    launch-wizard-2 sg-999cbf99db9d99d99    launch-wizard-2 created 2021-10-22T09:46:40.731+09:00
vpc-9999c9c99f34aaa99   default sg-11e01d0ffd1111ca9    default VPC security group
vpc-aca9a9d9    launch-wizard-1 sg-1e1c1111     launch-wizard-1 created 2018-04-11T15:11:07.423+09:00
vpc-aca9a9d9    default sg-dc9ec5ba     default VPC security group

参考: https://blog.serverworks.co.jp/aws-cli-network

カテゴリー:

タグ:

最近のコメント

表示できるコメントはありません。