IPフィルタリングタイプのファイアウォールを設定する場合、まず最初にカー ネルに IP Forwarding 機能を組みこんで再構築し、パケットがきちんと転送 されていることを確認しておきます。Linux の IP Forwarding 機能はデフォ ルトでは有効になっているので、経路制御表を正しく設定していればネットワー クの内でも外でも自由に接続できるはずです。
しかし、ここではファイアウォールを設定しようとしていますので、この状 態から使える機能を制限していくことにします。
私のシステムではさまざまなスクリプトでファイアウォールの forwarding の設定と accounting の設定を行なっています。これらのスクリプトは /etc/rc.d/ から起動時に呼び出すようにしています。
デフォルトでは Linux の IP Forwarding は全てのパケットを forward する ようになっています。そのため、ファイアウォールを設定するためのスクリプ トでは、まず全ての forward を禁止して、以前に設定された forwarding ルー ルを全て消去する必要があります。このスクリプトがその機能を果します。
# # setup IP packet Accounting and Forwarding # # Forwarding # # By default DENY all services ipfwadm -F -p deny # Flush all commands ipfwadm -F -f ipfwadm -I -f ipfwadm -O -f
これで完璧なファイアウォールになりました。どんなパケットもこのホスト を通過できません。もちろん、必要なサービスはファイアウォールを通過さ せる必要があります。そのためには以下に示すスクリプトが参考になるでしょう。
# 外部からの e-mail が自分のメールサーバへ届くことを許可する ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25 # 外部のメールサーバへ接続を許可する ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535 [オリジナルではこうなっていますが、訳者は、この部分の設定は ipfwadm -F -b a accept -b -P tcp -S 192.1.2.10 1024:65535 -D 0.0.0.0/0 25 だと思 います。] # 外部からの Web サーバへの接続を許可する /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 196.1.2.11 80 # 外部の Web サーバへの接続を許可する /sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0 1024:65535 # DNS のやりとりを許可する /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 196.1.2.0/24
ファイアウォールを通過するデータに興味がある場合、次のスクリプトがパ ケットの記録を取るために使えます。必要に応じて記録するアドレスを増すか、 システム全体の記録を取るようにしてください。
# 現在のアカウントルールを消去 ipfwadm -A -f # 新しくアカウントを開始 /sbin/ipfwadm -A -f /sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24 /sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24
フィルタリングファイアウォールを使う場合はこれで充分です。楽しんでく ださい :-)
フィルタリング式のファイアウォールの欠点は、インターネットから内部のネッ トワークへアクセスできないことです。フィルタリング式のファイアウォール ではフィルタを通過できるように設定したサービスしかファイアウォール越し に使うことができません。プロキシサーバを使えば、外部ユーザはファイアウォー ルマシンにログインしてから、アクセス可能な内部ネットワークのマシンに自 由にアクセスできるようになります。
新しいネットワーククライエントやネットワークサービスは毎日のように開発 されています。それらのサービスを使う際には、それらのサービスをコントロー ルするための新しい方法を考える必要があります。