IPv4の高度なACL[番号付き拡張ACL/名前付き拡張ACL/ワイルドカードマスク]
2015年4月27日(月)
この連載では、Cisco CCENT/CCNAの資格試験対策とするために、Cisco Press公式ガイドブックに掲載されている例題を抜粋し、その例題の解答について解説を行っています。
今回は、パケットフィルタリングなどで使用されるアクセスコントロールリスト(ACL:Access Control List)のうち、IPv4の高度なACLとして番号付き拡張ACLについて説明します。
■番号付き拡張ACLについての例題
まずは、IPv4の高度なACLである番号付き拡張ACL(Extended Access Control List)についての例題を以下に示します。
※上記の問題4は『シスコ技術者認定試験 公式ガイドブック Cisco CCENT/CCNA ICND1 100-101J』 p.627より抜粋。
●例題の解説
これは、WebサーバからWebクライアントに向かうパケットに対して、プロトコルの特徴、送信元IPアドレスと宛先IPアドレスの条件に一致する番号付き拡張ACLを選択する例題です。
標準ACLが対象にしている送信元のIPアドレス情報に加えて、拡張ACLでは宛先IPアドレスの情報、プロトコル、ポート番号などの条件もチェックすることができます。拡張ACLのコマンド構文はそれほど難しくありませんが、拡張ACLを扱うには、プロトコルやポート番号の幅広い知識が必要となります。
番号付き拡張ACLの番号の範囲は、100~199と2000~2699ですが、この例題については番号を忘れていてもプロトコルやマッチングの基本的な機能を理解していれば解答することができます。
まずは、パケットの方向を確認してポート番号とIPアドレスについて考えてみましょう。
拡張ACLで必要な情報は、問題文をもとに表1に整理してみます。Webサーバが送信元なので、パケットのプロトコルはTCPであり、送信元ポート番号はウェルノウンポートの80であることは覚えておきましょう。Webクライアントは、ウェルノウンポート以外のポート番号を使用しますが、その値は変化するので宛先ポート番号は特定できません。
表1 対象となるパケットを特定する情報
選択肢を見ると、次のことがわかります。
送信元のポート番号に対して、等しいことを示す演算子のeqを使い、80かwwwと書かれているものは、c、d、eです。
宛先のIPアドレスが全てのWebクライアントなので、anyか、同等のマッチングができるワイルドカードマスクの指定である必要があります。anyの指定があるのがeです。よって、この例題の正答は、以下のeになります。
access-list 2523 permit tcp 172.16.5.0 0.0.0.255 eq www any
なお、IPアドレスが172.16.5で始まるすべてのWebサーバという表現は曖昧ですが、選択肢を見ると、172.16.5.0/24が該当することだと分かります。送信元IPアドレスが1台を意味するhost、全てのIPアドレスを意味するanyと書かれた選択肢のa、b、cは、対象から外れます。
■番号付き拡張ACLについて
拡張ACLでは、標準ACLでの送信元IPアドレスの情報に加えて、宛先IPアドレスの情報、プロトコル、ポート番号などが追加されています。パケットがACLの指定と一致するためには、これらの全てのパラメータが一致する必要があります。
拡張ACLには次の2種類がありますが、拡張ACLとしての機能に違いはありません。
●番号付き拡張ACL: ACLを番号で識別する。
●名前付き拡張ACL: ACLを英数字の名前を付けて識別する。
ACLの数が少なくシンプルに記述したい場合は、番号付き拡張ACLにおいて、remarkコマンドでコメントを付ければ可読性も良くなります。
ACLの数や行数が多い場合には、名前付き拡張ACLのほうが可読性は良くなります。
ACLの編集方法に違いがありますが、新しいIOSでは番号付き拡張ACLも名前つき拡張ACLの編集方法で細かな編集ができます。番号付き拡張ACLの編集では、名前の代わりに番号付き拡張ACLの番号を指定します。
■番号付き拡張ACLのコマンド構文
番号付き拡張ACLの代表的なコマンド構文は次のようになります。記述例では、192.168.1.0/24のネットワークから送信されて192.168.2.128/26のネットワークが宛先になる全てのIPパケットが許可されます。
◆番号付き拡張ACLのコマンド構文
access-list 番号 {deny | permit} プロトコル 送信元IPアドレス 送信元ワイルドカード 宛先IPアドレス 宛先ワイルドカード
●記述例
access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.128 0.0.0.63
また、プロトコルがTCPかUDPで固有のパラメータを含むときの代表的な構文は次のようになります。記述例では、192.168.1.0/24のネットワークから送信されて、宛先が192.168.3.3のホストになるUDPのTFTPのパケットが許可されます。
◆プロトコルがTCPかUDPで固有のパラメータを含むときのコマンド構文
access-list 番号 {deny | permit} {tcp | udp} 送信元IPアドレス 送信元ワイルドカード [演算子 ポート番号] 宛先IPアドレス 宛先ワイルドカード [演算子 ポート番号]
●記述例
access-list 101 permit udp 192.168.1.0 0.0.0.255 192.168.3.3 0.0.0.0 eq 69
●番号
番号付き拡張ACLでは、100〜199、または、追加された2000〜2699の番号を使用します。
●アクション
マッチングで一致した場合に、そのパケットの取り扱い方をdeny(拒否)、または、permit(許可)で指示します。パケットを選択するにはpermitを、パケットを廃棄するにはdenyを記述します。
●プロトコル
IPヘッダのプロトコルの種類を指定します。tcp、udp、icmp、すべてのIPパケットを意味するipなどのキーワードを指定します。
●ポート番号と演算子
プロトコルにtcpかudpを指定した場合は、必要に応じて送信先ポート番号と宛先ポート番号を指定できます。ポート番号を比較するための演算子として、eq(等しい)、neq(等しくない)、lt(より小さい)、gt(より大きい)、range(ポート番号の範囲)を使用します。また、10進数のポート番号のほかに、アプリケーションポートを表すwwwやtelnetなどのキーワードでも指定できます。
ポート番号では、ウェルノウンポートと呼ばれるポート番号の代表的なものを覚えておきましょう(表2)。
表2 主なウェルノウンポート
●送信元IPアドレス
パケットの送信元IPアドレスは、ここに指定した送信元IPアドレスとワイルドカードマスクにより決定されるアドレス値の範囲に一致するかどうかがチェックされます。
●宛先IPアドレス
パケットの宛先IPアドレスは、ここに指定した宛先IPアドレスとワイルドカードマスクにより決定されるアドレス値の範囲に一致するかどうかがチェックされます。
●ワイルドカードマスク
送信元ワイルドカードも宛先ワイルドカードも働きは同じです。ワイルドカードマスクのビットが0の位置では、パケットのIPアドレスのビットの値が、ACLで指定したIPアドレスのビットの値と等しいことをチェックします。
ワイルドカードマスクのビットが1の位置では、パケットのIPアドレスの対応する位置のビットをチェックしません。
図1 ワイルドカードマスクのビットとチェックの仕組み
特別な表現にhostとanyがあります。
hostは、0.0.0.0のワイルドカードマスクを指定する代わりに使い、パケットのIPアドレスがACLで指定されたIPアドレスの全ビットで一致することを意味します。
anyは、255.255.255.255のワイルドカードマスクを指定する代わりに使い、全ビットでチェックをしないで、全てのIPアドレスを対象にすることを意味します。
次の2行は、同じ意味を持つ記述例です。10.1.1.1のホストから発信されたIPパケットは、宛先はどこであっても対象となり、許可されます。
access-list 102 permit ip host 10.1.1.1 any
access-list 102 permit ip 10.1.1.1 0.0.0.0 0.0.0.0 255.255.255.255
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。