Cisco Catalyst 初期設定⑦|ACL(アクセスコントロールリスト)の設定方法【IOS XE 17.6.x】

ネットワーク技術

 

ネットワークを構築したら、次に考えなければならないのが「誰に、何を、通していいのか」というセキュリティポリシーです。

VLANを設定してネットワークを分割しても、VLAN間ルーティングを有効にしているかぎり、すべてのVLAN間通信が許可されます。

VLAN設定やVLAN間ルーティングと聞いてピンとこなかった場合は以下記事をご連いただければと思います。

Cisco Catalyst 初期設定④|トランクポート(802.1Q)の設定方法【IOS XE 17.6.x】
前回の記事では、VLANの作成とアクセスポートへの割り当てを解説しました。今回はその続きとして、スイッチ間で複数のVLANを通すトランクポートの設定を解説します。【前回の記事】 「VLANを作ったのに、別のスイッチにいる同じVLANの端末と…
Cisco Catalyst 初期設定⑤|SVIでVLAN間ルーティングを設定する方法【IOS XE 17.6.x】
前回までの記事で、VLANの作成・アクセスポートへの割り当て・トランクポートの設定を解説しました。これで「同じVLAN内の端末同士」が通信できる環境は整いました。 【VLANの作成・アクセスポートへの割り当て】【トランクポートの設定】 しか…

「営業部からサーバーへの通信は許可するが、開発部からの直接アクセスは拒否したい」。そういった細かい制御を実現するのがACL(Access Control List:アクセスコントロールリスト)です。

このシリーズ最終回となる今回は、ACLの基礎から実際の設定コマンドまでを、Cisco公式ドキュメントに基づいて正確に解説します。

 

 

動作環境

  • 機器:Cisco Catalyst 9606R
  • OS:Cisco IOS XE 17.6.x(Bengaluru)
  • 前提:初期設定⑤(SVI・VLAN間ルーティング)が完了していること
  • 参照元:Cisco公式セキュリティコンフィギュレーションガイド(IOS XE Bengaluru 17.6.x)

 

 

ACLとは何か

公式ドキュメントでは次のように定義されています。「ACLはpermit条件とdeny条件の順序付きコレクションです。デバイスはアクセスリストの条件に対してパケットを1つずつテストします。最初に一致した条件が、デバイスがパケットを受け入れるか拒否するかを決定します」。

重要なポイントが2つあります。

  1. 順序が重要:最初に一致した条件でパケットの許可・拒否が決まります
  2. 暗黙のdeny all:公式ドキュメントに明記されているとおり、「ACLの末尾には、一致しなかったすべてのパケットに対する暗黙のdenyステートメントが含まれます」

つまり、ACLに何も一致しなければすべて拒否されます。設定時に「必要なものを許可し、最後に残りを拒否する」という意識が大切です。

 

 

ACLの種類

公式ドキュメントによると、Catalyst 9606RはIPv4に対して以下のACLタイプをサポートしています。

種類番号範囲マッチング条件用途
標準ACL1〜99、1300〜1999送信元IPアドレスのみシンプルなフィルタリング
拡張ACL100〜199、2000〜2699送信元・宛先IP、プロトコル、ポート番号など細かい制御
名前付きACL任意の文字列標準または拡張と同様管理しやすい・個別エントリの削除が可能

実務では名前付き拡張ACLが最もよく使われます。理由は「何のACLか名前でわかる」「個別エントリを削除・追加できる」の2点です。番号付きACLは一度設定したエントリを個別に削除できないため、管理が難しくなります。

 

 

ACLの適用場所と優先順位

公式ドキュメントによると、ACLは以下の3つの場所に適用でき、優先順位があります。

種類適用場所方向
Port ACLL2インターフェイスインバウンドのみ
Router ACLL3インターフェイス(SVI含む)インバウンド・アウトバウンド
VLAN MapVLAN全体方向なし

優先順位(高い順):Port ACL > VLAN Map > Router ACL

今回のシリーズ構成(SVIを使ったVLAN間ルーティング)では、**Router ACL(SVIへの適用)**を使います。

 

 

今回設定するシナリオ

前回まで設定した以下のネットワーク構成を使います。

VLANVLAN名ネットワーク
VLAN 10SALES192.168.10.0/24
VLAN 20DEVELOP192.168.20.0/24
VLAN 99MGMT192.168.99.0/24

今回設定するACLポリシー:

  • SALES(VLAN10)は外部(インターネット想定)へのHTTP/HTTPSを許可
  • DEVELOP(VLAN20)はSALESへのアクセスを拒否
  • MGMT(VLAN99)からはすべてのVLANへのアクセスを許可(管理用)
  • それ以外はすべて拒否(暗黙のdeny)

 

 

ACLの設定手順

ステップ1:名前付き拡張ACLの作成

各VLANのポリシーに合わせてACLを作成します。

SALES用ACL(VLAN10の通信を制御)

C9606R-Core01# configure terminal

! SALES用ACL(VLAN10)
C9606R-Core01(config)# ip access-list extended ACL_SALES_OUT
C9606R-Core01(config-ext-nacl)# remark SALES VLAN outbound policy
C9606R-Core01(config-ext-nacl)# 10 permit tcp 192.168.10.0 0.0.0.255 any eq 80
C9606R-Core01(config-ext-nacl)# 20 permit tcp 192.168.10.0 0.0.0.255 any eq 443
C9606R-Core01(config-ext-nacl)# 30 permit icmp 192.168.10.0 0.0.0.255 any
C9606R-Core01(config-ext-nacl)# 40 deny ip any any log
C9606R-Core01(config-ext-nacl)# exit

DEVELOP用ACL(VLAN20の通信を制御)

! DEVELOP用ACL(VLAN20)
C9606R-Core01(config)# ip access-list extended ACL_DEVELOP_OUT
C9606R-Core01(config-ext-nacl)# remark DEVELOP VLAN outbound policy
C9606R-Core01(config-ext-nacl)# 10 deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 log
C9606R-Core01(config-ext-nacl)# 20 permit ip 192.168.20.0 0.0.0.255 any
C9606R-Core01(config-ext-nacl)# exit

C9606R-Core01(config)# end

コマンド解説:

コマンド説明
ip access-list extended [名前]名前付き拡張ACLを作成してACLモードに入る
remark [コメント]ACLにコメントを追加する(設定には影響しない)
[シーケンス番号] permit/deny [プロトコル] [送信元] [宛先]ACEを追加する
any任意のIPアドレス(0.0.0.0 255.255.255.255の省略形)
eq [ポート番号]特定のポート番号に一致させる
log一致したパケットをsyslogに記録する

ワイルドカードマスクとは:

ACLでは、サブネットマスクの代わりにワイルドカードマスクを使います。ワイルドカードマスクはサブネットマスクのビットを反転させたものです。

ネットワークサブネットマスクワイルドカードマスク
192.168.10.0/24255.255.255.00.0.0.255
192.168.10.0/25255.255.255.1280.0.0.127
特定ホスト(/32)255.255.255.2550.0.0.0(またはhostキーワード)

 

ステップ2:ACLをSVIに適用する

作成したACLを各VLANのSVIに適用します。

C9606R-Core01# configure terminal

! VLAN10のSVIにACL_SALES_OUTをアウトバウンドに適用
C9606R-Core01(config)# interface vlan 10
C9606R-Core01(config-if)# ip access-group ACL_SALES_OUT out
C9606R-Core01(config-if)# exit

! VLAN20のSVIにACL_DEVELOP_OUTをアウトバウンドに適用
C9606R-Core01(config)# interface vlan 20
C9606R-Core01(config-if)# ip access-group ACL_DEVELOP_OUT out
C9606R-Core01(config-if)# exit

C9606R-Core01(config)# end

コマンド解説:

コマンド説明
ip access-group [ACL名] inインバウンド方向にACLを適用する
ip access-group [ACL名] outアウトバウンド方向にACLを適用する

インバウンドとアウトバウンドの考え方:

[VLAN10内のPC] → [SVI10のin] → ルーティング → [SVI20のout] → [VLAN20内のPC]
  • インバウンド(in):そのVLANから入ってくるトラフィックを制御
  • アウトバウンド(out):そのVLANへ出ていくトラフィックを制御

VLAN間ルーティングで「VLAN20からVLAN10へのアクセスを拒否」する場合、SVI10のin(VLAN20からVLAN10への入り口)またはSVI20のout(VLAN20からの出口)のどちらかに設定できます。一般的にはインバウンド(in)で制御するほうがトラフィックを早い段階でフィルタリングできて効率的です。

 

ステップ3:ACLの確認

設定したACLの内容を確認します。

C9606R-Core01# show ip access-lists

出力例:

Extended IP access list ACL_SALES_OUT
    10 permit tcp 192.168.10.0 0.0.0.255 any eq www
    20 permit tcp 192.168.10.0 0.0.0.255 any eq 443
    30 permit icmp 192.168.10.0 0.0.0.255 any
    40 deny ip any any log (5 matches)

Extended IP access list ACL_DEVELOP_OUT
    10 deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 log (0 matches)
    20 permit ip 192.168.20.0 0.0.0.255 any (12 matches)

括弧内の(5 matches)はそのACEに一致したパケット数です。denyのACEにmatchesが増えている場合、実際にトラフィックがブロックされていることが確認できます。

 

特定のインターフェイスに適用されているACLを確認するには:

C9606R-Core01# show ip interface vlan 10

出力例(抜粋):

Vlan10 is up, line protocol is up
  Internet address is 192.168.10.1/24
  ...
  Outgoing access list is ACL_SALES_OUT
  Inbound access list is not set

Outgoing access list is ACL_SALES_OUTと表示されていれば、正しくACLが適用されています。

 

ステップ4:ACLエントリの追加・削除(名前付きACLの利点)

名前付きACLでは、シーケンス番号を指定して特定のエントリを削除・追加できます。

エントリの追加(既存のシーケンス番号の間に挿入)

C9606R-Core01# configure terminal
C9606R-Core01(config)# ip access-list extended ACL_SALES_OUT
! シーケンス番号25を追加(10と20の間)
C9606R-Core01(config-ext-nacl)# 25 permit tcp 192.168.10.0 0.0.0.255 192.168.99.0 0.0.0.255 eq 22
C9606R-Core01(config-ext-nacl)# exit

エントリの削除

C9606R-Core01(config)# ip access-list extended ACL_SALES_OUT
! シーケンス番号30を削除
C9606R-Core01(config-ext-nacl)# no 30
C9606R-Core01(config-ext-nacl)# exit
C9606R-Core01(config)# end

これが名前付きACLの大きなメリットです。番号付きACLでは特定のエントリだけを削除することはできず、ACL全体を削除して作り直す必要があります。

 

ステップ5:設定の保存

C9606R-Core01# write memory
Building configuration...
[OK]

設定コマンドのまとめ

! SALES用ACLの作成
ip access-list extended ACL_SALES_OUT
 remark SALES VLAN outbound policy
 10 permit tcp 192.168.10.0 0.0.0.255 any eq 80
 20 permit tcp 192.168.10.0 0.0.0.255 any eq 443
 30 permit icmp 192.168.10.0 0.0.0.255 any
 40 deny ip any any log

! DEVELOP用ACLの作成
ip access-list extended ACL_DEVELOP_OUT
 remark DEVELOP VLAN outbound policy
 10 deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 log
 20 permit ip 192.168.20.0 0.0.0.255 any

! SVIへの適用
interface vlan 10
 ip access-group ACL_SALES_OUT out

interface vlan 20
 ip access-group ACL_DEVELOP_OUT out

! 設定の保存
end
write memory

 

 

よくあるトラブルと対処法

ACLを適用したら意図しない通信もブロックされた

ACLの末尾には暗黙のdeny allがあります。必要な通信をpermitで明示的に許可していないと、すべてブロックされます。show ip access-listsでmatch数を確認し、どのACEに引っかかっているかを特定してください。

 

pingは通るのにTCP通信がブロックされる

ICMPをpermitしていてもTCPをpermitしていない場合に起きます。拡張ACLではプロトコルを明示的に指定する必要があります。permit ip(すべてのIPプロトコルを許可)を使うか、必要なプロトコル(tcp、udp、icmpなど)を個別に許可してください。

 

ACLのmatch数が増えない

ACLがインターフェイスに正しく適用されているか、show ip interface [インターフェイス名]で確認してください。また、トラフィックが実際に発生しているかも確認しましょう。

 

 

まとめ

今回のポイントをまとめます。

  • ACLはpermit・denyの順序付きリストで、最初に一致した条件でパケットの処理が決まる
  • ACLの末尾には暗黙のdeny allがある(設定し忘れに注意)
  • 標準ACLは送信元のみ、拡張ACLは送信元・宛先・プロトコルでフィルタリングできる
  • 名前付きACLを使うと、個別エントリの追加・削除が可能で管理しやすい
  • Router ACLはSVIにip access-group [名前] in/outで適用する
  • show ip access-listsでmatch数を確認して動作を検証する
  • show ip interface [インターフェイス名]でACLの適用状況を確認する

これでCisco Catalyst 9606R初期設定シリーズ①〜⑦が完成しました。「ホスト名・バナー・タイムゾーン → SSH → VLAN → トランクポート → SVIルーティング → NTP → ACL」という実務で必要な設定の一連の流れをすべてカバーできました。

これから仕事でネットワークを構築する方、CCNAの受験を控えている方の参考になれば幸いです。

 

 

シリーズ関連記事

コメント

タイトルとURLをコピーしました