◆ CBACとは
CBAC( Context-Based Access Control )とは、Contextに基づいてACL制御を行う機能のことです。
Contextとは「状況に応じて異なる動作を行うもの」です。つまり、通常のACLのように、あらかじめ
決定したポート番号ではなく、CBACでは状況に応じて動的にACL制御と、L7のACL制御が行われます。
CBACでは、多くの Firewall 製品の基本実装のステートフルインスペクションと同様の動作を実現でき
内部から発生したトラフィックを検査して、その戻りとなるトラフィックに対して許可するACLを動的
に作成するので外部とセキュアな通信を行うことができます。reflexive ACLでも似たような動作を実現
できますが、ポート番号が動的に変更する FTP 通信には対応していませんが、CBACでは対応できます。
CBACの検査で、アプリケーション特有のコマンドを認識して、アプリケーションレベルの一定の攻撃を
検知して防ぐことができます。CBACはTCPパケット中のシーケンス番号を追跡し、予測外のシーケンス
番号を持つパケットを破棄してくれます。攻撃を検知した場合、警告メッセージの生成、パフォーマンス
の妨げとなるシステムリソースの保護、攻撃者からのパケットのブロックを行います。
◆ CBAC - 動作の流れ
CBACでは、指定された検査対象のプロトコルのみ検査を行います。CiscoルータにCBACを実装させる
ためには、検査対象のプロトコルの指定、適用I/Fの指定、I/FへのInboundまたはoutboundの指定が
が必要になります。また、CBACを適用するI/Fにその他のACLが設定されている場合、そのACLで許可
されたパケットのみがCBACの検査対象となります。それでは実際にCBACの動きを下図で確認します。
CBACでは、Ciscoルータを通過するトラフィックの内容を検査して、動的にポートの開放、閉鎖します。
トラフィックの内容を検査すると言っても、CBACは接続の「コントロールチャネル」のみを検査対象と
するので「データチャネル」は検査されません。例えば、FTPのセッションの間にコントロールとデータ
チャネルの両方の状態の変化を監視はしますが、検査対象となるのは、コントロールチャネルのみであり、
FTPコマンドと応答を検査します。
ちなみに、UDPにセッションは実際には存在しないのですがCBACは送出されるパケットの情報を検査し、
同じ可能性の送信元、宛先アドレスとポート番号を持っているか等を判断基準として正当性を判断します。
◆ CBAC - しきい値・しきい値を越えた時の動作
CBACでは、セッションのステート情報を管理するのに、タイムアウトとしきい値の2つの値を利用します。
セッションに対するタイムアウト時間の設定により、特定の時間の後にセッションを破棄することになり、
システムリソースの開放へとつながります。また、セッションに対するしきい値を設定することによって
ハーフオープンのセッションに割り当てられるシステムリソースの量を制限することができて、その結果
DoS攻撃の防止へとつながります。CBACでは、DoS攻撃に対する以下の3つのしきい値を提供しています。
・ ハーフオープンのTCPまたはUDPセッション総数
・ 定時間内のハーフオープンのセッション数
・ ホストごとのハーフオープンセッション数(TCPが対象)
上記で定められたしきい値を超えた場合、CBACでは以下の2つのアクションを実行することになります。
・ CBACは最も古いハーフオープンのセッションの両端にRSTパケットを送信し、新しく着信してくる
SYNパケットにサービスを提供できるようシステムリソースを利用可能な状態に戻します。
・ CBACはハーフオープンコネクションのセッション(TCPが対象)についてはしきい値の一定の時間
一時的にすべてのSYNパケットをブロックします。これにより正当な接続にリソースを割り当てられます。
CBACは、セッション層とアプリケーション層の両方についてトラフィックの検査をサポートとしている強力なFirewall機能です。
|