ファイヤーウォールを使う その2
前置き
前回ファイヤーウォールのことを書いたのははるか彼方の6年前。
今だにその当時のまま使っていたのかというと、実はそれに近いものがあったのだ。
KerioがVer.4になって試してみたもののなんかスループットが悪くなって結局Ver.2に戻していたが、HTTPサーバーのApacheを1.x系から2.x系に変えたところやたらとブルースクリーンを出すようになってしまった。
そんなわけで次のファイヤーウォールとしてSygateのものを導入していたのだが、なんだかこれもどこかのメーカーに買収されてしまったとかで先行きが怪しくなってしまった。
いろいろとファイヤーウォールを探していたところ、R-Firewall辺りがおもしろそうだったのだが、なんか試作品みたいな感じがしてパス。
そんなこんなで今のところ軽くて高性能という噂のJetico Personal Firewall(以降JPFと記述)を使っている。(読み方はよくわからないが私はジェティコと呼んでいる。通称ぢぇち子)
ただ、こいつは設定の仕方がよくわからないという噂もセットでついて回っている。
確かによくわからないため、インストールしたものの何をどうやっていいかわからず適当にいじっては期待通りの動作ができずにアンインストールし、そのたびに他のページなどを参考にして再びインストールするというのを数回繰り返してやっとなんとなく使い方がわかりかけてきた。
そんなわけで、私の理解した範囲の内容をメモしてみた。
例によって私はネットワークのことに関して詳しくないし、JPFの使い方をちゃんと理解している訳でもないのでこの内容には嘘が書かれている可能性もあるが、その分私と同レベルのど素人にはそれなりに参考になるのではないかと思う。
つまり、あくまで参考という程度にとどめてもらいたいということである。用語も結構いいかげんである。
正しい使い方は他のページを探してほしい。そのページの内容が理解できないほどのど素人向けの内容である。(最初から堂々と逃げ腰である)
またここに書かれているのはあくまで設定の例であって、このとおりにやってもまともなファイヤーウォールは構成できない。各自の環境に置きかえて設定を行なってほしい。
基本的な動作
とりあえずインストールをしてトレイアイコンにいるJPFのアイコンをダブルクリックしてみよう。
あ、インストールの仕方から説明してくれというのは無し。そのくらいは自力でなんとかしてほしい。それもよくわからないというのであればZoneAlarm辺りを使うのが無難だろう。
Configrationのタブを開くと何やらツリー状のものが表示される。
これが何を意味するのかがわからないというのが第一の難関だろう。
これがJPFの動作を示すものだというのがわかれば理解は早い。
Allow all(すべて許可)、Block all(すべて拒否)、Optimal protection(最適プロテクション?)の3つの状態があるのだが、Optimal protectionの内容が重要。
左側の領域(セキュリティポリシービューと呼ぶらしい)のrootをクリックすると右側(テーブルビューと呼ぶらしい)にその内容が表示される。
何かのアプリケーションがネットワークにアクセスに行った際、JPFはまずApplication Table、System IP Table、Protocol Table、Process Attack tableのそのアクセスに対応する項目の評価を行ない、最後にreject(拒否)という動作を行なっているということである。
Application Tableの中はこのようになっている。(System IP Table以降のテーブルに関してはよくわからないので触れないでおく。これがわかればもっと有効にJPFを使えるのだろう)
Application Blocked Zone、Application Trusted Zoneの評価とUDPとTCPのポートの許可、DNSリクエストの許可、System Applicationsの評価、Ask Userと最後にrejectとなっている。
水色の→アイコンは該当テーブルを参照するということで、具体的な内容はそのテーブル内のルールを見ることとなる。
緑のチェックマークや赤の×、黄色の?はそれぞれaccept、reject、askのルールが適用されているという意味である。
Application Blocked Zone、Application Trusted Zoneはインストールの最後のほうでなにやら聞いてきたもののこと。(スタートメニューのConfiguration Setupでも設定可能)
普通はBlockedは何も無しでTrustedはデフォルトでLAN関係を許可している。
ちなみにBlockedは何も登録されていないので「意味がないorエラー」みたいな意味合いで「!」マークがついている。
System Applicationsはそのまんまシステムアプリケーション用のテーブルで、該当テーブルを見るとWindowsのどのプログラムが許可されているのかがわかる。
Ask Userは最初はAskだけのルールが定義されていて、アプリケーションがネットワークにアクセスした時に確認のダイアログを出す。その際に答えた結果がここに蓄積されていく。
ここまでくればJPFの動作と表示の関係がなんとなくわかったのではないかと思うような気がしてくる雰囲気が漂っているはずである。
簡単なルールの作成
何かのアプリケーションがインターネットにアクセスに行くとAsk Userに引っ掛かってダイアログがポップアップ表示される。
下のやつはWEBブラウザのOPERAの場合である。
まず、Access to networkの確認が出る。
明らかにOPERAの動作によるものであり、ブラウザなのだからネットワークにアクセスに行くのは当然なのでAllowにしてOK。
するとすぐに次のダイアログが出てくる。
これがブラウザのアクセスの本体といってもいい部分。
outbound connectionのイベントでプロトコルはTCP/IP、その他ローカルとリモートのアドレスとポートなどの情報が表示される。
今回はwww.jetico.comへのアクセスで、ユーザーの意図するものなのでAllowでOK。
するとAsk Userにこのように新しいルールが登録される。
このように自分が使っているアプリケーションがどのような通信を行なっているのかを把握することができる。
注意するのは、この方法で作ったルールはその時の条件のアクセスにのみ適用されるということ。つまり、www.jetico.com以外にアクセスに行ったときには再び同じ事を行なう必要がある。これはなかなか不便である。
テーブルを作る
というわけで、新たにOPERA用のテーブルを作ってみる。
左側の領域の適当なところを右クリックしてInsert Tableを選ぶ。
するとNew Tableという名前のテーブルが新規に作成される。
このままではわかりにくいので、New Tableを右クリックしてRenameを選択し、名前を変えておく。今回はOPERAにしておいた。
先程のAsk Userに登録されたOPERAのルールを2つ選択し、今作ったOPERAのテーブルにドラッグ&ドロップすることでルールが移動できる。
Remote AddressのAddress Typeがhostになっているが、このhostというのがどうやら単一の接続先という意味らしい。hostを選択しているとその下にIP Addressという項目が出現する。今回はそこにwww.jetico.comのIP Addressが入力されている。
そこで、Address Typeをanyにすることで、IP Addressの項目がなくなり、すべてのIP Addressにアクセスができるようになる。
portはWEB Pageを見るだけなら80のみ指定すればいいのでとりあえずこのままにしておく。
再度OPERAでアクセスを行なうと再びダイアログが出てくる。
今度はそこでHandle as...を選んでリストからOPERAを選択すると以降OPERAはダイアログを出すことなくインターネットにアクセスできるようになる。
この設定はAsk Userテーブルの中に「→ opera」で登録される。
わざわざもう一度OPERAを起動しないといけないのかと思うだろうがそんなことはなく、実はAsk Userのテーブルに新規にルールを作り、verdictにOPERAを指定し、Packet ParametersのApplicationにOPERAをフルパスで登録しておけばよい。
ここで作ったテーブルはOPERA専用のルールなのであるが、インターネットエクスプローラも同様のルールで使えるためこのテーブルをブラウザで共用するようにすると便利である。
この場合はPacket parametersのApplicationの内容を消去することで他のアプリケーションでもこのテーブルを使うことができる。
このように、アプリケーション毎のテーブルや同じ種類のアプリケーションで共用できるテーブルなどを作ることができる。
プリセットのテーブルを使う
本来であればこっちの説明のほうが先なのだが、こっちを先に説明してしまうと先程の説明がむなしい内容になってしまうので、あえて後ろに持ってきた。
前記の例ではブラウザのテーブルを作ったが、実はJPFには最初からブラウザ用のテーブルが用意されている。
このようにOPERA(WEBブラウザ)を使用した時に出てくるダイアログでWeb Browserを選択する。
Web Browserのテーブルを見るとこのようになっている。
ふむふむ、HTTPのアクセスにはポート80を、HTTPSのアクセスにはポート443を使うんだな、などということがわかり勉強になる。
WEBブラウザでもファイルをダウンロードする時にFTPを使うこともある。
この時はWeb Browserに指定しただけでは思ったような動作はしない。
その場合はダイアログが出た時にFTP Clientを選択することになるのだが、このようにWeb Browserの右側の領域を右クリックして新しいアプリケーションルールを作り、VerdictにFTP Clientを指定すればOKとなる。
こういう使い方もできるということで。
ちなみにJPFにはWebブラウザのほかにFTPクライアントやメールクライアント、そしてなぜかFTPサーバー用のテーブルも用意されている。世の中そんなにFTPサーバーの要望があるのだろうか?。HTTPサーバーはなぜないんだろうか?。
新規にルールを作ってみる
今まではJPFの検出内容をもとに学習型でルールを作るのと最初から入っていたテーブルを利用する方法だったが、今度は自分でテーブルを作ってルールを入れてみる。
そのためには目的とするアプリケーションがどのようなルールでネットにアクセスに行くのかを知っている必要がある。
この例ではTCP/IPの出力方向でリモートポート5900を使うアプリケーションを想定してみた。
先程の説明と同じように新しいテーブルを作る。とりあえずテーブル名はAAAにしておいた。
右側の領域にはcontinueというのが勝手にできているので、この辺を右クリックしてApplication ruleを選択する。
するとこのようなダイアログが出てくる。
まず最初に必要なルールはaccess to networkだというのは既に学習しているので、Eventにそのルールを指定する。
次にTCP/IPの出力方向のルールを作る。
再度右クリックでApplication ruleで新しいルールを作る。
Evnetでoutbound connectionを指定する。
inbound/outbound connectionというのが一般に言われているTCP/IPでの通信で、rceive/send datagramというのがUDPに相当するものらしい。その他に関しては他のページにより詳しい説明があったりするので省略。
outbound connectionを選択するとProtocolが選択できるようになる。とりあえず普通はTCP/IPを指定することになる。その他に関しては以下略。
すると、match invertedの項目があらわれる。これはこれ以外にマッチするという意味で、TCP/IP以外のProtocolという意味になるので今回はチェックしない。
Local addressはanyとして特にいじらない。
Remote addressで使用するポートは5900の一つのポートを指定するのでsingle portを選ぶ。
すべてのポートを指定する時にはany、100〜120のようにある幅で指定する時にはport rangeを選ぶ。
ここにポート番号5900を入力する。
ちなみにport rangeを選んだ場合には開始番号と終了番号を入力するための選択肢が出てくる。
このように選択肢によってさらに下位の選択肢が現れたり消えたりするのが特徴なのだが、それが設定内容の見通しを悪くしているような気がする。
するとこのようなルールの入ったテーブルができあがる。
あとは目的のアプリケーションがネットにアクセスした時に出てくるダイアログでこのテーブルを指定すればよい。もしくはAsk Userの中に新規にこのテーブルを参照すルールを作って事前にapplicationを指定しておく。
ついでにaccess to networkだけを許可すればいいアプリケーションが結構あるので、そのためのテーブルを作ってみる。
ほとんどのアプリケーションでファイルオープンダイアログが出た時にaccess to networkのダイアログが出る。
手順はすでにわかっているので細かいことは省略。
Eventでaccess to networkを指定するだけである。
とりあえずテーブルの名前もそれっぽいのに変えておく。
これでできあがり。
アプリケーションによってはaccess to networkを許可しないとうまく動かないものがあるが、許可しなくても問題なく動くものに関しては許可する必要はないと思える。
とりあえずアクセスを禁止して様子を見て、問題が出るようならこのテーブルを指定すればよいだろう。
もっと強引な方法として、Application Tableの中にaccess to networkをacceptするルールを入れておけばすべてのaccess to networkを許可することもできるがセキュリティ上はお勧めできない。こういう方法もあるということで。
このようにしてルールを作っていくとAsk userに大量にルールがたまってくる。
そうなると、とりあえずAsk userにしておいたものと「このアプリケーションはこの設定で決定」みたいなものを区別したくなってくる。
ここから先は使う人の趣味になるので「こんな使い方もできる」ということで。
ということで、決定したルールを入れるためのテーブルを作る。名前はAppGroupとかにしてみた。
で、ここに既に決定したルールをAsk Userから移動させるのだが、ドラッグ&ドロップで移動するためにはVerdictがacceptかrejectかaskかcontinueでないといけない。
したがって、いったん変更してから移動させ、再び元に戻すという作業を行なう。
少なくとも新規にルールを作り直すよりは楽だと思う。
最後にApplication Tableの中にAppGroupへリダイレクトさせるルールを適当な場所に作っておく。
ルールの場所はドラッグすることで上下に移動できる。
Ask Userの前に入れておかないと意味がないので注意。
こんな感じで作り込んでいけばど素人でもそれっぽいルールができるような気がしてくるのは気のせいだろうか。
ここまで読んでなんとなくわかった気になれた方は他の役に立つページの解説や日本語ヘルプを読むとさらにわかったような気分になれるに違いない。
表紙へ