firewall



日本語で検索する際には、ファイヤウォールと、ファイアウォールの
両方で確認した方がより多くの情報が得られます。

    [ はじめに ]

firewallはアプリケーションか?という質問をよく受けます。
またそれ以前に何を行なうのか?という質問もよく受けます。

これは、Windows製品群にインストールするタイプのアプリケーションが多いからだと思うのですが、
カーネルレベルでもfirewall と同等の機能を持つことが可能です。

    [ インターネットへの接続の場合 ]

電話のように回線を占有する通信とは異なり、
インターネット等のネットワークでは、パケット(小包)に分割して通信を行ないます。

こうすることで、様々な通信を、キャッチフォンのようにユーザが切り替える操作をしなくても
通信することが出来ます。

一般的にインターネット通信は、[ モデム -> ルータ -> PC ] のように通信が行なわれます。

最近ではルータはモデムに内蔵されているモデルも多いのですが、
PCを複数台使う場合の経路選択(ルーティング)を行なうことがルータの仕事です。

モデムは電話回線から、ISDNやADSL、光通信などそれぞれに適した信号に変調する(Modulator)作業と、
復調する(Demodulator)作業を行なうことから、モデム(MoDem -> Modem)と呼ばれています。

PCではLANアダプタで通信を受け取り、インターネットエクスプローラなどに代表されるブラウザに通信を渡します。
結果として、インターネットでサイトを見ることが出来るのです。

    [ 基本的なこと ]

PC内で、ネットワークデバイス(LANアダプタ)からアプリケーション(ブラウザ)にパケットを渡していく間に
フィルタリングを行なうのがよく知られた firewall アプリケーションの基本動作です。

パケットが送られる順序は、OSI参照モデルでモデル化されていますが、実装方法はシステムによって異なります。

    [ ISP ( インターネットサービスプロバイダ -> プロバイダ ) の認証方法 ]

CATV等、静的IPアドレスを基本採用しているケースもありますが、
一般にはIPアドレスが最初の時点では決まっていない動的IPアドレスを使います。

動的IPアドレスは、使っていない人にもIPアドレスを占有されるようなことがないため、
効率的にIPアドレスを運用出来ます。
その動的IPアドレスを渡して良い相手かどうかは、認証を行なうことで判断します。

    一般にPPPoEを使った認証を行なう方式を採用しているケースがほとんどです。
    モデムやルータ、あるいはPCに直接、ユーザ名やパスワード等の
    認証設定を行なうことでインターネットに繋がります。

    Yahoo!BBの場合はモデムが直接IPアドレスを取得しますので、
    配線をつなげれば特に認証設定を行なうことなくインターネットに繋がります。

DHCPを利用している場合にIPアドレスの取得に必要なことは、
ブロードキャストのUDPパケットとMACアドレスを送出することです。

これは、MACアドレスがISP提供のものであれば、認証も行なえる(Yahoo!BBの場合)ことを意味します。
認証を行い、IPアドレスを提供する規格はRFC2516で定義されています。

Yahoo!BB専用モデムはMACアドレス認証を採用しているため、PPPoEを使わない認証が可能です。
逆を言えばMACアドレスによって本人のモデムかどうかが分かるということです。

    [ ポート ]

IPアドレスとMACアドレスがネットワーク上で機器を特定し、
PPPoEや、MACアドレス自体で認証を行なうことで機器同士が通信可能な状態になることが分かりました。

メールや、IP電話等、たくさんの種類がある通信プロトコルのうち、
インターネットで使うHTTPプロトコルを使った通信を行なう場合、
ポート80に向けて通信を行ないます。

これは、「こんにちは、お元気ですか?」と挨拶して、
「日本語」で返事が返ってくる相手と通信する必要があることを意味します。

この一連の手順で、日本語での挨拶とその返答方法がプロトコルに該当します。
80番ポートは日本語が話せる相手と予め分かっている、「wellknown(既知)」のポートです。

これは、「80番ポートに問い合わせが来たら8080番ポートに転送してください」といった場合でも同様です。
相手は80番ポートに向かって通信していますし、自分からも8080番ポートから、相手の80番ポートに通信しています。
ポート8080は「WWW caching service」として登録済みのポートです。
要は80番ポートに問い合わせれば、HTTP通信が出来るという信頼関係があるということなのです。

wellknownポートは、0~1023まで、1024–49151は登録済みポート、
49152–65535は自由に使えるポートとして分類されています。
0は特殊なポートで予約済みです。

相手あっての通信なので、本当に勝手なポートを使用することは出来ません。

    [ 結局のところ、 firewall とは? ]

ポート番号という、相手あっての通信だと言うことは分かりました。

こういった挨拶に対して、その言語を理解できますということを「返答する」ことが「許可」という意味となり、
挨拶に答えないで相手の言うことを「右から左に聞き流す」と「破棄」という意味となり、
相手の言語が理解出来ないことを返答し、「断る」ことが「拒否」という意味になります。

そしてこの「許可」、「破棄」、「拒否」の動作を選択することが出来るアプリケーションがfirewallです。

さて、ポートで通信する前にも、「MACアドレス」や、「PPPoE認証」、「IPアドレス」での通信を
許可していることが前提に話が進んできましたが、こういった他の通信にも同様の考え方が適用できます。

通信におけるパケット(小包)に対してフィルタリング(取捨選択)することが、パケットフィルタリングということなのです。


    [ ユーザは何をするべきか? ]

・自分の firewall が、「どの通信に対してのフィルタリング」を行なっているのかを把握する必要があります。
・自分の行ないたい通信がどのような「ポートに対して通信」を行っているのかを把握する必要があります。
・自分の行いたい通信が「IPアドレスによって制限」されていないかを把握する必要があります。
・「認証方法の有無とその仕組み」がどうなっているのかを(MACアドレスも含めて)把握する必要があります。

こういった状況の把握はそのままトラブルシュートにも繋がります。
    IPv4アドレス 0.0.0.0~255.255.255.255
    IPv6アドレス 0000:000:0000:0000:000:0000:0000:000~ffff:fff:ffff:ffff:fff:ffff:ffff:fff
    ポート番号 0 ~ 65535
    MACアドレス 00:00:00:00:00:00

TOP