パケットフィルタリングとは、ルータやファイヤーウォールなどを経由して行われる通信(データ・パケット)に対して、IPアドレスやポート番号などの情報によって、送られてきたパケットを中継(許可)するべきか、それとも遮断(拒否)するべきかの判断を行う機能です。パケットフィルタリングを活用する目的はあくまで、セキュリティを確保するという点にあります。具体的な例を挙げると、掲示板荒らしなどに出くわした際に、ある特定のIPアドレスの相手とは一切通信を行わないようにしたり、または、条件のかなった特定の相手、またはアプリケーションとのみ通信をおこなうといった制限をかけることができるのです。インターネット側(WAN側)から送られてきたデータ・パケットをLAN側でどのように判断するかをネットワークの管理者が任意に設定することができるようになります。また、これとは反対にLAN側からWAN側への不正なデータの流出を防ぐこともでき、トラフィックの増大や予期せぬ異常な課金を未然に防ぐといった目的もあります(参考:「
パケットフィルタリングの限界」)。
◎パケットフィルタリング
■サーバー機の鉄則
パケットフィルタリングの方法は用途によって様々で、主に2通りの方法に分類されます。第1に、「
全ての通信を遮断し、必要な通信だけを透過させる」方法で、第2に、「全ての通信を透過させ、特定の通信だけを遮断する」というものです。どちらも同じように思えるかもしれませんが、パケットフィルタリングの基本は前者の「全ての通信を遮断し、必要な通信だけを透過させる」です。
特にサーバーを公開する場合は、
サーバー機はサーバー・サービスのみに徹する必要があり、クライアントマシンとして利用しないことが鉄則であるとされています。というのも、クライアント・アプリケーションを利用するにはいくつもの「穴」をあける必要があり、危険を伴うからです。これについては、ポート番号について言及する必要がありますが(参考:「
ポート番号とは?」)、例えば、クライアントマシンから外部のWebサーバーにアクセスする場合、httpのポートが80番だからといって、サーバとクラインアントが80番同士で通信をするわけではありません。Webブラウザは基本的に「1024-4999」のポートをランダム(動的)に使用して、サーバーのポート80番と通信を行います。これによって1台のコンピュータで複数のアプリケーションを利用できるようにしてるのです。このようにサーバー機をクライアントマシンとして利用できるようにすると1025番以上のポートを開ける必要があり、そのポートから「バックドア」を仕掛けられてしまう可能性があります(参考:「
トロイの木馬の種類と仕組み」)。バックドアを仕掛けられると、不正アクセスの対象となり、ネットワーク攻撃という攻撃はほぼすべて受けてしまうことになります。
なお、サーバー機をサーバー・サービスのみに徹すると不便であるという場合は、ルータのフィルタリング機能を利用して、応答パケットに含まれるACKフラグを利用してある程度制限を緩和することもできます(コードビットを制御できないルータもあります)。つまり、ACKフラグを含まない(SYNフラグを含んでいる)パケットを遮断し、ACKフラグが立っているパケットのみを通過させるように設定すれば、LAN側からの要求に対する応答パケットだけに限定することもできるようになります。(参考:「
TCPとUDP/両プロトコルの相違」)。
■遮断するべきポート番号
実際にポートを閉じるアプローチにはふたつの種類があり、「危険なポートを遮断する」場合と「使用するポートのみ透過する」場合です。「使用するポートのみ透過する」場合はサービスとして起動させたい各種通信サービスのポートを開ける設定を行います。サーバーを公開する方はWWWは80番、SMTPサーバーは25番といった具合です。以下に遮断するべきポート番号と代表的なサービスポート番号を記しておきます。なお、NBT(137-139)を遮断する理由については「
NetBIOS
over TCP/IPを無効にする」も参考にしてください。因みに、ルータを持っていない方は、パーソナルファイアーウォールソフトを導入して不要なポートを強制的に閉鎖するという手もあります。このようにすれば、パソコン上でサービスが機能していても、ファイアーウォールがそこへのデータ通過を許可しないので、結果として停止してあるのと同じことになります。
23 |
Telnet |
TCP/UDP |
ネットワークにつながれたコンピュータを遠隔操作するための標準方式。後述の「ルータに対するTelnet拒否」を参考にしてください。 |
135 |
DCE endpoint resolution
|
TCP/UDP |
RPC(Remote Procedure Call)に利用されるポートで、ネットワーク上の異なるマシンで処理を実行する手続き。 |
137 |
NETBIOS Name Service |
TCP/UDP |
NetBIOS名(マシン名)からIPアドレスを導き出す「名前解決」に使用される。「NetBIOS名前サービス」とも呼ばれます。 |
138 |
NETBIOS Datagram Service
|
UDP |
ネットワーク・コンピュータの一覧を得る「ブラウジング」に使用される。「NetBIOSデータグラム・サービス」とも呼ばれます。 |
139 |
NETBIOS Session Service
|
TCP |
ファイル/プリンタ共有に使用されます。「NetBIOSセッション・サービス」とも呼ばれます。 |
445 |
Microsoft-DS
|
TCP/UDP |
Windows 2000/XPであらたに加わったダイレクト・ホスティングSMBサービスのことで、ネットワークを通じてファイル共有やプリンタ共有を実現するプロトコルのこと。 |
|
◎フィルタリングルール設定
No. |
方向 |
送信元IPアドレス |
宛先IPアドレス |
プロトコル |
送信元ポート番号 |
宛先ポート番号 |
ACT |
1 |
WAN→LAN |
0.0.0.0/0 |
0.0.0.0/0 |
TCP/UDP |
23 |
* |
破棄 |
2 |
LAN→WAN |
0.0.0.0/0 |
0.0.0.0/0 |
TCP/UDP |
* |
23 |
破棄 |
3 |
WAN→LAN |
0.0.0.0/0 |
0.0.0.0/0 |
TCP/UDP |
135 |
* |
破棄 |
4 |
LAN→WAN |
0.0.0.0/0 |
0.0.0.0/0 |
TCP/UDP |
* |
135 |
破棄 |
5 |
WAN→LAN |
0.0.0.0/0 |
0.0.0.0/0 |
TCP/UDP |
137-139 |
* |
破棄 |
6 |
LAN→WAN |
0.0.0.0/0
|
0.0.0.0/0 |
TCP/UDP |
* |
137-139 |
破棄 |
7 |
WAN→LAN |
0.0.0.0/0 |
0.0.0.0/0 |
TCP/UDP |
445 |
* |
破棄 |
8 |
LAN→WAN |
0.0.0.0/0 |
0.0.0.0/0 |
TCP/UDP |
* |
445 |
破棄 |
|
■代表的なサービスポート例
53 |
domain |
UDP |
DNS |
25 |
smtp |
TCP |
メール送信 |
110 |
pop |
メール受信 |
20 |
ftp-data |
TCP |
データ転送 |
21 |
ftp(controll) |
データ・コントロール |
119 |
nntp |
TCP |
ニュースグループ |
80 |
http |
TCP |
通常 |
443 |
https |
暗号化 |
123 |
ntp |
UDP |
時刻同期。 |
1080 |
socks |
|
ソケット通信 |
7000 |
VDO Live |
UDP |
VDO Live |
7000 |
IRC |
TCP |
IRC |
|
攻撃を仕掛ける場合や踏み台として利用する場合に代表的な手法として使われているのがIPアドレスの偽装(
IPスプーフィング)です。その中でも特にプライベートアドレスやループバックアドレス(127.0.0.1)を偽装する場合が多く見受けらます。プライベートアドレスはLANなどの閉じたネットワークで利用するアドレスであり、一般にこのアドレスが書かれているパケットがインターネット上を流れることはありません。また、ルータが受け取るIPアドレスでループバックアドレスが発信元であるパケットもあり得ないため、これも拒否するようにしてください。以下のフィルタリングルールはコマンドラインでフィルタ設定する場合の例です(参考:「
グローバルアドレスとプライベートアドレス」)。
※上記のフィルタリングルールは、WAN側からLAN側に対してだけではなく、LAN側からWAN側に対しても設定するようにしてください。
◎フィルタリングルール設定
No. |
方向 |
送信元IPアドレス |
宛先IPアドレス |
プロトコル |
送信元ポート番号 |
宛先ポート番号 |
ACT |
9 |
WAN→LAN |
10.0.0.0/8 |
|
* |
* |
* |
破棄 |
10 |
WAN→LAN |
172.16.0.0/12
|
|
* |
* |
* |
破棄 |
11 |
WAN→LAN |
192.168.0.0/16 |
|
* |
* |
* |
破棄 |
12 |
WAN→LAN |
127.0.0.1 |
|
* |
* |
* |
破棄 |
13 |
LAN→WAN |
|
10.0.0.0/8 |
* |
* |
* |
破棄 |
14 |
LAN→WAN |
|
172.16.0.0/12 |
* |
* |
* |
破棄 |
15 |
LAN→WAN |
|
192.168.0.0/16 |
* |
* |
* |
破棄 |
16 |
LAN→WAN |
|
127.0.0.1 |
* |
* |
* |
破棄 |
|
ICMPを利用した「Pingコマンド」に応答しないことによってコンピュータの存在そのものをインターネット上から仮想的に隠蔽することができます。つまり、外部から見た場合、コンピュータの電源が入っていない状態、もしくはインターネットに接続していないのと同じ状態となるため、セキュリティが高まります。ただし、ルータによっては、ICMPそのものを拒否してしまうこともあり、
LANからの「ping」も通さない可能性もあります。設定を行うにはWAN側からLAN側への「ping」を禁止し、LAN側からWAN側への「ping」を許可しておく必要があります(参考:「
ICMPとは?」)。その際は、ICMPメッセージのうち、ICMP
EchoとEcho Replyをフィルタリングします。もしよくわからないという方はWAN側からLAN側へのping応答そのものを遮断するように設定してください。以下のフィルタリングルールはコマンドラインでフィルタ設定する場合の例です。
◎フィルタリングルール設定
No. |
方向 |
送信元IPアドレス |
宛先IPアドレス |
プロトコル |
送信元ポート番号 |
宛先ポート番号 |
ACT |
17 |
WAN→LAN |
0.0.0.0/0 |
0.0.0.0/0 |
ICMP |
* |
* |
破棄 |
|
ルータに対してTelnetを許可していると、仮にルータが乗っ取られてしまった場合に重大な問題が発生します。ルータは、サイトに対するあらゆるパケットが通過するので、ルータを乗っ取られてしまうと、そのサイトのあらゆるデータを参照することができ、いかなる攻撃を仕掛けることも可能となってしまいます。ルータを踏み台として他サイトへの侵入も試みることができるようになるため、必要がない限りはルータに対するTelnetは拒否するように設定しなくてはなりません。この時に、複数台のコンピュータを同時に使用している場合は、LAN側からのみ許可するように設定してください。また、Windowsに付属するNetMeetingやシマンテックのpcAnywhereなど、遠隔地にあるコンピュータをリモートコントロールできるアプリケーションを使用する際には注意する必要があり、こうしたソフトのポートが乗っ取られてしまうと、リモートコントロールの機能がそのままスパイウェアとして使われてしまう恐れもできてきます。以下のフィルタリングルールはコマンドラインでフィルタ設定する場合の例です。
※なお、赤色の部分はルータのIPアドレスを指定してください。
残念ながら、パケットフィルタリングは万能ではありません。パケットフィルタリングで防ぐことのできる攻撃はいくつもある不正アクセス攻撃の一部でしかありません。なぜなら、パケットフィルタリングは通過を許可しているパケットの中身についてはなんら関与しないからです。つまり、普通にHTTP80番を通ってきたパケットが正常なパケットであるか、不正なパケットであるかを判断することはできないのです。通過を許可しているパケットを利用した攻撃(アタッカーは通常、許可されているサービスポートを狙って攻撃します)についてはなんら効果を発揮しません。パケットフィルタリングを施したからといって油断せず、限界を知った上での新たな不正アクセス防止策を実施する必要があります。
◎パケットフィルタリングで防げない不正アクセスの手口
手口 |
WebやDNSなどの公開サービスのセキュリティホール |
CGIプログラムミスによるセキュリティホール |
ブラウザのセキュリティホールを突いた受動的な攻撃 |
サービス停止攻撃(DDoS、DoS攻撃) |
メールの不正中継 |
メール爆弾 |
掲示板荒らし |
コンピュータウィルス |
Web経由、メール経由によるトロイの木馬型ウィルス |
RASサーバーやVPNなど内部LANの裏口 |
ルータやOSに付属するフィルタリング自体のバグ |
|