説明
Network ACL の deny ルールに特定の CIDR を指定すると、その範囲の通信が拒否対象になります。特定のネットワークを遮断する目的なら有効な設定であり、すべての拒否ルールを全アドレスに広げる必要はありません。
問題になるのは、遮断したい通信が対象範囲から外れる場合や、番号の小さい許可ルールが先に適用される場合です。NACL は番号の小さい順に評価し、最初に一致したルールを適用します。どのルールにも一致しない通信は拒否します。
想定される影響
- 遮断するはずの通信が別のルールで許可され、意図しないアクセスが続く可能性があります。
- 拒否範囲を不必要に広げると、正当な管理通信やサービス通信が途絶えることがあります。
対処方法
- 通信の方向、プロトコル、ポート、CIDR を実際の制限要件に合わせて指定してください。
- 特定の拒否を広い許可より優先する場合は、拒否ルールに小さい番号を指定してください。IPv4 と IPv6 も個別に確認してください。
- ルール全体と双方向の応答経路を確認し、変更後に許可対象と拒否対象の接続をテストしてください。
例
MyNacl と他のルールは省略しています。以下の変更は、すべての IPv4 アドレスからの TCP 22 の受信を遮断したい場合にだけ適しています。
変更前
yaml
Resources:
InboundDenyRule:
Type: AWS::EC2::NetworkAclEntry
Properties:
NetworkAclId: !Ref MyNacl
RuleNumber: 100
Protocol: 6
RuleAction: deny
CidrBlock: 172.16.0.0/24
PortRange:
From: 22
To: 22
172.16.0.0/24 からの TCP 22 通信を対象とします。他の範囲を許可するかどうかは、残りのルールによって決まります。
変更後
yaml
Resources:
InboundDenyRule:
Type: AWS::EC2::NetworkAclEntry
Properties:
NetworkAclId: !Ref MyNacl
RuleNumber: 100
Protocol: 6
RuleAction: deny
CidrBlock: 0.0.0.0/0
PortRange:
From: 22
To: 22
拒否範囲をすべての IPv4 アドレスに広げます。番号の小さい許可ルールが先に適用されないことを確認してください。