セキュリティ
アクセスリスト
ACL(Access Control List)
ACL
・パケットを特定の条件でフィルタリングするためのリスト
・標準ACL、拡張ACLなどがある
・標準ACLは、送信元IPアドレスを基にフィルタリングする
・拡張ACLは、送信元IPアドレス、宛先IPアドレス、プロトコル、ポート番号を基にフィルタリングする
コマンド構文:標準ACL
・(config)#access-list {番号} {permit | deny} {IPアドレス} [ワイルドカードマスク]
・番号:「1~99」または「1300~1999」の中から任意の番号を指定
permit:条件文に一致するパケットを許可
deny:条件文に一致するパケットを拒否
IPアドレス:条件になる、パケット送信元のIPアドレスを指定
ワイルドカードマスク
IPアドレスに対するワイルドカードマスクを指定
省略した場合は「0.0.0.0」(ピンポイントの指定)として処理される
ワイルドカードマスクを「255.255.255.255」にした場合、全てのIPアドレスが条件になる
ワイルドカードマスクにはいくつかの省略形があり、以下のような省略が可能
「すべてのビットをチェックする=host」(IPアドレス 0.0.0.0 → host IPアドレス)
「すべてのビットを無視する=any」(0.0.0.0 255.255.255.255 → any)
コマンド構文:拡張ACL
・(config)#access-list {番号} {permit | deny} {プロトコル} {送信元} {宛先} [オプション]
・番号:「100~199」または「2000~2699」の中から任意の番号を指定
permit:条件文に一致するパケットを許可
deny:条件文に一致するパケットを拒否
プロトコル:この条件文でチェックするプロトコルを指定。tcp、udp、icmpなど
送信元
{送信元IPアドレス} {ワイルドカードマスク}の構文で送信元を指定
プロトコルにTCP、またはUDPを指定している場合は、
{送信元IPアドレス} {ワイルドカードマスク} [キーワード] [ポート番号]で指定可能
宛先
{宛先IPアドレス} {ワイルドカードマスク}の構文で宛先を指定
プロトコルにTCP、またはUDPを指定している場合は、
{宛先IPアドレス} {ワイルドカードマスク} [キーワード] [ポート番号]で指定可能
ワイルドカードマスク
IPアドレスに対するワイルドカードマスクを指定
ワイルドカードマスクを「255.255.255.255」にした場合、全てのIPアドレスが条件になる
ワイルドカードマスクにはいくつかの省略形があり、以下のような省略が可能
「すべてのビットをチェックする=host」(IPアドレス 0.0.0.0 → host IPアドレス)
「すべてのビットを無視する=any」(0.0.0.0 255.255.255.255 → any)
キーワード
以下のキーワードでポート番号の範囲を指定
lt(lower than):指定するポート番号より小さい
gt(greater than):指定するポート番号より大きい
eq(equal):指定するポート番号と等しい
neq(not equal):指定するポート番号と等しくない
オプション
log:この条件文に合致した情報をログとして記録する
established:ACKビットがセットされているTCPセグメントの通過を許可する
echo:エコー要求を指定する
echo-reply:エコー応答を指定する
コマンド構文:名前付き標準ACL
・(config)#ip access-list standard [番号 | 名前]
・(config-std-nacl)#[シーケンス番号] {permit | deny} {IPアドレス} [ワイルドカードマスク]
番号:「1~99」または「1300~1999」の中から任意の番号を指定
名前:任意の名前を指定
シーケンス番号
1~2147483647の中から任意の番号を指定(シーケンス番号の若い順から条件文を確認)
指定しなかった場合は「10」ずつ増加
コマンド構文:名前付き拡張ACL
・(config)#ip access-list extended [番号 | 名前]
・(config-std-nacl)#[シーケンス番号] {permit | deny} {プロトコル} {送信元} {宛先} [オプション]
番号:「100~199」または「2000~2699」の中から任意の番号を指定
名前:任意の名前を指定
シーケンス番号
1~2147483647の中から任意の番号を指定(シーケンス番号の若い順から条件文を確認)
指定しなかった場合は「10」ずつ増加
主なポート番号
20:TCP:FTP(データ)
21:TCP:FTP(制御)
22:TCP:SSH
23:TCP:TELNET
25:TCP:SMTP
53:TCP/UDP:DNS
67:UDP:DHCP(サーバ)
68:UDP:DHCP(クライアント)
69:UDP:TFTP
80:TCP:HTTP
110:TCP:POP3
443:TCP:HTTPS
コマンド構文:インターフェースへのアクセスリスト適用
・(config-if)#ip access-group {番号 | 名前} {in | out}
番号:適用したいACL番号を指定
名前:適用したいACL名を指定
in:インバウンド方向に適用
out:アウトバウンド方向に適用
コマンド構文:仮想回線(VTY)へのアクセスリスト適用
・(config)#line vty {開始番号} {終了番号}
・(config)#access-class {番号 | 名前} {in | out}
開始番号:ポートの開始番号を指定
終了番号
ポートの終了番号を指定
ポートの開始番号を「0」、終了番号を「4」とすることで
「0~4」のポートにまとめて同じ設定が出来る
番号:適用したいACL番号を指定
名前:適用したいACL名を指定
in:インバウンド方向に適用
out:アウトバウンド方向に適用
コマンド構文:ACLの表示
・#show [ip | ipv6] access-lists [番号 | 名前 | interface {インタフェース} ] [in | out]
ip:IPv4のACLを表示(未指定の場合は設定している全てのACLを表示)
ipv6:IPv6のACLを表示
番号:指定した番号のACLを表示
名前:指定した名前のACLを表示
インターフェース
指定したインターフェースに設定しているACLを表示
(プロトコルで「ip」を指定した場合にのみ指定可能)
in:指定したインターフェースに設定しているACLのうち、in方向のみを表示
out:指定したインターフェースに設定しているACLのうち、out方向のみを表示
コマンド構文:ACEのシーケンス番号の振り直し
・(config)#ip access-list resequence {ACL番号 | ACL名} {開始番号} {間隔}
開始番号:ACE(条件文)の1行目のシーケンス番号を何番にしたいかを指定
間隔:各ACEのシーケンス番号の間隔をどれだけ空けたいかを指定
ACLの条件文の追加
・(config)#ip access-list extended 110
名前付き拡張ACLの指定方法で拡張ACL110を指定
・(config-ext-nacl)#25 permit ip host 192.168.1.3 any
30より低いシーケンス番号を指定
条件文の削除
・(config)#ip access-list extended 110
名前付き拡張ACLの指定方法で拡張ACL110を指定
・(config-ext-nacl)#no 10
削除したい条件文のシーケンス番号を指定
ACLのルール
・条件文の上から順に確認する
・条件に一致した場合は、その指示(permit/deny)に従って処理をして、それより下の条件文は確認しない
・条件文の最後には暗黙のdenyが存在するので、条件文のうち1つはpermitにしておかなければ全て拒否処理されてしまう
・ACLを適用しているルータ自身が発信するパケットは処理対象外
パケットフィルタリングに使用するACL
・パケットフィルタリングのためにインターフェースに適用できる
・ACLの数は、レイヤ3プロトコル(IPやIPX)ごとに in方向とout方向に1つずつ
ACLを適用する際のポイント
・標準アクセスリストは宛先に近い場所に適用
・拡張アクセスリストは送信元に近い場所に適用
ワイルドカードマスク
・ACLの条件で指定したIPアドレスのどこをチェックするかを示す情報
・ワイルドカードマスクを2進数にした時に「0」の部分はチェックして、「1」の部分はチェックしないという動きになる
アクセスリストを確認するために使用するコマンド
#show running-config
AAA
AAA
AAA機能
・Authentication
アクセス元の正当性を確認するための認証(ユーザー名とパスワードを確認)
・Authorization
何の実行を許可するかの権限の割り当て
・Accounting
ユーザーの履歴を記録
RADIUSとTACACS+
・AAAでは、RADIUSやTACACS+プロトコルを使用する
・上記のプロトコルを扱えるAAAサーバと、認証を必要とする機器(AAAクライアント)間でユーザの認証、適切な権限の付与、ユーザの利用状況の監視に関する情報のやり取りを行う
・Ciscoが提供しているAAAサーバとなるデバイスには「ISE」(Identity Services Engine)がある
RADIUS
・使用するプロトコル:UDP(ポート1812、1813)
・機能の分離:認証と認可は統合されており、アカウンティングは独立している
・暗号化:パスワードのみ暗号化
・標準への対応:標準(RFC 2865)
TACACS+
・使用するプロトコル:TCP(ポート49)
・機能の分離:認証、認可、アカウンティングはすべて独立している
・暗号化:パケット全体を暗号化
・標準への対応:シスコ独自
コマンド構文:AAAの有効化
(config)#aaa new-model
コマンド構文:AAAによる認証の設定
(config)#aaa authentication {タイプ} {default | リスト名} {method1} [method2…]
タイプ
login:ログイン認証
enable:特権モードに移行する為の認証(適用回線はdefaultのみ)
dot1x:IEEE 802.1xの認証(LANに接続するユーザーの認証)
リスト種類
default:すべての回線(aux、console、vtyなど)にデフォルトで適用されているリスト
リスト名(任意の名前):回線ごと個別に適用可能なリスト
method種類
group radius:Radiusサーバによる認証を行う
group tacacs+:TACACS+サーバによる認証を行う
local:ローカルデータベースで指定した「ユーザ名」と「パスワード」で認証を行う
line:lineパスワードで指定した「パスワード」で認証を行う
enable:enableパスワードで指定した「パスワード」で認証を行う
none:認証を行わない(認証せずにログインを許可)
コマンド構文:リスト名を使用した適用
・(config)#line {aux | console | vty} {番号} [終了番号]
・(config-line)#login authentication {default | リスト名}
CoA(Change-of-Authorization)
・RADIUS許可の変更を意味する
・AAAサーバがAAAクライアントにCoA要求パケットを送信し、すでに存在しているセッションの再認証を行う
・ポリシーの変更が発生した場合、すでに認証されているセッションにも新しいポリシーを適用できる