ACLとは?通信を許可・拒否する仕組み・Standard/Extended ACLを図解

  • URLをコピーしました!

前の記事では、 NAT・NAPTを使ってIPアドレスやPort番号を変換する仕組み を学びました。

しかし、実際のネットワークでは 通信できる状態になっているからといって、 すべての通信を許可したいわけではありません。

USER NETWORK 192.168.10.0/24
📡 Router
SERVER NETWORK 192.168.100.0/24

たとえば、

✓ Web通信は許可 TCP / 443
✕ Telnetは拒否 TCP / 23
「このIPアドレスからの通信は許可する」
「このPort番号への通信は拒否する」
といった制御はどうやって実現するのでしょうか?

そこで利用される代表的な仕組みが ACL(Access Control List) です。

🌐 NETWORK INTERMEDIATE

この記事はネットワーク中級講座の一部です。 学習順を確認したい場合は講座一覧から確認できます。

ネットワーク中級講座を見る →
LESSON GOAL この記事のゴール

ACLという用語を覚えるだけでなく、 「通信条件を上から順に評価し、 最初に一致したpermit / denyによって パケットを通すか止めるか判断する」 仕組みを理解することが目標です。

目次

ACLとは?

ACLは Access Control List の略です。

ネットワーク機器に設定した条件と通信内容を比較し、 パケットを許可(permit)するか、拒否(deny)するか を判断します。

PACKET 192.168.10.10 → 192.168.100.10:443
ACL 条件を確認
RESULT PERMIT
ACL=通信に対するルール一覧

送信元IPアドレスや宛先IPアドレス、 Protocol、Port番号などを条件にして 通信を制御できます。

NATとACLの役割は違う

前の記事で学習したNATと、 今回のACLは役割が異なります。

NAT / NAPT Address Translation

IP AddressやPort番号を 変換・対応付けする。

ACL Access Control

条件に一致した通信を Permit / Denyする。

Routing どこへ送る? NAT Addressをどう変える? ACL 通してよい?

ACLでは何を条件にできる?

ACLの種類によって、 確認できる条件は異なります。

代表的には次のような情報を利用できます。

01 Source IP

どこから来た通信か

02 Destination IP

どこへ向かう通信か

03 Protocol

TCP / UDP / ICMPなど

04 Port

80 / 443 / 22など

Standard ACLとExtended ACLの違い

Cisco ACLを学習すると、 代表的に Standard ACLExtended ACL が登場します。

STANDARD ACL 主にSource IPで判定
Source IP

「どこから来た通信か」 を中心に制御します。

EXTENDED ACL より細かい条件で判定
Source / Destination
Protocol / Port

「どこから・どこへ・何の通信か」 まで指定できます。

条件 Standard ACL Extended ACL
送信元IP
宛先IP
Protocol
Port番号

Standard ACLのイメージ

たとえば、 192.168.10.0/24からの通信を許可する場合を考えます。

192.168.10.10 ✓ PERMIT
192.168.10.50 ✓ PERMIT
192.168.20.10 ✕ DENY

Standard ACLでは、 基本的に 送信元IPアドレス を見て判断します。

Extended ACLならPort番号まで指定できる

たとえば、

192.168.10.0/24からWeb ServerへのHTTPS通信だけ許可

という制御を考えます。

SOURCE 192.168.10.10
PROTOCOL TCP
DESTINATION 192.168.100.10
PORT 443

Extended ACLでは、 これらを組み合わせて条件を指定できます。

ACLは上から順番に評価される

ACLで最も重要なポイントの1つが、 ルールの評価順序 です。

10 permit tcp 192.168.10.0/24 → Server :443
20 deny ip 192.168.10.0/24 → Server
30 permit ip any → any

通信が来ると、 ルーターは上から順に条件を確認します。

RULE 10 一致する?
↓ NO
RULE 20 一致する?
↓ NO
RULE 30 一致
PERMIT
IMPORTANT 最初に一致したルールで評価終了

一度permitまたはdenyのルールに一致すると、 その後ろにあるACLルールは基本的に評価されません。

ルールの順番を変えると結果も変わる

たとえば次のACLを考えます。

GOOD ORDER permit 192.168.10.10
deny 192.168.10.0/24

192.168.10.10だけ例外的に許可できる

BAD ORDER deny 192.168.10.0/24
permit 192.168.10.10

最初のdenyに一致するため、 後ろのpermitまで到達しない

ACLでは「より具体的な例外」を上に置くことが重要

広い条件のdenyを先に配置すると、 後ろのpermitが使われなくなる場合があります。

Implicit Denyとは?

ACLでは非常に重要な概念として、 Implicit Deny(暗黙のdeny) があります。

ACLの最後には、 明示的に表示されなくても概念的に 次のルールが存在すると考えます。

deny any ACLの最後に存在する暗黙の拒否

たとえば、

10 permit 192.168.10.0/24
END implicit deny any

この場合、 192.168.20.10など、 明示的なpermitに一致しない通信は 最後のImplicit Denyによって拒否 されます。

「permitを書いていない通信は通らない」

ACLを設定するときは、 必要な通信をPermitしているか確認することが重要です。

Cisco ACLで出てくるWildcard Maskとは?

Cisco ACLでは、 IPアドレス範囲を指定する際に Wildcard Mask を使う形式があります。

たとえば、 192.168.10.0/24を指定するとき、

SUBNET MASK 255.255.255.0
WILDCARD MASK 0.0.0.255

という関係になります。

Wildcard MaskはSubnet Maskと見方が逆

基本的には 0=一致させる、1=無視する という考え方です。 初学者はまず、 /24 → 0.0.0.255 という代表例から慣れると理解しやすくなります。

CiscoルーターでACLを設定するイメージ

たとえば、 192.168.10.0/24からの通信を許可するStandard ACLなら、 次のような設定例があります。

Cisco IOS
Router(config)# access-list 10 permit 192.168.10.0 0.0.0.255

Extended ACLでは、 Protocolや宛先、Port番号まで指定できます。

Router(config)# access-list 100 permit tcp 192.168.10.0 0.0.0.255 host 192.168.100.10 eq 443

これは概念的に、

ACTION permit
PROTOCOL tcp
SOURCE 192.168.10.0/24
DESTINATION 192.168.100.10
PORT 443

という意味になります。

ACLは作るだけではなく適用する必要がある

ACLルールを作成しただけでは、 通常まだ通信制御は開始されません。

対象となるInterfaceへ、 InboundまたはOutbound として適用します。

INBOUND Interfaceへ入ってくる通信
Router
OUTBOUND Interfaceから出ていく通信
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip access-group 100 in

この例では、 ACL 100をGi0/0の Inbound方向 へ適用しています。

ここで実際に試してみよう:ACL評価シミュレーター

ACLは上から順に評価されます。 通信を選択して、 どのルールに一致するか確認してみましょう。

INTERACTIVE LAB

ACL Rule Evaluator

FIRST MATCH
ACL RULES
10 PERMIT TCP 192.168.10.0/24 → 192.168.100.10 :443
20 DENY IP 192.168.10.0/24 → 192.168.100.10
30 PERMIT IP ANY → ANY
READY

通信を選択して評価してください

最初に条件へ一致したACLルールでPermit / Denyが決まります。

理解度チェック:ACLの順番で結果はどう変わる?

次の通信を考えます。

SOURCE 192.168.10.10

次の2つのルール順序のうち、 192.168.10.10だけを許可できるのはどちらでしょうか?

回答を選択してください

ACLは上から順番に評価されることを思い出しましょう。

ACLのトラブルシューティングでは何を見る?

CHECK 01 Ruleの順番は正しい?

広いdenyが先にあると、 後ろのpermitまで到達しない場合があります。

CHECK 02 Implicit Denyに落ちていない?

必要なPermit Ruleが不足していないか確認します。

CHECK 03 Interface・方向は正しい?

Inbound / Outboundや 適用Interfaceを確認します。

ACLだけでネットワーク防御は十分?

ACLを使えば、 IPアドレスやProtocol、Port番号などを条件にして 通信を制御できます。

しかし、ACLだけでは 通信の状態やアプリケーションの内容まで高度に判断できるとは限りません。

ACL Rule Based Filtering

IP / Protocol / Portなどの 条件を中心にPermit / Deny。

FIREWALL Stateful Security

通信状態なども踏まえて より高度に通信を制御。

「内部から開始した通信への戻りパケットだけ許可する」
といった通信状態を考慮した制御はどう実現するのでしょうか?

そこで次に学習するのが ファイアウォール です。

確認問題:ACLの仕組みを理解できたか確認しよう

QUESTION 01

ACLの基本的な役割として正しいものはどれですか?

正解:B

ACLは通信内容と設定ルールを比較し、 PermitまたはDenyを判断します。

QUESTION 02

ACLの評価方法として正しいものはどれですか?

正解:C

ACLは上から順番に評価され、 最初に一致したPermit / Denyで処理が決まります。

QUESTION 03

ACLのImplicit Denyとは何ですか?

正解:A

ACLの末尾には暗黙のDenyが存在するため、 明示的なPermitに一致しない通信は拒否されます。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

ACLは 条件に応じて通信をPermit / Denyする仕組み

02

Standard ACLは主に Source IPを条件として利用する

03

Extended ACLでは Source / Destination / Protocol / Port などを組み合わせて細かく制御できる

04

ACLは 上から順番に評価し、最初に一致したRuleで終了 する

05

ACL末尾には Implicit Deny が存在する

NEXT LESSON

次は「ファイアウォールとは?ネットワークを守る仕組み」を学びましょう

ACLによって、 IP Address・Protocol・Port番号などを条件に 通信をPermit / Denyできることを学びました。

次はさらに一歩進んで、 通信がどちら側から開始されたのか、 その通信が既存セッションへの戻り通信なのか といった状態まで判断する ファイアウォールの仕組みを学習します。

ACLとFirewallの違いを理解すると、 実際の企業ネットワークで行われている セキュリティ設計が理解しやすくなります。

ファイアウォールとは?ネットワークを守る仕組み
NETWORK INTERMEDIATE

ネットワーク中級講座の一覧へ戻る

学習順を確認したい場合は、 ネットワーク中級講座の一覧ページへ戻れます。

← ネットワーク中級講座へ戻る
目次