ファイアウォール わかりやすく
城には人が出入りする門がいくつもあります。すべての門を大きく開けておけば誰でも勝手に入れるので、門ごとに番人を立てて出入りする人を確かめます。コンピューターにも、通信が出入りする扉がいくつもあります。その扉を見張り、決めた規則どおりに通信を確かめる番人がファイアウォールです。前回の鍵が、すでに開いた接続の中身を守るものだったとすれば、ファイアウォールはどの接続をそもそも入れるかを決めます。番人は何を見て、通すか止めるかを決めるのでしょうか。
扉を守る
ネットワークの領域で、通信はポートと呼ばれる番号つきの扉を通って出入りすることを見ました。ウェブに使う扉、メールに使う扉のように、用途ごとに扉が分かれています。すべての扉を開けておけば便利ですが、誰でもどの扉からでも入ってきて、その奥で動いているプログラムに手を出せてしまいます。
そこで扉の前に番人を立てます。出入りする通信を一つずつ見て、通すか止めるかを決めるこの番人がファイアウォールです。家や会社のルーターのようにネットワークの入口に立つこともあれば、一台一台のコンピューターの中に入っていることもあります。
入ってくる通信を押して送ってみましょう。ファイアウォールが真ん中で止めて確かめます。
送った通信はまっすぐ中に入れず、ファイアウォールの前で止まりました。そのまま通さず、まず止めて確かめること、これが番人の一つ目の仕事です。確かめずにすべて通すなら、番人を置く意味がありません。
番人が見ているのは、通信についた封筒の表書きのようなものです。どこから来たか、どこへ行くか、何番の扉に入ろうとしているかが書かれています。では、その表書きを見て、何を基準に通すか止めるかを決めるのでしょうか。
許可と遮断を規則で決める
番人は手に規則の一覧を持っています。規則は、どの通信を許可し、どの通信を遮断するかを書いたものです。たとえばウェブサーバーなら、ウェブに使う扉は開けて、使わないほかの扉は閉めておく、といった具合です。送り元や宛先のアドレスも組み合わせて、決まった場所から来る通信だけを受けるようにもできます。
通信が来ると、番人は規則を上から順に照らし合わせ、最初に合った規則に従います。そのため、同じ規則でも並べる順番で結果が変わることがあります。難しく聞こえますが、要は単純です。扉と規則を組にして、通すか止めるかを分けるのです。
扉ごとに許可か遮断を押して規則を決めてみましょう。決めたとおりに通信が通ったり止められたりします。
規則を決めると、結果ははっきり分かれました。許可にした扉は通信がそのまま通り、遮断にした扉では止められました。同じ通信でも、どの扉に来たか、その扉の規則が何かで運命が変わったのです。
ところが、ここで一つ疑問がわきます。ウェブサイトを見るにはサイトからの応答が中に入ってこなければなりませんが、入ってくる通信を止めていたらどうなるのでしょうか。いまのファイアウォールは、中から先に始めた接続を覚えておき、その接続への応答だけを選んで入れます。では、規則に何も書かれていない見なれない通信は、どう扱えばよいのでしょうか。
基本は知らないものを止める
規則にない見なれない通信が来たとしましょう。番人がとれる構えは二つです。一つは、まず入れて怪しいものだけ止める基本許可、もう一つは、まず止めて許したものだけ入れる基本遮断です。
安全なのは基本遮断です。基本許可では、止めるべきものを一つでも書き忘れるとそのまま穴になりますが、基本遮断では、許可リストに書き忘れた扉は閉まったまま残ります。まちがいが起きても、開く側ではなく閉まる側に起きるわけです。
基本の構えを押して切りかえてみましょう。基本遮断にすると、許可リストにない見なれない通信はすべて止められます。
構えを切りかえると、違いは大きく出ました。基本許可では見なれない通信もこっそり入ってきましたが、基本遮断にすると、許可リストに書かれたものだけが通り、残りはすべて止められました。思いもよらなかった通信まで自動で閉め出せるのが、基本遮断の強みです。
手間はかかります。新しいプログラムが扉を使うたびに、許可の規則を一つずつ足さなければならないからです。それでも、その手間は知らないうちに空いた穴よりずっと安くつきます。では、扉は少なく開けるほど安全なのでしょうか。
開いた扉が少ないほど安全
外から届くところを全部合わせたものを、攻撃面と呼びます。開いた扉の一つ一つがそうした地点で、扉ごとにその奥で動くプログラムがあります。プログラムにまだ知られていない欠陥があれば、その扉が入り口になりかねません。
だから開いた扉が多いほど攻撃面は広くなり、必要な扉だけ残してほかを閉めれば狭くなります。使ってもいない扉を開けておく理由はありません。使わない扉を閉めるだけで、さらされる部分は大きく減り、小さな面は守るのも簡単です。
開いた扉を一つずつ押して閉めてみましょう。開いた扉が減るほど、攻撃面の棒が短くなります。
扉を一つ閉めるたびに、攻撃面の棒が短くなりました。開いた扉が多いときはさらされる部分が広く、必要な扉だけ残すとぐっと減りました。攻撃面を減らすとは、まさにこのことです。
もちろん、必要な扉まで閉めると仕事になりませんから、使う扉は開けておかなければなりません。そして、ファイアウォールは開けておいた扉から入ってくるものまでは止められません。ウェブの扉から届いた悪意あるファイルや、中にいる人が自分で開いたリンクは、規則のうえでは許された通信だからです。使うものは開け、使わないものは閉める。そのうえで、扉だけですべては守れないことも覚えておきましょう。
まとめ
まとめるとこうなります。ファイアウォールは、出入りする通信を規則で確かめる番人です。通信はポートという扉を通って出入りし、ファイアウォールは送り元と宛先、扉の番号を見て、許可か遮断かを決めた規則に照らし合わせます。中から始めた接続の応答は覚えておいて入れます。
基本は知らないものを止める基本遮断で、許可したものだけが通ります。開いた扉が少ないほど攻撃面が狭くなり、より安全です。ただし、許可した扉から入ってくるものや、人が自分で開いたものは、ファイアウォールの受け持ちではありません。
四つの要点を順に押してふり返りましょう。扉を守る、許可と遮断の規則、基本は遮断、攻撃面を減らすの順です。
これで、ファイアウォールが何をするのかがわかりました。扉を見張り、規則で確かめ、知らないものは止め、使わない扉は閉める番人です。けれどもこの番人は表書きを見るだけで、中にいる人が自分で扉を開けてしまうことまでは止められません。
そのため攻撃者は、扉を壊す代わりに、人をだまして扉を開けさせることがあります。次の回では、技術ではなく人の心をねらうこうした攻撃、ソーシャルエンジニアリングを見ます。