CCNA(200-301)セキュリティ④

  • 2021年7月30日
  • 2021年8月17日
  • IT

セキュリティ

アクセスリスト

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要求パケットを送信し、すでに存在しているセッションの再認証を行う
・ポリシーの変更が発生した場合、すでに認証されているセッションにも新しいポリシーを適用できる