3.6 URL Filtering の実装
3.6.1 URL Filtering のプログラム構成
ここでは,作成したURL Filteringプログラムの構成ならびにプログラムに使用してい るモジュールの説明をする.
図3.10 URL Filtering処理の流れ
図3.10に文字列型のパイプライン型シグナチャ検索法を用いたURL Filteringのプログ ラムの基本的な構成を示している.簡単にプログラムの流れを説明する.
1. データ入力部から投入されたトリガーパケットは,プロトコルチェックモジュールに渡 され,入力されたIPパケットがHTTPパケットであるか,また同時にURLリソース の要求を表す「GET Command」を含んでいるかをチェックする
2. HTTPプロトコルかつ「GET Command」を含んでいると判断されたIPパケットは,
URL抽出処理へ送られる.HTTPプロトコルかつ「GET Command」を含んでいな い場合は,処理は行われずデータ出力部へ送られる
3. URL抽出処理では,IPパケット内のペイロードからDirectory情報ならびにHostname 情報を抽出し,正しいURLの並びに修正した後,ルール比較処理へデータを渡す
3.6 URL Filteringの実装
4. URL抽出処理で得たURL情報とフィルタリングルールとを比較することで通信の許
可・不許可を決定する
プロトコルチェック部分では,外部メモリ(メモリ容量は8Mwords(1wordは4Byte)で,
8Kwordsのメモリ容量を持つキャッシュを介してアクセスする)に格納されているIP・TCP
ヘッダを内部メモリに置くことで,ヘッダチェックに要するメモリのアクセス時間を短縮し ている.また,次のURL抽出処理で必要となる「GET Command」が格納されているペイ ロードの位置をデータパケットに保持させて出力することで,ペイロードの開始位置の情報 をメモリに格納する処理を回避した.
続いてプログラムに使用している各モジュールについて説明を行う.
• URL抽出モジュール
このモジュールは,IPパケットのペイロード内から URL 情報を抽出するためのモ ジュールである.図3.11にモジュールの構成を示す.
図3.11 URL抽出モジュールの構成
3.6 URL Filteringの実装
ロードの開始位置を保持したデータが入力される. 各モジュールについて簡単に説明 する.
1. Directory情報抽出モジュール
このモジュールは,IPパケット内のペイロードからDirectory情報を抽出する.
Directory 情報は下に示すように「GET Command」の有無を表す「GETt(ス ペース)」という文字列から,その次に現れる「t」の間に格納されている.
Directory情報の例
¶ ³
GETt/kut J/index.htmltHTTP/1.1CRLR
µ ´
Directory情報の抽出処理は,入力パケットが保持している「GETt」が格納さ
れたペイロードの位置情報を基に,次に出てくるスペースを検出するまで,その間
にあるDirectory情報を抽出することにより実現している.
2. Hostname情報抽出モジュール
こ の モ ジュー ル は ,Hostname 情 報 を 抽 出 す る た め の モ ジュー ル で あ る.Hostname 情報は下に示すようにHostname情報の格納位置を示す「Host:t」 という文字列から,その次に現れる「改行コード(CRLF)」の間に格納されている.
Hostname情報の例
¶ ³
Host:twww.kochi-tech.ac.jpCRLR
µ ´
Hostname情報抽出は,「Host:t」という文字列を検出し,その後に現れる「改
行コード(CRLF)」を検出するまでの間にある文字列を抽出することで実現して
いる.
3. URL結合・整形モジュール
このモジュールは,IPパケットのペイロード内から抽出したDirectory・ Host-name情報を正しい URLの形に結合するためのモジュールである.また,
Direc-tory・Hostname情報抽出時に混入した,意味のない文字列を削除し整形するため
3.6 URL Filteringの実装
の処理を行う.
• ルール比較モジュール
このモジュールは,前処理としてIPパケットのペイロードから抽出したURL情報 と,内部メモリに格納しているフィルタリグルールを比較し,通信の許可・不許可を決 定するモジュールである.ルールと一致した場合,IPパケットに対する処理を決定す
るAction の値をルールテーブルより読み出し出力する.ルールと不一致だった場合,
ルールとマッチしなかったことを表すコードを出力する.
図3.12にルール比較モジュールの処理の流れを示す.
図3.12 URL比較モジュールの構成
URL比較モジュールの基本的な処理の流れを説明する.
1. 入力された URL文字列の長さと,内部メモリに格納されているフィルタリング ルールの文字列の長さを比較する
2. 文字列の長さが一致したルールに対して,比較処理を行う 一致の場合:各ルールが保持しているActionを出力する
3.6 URL Filteringの実装