パケットフィルタにおけるルールの最適配置について 概要

パケットフィルタにおけるルールの最適配置について
井上 裕司
趙 亮
山本 英雄
宇都宮大学工学部情報工学科
栃木県宇都宮市陽東 7-1-2
e-mail:[email protected]
概要
ネットワーク利用の際のコンピュータシステムのセキュリティ対策としてパケットフィルタがよく用い
られるが、パケットフィルタを行うことで遅延時間が発生する。本論文ではパケットフィルタのルール
の配置を最適化することで遅延時間の短縮を図る。
iptables[1]を用いて実験を行うが、他のパケットフィル
1. はじめに
タでも原理は同じである。
近年セキュリティ対策としてパケットフィルタリング
iptables では様々な項目について記述することで、
がよく用いられるようになっている。ルータの機能を強
パケット毎の処理を細かく分けることができる。このパ
化して、個々のパケットの単位で通過させたり、禁止
ケット毎の処理を記述したものをルールと呼ぶ。図 1
したりできるようにしたもののことをパケットフィルタと
にルールの例を示す。
いい、パケットフィルタリングとは、パケットフィルタを
rule1; -i eth1 -d 192.168.253.10 -p tcp --dport 1234 -j ACCEPT
rule2; -p tcp --sport 1024:65535 -j DROP
用いてネットワークパケットを選択的にフォワードする
図 1 ルール記述例
処理のことである。本研究ではその中の IP パケットフ
rule1 は eth1 からきた 192.168.253.10 のポート 1234
ィルタについて考える。
パケットフィルタに関する研究は様々あるが、ほと
宛の tcp パケットを許可するというルールで、rule2 は
んどの研究は利便性を向上させるための研究と外部
ポート 1024 から 65535 までのポートから送信されたパ
からの攻撃への対応のようなセキュリティ面での研究
ケットを破棄するというルールである。
の 2 種類に分類される。本研究ではパケットフィルタリ
またこれらのルールの集合をテーブルと呼ぶ。パ
ングによる遅延時間に着目する。パケットフィルタリン
ケットとルールの照合はテーブルの上のルールから
グでは個々のパケットについて通過、禁止などの判
順に適合するルールが見つかるまで 1 つずつ順番に
断を行うためにその処理時間が発生する。この処理
比較していく。これは線形探索という。
このため、適したルールがテーブルの下位にある
時間は一つのパケットあたりでは微細なものであるが、
非常に多くのパケットを処理するために全体の処理
ほどそのパケットに対する処理時間は増大する。した
時間は無視できないほど大きくなる場合が考えられる。
がって出現頻度が高いパケットに適したルールがテ
本研究ではパケットフィルタにおけるルールの配置を
ーブルの下位に位置するような場合は多数の入力パ
最適化することにより、そのような遅延時間の短縮を
ケットに対する平均的な遅延時間が大きくなることが
図 る こ と を 目 的 と す る 。 本 研 究 で は Linux の
明らかである。
1
そこである期間のパケットフィルタのログからルー
ルタ用のテーブルは図 2 のように設定する。図 2 のテ
ルの適用頻度を調べ、適用頻度の高いルール程テ
ーブルは第 n 番目のルールが宛先ポート番号 n の
ーブルの上位に位置するように再配置を行う。またそ
TCP パケットを許可するというルールになっている。
の際にルールの位置や順番に制限があるものにつ
そして宛先ポート番号が 1 のパケットから宛先ポート
いての考慮を行う。これはルールの並び順によって
番号が 1000 のパケットまでをそれぞれ送信し、それ
パケットフィルタの動作が最初に意図したものと異な
ぞれの場合について受信側 PC のスループットを計
るものになることを防ぐために必須である。さらに既存
測した。
のルールの並び替えだけではなく、より遅延時間を
実験の環境は、パフォーマンスを測定するのには
短縮するために新しいルールを作成して追加するこ
ttcp を用いた。LAN については、クロスケーブルを用
とを検討する。
いて 2 台の PC を直接つないで 100BASE-TX の LAN
本論文の構成を以下に示す。第 2 章ではルール
を構築した。これはルータやハブの性能によるスルー
の再配置について、配置基準の考察を行い、またデ
プットの変化が生じないようにするである。使用した
フォルトのルールから新たなルール作成して追加す
PC は、まずパケットの送信側 PC には CPU は
る方法についての考察を行う。第 3 章ではルールの
AthlonXP2200+(実クロックは 1800MHz)でありメモリ
配置を変更した際の有効性について検証を行い、考
は 256MB のものを用いた。受信側の PC には CPU
察を行う。第 4 章では本論文のまとめと今後の課題に
は Celeron733MHz でメモリは 128MB のものを使用し
ついて述べる。
た。以下の図 3 に実験環境を示す。
rule1:-p tcp --dport 1 -j ACCEPT
rule2:-p tcp --dport 2 -j ACCEPT
rule3:-p tcp --dport 3 -j ACCEPT
・
・
・
ruleN:-p tcp --dport N -j ACCEPT
・
・
・
rule998:-p tcp --dport 998 -j ACCEPT
rule999:-p tcp --dport 999 -j ACCEPT
rule1000:-p tcp --dport 1000 -j ACCEPT
2. ルール再配置における
パフォーマンスの改善
2.1 ルール再配置
ルール再配置とはテーブル内のルールをパケットフ
ィルタによる遅延時間がより短くなるように並び替える
ことである。1 章で説明したように使用頻度の高いル
ールをよりテーブルの上位に配置することでパケット
フィルタによる遅延時間を短縮できると考えられる。そ
こで予備実験によりテーブル内のルールの配置によ
図 2 予備実験用テーブル
って遅延時間が実際にどの程度短縮できるかを調べ
パケット受信側
パケット送信側
PC
PC
た。
実験の方法は、パケットを送信する側の PC とパケ
1 0 0 B A S E -T X
ットを受信する側の PC の 2 台を用意し、その 2 台で
LAN を構築する。パケットを送信する側の PC ではパ
C eleron 7 3 3 M H z
A th lo n X P 2 2 0 0 + (1 8 0 0 M H z )
128M B
256M B
O S :R ed H a tL in u x 8 .0
ソ フ ト :ip ta b les,ttcp
ケットフィルタを行わないでパケットを受信する側の
PC のみパケットフィルタを行う。この際のパケットフィ
図 3 予備実験の環境
2
まず i=1 とし、 Pi と Pi +1 を比較する。適用頻度の高
ポート番号のパケットの場合ほどスループット
いルールをテーブルの上位へ配置することが基本で
が低下していることがわかる。
あるため Pi ≥ Pi +1 となる場合、i←i+1 とする。もし
スループット(KB/sec)
そして実験の結果は図 4 のようになった。大きい
Pi < Pi +1 となる場合は交換することが出来れば遅延
12000
10000
8000
6000
4000
2000
0
時間を短縮することが出来るので、パラメータを比較
して交換可能か否かを判断する。
0
100
200
300
400
500
600
700
800
900
まず比較するパラメータはパケットに対する処理
1000
ポ ー ト番 号
(アクション)である。ルール(i)のパケットに関する処理
図 4 予備実験の結果
を ACTi とする。 ACTi = ACTi +1 である場合、ルー
結果よりパケットがテーブルの下位にあるルールに
ル(i)とルール(i+1)の入れ替えを行ったとしても問題
よって処理される場合ほど遅延時間の増大によりス
は生じない。これはこの二つのルールが互いに影響
ループットが低下し、最も低下するポート番号が 1000
を与えないためである。問題が生じる場合というのは、
の場合にはスループットが 25%にまで低下することが
順序の入れ替えによりあるパケットが意図した処理と
検証できた。また今回パケットフィルタを行った PC の
は別の処理を受けてしまう場合である。一例として次
CPU の性能は通常ルータに使用される CPU よりも非
の図 5 のようなテーブルがあったとする。
rule1: -p tcp --dport 8080 -j ACCEPT
rule2: -p tcp --dport 1024:65535 -j DROP
rule3: -p udp --dport 1080 -j ACCEPT
rule4: -p udp --dport 6900 -j ACCEPT
rule5: -p udp -j DROP
常に高速であり、ルータに使用されるような低い性能
の CPU においてはスループットの低下がより早い段
階で起こることが考えられる。
図 5 テーブルの例
2.2 ルールの配置基準
ルールの最適配置において最も重要なパラメータ
この場合 rule1 と rule2 を入れ替えてしまうと rule1
はルール毎の適用頻度である。このルール毎の適用
によって許可したかった宛先ポート番号が 8080 であ
頻度はパケットフィルタのログを採取することで調べる
るパケットも rule2 によって破棄されるようになり、最初
に意図したパケットフィルタとは異なるものになってし
ことが可能である。従って最も単純な配置基準として、
まう。つまり ACTi ≠ ACTi +1 の場合安易にルール(i)
ログから得られるルールの適用頻度について降順に
とルール(i+1)を交換しては危険であると言える。しか
テーブルに並べるという配置基準を考えてみる。しか
しこの場合でも交換可能な場合もあるので他のパラメ
しテーブル内のルールの並び順はパケットフィルタの
ータも比較する。
方針に従うため、単純に適用頻度順に並べ替えるこ
そこで我々は ACTi ≠ ACTi +1 の場合プロトコルを
とはその方針に反することがある。そこで次のような配
比 較 す る こ と を 考 え た 。 ル ー ル (i) の プ ロ ト コ ル を
置基準でパケットフィルタの方針を保ったまま並び替
PROi とする。プロトコルが重複していなければ交換
えることを考えた。
しても問題ないと言える。これは例として図 5 の rule2
と rule3 を見ると明らかである。プロトコルが重複して
まず、ログファイルを元に適用回数を調べる。ルー
いる場合は次の比較パラメータとして宛先ポート番号
ル(i)の適用回数つまり適用頻度を Pi とする。次にテ
を用いる。ルール(i)の宛先ポート番号を DPOi とする。
ーブルの上から順に2つのルールについて着目す
rule3 と rule4 を比べてみるとパケットの処理が異なり、
る。
プロトコルは同じであるがポート番号が重複していな
3
いため全く異なるパケットへのルールであることがわ
ルタを行った際に送られてきたパケットが表 1 のように
かる。つまりポート番号が重複しない場合は交換して
なった場合を考える。
もパケットフィルタの方針には支障がないと言える。ま
rule1: -p tcp --port 8080 -j ACCEPT
rule2: -p udp --port 53 -j ACCEPT
rule3: -p tcp --port 80 -j ACCEPT
rule4: -p tcp --port 3 -j ACCEPT
rule5: -j DROP(デフォルトルール)
たこれらプロトコルと宛先ポート番号の二つのパラメ
ータはどちらから比較しても結果が一緒になるのは明
らかである。以上のルール交換のアルゴリズムを図 6
に示す。
ル ー ル (i)と ル ー ル (i+ 1 )の 比 較 開 始
図 7 元のテーブル
Pi < Pi + 1
F
表 1 受信パケット一覧
T
T
プロトコル 宛先ポート番号 受信回数 適用されたルール
tcp
3
16
rule4
udp
53
300
rule2
tcp
80
6164
rule3
udp
520
5179
rule5
tcp
1080
1356
rule5
tcp
8080
2465
rule1
A C Ti = A C T i +1
F
F
P R O i = P R O i +1
T
この場合のパケットの総処理回数は式(3.1)のよう
D P O i = D P O i +1
T
になる。
16 × 4 + 300 × 2 + 6164 × 3 + 5179 × 5
(3.1)
+ 1356 × 5 + 2465 × 1 = 54296
F
ル ール を交 換 して終 了
ルールを交換せずに終了
図 6 隣接ルールの交換可否の比較
ここで、表 1 をもとに図 7 のテーブルに対しルール
の再配置を行うと図 8 のようになる。
これらのパラメータを用いた比較を行う際に注意し
rule3: -p tcp --port 80 -j ACCEPT
rule1: -p tcp --port 8080 -j ACCEPT
rule2: -p udp --port 53 -j ACCEPT
rule4: -p tcp --port 3 -j ACCEPT
rule5: -j DROP(デフォルトルール)
なければならないのは、これらのパラメータについて
の記述が無いルールを並び替えようとする時である。
例えば図 5 の rule4 と rule5 に着目してみるとパケ
ットの処理が異なり、プロトコルは同じで、そこで宛先
ポート番号を比較しようとすると rule5 にはポート番号
図 8 並べ替えを行ったテーブル
に関する記述はない。このような場合は全てのポート
番号に一致するとみなしてよい。
このテーブルで表 1 のパケットを処理する場合の
以上のように今回は配置基準としてルール(i)の適
総処理回数は式(3.2)のようになる。
用頻度 Pi 、パケットに対する処理 ACTi 、プロトコル
PROi 、宛先ポート番号 DPOi の4つのパラメータを
16 × 4 + 300 × 3 + 6164 × 1 + 5179 × 5
(3.2)
+ 1356 × 5 + 2465 × 2 = 44733
用いた。なお、今回は使用しなかった発信 IP アドレス、
この場合処理回数は約 18%削減できている。
受信 IP アドレス、インターフェースなど iptables の記
2.3 デフォルトルールから新ルール作成
述に用いる他のパラメータを判断基準として用いるこ
とも可能である。
デフォルトルールとはパケットフィルタを設定する際
実際の例として図 7 のようなテーブルのパケットフィ
に特に処理を明記されなかったルールを処理するた
4
めのルールで、常にテーブルの一番下に置かれる。
これは図 8 の場合と比べても約 25.5%の処理回数
一般的には、セキュリティの面で明示的に許可されて
の削減になっており、図 7 の場合と比較すると約 39%
いないアクセスはすべて拒否するために、通過させる
も処理回数が削減できている。
ルールにあてはまらないパケットを全て破棄するとい
以上のようにデフォルトルールから効果的なルー
うデフォルトルールが設定されることが多い。このデフ
ルを作成し追加することで、パケットフィルタによる遅
ォルトルールは常にテーブルの最も下に位置するた
延時間をより短縮することができる。
め、デフォルトルールによって処理されるパケットは
全てのルールと比較されることになる。このようなパケ
3. 検証実験
ットが非常に多い場合、そのなかの特に出現頻度の
高い条件についてのルールをテーブルに追加するこ
3.1 実験の目的
とで、デフォルトルールより前の段階での処理が可能
実際に運用されているパケットフィルタについて、フ
になり、全体の処理時間を減らすことができる。
例として図 7 のテーブルと表 1 のパケットの場合を
ィルタリングのログを採取し、そのログを元に、新ルー
考える。表 1 の宛先ポート番号と受信回数に注目す
ルを追加して再配置を行ったテーブルを作成し、2 つ
ると宛先ポート番号が 520 であり、デフォルトルール
のテーブルによるパケットフィルタに対してログファイ
によって破棄されたパケットが非常に多いことがわか
ルと同じパケット群を送信した場合の処理回数を計
る。そこで仮にこのポート番号を破棄するというルー
算し、比較を行うことでどのくらいの改善が見られるの
ル(これを rule6 とする)を追加する。この新しく作った
かを検証する。
ルールの初期位置はデフォルトルールのすぐ上とす
3.2 実験方法と実験環境
ることで、ルール追加を行ってもパケットフィルタの動
作に変更は起こらない。そしてルール追加後に図 6
まず 2.3 で示した方法により新ルールをデフォルト
のアルゴリズムを用いたルールの再配置を行うことで
ルールのすぐ上に追加した。ただし今回は最も回数
最終的に新ルールも適切な位置に移動させることが
が多い宛先ポート番号について調べた。また追加す
できる。
るルールは一つとした。
次に 2.2 で示したように隣接するルール間での交
以上の手順で図 7 のテーブルに新ルールを追加
し並び替えを行ったものが図 9 のテーブルである。
換を上から順に行った。ただし追加したばかりの新ル
rule3: -p tcp --port 80 -j ACCEPT
rule6: -p tcp --port 520 -j DROP(追加したルール)
rule1: -p tcp --port 8080 -j ACCEPT
rule2: -p udp --port 53 -j ACCEPT
rule4: -p tcp --port 3 -j ACCEPT
rule5: -j DROP(デフォルトルール)
ールに関しては、新ルール作成で用いた出現回数を
図 9 新ルールを追加したテーブル
巡だけでは上方向には最大でも 1 つしかルールは移
適用頻度とした。
上から順に図 6 のアルゴリズムによる比較を行うと、
総ルール数を N とすると N-1 回の比較でテーブルの
上から下まで全て比較することになるが、この比較一
動できないため、N 巡この比較を行った。こうすること
このテーブルを用いた場合の処理回数は式(3.3)
でどのルールも十分に移動させることができるからで
のようになる。
16 × 5 + 300 × 4 + 6164 × 1 + 5179 × 2
+ 1356 × 6 + 2465 × 3 = 33333
ある。具体的な流れを図 10 に示す。
(3.3)
5
これは本研究室の gateway で実際に使用している
テーブルであるが、ルールの内容はセキュリティ上の
開 始
都合のため省略してある。rule51、rule52、rule53 がデ
フ ォ ル ト ル ー ル で あ り 、 順 に INPUT 、 OUTPUT 、
N 回 繰 り 返 し
FORWARD のパケットを DROP するものである。また
このテーブルを使った場合のパケットフィルタのログ
i= 1 ,2 ,3 ,・ ・ ・ ,N - 1
を用意した。その一部を図 12 に示す。またこのログも
セキュリティ上の都合により一部を伏せてある。
r u le ( i) と r u le ( i+ 1 ) の 比 較
図 12 ログファイルの一部
3.3 実験結果と考察
終 了
まずデフォルトルールによって処理されたパケット
図 10 ルール再配置の流れ
実際に実験に使用したテーブルは図 11 のテーブ
の宛先ポート番号別の回数は図 13 のようになった。
ルである。
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ただし 100 回以下のものは省略してある。
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
R u le
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
5 1 (デ フ ォ ル ト ル ー ル )
5 2 (デ フ ォ ル ト ル ー ル )
5 3 (デ フ ォ ル ト ル ー ル )
p ort1 35 ・・・ 242回
p ort1 37 ・・・ 2474回
p ort1 38 ・・・ 4014回
p ort1 61 ・・・ 156回
p ort5 20 ・・・ 23365 回
p ort7 0 0 1・・・259回
p ort1 0 0 00・・・ 375 回
図 13 デフォルトルールで処理されたパケットの回数
またログファイルから読み取った各ルールの適用回
数は図 14 のようになった。
新ルールの追加と並び替えを行って最終的にル
ールが再配置されたテーブルを図 15 に示す。なお
追加された新ルールは宛先ポート番号が 520 となっ
ているパケットを破棄するというルールであった。
図 11 実験に使用したテーブル
6
1番目のルールの出現回数は
3番目のルールの出現回数は
5番目のルールの出現回数は
7番目のルールの出現回数は
9番目のルールの出現回数は
11番目のルールの出現回数は
13番目のルールの出現回数は
15番目のルールの出現回数は
17番目のルールの出現回数は
19番目のルールの出現回数は
21番目のルールの出現回数は
23番目のルールの出現回数は
25番目のルールの出現回数は
27番目のルールの出現回数は
29番目のルールの出現回数は
31番目のルールの出現回数は
33番目のルールの出現回数は
35番目のルールの出現回数は
37番目のルールの出現回数は
39番目のルールの出現回数は
41番目のルールの出現回数は
43番目のルールの出現回数は
45番目のルールの出現回数は
47番目のルールの出現回数は
49番目のルールの出現回数は
51番目のルールの出現回数は
53番目のルールの出現回数は
46
30269
25397
11378
0
8766
8
19
0
60
42
2809
2
2408
54
42
3905
6
0
3578
0
0
13
0
0
30269
1235
2番目のルールの出現回数は
4番目のルールの出現回数は
6番目のルールの出現回数は
8番目のルールの出現回数は
10番目のルールの出現回数は
12番目のルールの出現回数は
14番目のルールの出現回数は
16番目のルールの出現回数は
18番目のルールの出現回数は
20番目のルールの出現回数は
22番目のルールの出現回数は
24番目のルールの出現回数は
26番目のルールの出現回数は
28番目のルールの出現回数は
30番目のルールの出現回数は
32番目のルールの出現回数は
34番目のルールの出現回数は
36番目のルールの出現回数は
38番目のルールの出現回数は
40番目のルールの出現回数は
42番目のルールの出現回数は
44番目のルールの出現回数は
46番目のルールの出現回数は
48番目のルールの出現回数は
50番目のルールの出現回数は
52番目のルールの出現回数は
表 2 総処理時間
46
16852
1203
18944
0
321
5
1449
0
0
295
69
0
0
109
0
0
129
5304
0
0
0
0
92
321
3
総処理時間(遅延時間)
表 2 を見ると、新しいルールの追加と再配置を行った
場合は約 54%処理時間が短縮できている。パケット
フィルタの遅延時間を大幅に短縮することができるこ
とが分かる。
4. 結論及び今後の課題
本稿は、パケットフィルタにおいてルールの再配置
を行い、テーブルを最適化することによって遅延時間
図 14 ルール毎の適用回数
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
Rule
もとのテーブル 新しいテーブル
1,151,583t
528,709t
の短縮を行うことについて検証し、その有効性を示し
1
Rule 15
2
Rule 45
3
Rule 13
4
Rule 35
5
Rule 14
54 追加した新ルール Rule 25
8
Rule 9
7
Rule 10
11
Rule 17
38
Rule 18
33
Rule 20
39
Rule 26
23
Rule 28
27
Rule 32
16
Rule 34
6
Rule 37
12
Rule 40
50
Rule 41
22
Rule 42
36
Rule 43
30
Rule 44
48
Rule 46
24
Rule 47
19
Rule 49
29
Rule 51 (デフォルトルール)
21
Rule 53 (デフォルトルール)
31
Rule 52 (デフォルトルール)
た。その結果ルールの最適配置は遅延時間の短縮
において大きな効果があることを示した。さらに既存
のルールの配置を変更するだけでなくデフォルトル
ールからの新ルールの作成も行ったが、この際作成
するルールは宛先ポート番号だけを参照するような
ルールであったが、新ルールの初期位置をデフォル
トルールの直前とし、追加後にパケットフィルタの動
作に変更が加わらない基準でテーブルの再配置を
行うことでこの新ルールの位置も最終的に適した位
置に変更できた。
またルールの最適配置については、今回はルール
毎の処理時間を全て一定の時間 t であると見なして
ルールの再配置を行ったが、実際は比較項目の数
によってルール毎にかかる処理時間が違うことが予
想される。例えば宛先ポート番号しか比較の項目が
ないルールと送信元 IP アドレス、宛先 IP アドレス、送
図 15 新ルール追加とルール再配置後のテーブル
信元ポート番号、宛先ポート番号といった比較項目
が4つあるルールとではどちらも1つのルールではあ
次にパケットと1つのルールとの比較時間を t とした
るが処理に要する時間は異なるであろうことが容易に
場合のテーブルごとの処理時間を計算すると表 2 の
想像できる。そこでルール内の比較項目の数による
ようになった。なお処理時間の算出は式(3.1)や式
処理時間の相違について検証を行い、結果処理時
(3.2)や式(3.3)と同様の計算を行った。
間が異なるようであれば処理時間も並び替えの際の
7
基準のひとつにすることでより遅延時間の短縮に効
果的なルールの再配置が行えると考えられる[2]ので、
今後の課題としたいと思う。
参考文献
[1]netfilter/iptables URL:http://www.netfilter.org/
[2]Liang Zhao, Yuji Inoue, Hideo Yamamoto,
“Delay Reduction for Liner-Search Based Packet Filters”
ITC-CSCC 2004
8