テレワークしたいから、ネットワークエンジニアがAWSの勉強をするブログ。

Switch・Routerをメインにやってきた自分にAWSはアウェイでした(汗)

AWS CLI:ネットワークACLの作成・表示・削除コマンド

AWS CLI:ネットワークACLの作成・表示・削除コマンド

検証環境や前提について

  • 検証日: 2021/03/29
  • PC環境:

    • Windows10 Pro Ver1909
      • AWS CLI Ver2.1.3
        • profile default: 読み取り専用
        • profile aws_RW: 書き込み権限あり
      • PowerShell Ver7.0.3
  • 本コマンドはPowerShellで検証しています。

  • 作成や削除をする場合「--profile aws_RW」オプションを付与します。
  • 表示の場合は「profile default」のためprofileオプションを使用しません。
  • コマンド内のパラメータやIDは検証で作成したものをそのまま使用しています。自身の環境に書き換えて使用してください。
  • 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。


目次


関連記事

  1. AWS CLI:VPCの作成・表示・削除コマンド
  2. AWS CLI:サブネットの作成・表示・削除コマンド
  3. AWS CLI:ネットワークACLの作成・表示・削除コマンド
  4. AWS CLI:セキュリティグループの作成・表示・削除コマンド
  5. AWS CLI:マネージドプレフィックスリストの作成・表示・削除コマンド
  6. 【作成中】AWS CLI:EC2インスタンスの作成・表示・削除コマンド


1. ネットワークACLの作成

1.1. 作成するネットワークACL構成

  1. ネットワークACLの作成

    項目 CLIオプション 設定値
    VPC ID --vpc-id vpc-09ff13fba3e354e62
    タグ(Name) --tag-specifications Key: Name, Value: Test-Ncl1a
    タグ(System) --tag-specifications Key: System, Value: Test
  2. ネットワークACLへルールの追加

    ルール番号 タイプ プロトコル ポート範囲 送信元 許可/拒否
    100 telnet(23) TCP(6) 23 10.1.0.0/16 Deny
    110 HTTP(80) TCP(6) 80 10.1.0.0/16 Allow
    120 SSH(22) TCP(6) 22 10.1.0.0/16 Allow
    130 カスタムTCP TCP(6) 1000-2000 0.0.0.0/0 Allow
    140 すべてのICMP-IPv4 ICMP(1) すべて 0.0.0.0/0 Allow
    * すべてのトラフィック すべて すべて 0.0.0.0/0 Deny

    ※ ルール番号「*」は暗黙のDenyで、Defaultで作成されている。

    • アウトバウンド(egress)
    ルール番号 タイプ プロトコル ポート範囲 送信先 許可/拒否
    50 RDP(3389) TCP(6) 3389 10.0.0.0/16 Deny
    100 すべてのトラフィック すべて すべて 0.0.0.0/0 Allow
    * すべてのトラフィック すべて すべて 0.0.0.0/0 Deny

    ※ ルール番号「*」は暗黙のDenyで、Defaultで作成されている。

  3. パラメータの参考

    • ルール番号[--rule-number ]

      • 1 ~ 32766 を使用可能。
      • シーケンス番号、重複不可。
      • 連番で振ってしまうと、ルールの割り込みができなくなるため、10か100刻みで設定する。
    • タイプ

      • コマンドオプションは無く、プロトコルとポート範囲から判断してAWS GUIへ表示される。
    • プロトコル[--protocol ]

      • 下記の数字 or 英小文字をに代入する。英大文字は不可。
        • -1 : all
        • 1 : icmp
        • 6 : tcp
        • 17 : udp
        • 58 : icmpv6
    • ポート範囲[--port-range ]

      • TCPUDPを使用する場合に指定が必要。
      • From=23,To=23
      • From=1000,To=2000


1.2. ネットワークACLの作成コマンド

AWS CLI v2 リファレンスガイド: create-network-acl

aws ec2 create-network-acl `
    --profile aws_RW `
    --vpc-id vpc-09ff13fba3e354e62 `
    --tag-specifications "ResourceType=network-acl, `
        Tags=[{Key=Name,Value=Test-Ncl1a}, `
              {Key=System,Value=Test}]"


1.3. ネットワークACLにルールを追加するコマンド

AWS CLI v2 リファレンスガイド: create-network-acl-entry

ルールを追加するネットワークACLのIDを調べる。

aws ec2 describe-network-acls `
    --filters "Name=tag:Name,Values=Test-Ncl1a" `
    --query "NetworkAcls[].NetworkAclId" `
    --output text

> acl-010ff3497087b018c


ルール追加コマンドは、入力時やExcelの一覧からコマンドを作るときに途中改行が無い方が楽だったので横長のコマンドにします。

インバウンド(ingress)

aws ec2 create-network-acl-entry --profile aws_RW --network-acl-id acl-010ff3497087b018c --ingress --rule-number 100 --protocol 6 --port-range From=23,To=23 --cidr-block 10.1.0.0/16 --rule-action Deny
aws ec2 create-network-acl-entry --profile aws_RW --network-acl-id acl-010ff3497087b018c --ingress --rule-number 110 --protocol tcp --port-range From=80,To=80 --cidr-block 10.1.0.0/16 --rule-action Allow
aws ec2 create-network-acl-entry --profile aws_RW --network-acl-id acl-010ff3497087b018c --ingress --rule-number 120 --protocol tcp --port-range From=22,To=22 --cidr-block 10.1.0.0/16 --rule-action Allow
aws ec2 create-network-acl-entry --profile aws_RW --network-acl-id acl-010ff3497087b018c --ingress --rule-number 130 --protocol tcp --port-range From=1000,To=2000 --cidr-block 0.0.0.0/0 --rule-action allow
aws ec2 create-network-acl-entry --profile aws_RW --network-acl-id acl-010ff3497087b018c --ingress --rule-number 140 --protocol icmp --icmp-type-code Code=-1,Type=-1 --cidr-block 0.0.0.0/0 --rule-action Allow

アウトバウンド(egress)

aws ec2 create-network-acl-entry --profile aws_RW --network-acl-id acl-010ff3497087b018c --egress --rule-number 50 --protocol tcp --port-range From=3389,To=3389 --cidr-block 10.0.0.0/16 --rule-action Deny
aws ec2 create-network-acl-entry --profile aws_RW --network-acl-id acl-010ff3497087b018c --egress --rule-number 100 --protocol all --cidr-block 0.0.0.0/0 --rule-action Allow


1.4. ネットワークACLとサブネットを関連付ける

AWS CLI v2 リファレンスガイド: replace-network-acl-association


・・・かなり面倒な手順なので、GUIでやった方が楽です(汗


  • a, 関連付けたいサブネットの「Subnet ID」を調べる。
aws ec2 describe-subnets `
    --filters "Name=tag:Name,Values=Test-Sub1a" `
    --query "Subnets[].SubnetId" `
    --output text

> subnet-07e3fb23e9e5135eb
    1. 「a」で調べたIDを使って、サブネットと関連付けられているネットワークACLの「NetworkAclAssociation ID」を調べる。
aws ec2 describe-network-acls `
    --filters "Name=association.subnet-id,Values=subnet-07e3fb23e9e5135eb" `
    --query  "NetworkAcls[].Associations[].NetworkAclAssociationId" `
    --output text

> aclassoc-5b5e8d28
    1. サブネットと関連付けたいネットワークACLの「NetworkAcl ID」を調べる。
aws ec2 describe-network-acls `
    --filters "Name=tag:Name,Values=Test-Ncl1a" `
    --query "NetworkAcls[].NetworkAclId" `
    --output text

> acl-010ff3497087b018c
  • 「c」「d」で調べたIDを使って、サブネットとネットワークACLを関連付ける。
aws ec2 replace-network-acl-association `
    --profile aws_RW `
    --association-id aclassoc-5b5e8d28 `
    --network-acl-id acl-010ff3497087b018c


1.5. ネットワークACL表示コマンド

AWS CLI v2 リファレンスガイド: describe-network-acls

# すべてのネットワークACLを表示する
aws ec2 describe-network-acls

# テキストで表示するとルールが見やすい
aws ec2 describe-network-acls --output text

# 特定ネットワークACL ID のネットワークACLのみを表示する
aws ec2 describe-network-acls --network-acl-ids acl-010ff3497087b018c

# Nameタグ==Test-Ncl1a のネットワークACLのみを表示する
aws ec2 describe-network-acls --filters "Name=tag:Name,Values=Test-Ncl1a"

# 特定VPCのネットワークACLのみを表示する
aws ec2 describe-network-acls --filters "Name=vpc-id,Values=vpc-09ff13fba3e354e62"


1.6. ネットワークACL削除コマンド

AWS CLI v2 リファレンスガイド: delete-network-acl

削除するネットワークACLのIDを調べる。

aws ec2 describe-network-acls `
    --filters "Name=tag:Name,Values=Test-Ncl1a" `
    --query "NetworkAcls[].NetworkAclId" `
    --output text

> acl-010ff3497087b018c

ネットワークACLを削除するコマンド。
※削除前にネットワークACLを未使用状態にする必要があります(サブネットとの関連付け解除)。

aws ec2 delete-network-acl `
    --profile aws_RW `
    --network-acl-id acl-010ff3497087b018c


1.7. ネットワークACLのルールを削除するコマンド

AWS CLI v2 リファレンスガイド: delete-network-acl-entry

aws ec2 delete-network-acl-entry `
    --profile aws_RW `
    --network-acl-id acl-010ff3497087b018c `
    --ingress `
    --rule-number <削除対象ルールの番号 例) 100 >
  • アウトバウンド(egress)
aws ec2 delete-network-acl-entry `
    --profile aws_RW `
    --network-acl-id acl-010ff3497087b018c `
    --egress `
    --rule-number <削除対象ルールの番号 例) 666>