アクセスコントロールリスト 補足資料
アクセスコントロールリスト(ACL=Access Control List)は,Cisco IOS (Internetwork Operating System:
シスコルータ・スイッチで用いられるOS) のパケットフィルタであり,パケット転送の許可・禁止を指定す
ることで,ファイアウォールの構築を行う.
ACL は下記の条件をもとにパケットのフィルタリングを行う. 送信元IP アドレス + ワイルドカードマスク
宛先IP アドレス + ワイルドカードマスク
プロトコル (IP, TCP, UDP, ICMP, etc.) 送信元ポート番号 宛先ポート番号 パケットを送信・受信するインターフェースと,パケットの方向 (in / out)
ワイルドカードマスク
送信元IP アドレス,宛先 IP アドレスを指定する際,複数の IP アドレスをまとめて指定するのに用いる. IP アドレスを 32 ビットの 2 進数表記にした際,チェックを行うビットは 0,チェックを行わないビット は1 とし,8 ビット毎にドットで区切った 10 進数 4 つで表す. 例: 172.21.39.0 ~ 172.21.39.255 を判定する場合 1 0 1 0 1 1 0 0 . 0 0 0 1 0 1 0 1 . 0 0 1 0 0 1 1 1 . 0 0 0 0 0 0 0 0 --- --- 最後の 8 ビットは何でも良い 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 . 1 1 1 1 1 1 1 1=
0 . 0 . 0 . 255
→ ワイルドカードマスク 任意のIP アドレスに適合させる場合,0.0.0.0 255.255.255.255 とする.any と書いても良い.単一のIP アドレスのみに適合させる場合,<IP アドレス> 0.0.0.0 とする.host <IP アドレス>と書いて も良い.
ACL の判定順序・暗黙の Deny
ACL は,条件に適合したパケットについて,転送許可(permit, allow, accept, pass, etc.)か,拒否(deny, reject, drop, etc.)の,どちらかの操作を行う.
複数の条件がある場合は,上から順に判定を行い,最初に適合した条件の操作を実行する.それより下の 条件部は判定されない.最後の条件まで判定を行っても条件に適合しなかった場合は,そのパケットは破棄 される(暗黙のdeny).
Cisco IOS での access-list の設定
Cisco IOS での ACL の設定について記す.
ACL には,標準 ACL と拡張 ACL の 2 種類がある.標準 ACL は送信元 IP アドレス(・ワイルドカードマ スク)のみで permit/deny の判断を行い,拡張 ACL は送信元・宛先 IP アドレス・プロトコル・ポート番号 などの情報に基づいて判断を行う.ここでは,拡張ACL について説明を行う. [拡張 ACL 書式] access-list リスト番号 アクション プロトコル (続き) 送信元 IP アドレス 送信元ワイルドカードマスク [eq 送信元ポート番号] (続き) 宛先 IP アドレス 宛先ワイルドカードマスク [eq 宛先ポート番号] (続き) [established] [icmp type] [icmp code]
: [] 内は省略することができる. リスト番号は,ひとまとまりのアクセスリストに対して同じ番号(100~199)を付与する (1~99: 標準 ACL⇒送信元 IP のみで判断,100~199: 拡張 ACL⇒IP・TCP・UDP ヘッダ) アクション → permit (許可) or deny(拒否) プロトコル → ip(すべての IP パケット),tcp,udp,icmp ポート番号 → UDP・TCP の時のみ有効.ポート番号を指定. 省略した場合ポート番号の検査は行わない (すべてのポート番号が該当する). established → TCP の時のみ有効.ACK フラグのあるパケットを照合.
icmp type → ICMP の時のみ有効.ICMP タイプ番号を指定.
icmp code → ICMP の時のみ有効.ICMP コード番号を指定.
[設定したリスト(ACL)をインターフェースに適用] ACL を定義しただけでは,ACL は機能しない.実際に機能させるために,設定したアクセスリストをル ータのどのインターフェースに適用するか設定する.設定を行うことで,そのインターフェースからパケッ トが送信または受信される際にアクセスリストにより転送・破棄の動作が行われる. [I/F への適用書式] interface インターフェース名 ip access-group リスト番号 {in|out} インターフェース名 → fastethernet0 などのルータのインターフェース名を指定 リスト番号 → 適用するACL のリスト番号を指定 in → 指定したインターフェースからパケットを受信する際に適用 out → 指定したインターフェースからパケットを送信する際に適用
例1:ウイルスに感染したホスト 192.168.0.200 を外部に接続させない.
192.168.0.0/24
192.168.0.200アクセス許可
インターネット
fe0
fe1
(fe:fastethernet の略)access-list 101 deny ip 192.168.0.200 0.0.0.0 0.0.0.0 255.255.255.255
access-list 101 permit ip 192.168.0.0 0.0.0.255 0.0.0.0 255.255.255.255
access-list 101 deny ip any any
interface fastethernet0
ip access-group 101 in
(設定削除 ⇒ no access-list 101 , no ip access-group 101 in)
例2:内部からの Web アクセスのみを許可し.それ以外は許可しない(外部から発信されるパケットは全 て不許可).
192.168.0.0/24
Webアクセスのみ許可
インターネット
fe0 fe1access-list 101 permit tcp 192.168.0.0 0.0.0.255 any eq 80
access-list 101 permit tcp 192.168.0.0 0.0.0.255 any eq 443
access-list 102 permit tcp any eq 80 192.168.0.0 0.0.0.255
access-list 102 permit tcp any eq 443 192.168.0.0 0.0.0.255
interface fastethernet0
ip access-group 101 in
interface fastethernet1
ip access-group 102 in
暗黙のdeny があるので書かなくても良い 「any」と書いても良い ACL 102 は,下記の一行でも良い練習問題
(1) 下図のネットワークにおいて,内部ネットワーク内のクライアントからは Web アクセスのみを許可し, サーバにはアクセス制限をかけないアクセスリストを設定せよ.外部からのアクセスはサーバへは制限なし で許可し,それ以外のホストへは不許可とする.192.168.0.0/24
192.168.0.200 サーバ」Webアクセスのみ許可
インターネット
fe0 fe1任意のアクセス許可
アクセスリスト設定 access-list 101 permit ip 192.168.0.200 0.0.0.0 0.0.0.0 255.255.255.255 access-list 101 permit tcp 192.168.0.0 0.0.0.255 0.0.0.0 255.255.255.255 eq 80 access-list 101 permit tcp 192.168.0.0 0.0.0.255 0.0.0.0 255.255.255.255 eq 443 access-list 102 permit ip 0.0.0.0 255.255.255.255 192.168.0.200 0.0.0.0 access-list 102 permit tcp 0.0.0.0 255.255.255.255 eq 80 192.168.0.0 0.0.0.255 access-list 102 permit tcp 0.0.0.0 255.255.255.255 eq 443 192.168.0.0 0.0.0.255 interface fastethernet0 ip access-group 101 in interface fastethernet1 ip access-group 102 in 追加問題 (1) においてウイルスに感染した PC は一切外部へ遮断する設定を追加するにはどのようにした らよいか?(感染PC の IP アドレスを 192.168.0.150 とする) access-list 101 deny ip 192.168.0.150 0.0.0.0 0.0.0.0 255.255.255.255 access-list 101 permit ip 192.168.0.200 0.0.0.0 0.0.0.0 255.255.255.255 access-list 101 permit tcp 192.168.0.0 0.0.0.255 0.0.0.0 255.255.255.255 eq 80 access-list 101 permit tcp 192.168.0.0 0.0.0.255 0.0.0.0 255.255.255.255 eq 443 サーバからは任意のアクセスを許可 それ以外のクライアントからはポート80,443 宛の TCP を許可 それ以外は拒否(暗黙のdeny) サーバへは任意のアクセスを許可 それ以外のクライアントへはポート80,443 を送信元とする TCP を許可 それ以外は拒否(暗黙のdeny) ACL 101 の冒頭に追加(2) 下図のネットワークにおいて,16 台のサーバ群のみ外部から任意のアクセスを許可し,それ以外 の外部からネットワーク内へのパケットを拒否する設定を行う.内部からのアクセス制限は考えなくて よい.
192.168.0.0/24
サーバ群(16台) 192.168.0.128 ~ 192.168.0.143サーバ以外は外部から進入禁止
インターネット
fe0 fe1任意のアクセス許可
access-list 101 permit ip 0.0.0.0 255.255.255.255 192.168.0.128 0.0.0.15 interface fastethernet1 ip access-group 101 in 追加問題 (2) において,サーバ群のうち 192.168.0.132~192.168.0.135 の 4 台をメンテナンスのため外部 からアクセスを不許可としたい場合は,どのようにしたらよいか. access-list 101 deny ip 0.0.0.0 255.255.255.255 192.168.0.132 0.0.0.3 access-list 101 permit ip 0.0.0.0 255.255.255.255 192.168.0.128 0.0.0.15 (2) において,サーバ群と外部の間で DNS,Web,メールのアクセスのみ相互にやりとりし,そ れ以外のアクセスを許可しない設定を行うにはどのようにしたらよいか. access-list 101 permit tcp 0.0.0.0 255.255.255.255 192.168.0.128 0.0.0.15 eq 80 access-list 101 permit tcp 0.0.0.0 255.255.255.255 192.168.0.128 0.0.0.15 eq 443 access-list 101 permit tcp 0.0.0.0 255.255.255.255 192.168.0.128 0.0.0.15 eq 25 access-list 101 permit tcp 0.0.0.0 255.255.255.255 192.168.0.128 0.0.0.15 eq 53 access-list 101 permit udp 0.0.0.0 255.255.255.255 192.168.0.128 0.0.0.15 eq 53ワイルドカードマスクをうまく利用する 192.168.0.128 の最後の 4 ビットは何でもよい. 128 ⇒ 10000000 の下位 4 ビットが 0 または 1 1000xxxx (x は 0 または 1 のいずれか) 10000000 ~ 10001111 → 128 ~ 143 ACL 101 の冒頭に追加 ACL 101 を下記の ように書き換える