目次
パケットフィルタの設定手順
パケットフィルタの設定手順は、次の2つです。
- フローを識別するため条件とフローに対する動作(permit/deny)を決めるアクセスコントロールリスト(ACL)を作成する
- インタフェースに作成したアクセスコントロールリストを適用する
ただ、いきなりルータのコンソールからACLの設定コマンドを入力しても意図したようなパケットフィルタはまずできません。ネットワーク上のフローを洗い出して、必要なフローをきちんと把握しておきます。そして、どの機器のどのインタフェースのどの方向でアクセスコントロールリストを適用すれば、効率のよい設定になるかを検討します。そうした検討を踏まえて、コンソールからルータにコマンドを入力してパケットフィルタの設定を行います。
ワイルドカードマスク
アクセスコントロールリストの条件でIPパケットのIPアドレスを柔軟に指定するためにワイルドカードマスクを利用します。ACLの設定を行うためには、まずは、ワイルドカードマスクについてしっかりと理解しておきましょう。
ワイルドカードマスクはIPアドレスとセットにして、32ビットのIPアドレスがどのようなビットパターンであるかを表します。多くの場合、IPアドレスの範囲を表すことになります。ワイルドカードマスクの特徴は、以下の通りです。
- 32ビットのビット列でIPアドレスとセット
- ワイルドカードのビット「0」 : 直前のIPアドレスの対応するビットと一致している必要がある
- ワイルドカードのビット「1」 : 直前のIPアドレスの対応するビットと一致しなくてもよい
ワイルドカードマスクとIPアドレスのセットとして、次の例を考えます。
192.168.0.0 0.0.255.255
ワイルドカードマスクが「0.0.255.255」となっているので、直前に指定しているIPアドレスの先頭から16ビット分が一致しているかどうかをチェックします。つまり、IPアドレスの範囲として「192.168.0.0~192.168.255.255」を表しています。
IPアドレスとワイルドカードマスクの組み合わせと具体的なIPアドレスの範囲の例を簡単にまとめます。
IPアドレスとワイルドカードマスク | IPアドレス範囲 |
---|---|
192.168.1.0 0.0.0.255 |
192.168.1.0~192.168.1.255 |
192.168.10.224 0.0.0.15 |
192.168.10.224~192.168.10.239 |
192.168.100.200 0.0.0.0 |
192.168.100.200 |
0.0.0.0 255.255.255.255 |
0.0.0.0~255.255.255.255(すべてのIPアドレス) |
ワイルドカードマスクがビット「0」の連続とビット「1」の連続となっているときには、IPアドレス範囲を表していて、その範囲は簡単にわかります。直前に指定しているIPアドレスがIPアドレス範囲の下限です。そして、IPアドレス範囲の上限は、ワイルドカードマスクを足し合わせたIPアドレスです。
たとえば、「192.168.10.224 0.0.0.15」のとき、ワイルドカードマスクはビット「0」が28個連続したあとにビット「1」が4つ連続しています。そうすると、IPアドレスの範囲を表していて、下限が「192.168.10.224」です。そして、範囲の上限はIPアドレス「192.168.10.224」とワイルドカードマスク「0.0.0.15」を足し合わせて「192.168.10.239」です。上に挙げた表のIPアドレスとワイルドカードマスクの組み合わせは、すべてIPアドレスの範囲を表しています。
ワイルドカードマスクとして「0.0.0.0」を設定するときには、「host」というキーワードにすることもできます。ただし、「host」を使うときにはIPアドレスとワイルドカードマスクの順番が異なります。
「192.168.100.200 0.0.0.0」 = 「host 192.168.100.200」
また、IPアドレスとワイルドカードマスクの組み合わせの「0.0.0.0 255.255.255.255」は「any」というキーワード1つにできます。
「0.0.0.0 255.255.255.255」 = 「any」
標準アクセスコントロールリストの設定
標準アクセスコントロールリストを設定するには、グローバルコンフィグレーションモードで次のコマンドを入力します。
(config)#access-list <ACL-number> {permit|deny} <source-address> [<wildcard>] [log]
<ACL-number> : アクセスコントロールリスト番号 1~99または1300~1999
<source-address> : 送信元IPアドレス
<wildcard> : ワイルドカードマスク
log : アクセスコントロールリストの条件に一致したときにログを生成
標準アクセスコントールリストのときは、ワイルドカードマスクを省略可能です。ワイルドカードマスクを省略した場合は、「0.0.0.0」として解釈されます。標準アクセスコントールリストとして条件を複数設定するときには、同じアクセスコントロールリスト番号で複数行の設定を行います。条件の順番は設定した順番通りになります。また、最後に暗黙のdeny anyがあることを忘れないようにしてください。
アクセスコントロールリストの条件の順番を入れ替えることはできません。また、特定の条件だけを削除することもできません。順番を入れ替えたり、特定の条件を削除する必要があれば、いったんすべての条件を削除してください。その後、正しい順番でアクセスコントロールリストの条件を設定します。
いきなりルータのコンソールから設定を入力すると、条件の順番を間違ってしまうことがありがちです。そこでルータのコンソールから実際にコマンドを入力する前に、テキストファイルにアクセスコントロールリストの設定コマンドをまとめて順番に間違いがないかをチェックしてください。そして、テキストファイルにまとめたアクセスコントロールリストの設定コマンドをコピー&ペーストして一括入力すると効率よく設定できます。
拡張アクセスコントロールリストの設定
拡張アクセスコントロールリストの設定は、グローバルコンフィグレーションモードで次のコマンドを入力します。
(config)#access-list <ACL-number> {permit|deny} <protocol> <source-address> <wildcard> [<source-port>] <dest-address> <wildcard> [<dest-port>] [log]
<ACL-number> : アクセスコントロールリスト番号 100~199または2000~2699
<protocol> : プロトコル
<source-address> : 送信元IPアドレス
<wildcard> : ワイルドカードマスク
<source-port> : 送信元ポート番号
<dest-address> : 宛先IPアドレス
<wildcard> : ワイルドカードマスク
<dest-port> : 宛先ポート番号
log : アクセスコントロールリストの条件に一致したときにログを生成
拡張アクセスコントロールリストでは、<protocol>によって、どのヘッダ情報を参照するかを決められます。IPヘッダの宛先/送信元IPアドレスのチェックだけでよければ<protocol>はipです。IPヘッダに加えてTCPヘッダのポート番号もチェックするのであれば、<protocol>にtcpを指定します。プロトコルで指定できるものをヘルプで表示すると、以下のようになります。
R1(config)#access-list 100 permit ? <0-255> An IP protocol number ahp Authentication Header Protocol eigrp Cisco's EIGRP routing protocol esp Encapsulation Security Payload gre Cisco's GRE tunneling icmp Internet Control Message Protocol igmp Internet Gateway Message Protocol ip Any Internet Protocol ipinip IP in IP tunneling nos KA9Q NOS compatible IP over IP tunneling ospf OSPF routing protocol pcp Payload Compression Protocol pim Protocol Independent Multicast tcp Transmission Control Protocol udp User Datagram Protocol
プロトコルでtcpまたはudpを指定してTCP/UDPヘッダもチェックする場合、宛先/送信元ポート番号の条件も指定できます。ポート番号の条件は演算子を利用できます。ヘルプでポート番号の条件として指定できる演算子を見ると、次のようになります。
R1(config)#access-list 100 permit tcp any ? A.B.C.D Destination address any Any destination host eq Match only packets on a given port number gt Match only packets with a greater port number host A single destination host lt Match only packets with a lower port number neq Match only packets not on a given port number range Match only packets in the range of port numbers
ポート番号の条件で利用できる演算子の意味は次のとおりです。
演算子 | 意味 |
---|---|
eq |
指定したポート番号と一致 |
gt |
指定したポート番号より大きい |
lt |
指定したポート番号より小さい |
neq |
指定したポート番号以外 |
range |
ポート番号の範囲 |
ポート番号は、番号で指定する以外にあらかじめ定義されているキーワードで指定することもできます。たとえば、「www」というキーワードで「80」を意味します。定義されているキーワードは、ヘルプで確認できます。
R1(config)#access-list 100 permit tcp any eq ? <0-65535> Port number bgp Border Gateway Protocol (179) chargen Character generator (19) cmd Remote commands (rcmd, 514) daytime Daytime (13) discard Discard (9) domain Domain Name Service (53) drip Dynamic Routing Information Protocol (3949) echo Echo (7) exec Exec (rsh, 512) finger Finger (79) ftp File Transfer Protocol (21) ftp-data FTP data connections (20) gopher Gopher (70) hostname NIC hostname server (101) ident Ident Protocol (113) irc Internet Relay Chat (194) klogin Kerberos login (543) kshell Kerberos shell (544) login Login (rlogin, 513) lpd Printer service (515) nntp Network News Transport Protocol (119) pim-auto-rp PIM Auto-RP (496) pop2 Post Office Protocol v2 (109) pop3 Post Office Protocol v3 (110) smtp Simple Mail Transport Protocol (25) sunrpc Sun Remote Procedure Call (111) tacacs TAC Access Control System (49) talk Talk (517) telnet Telnet (23) time Time (37) uucp Unix-to-Unix Copy Program (540) whois Nicname (43) www World Wide Web (HTTP, 80)
拡張アクセスコントロールリストの条件を複数設定するには、やはり同じアクセスコントロールリスト番号で複数行設定すればOKです。また、最後に暗黙のdeny anyがあることも忘れないでください。拡張アクセスコントロールリストでの暗黙のdeny anyの具体的な条件は「deny ip any any」です。
関連記事
わかりやすく名前でACLの条件を設定する名前付きACLについて、以下の記事も合わせてご覧ください。
アクセスコントロールリストをインタフェースに適用
アクセスコントロールリストは作成しただけでは何の意味もありません。適用してはじめて意味があります。パケットフィルタで用いるには、ルータのインタフェースに適用します。インタフェースコンフィグレーションモードで次のコマンドを入力します。
(config-if)#ip access-group <ACL-number> {in|out}
<ACL-number> : 適用するアクセスコントロールリスト番号
あるインタフェースのある方向に適用できるアクセスコントロールリストは1つだけです。複数のアプリケーションフローについてのパケットフィルタを行う場合は、適用するアクセスコントロールリストの条件として複数行設定してください。
ACLの確認コマンド
ACLの設定を確認するために主に利用するコマンドは以下の通りです。
コマンド | 内容 |
---|---|
#show running-config | include access-list | running-configの中から文字列「access-list」を含む行を表示します。 |
#show ip access-list | IPのアクセスコントロールリストの条件を表示します。 |
#show ip interface | インタフェースに適用されているアクセスコントロールリストを表示します。 |
show running-config | include access-list
show running-config | include access-listで、running-configの中から文字列「access-list」を含む行だけを表示します。ACLの条件の設定を確認するときに便利です。
R1#show running-config | include access-list access-list 100 permit tcp host 192.168.1.3 host 172.21.242.17 eq www access-list 100 deny tcp any host 172.21.242.17 eq www access-list 100 permit ip any any
show ip access-list
show ip access-listコマンドでACLの条件の詳細がわかります。また、各条件に一致したパケット数を確認することもできます。
R1#show ip access-lists Extended IP access list 100 10 permit tcp host 192.168.1.3 host 172.21.242.17 eq www 20 deny tcp any host 172.21.242.17 eq www 30 permit ip any any (5 matches)
なお、show access-listコマンドも同様の内容を表示します。
show ip interface
show ip interfaceコマンドでインタフェースに適用されているACLを確認できます。
R1#show ip interface fastEthernet 0/0 FastEthernet0/0 is up, line protocol is up Internet address is 192.168.1.254/24 Broadcast address is 255.255.255.255 Address determined by non-volatile memory MTU is 1500 bytes Helper address is not set Directed broadcast forwarding is disabled Outgoing access list is not set Inbound access list is 100 Proxy ARP is enabled ~省略~
関連記事
ACLによるパケットフィルタの具体的な設定例は以下の記事で解説しています。
セキュリティの基礎
- SSLとWi-Fiの暗号化の違い
- セキュリティの目的 ~機密性/完全性/可用性~
- セキュリティの脅威と対策の概要
- マルウェア ~ユーザにとって有害なソフトウェア~
- 認証の基礎 ~正規のユーザ/デバイスですか?~
- 覚えやすくて推測されにくい安全なパスワードの作り方
- 暗号化の概要
- ハッシュ関数とは
- SSLとは? ~アクセス先は本物です!データは盗聴/改ざんされません!~
- ファイアウォールの概要 ~正規の通信のみを転送~
- IDS/IPS ~不正アクセス対策~
- Cisco アクセスコントロールリストの概要
- パケットフィルタ ~不正な通信をブロックするCisco ACLの最も多い用途~
- SPI(Stateful Packet Inspection)の概要
- Cisco ACLによるパケットフィルタの設定と確認
- 名前付きACL(Named ACL)
- タイムベース(Time-based)ACL
- Cisco ACLによるパケットフィルタの設定例
- 標準ACLと拡張ACLのパケットフィルタリングをより深く理解するための演習 ~標準ACL~
- 標準ACLと拡張ACLのパケットフィルタリングをより深く理解するための演習 ~拡張ACL~
- リフレクシブ(Reflexive)ACL ~戻りの通信を自動的に許可~
- リフレクシブ(Reflexive)ACLの設定例
- Catalystスイッチのパケットフィルタリング RACL/VACL/PACL
- RACL/VACL/PACLの設定と確認コマンド
- uRPFの設定例
- VTYアクセス制御
- DHCPスプーフィング ~DHCPサーバを偽装~
- DHCPスヌーピング
- Cisco DHCPスヌーピングの設定と確認コマンド
- Cisco DHCPスヌーピングの設定例
- ARPスプーフィング
- Dynamic ARP Inspection
- Cisco Dynamic ARP Inspectionの設定と確認コマンド
- TCPインターセプトの設定例
- WAF(Web Application Firewall)の概要
- 電子メールのセキュリティ