例として、以下のような単純なネットワーク構成における、ファイアウォールの構築を行います。
以下のルール2を、「/etc/opt/ipf/ipf.conf」という名前で保存(ただし、インターフェイス名は環境に合わせて変更する必要があります)、適用します。
ルール2を上から順番に説明していきます。
*4ここでは実験環境のため、ファイアウォールの外側に「172.16.X.X」というアドレスを使用していますが、実際の環境では、プロバイダから割り当てられた公開用のアドレスとなります
これでルールの設定は完了ですが、これだけではファイアウォールとして動作しません。Solarisのデフォルトでは、2つのNIC間(図2のiprb0とiprb1の間)でIPパケットが転送されないため、ファイアウォールとして動作しないのです。異なるインターフェイス間でパケットを転送することをIPフォワーディングといい、ファイアウォールではこの機能が有効になっている必要があります。Solarisでは「ndd」コマンドを使って有効にすることができます。以下のリスト7の内容を「/etc/init.d/firewall」というファイル名で保存して、リスト8のコマンドを実行します。これで、マシン起動時にIPフォワーディングが有効になります。
|
|
リスト7 上記の内容を「/etc/init.d/firewall」として保存する(こちらをクリックするとテキスト形式のファイルがダウンロードできます) |
|
|
リスト8 上記のコマンドを実行すると、起動時にIPフォワーディングが有効になる |
ここまで完了したら、マシンを再起動します。ただし、この段階ではNATの設定が行われていないため、正しく通信できないはずです。
例えば、内側のホスト(192.168.0.10)からルータにpingを打ったときに、ルータに到着するパケットと、ルータから送信される戻りのパケットは以下のようになります。
ホスト → ルータ(行き) | ルータ → ホスト(戻り) | |
---|---|---|
発信元アドレス | 192.168.0.10 | 172.16.0.1 |
送信先アドレス | 172.16.0.1 | 192.168.0.10 |
表2 ネットワークの内側からpingを実行した場合にやり取りされるパケットのアドレス |
この場合、ルータには発信元が192.168.0.10であるパケットが到着しますが、このアドレスはプライベートネットワークのために使うものなので、このようなパケットを公開されているネットワークに流してはいけません。当然、ルータは戻りパケットの正しい経路を知らないので、戻りのパケットは行方不明となって、通信は確立しません。
この問題を、NATを使用することによって解決します。以下のリスト9の内容を、「/etc/opt/ipf/ipnat.conf」に保存して、ルールを適用します。(2)〜(3)は、内部ネットワークのIPアドレスを、ファイアウォールの外側のIPアドレス(172.16.240.241)で置き換えるという意味で、TCPとUDPについては、さらにポート番号を1025〜65000に置き換えます(portmap オプション)。
またftpについては、制御用とデータ用コネクションが分かれていて、データコネクションはサーバ側からクライアント側に向けて張られます。そのため、単純なパケットフィルタリングでは対応できないため、専用のプロキシが用意されており、(1)で有効になります。
(1)が有効になっていることを確認するには、ftpでサーバにログインしてから、dirコマンドなどを実行します。有効になっている場合は応答が返ってくるはずです。
以上で、簡単なファイアウォールの完成です。このファイアウォールは、内側のホストから外側への通信に対して一切の制限を行っていないので*5、使用には十分気を付けてください。通常は、余計なパケットが流れるのを防ぐために、サービスを絞って許可した方がよいでしょう。
*5ただし、プロキシで対応しなければ動かないサービス(ftp/RealAudio/ICQなど)で利用できるのはftpのみです。IP FilterはftpとRealAudio(raudio)にしか対応していません
次回は、構築したファイアウォールがセキュリティ的に正しく動作しているか? また、思ったとおりに動作しないときの動作確認など、フリーソフトウェアを使ったファイアウォール構築後の検査手法について解説していきます。
Copyright © ITmedia, Inc. All Rights Reserved.