Network ACL の拒否範囲を確認

Network ACL の拒否範囲とルールの順序が、意図した通信制限に合っているか確認してください。

説明

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 アドレスに広げます。番号の小さい許可ルールが先に適用されないことを確認してください。

参考資料