2021/08/23

AWSで必須となるネットワークACLの基本的な知識を分かりやすく解説

 
  

AWSでネットワークACLは何のために必要?


ネットワークACLは、ネットワークアクセスコントロールリストと呼ばれ、AWSの中でセキュリティを強化するために使用します。

AWSはクラウドサービスのため、何も考えずに利用していると誰からでもアクセスできる状態となってしまう可能性があります。悪意のあるユーザーによる不正アクセスが起こらないように、セキュリティリスクを少しでも減らす必要があります。

ネットワークACLといったセキュリティを強化する仕組みを使用して、安全にAWSを活用しましょう。

ネットワークACLの概要

ネットワークACLは、設定されたルールに従うファイヤーウォールです。AWS VPC内で、「ネットワーク通信を許可」または「ネットワーク通信を拒否」することで、ネットワーク通信を制御します。

AWSではネットワークACLと同じようなファイヤーウォールとして、セキュリティグループという仕組みもあります。ネットワークACLとセキュリティグループの違いは、設定できるレベルやルールの設定方法等が異なっているので、しっかりと理解しておくことが大切です。

ネットワークACLとセキュリティグループの違い


ネットワークACLとセキュリティグループは以下の点で異なります。

・設定対象
・設定ルール
・設定方向
・ステートフル/ステートレス
・評価順

ネットワークACLは作成できるルールに制限があったり、Ephemeralポートのことを考慮する必要があるなど、ターゲットグループと比べると少し設定が難しい部分があります。

特にAWS EC2インスタンスをメインに利用していると、AWS EC2インスタンス作成の最後に表示されるターゲットグループの方が馴染みがあるかもしれません。

ネットワークACLとの違いをしっかりおさえておきましょう。

設定対象

ネットワークACLは、サブネットに対して設定することから、その設定されたサブネット内のAWS EC2インスタンス全てに影響してしまいます。

一方で、セキュリティグループはAWS EC2インスタンスを起動するときに設定するため、今回起動したいAWS EC2インスタンスをどのようなルールにしたいかを検討する必要があります。

AWS EC2インスタンスを起動するときは、そのサブネットのネットワークACLの設定がどうなっているか、AWS EC2インスタンスを起動するときは、セキュリティグループを正しく設定するということに気をつけてください。

設定ルール

ネットワークACLは許可ルールと拒否ルールを設定します。一方で、セキュリティグループは許可ルールのみを設定します。

ネットワークACLでは、ルール番号を設定する必要があり、このルール番号が評価の順番に影響します。

デフォルトでは入りと出のルールは全て許可しています。したがって通信を開始するために許可ルールを設定しなくても問題ありません。

設定方向

ネットワークACLは通信の入りと出の両方を設定します。セキュリティグループも同様に通信の入りと出の両方を設定できます。

しかしながらセキュリティグループはステートフルなため、出の通信のみで入りの通信も同様に制御が可能になります。

通信の入りをインバウンドトラフィック、通信の出をアウトバウンドトラフィックと呼ぶこともあります。

ステートフル/ステートレス

ネットワークACLはステートレスです。この場合のステートレスとは、出の通信と入りの通信(戻ってくる通信)は別々に評価されます。つまり、出の通信は許可するが、戻ってくる入りの通信は拒否するということが可能になります。

セキュリティグループはステートフルです。出の通信が許可されていれば、入りの通信(戻ってくる通信)は自動的に許可されます。

評価順

ネットワークACLは設定されたルールの番号の順番で評価されます。一方で、セキュリティグループは設定された全てのルールが評価されます。

ネットワークACLのルールは、ルールの番号の昇順で評価され、1つでもルールが当てはまると、それと異なった後続のルールは無視して適用されます。

ネットワークACLとセキュリティグループの比較表

ネットワークACLとセキュリティグループは、大きく5つの項目で異なっており、重要な点をわかりやすく以下の比較表にまとめてみました。

ネットワークACLでは最低限必要なルールを設定し、セキュリティグループではAWS EC2インスタンスごとの要件に従って細かく制御すると上手く使い分けができるはずです。

特に以下の2点は、必ず違いをおさえるようにしましょう。

・セキュリティグループがAWS EC2インスタンス単位で設定するのに対して、ネットワークACLはサブネット単位で設定する
・セキュリティグループは許可のみだが(ホワイトリスト型)、ネットワークACLは拒否も可能(ブラックリスト型)

ネットワークACL セキュリティグループ
設定対象 サブネット単位 インスタンス単位
設定ルール 許可ルールと拒否ルール 許可ルールのみ
設定方向 入りと出 入りと出
ステートフル/ステートレス ステートレス ステートフル
評価順 順番に評価される 全て評価される

ネットワークACLのルールが足りないときは?

ネットワークACLは設定できるルールの数に制限があるため、多くのアクセス制限を追加したい場合は適切ではありません。

多くのルールを登録する場合は、AWS WAFを検討してみてください。

AWS WAFとは、ウェブアプリケーションファイアウォールと呼ばれ、SQLインジェクションやクロスサイトスクリプティングなどの攻撃に対応することができます。

Ephemeralポートとは?

Ephemeralポートとは、PCがサーバーにアクセスするときに、一時的に利用するポートのことです。 mac OSだと49152―65535、Amazon Linuxだと32768―61000といったようにOSの種類やバージョンによって異なります。

全てのポートに対応させるためには、ポート範囲として1024―65535を設定しておけば問題ないでしょう。

ネットワークACLを設定してみよう!


AWSアカウントを持っていて、VPC、サブネットの設定が済んでいる方は、ネットワークACLを設定してみましょう。

やることは簡単で、ルール番号を入力、プロトコルを選択、許可/拒否を設定するだけです。

ネットワークACLの構成要素

ネットワークACLの構成要素は以下の4つがあります。

・ルール番号
・タイプ
・プロトコル/ポート範囲/送信先
・許可/拒否

ネットワークACLを実際に設定してみよう!

以下の手順に従って、設定してみてください。サブネットごとにルールを設定します。

・VPCメニューから、ネットワークACLを選択
・ネットワークACLの作成を選択

・名前タグは任意入力し、作成済みのVPCを選択

・作成したネットワークACLからインバウンドルールの編集を選択

・ルールの追加より設定したいルールを作成

・インバウンドルール同様にアウトバウンドルールも作成

・サブネットの関連付けよりサブネットの関連付けの編集を選択

・設定したいサブネットを選択し、編集を選択

以上で、ネットワークACLの設定は完了です。

ネットワークACLやセキュリティグループはどうやって管理する?

ネットワークACLやセキュリティグループの違い、設定の仕方をお伝えしましたが、実際にルールを設定していくと、どういう設定をしたか、いつ設定を変更したのかといった管理が必要になってきます。

AWSでは、ネットワークACLやセキュリティグループの構成管理として、AWS Configというサービスがあります。

セキュリティグループのルールが変更されると変更を検知してくれますので、AWS Configはオンにしておくと良いでしょう。

ネットワークACLを使ってみよう!


ネットワークACLやターゲットグループはAWSを使う上で、必ず利用します。

もし設定ミスや設定不足が発生した場合、悪意のあるユーザーによって不正アクセスなどが発生してしまう可能性がありますので、しっかりと設定を確認しましょう。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】