(2000/10/03更新) これまで掲載していたIPフィルタに、自サイトがsmurf攻撃の踏み台になりうるというセキュリティホールが発覚しました。smurf攻撃とは、始点IPアドレスを攻撃先のホストのものに偽り、踏み台となるネットワークのネットアドレスまたはブロードキャストアドレスを宛先とすることにより、そのネットワークのすべてのホストから応答パケットを送出させ、攻撃先のホストに殺到させて、多量のトラフィックでサービスを妨害するものです。自サイトのホストが最終攻撃目標になってはIPフィルタでは防御できませんが、自サイトが踏み台となって攻撃者に加担するのを避けるために、フィルタ番号3および4を追加しました。
|
インターネット常時接続サイトでサーバを運用するには、不正アクセスからサーバを防御する対策が必要です。そのための手軽で効果の高い方法として、ルータによるIPフィルタがあります。これは、IPアドレスやポート番号の条件でパケットの通過・阻止を制御するものです。これにより、サーバに対する不正アクセスに使われやすいFTPやTELNETなどの危険な通信が外からサーバに着信する前に阻止することができます。
ここでは、OCNエコノミー対応ルータYAMAHA RTA50iを例として、IPフィルタの決め方と設定方法を説明します。
1. 前提条件
IPフィルタを決める上での前提条件を以下のように仮定します。
- サイト内で使うプライベートIPアドレスは、RTA50iのデフォルトのまま192.168.0.0/24(「/24」はネットマスクのビット数)とします。
- ISPから割り当てられたグローバルIPアドレスを222.222.222.0/29(222.222.222.0〜222.222.222.7)と仮定します。
- ルータのグローバルIPアドレスは222.222.222.1とします。
- 外からのアクセスを受け入れるサーバマシンにはグローバルIPアドレスの一部を割り当てます。
- 外にサービスを提供しないクライアントマシンにはプライベートIPアドレスを割り当て、ルータのNAT(Network Address Translator:アドレス変換)機能を使ってグローバルIPアドレスの一部に変換して外と通信します。
- サーバマシンが外からアクセスを受け入れるサービスは、DNS、電子メール、ウェブ(HTTPとHTTPS)とします。
- サーバマシンにはタイムサーバとしての機能も持たせ、そのタイムサーバだけが外のタイムサーバと通信します(クライアントマシンは外のタイムサーバと通信せず、自サイト内のタイムサーバだけと通信します)。
2. RTA50iのデフォルトのIPフィルタ
ISPから割り当てられたグローバルIPアドレスに基づいてRTA50iの初期設定を行うと、自動的に以下のようなIPフィルタが設定されます。これらは、専用線インタフェースのIN(入り)に対するものです。(RTA50iの管理用ウェブインタフェースの画面に合わせた表形式で示します。「*」は「任意」を示します。)
説明欄のの上にマウスカーソルを置くと説明が現れます(Netscape Navigator 3では現れません。ご了承ください)。
番号 |
フィルタ プロトコル |
始点IPアドレス 始点ポート |
終点IPアドレス 終点ポート |
説明 |
10 |
reject-log * |
192.168.0.0/24 * |
* * |
|
11 |
pass-nolog icmp |
* * |
192.168.0.0/24 * |
|
12 |
pass-nolog established |
* * |
192.168.0.0/24 * |
|
13 |
pass-nolog tcp,udp |
* * |
192.168.0.0/24 domain,ident |
|
14 |
pass-nolog tcp |
* ftpdata |
192.168.0.0/24 * |
|
15 |
pass-nolog udp |
* domain |
192.168.0.0/24 * |
|
20 |
reject-log * |
222.222.222.0/29 * |
* * |
|
21 |
pass-nolog icmp |
* * |
222.222.222.0/29 * |
|
22 |
pass-nolog established |
* * |
222.222.222.0/29 * |
|
23 |
pass-nolog tcp,udp |
* * |
222.222.222.0/29 domain,ident |
|
24 |
pass-nolog tcp |
* ftpdata |
222.222.222.0/29 * |
|
25 |
pass-nolog udp |
* domain |
222.222.222.0/29 * |
|
このIPフィルタは、サイト内のクライアントマシンから外のサービスを利用するだけという条件に合ったものになっています。しかし、このIPフィルタには以下の問題があります。
- 14、24:外のFTPサーバにアクセスした時、FTPサーバは、ディレクトリ情報や要求されたファイルをFTPクライアントに送り込むために、始点ポートをFTPDATA(ポート番号20)とするコネクションをかけてきます。そこで、そのパケットを許可しています。しかし、始点ポートがFTPDATAならば、FTP(ポート番号21)やTELNET(23)などの危険なポートをめがけたアクセスも通過してしまうことになります。終点ポートは、ウェルノウンポート(1023以下)を除く1024以上に限定しても支障ありませんし、その方が安全です。
- 15、25:これは、nslookupコマンドでDNS検索を行う時の応答を受け入れるのに必要です。しかし、終点ポートは1024以上に限定しても支障ありません。始点ポートをDOMAIN(ポート番号53)とした不正なUDPパケットで1023以下のウェルノウンポートがつつかれないようにした方が安全です。
- 20:始点IPアドレスをこちらのサイトのグローバルIPアドレスに偽ったパケットを阻止するものですが、その前に11〜15の許可条件に合致すれば通過してしまいます。始点IPアドレスを偽ったパケットは最初の方で阻止するのが安全です。
- こちらのサイトのグローバルIPアドレスのうち、ネットアドレス(ホスト番号がオール0)とブロードキャストアドレス(ホスト番号がオール1)へのパケットが通過してしまうため、それによってすべてのホストが応答パケットを返します。したがって、smurf攻撃(パケットの始点IPアドレスを攻撃先のホストのものに偽り、踏み台となるネットワークでパケットを増殖させて攻撃先に殺到させるもの)の踏み台として利用されるおそれがあります。
3. サーバ運用サイト用のIPフィルタ
グローバルIPアドレスを持つサーバマシンでSMTP(ポート番号25)、HTTP(80)、HTTPS(443)のアクセスを受け入れること、およびNTP(123)によるタイムサーバを運用することを考慮したIPフィルタを以下に示します。
なお、HTTPのポート名は、RTA50iでは「www」と指定します。
番号 |
フィルタ プロトコル |
始点IPアドレス 始点ポート |
終点IPアドレス 終点ポート |
説明 |
1 |
reject-log * |
192.168.0.0/24 * |
* * |
|
2 |
reject-log * |
222.222.222.0/29 * |
* * |
|
3 |
reject-log * |
* * |
222.222.222.0 * |
|
4 |
reject-log * |
* * |
222.222.222.7 * |
|
11 |
pass-nolog icmp |
* * |
192.168.0.0/24 * |
|
12 |
pass-nolog established |
* * |
192.168.0.0/24 * |
|
13 |
pass-nolog tcp,udp |
* * |
192.168.0.0/24 domain,ident |
|
14 |
pass-nolog tcp |
* ftpdata |
192.168.0.0/24 1024-65535 |
|
15 |
pass-nolog udp |
* domain |
192.168.0.0/24 1024-65535 |
|
21 |
pass-nolog icmp |
* * |
222.222.222.0/29 * |
|
22 |
pass-nolog established |
* * |
222.222.222.0/29 * |
|
23 |
pass-nolog tcp,udp |
* * |
222.222.222.0/29 domain,ident |
|
24 |
pass-nolog tcp |
* ftpdata |
222.222.222.0/29 1024-65535 |
|
25 |
pass-nolog udp |
* domain |
222.222.222.0/29 1024-65535 |
|
26 |
pass-nolog udp |
* * |
222.222.222.0/29 ntp |
|
27 |
pass-nolog udp |
* ntp |
222.222.222.0/29 1024-65535 |
|
28 |
reject-log * |
* * |
222.222.222.1 * |
|
29 |
pass-nolog tcp |
* * |
222.222.222.0/29 smtp,www,https |
|
これらのIPフィルタは、すべて専用線インタフェースのIN(入り)に対して有効にしてください。
以下に要点と補足を説明します。
- 外からルータへのアクセスの阻止
28のIPフィルタは重要ですから注意してください。これがないと、外からルータの管理用ウェブインタフェースへのHTTPアクセスが29で許可されてしまうので、ルータのパスワードを破られたらIPフィルタを壊される危険があります。
- 外出先からメールを読みたい場合
自サイトのメールサーバに届いたメールを外出先からISPのダイヤルアップ接続などで読みたい場合は、29のIPフィルタで終点ポートとして「pop3」(ポート番号110)を追加することでそれが可能になります。ただし、メールパスワードを破られたらメールを盗まれるおそれがあります。破られにくいメールパスワードを設定するよう、十分に注意してください。
- 危険なアクセスの受け入れ
FTPやTELNETのアクセスを外から受け入れるのは特に危険です。必要があってその許可を追加する場合は、始点IPアドレスを、信頼できるホストのものに限定することをお勧めします。
- なおも予測される危険性
始点ポートをFTPDATAとした不正なTCPパケットが、サーバ上で1024以上のポート番号を持って動いているプロセス(たとえば8080のHTTPプロクシーサーバ)をつついてしまうことが考えられます。しかし、そこまで考えているとIPフィルタが煩雑になってしまいます。HTTPプロクシーなどのサイト内向けサービスの不正利用を阻止するには、UNIXの場合ならばtcp_wrapperの設定によってアクセス元のIPアドレスを限定するなどの方法をとった方がよいと思います。
4 ほかに必要な対策
不正アクセスを阻止するには、IPフィルタだけで十分とはいえません。許可されたアクセスを受け入れるサービスプログラム(UNIXではsendmail、apacheなど)のバグを突いて不正なプログラムコードを実行させるなどの攻撃がありえます。サービスプログラムを最新版に保つように気を付けてください。また、ウェブのCGIプログラムのバグを突く攻撃もありえます。ウェブサーバの設定やCGIプログラムにも注意を払ってください。
[ご注意]
ここで示したIPフィルタに抜け穴がないことは保証できません(もし抜け穴を発見されましたら
お知らせください)。
また、ここで示した情報を利用された結果いかなる損害が生じても、筆者は責任を負うことはできません。自己責任でこの情報を利用してくださるようお願いします。