Cisco パケットフィルタリング

スポンサーリンク

Cisco社のルータではACLを使用してパケットフィルタリングを行います。 ACLはパケットをテストしてあて先に転送するか否かを決定します。

一言でACLといってもTimeBased ACL、ContextBased ACLなどがあり、CatalystスイッチにおいてはRACL、VACL、PACLなど複数の種類が存在します。

ルータ・スイッチにおいてセキュリティをガチガチに固めるというのは実務においてあまりなく、セキュリティはセキュリティ製品にやらしておいてルータ、スイッチはルーティング・スイッチングに専念する、といった設計をすることが多いです。( セキュリティ製品を経由しない通信においてはルータ、スイッチでやらざるをえませんが・・・ )

下に記載する標準ACL、拡張ACLだけでも大半のケースにおいて事足りるのではと思います。

■標準ACL(1~99 / 1300~1999)

パケット送信元のアドレスをチェックします。そして送信元のネットワーク、サブネット、ホストIPに基づいてプロトコルスイート全体の出力が許可または拒否されます。主にスイッチ自身に対するアクセス制限やSNMPのアクセス制限、ルーティングプロトコルの制御等に使用することが多いです。


構文

access-list LIST CONTROL SRC
LIST アクセスリストの番号(1~99)
CONTROL permit(許可) または deny(拒 否)
SRC 発信元アドレス


以下、実際の使用例でline vty(telnet or ssh)に対して192.168.1.0/24および192.168.2.0/24に制限しています。

access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1 permit 192.168.2.0 0.0.0.255
access-list 1 deny any

line vty 0 4
 access-class 1 in


上記のaccess-list 1において最後の行で明示的にdenyを指定しておりますが、CiscoのACLの場合、最後の行には明示的な指定がなくともすべてDenyという構文が自動的に有効になります。これを暗黙のDenyと呼びます。


またIPアドレスを設定する際には一般的にサブネットマスクを合わせて設定しま すがCiscoのACLを作成するときはサブネットマスクではなくワイルドカードマスクというのを使用します。これはサブネットマスクを反転さした値であ り逆サブネットマスクなどとも呼ばれます。


初めてACLを触る人には少し違和感がありますが、簡単に考えれば 255.255.255.255からサブネットマスクの各々の値を引き算すれば算出することができます。

・255.255.255.255 – 255.255.255.0

255 255 255 255
サブネットマスク 255 255 255 0
=ワイルドカードマスク 0 0 0 255

■拡張アクセスリスト(100~199 / 2000~2699)

標準ACLでは管理系のパケットを制御するのが主な役割ですが拡張ACLでは実際の通信を制御するケースが多いと思います。


拡張ACLではパケットの送信元のアドレスと送信先アドレスをチェックします。 また特定のプロトコル、ポート番号などをチェックすることができます。拡張アクセスリストではユーザがLANにはアクセスできるけど特定のサービスが利用 できないといったことが行えます。基本的な構文は標準ACLとほぼ同一です。拡張ACLでは送信元IPだけではなく宛先IPやプロトコルなども指定することが可能です。


簡易FirewallとしてACLを適用することがよくありますが二つの考え方 があります。

・必要なパケットのみを許可してそれ以外を拒否
・明らかに不要なパケットのみを拒否してそれ以外を許可

ファイアウォールであれば当然ながら前者ですが、ルータやスイッチでACLを実装する場合、個人的には後者をオススメしたいです。というのもファイア ウォールであればステートフルインスペクションという便利な機能がありセッション情報の管理まで自動で行ってくれますが、ルータスイッチには基本的に実装 されておらず戻りパケットまで気にしながらACLを作成する必要があります。机上の理論でいけるはずと思っても実際に適用すると必要な通信まで弾かれてし まうという経験を過去に何度もしてきました。

そういうわけでACLでは明らかな不要パケットのみ拒否で良いと思います。


構文

access-list LIST CONTROL PROTO SRC DEST OPTION
LIST アクセスリストの番号(100~199)
CONTROL permit(許可) または deny(拒 否)
PROTO プロトコル tcp udp icmp ip など
SRC 発信元アドレス(およびポート)
DEST 宛先アドレス(およびポート)
OPTION ACKが立っているパケットを指定する場合はestablished(tcpに限る)
logキーワードがある場合はパケットのログを採取する
その他オプション多数


アクセスリストは許可および拒否のステートメントリストで構成されます。パケットはアクセスリスト上から下へ1行ずつテストされます。パケットの中のIPアドレスなどの情報とアクセスリストステートメントが一致する場合そのリストの 残りの行は飛ばされ一致したステートメントの指示に従ってパケットが許可または拒否されます。


よく他サイトでACLはかなりの負荷がかかるのでなるべく行数を少なくする、 マッチするのが多い順に並べるべきという記事を目にしますが、数十行程度のACLであれば目に見えてCPU負荷が上がるといった経験はなく、そのあたりは 特に気にしなくとも良いと思います。ただし、ACLをインターフェイスに適用する際にoutでかけた場合においてCPUが跳ね上がった経験がありますので、基本的にはinでかけたほうが無難だと思います。


以下、設定例です。

access-list 100 deny ip 192.168.0.0 0.0.255.255
access-list 100 deny ip 172.16.0.0 0.0.15.255
access-list 100 deny ip 10.0.0.0 0.0.0.255
access-list 100 deny tcp any any eq 135
access-list 100 deny tcp any any eq 137
access-list 100 deny tcp any any eq 445
access-list 100 deny udp any any eq 135
access-list 100 deny udp any any eq 137
access-list 100 deny udp any any eq 445
access-list 100 permit ip any any

interface GigabitEthernet 0/0
 ip access-group 100 in


最後にインターフェイスに適用しており、これを設定しなければいくらACLを定義したところで発動されることはありませんので注意してください。

■名前付きアクセスリスト


ACLを番号で管理するのが管理しにくいという場合に名前をつけて定義することができます。こちらも標準と拡張の2種類あり、若干記載の違いがあります。以下、標準アクセスリストの例です。

(config)# ip access-list standard standard-example
(config-std-nacl)# permit 192.168.1.0 0.0.0.255
(config-std-nacl)# permit host 10.0.0.1


以下は拡張アクセスリストの記載例です。

(config)# ip access-list extended extend-example
(config-ext-nacl)# permit tcp any host 1.1.1.1 eq www
(config-ext-nacl)# permit udp any any eq 53

(config-)# interface Vlan100
(config-if)# ip access-group extend-example in


両者とも細かい構文は番号で管理するACLと同様です。管理という面においてはこちらのほうが管理しやすいかもしれません。

■タイマーベースアクセスリスト



タイマーベースのアクセスリストでは特定の時刻に基づくトラフィック制御を行うことが可能です。下記の設定例では土日の9:00~20:00のみHTTPトラフィックを許可する設定を行なっています。なお、時刻を元に制御を行うので当然ながらルータの時刻は正確に合わせるようNTPの設定を行なっておくことが必須のものです。

(config)# time-range TimeACL
(config-time-range)# periodic weekend 9:00 to 20:00

(config)# access-list 100 permit tcp any any eq www time-range TimeACL
(config)# access-list 100 deny   ip any any


periodicで指定できるのもに以下のものがあります。

Friday 金曜日
Monday 月曜日
Saturday 土曜日
Sunday 日曜日
Thursday 木曜日
Tuesday 火曜日
Wednesday 水曜日
daily 毎日 
weekdays 月曜日~金曜日
weekend 土日曜日

■アクセスリストの編集


一昔前のIOSであれば一旦定義したACLは全てを消して最初から定義しなおす必要がありましたが最近のものですと以下のように編集することが可能です。show access-listsでシーケンス番号が表示されますので挿入の場合は挿入したい位置の番号を指定します。(以下では30と40の間に挿入したいので35を指定)また削除を行いたい場合はno シーケンス番号とコマンドをうちます。

# show access-lists 100
Extended IP access list 100
 10 deny ip 192.168.0.0 0.0.255.255
 20 deny ip 172.16.0.0 0.0.15.255
 30 deny ip 10.0.0.0 0.0.0.255
 40 deny tcp any any eq 135
 50 deny tcp any any eq 137
 60 deny tcp any any eq 445
 70 deny udp any any eq 135
 80 deny udp any any eq 137
 90 deny udp any any eq 445
 100 permit ip any any


(config)# ip access-list extended 100
※追加の場合 ( 30と40の間に挿入 )
(config-ext-nacl)# 35 deny tcp any any eq telnet 
※削除の場合 ( 90を削除 )
(config-ext-nacl)# no 90  
(config-ext-nacl)# end

# show runn | b access-list
access-list 100 deny ip 192.168.0.0 0.0.255.255
access-list 100 deny ip 172.16.0.0 0.0.15.255
access-list 100 deny ip 10.0.0.0 0.0.0.255
access-list 100 deny tcp any any eq telnet       ←追加された
access-list 100 deny tcp any any eq 135
access-list 100 deny tcp any any eq 137
access-list 100 deny tcp any any eq 445
access-list 100 deny udp any any eq 135
access-list 100 deny udp any any eq 137                 ←削除された
access-list 100 permit ip any any

■ACL Object Group

PIX/ASAで利用できるObject Groupですがルータでも利用可能です。ただし、スイッチではサポートされません。以下、設定例です。

object-group network XXX
 192.168.0.0 255.255.255.0
 192.168.1.0 255.255.255.0
 192.168.2.0 255.255.255.0

object-group network YYY
 192.168.3.0 255.255.255.0
 192.168.4.0 255.255.255.0

object-group service WEB
 tcp www
 tcp 8080

object-group service MAIL
 tcp smtp
 tcp pop3

access-list permit object-group WEB object-group XXX object-group YYY
access-list permit object-group MAIL object-group XXX object-group YYY


通常のACLと比べて少しだけ並びが違います。通常のACLでは送信元IP – 送信先IP – プロトコルという並びですがObject-Groupを用いた場合プロトコル – 送信元IP – 送信先IPという並びになります。但し、ネットワーク・アドレスのみObject-Groupを用いた場合は通常の並びとなります。 

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする