次のページ 前のページ 目次へ

7. IP フィルタリングの設定(IPFWADM)

カーネル 2.1.102 以上を使っているならこの章を飛ばして、次の IPCHAINS の 章に進んでください。

以前のカーネルでは IP Forwarding はデフォルトでカーネルに組み込まれ 有効になっています。 従って、ネットワークを設定する場合は、まず全てを拒否し、 以前に置かれていた ipfw のルールを破棄するべきです。 以下のようなスクリプト (の一部分) を、ネットワークの起動スクリプト (/etc/rc.d/init.d/network) に書いておかなければいけません。

  #
  # IP packet Accounting と Forwarding の設定
  #
  #   Forwarding
  #
  # デフォルトで全てのサービスを不許可にする。
  ipfwadm -F -p deny
  # 全てのコマンドを破棄する。
  ipfwadm -F -f
  ipfwadm -I -f
  ipfwadm -O -f

さて、我々は究極のファイアウォールを構築しました。 もう何も通しません。

ここで /etc/rc.d/rc.firewall というファイルを作成します。 このスクリプトは email, web, DNS トラフィックを許可します。 ;-)

#! /bin/sh
#
# rc.firewall
#
# 関数ライブラリを読み込む
. /etc/rc.d/init.d/functions

# 設定を取得
. /etc/sysconfig/network

# ネットワークが起動しているかチェックする
if [ ${NETWORKING} = "no" ]
then
        exit 0
fi
case "$1" in
  start)
  echo -n "Starting Firewall Services: "
  # サーバに入る email を許可する。
  /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25
  # 外部の email サーバへの接続を許可する
  /sbin/ipfwadm -F -a accept -b -P tcp -S 192.1.2.10 25 -D 0.0.0.0/0 1024:65535
  # あなたの Web サーバに Web 接続を許可する。
  /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.11 80
  # 外部の Web サーバへの Web 接続を許可する。
  /sbin/ipfwadm -F -a accept -b -P tcp -S 192.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 192.1.2.0/24
  ;;
  stop)
  echo -n "Stooping Firewall Services: "
  ipfwadm -F -p deny
  ;;
  status)
  echo -n "Now do you show firewall stats?"
  ;;
  restart|reload)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: firewall {start|stop|status|restart|reload}"
        exit 1
esac

注意 - この例では、192.1.2.10 に email (smtp) サーバがあって、ポート 25 で 送受信ができなければならないとしています。 web サーバは 192.1.2.11 で運用しています。 LAN にいる全ての利用者が、外部の web サーバと DNS サーバに 到達できるようにしています。

これは完全に完璧とは言えません。 なぜなら port 80 は、web ポートとして使わなければならないわけではなく、 賢いハッカーならこのポートを使って、ファイアウォールを越える 仮想プライベートネットワーク (VPN) を作るでしょう。 これを避けるには、 web プロキシを設定し、プロキシだけが ファイアウォールを通過できるようにすることです。 LAN 側のユーザが外のweb サーバに到達する為にはプロキシを 経由しなければならないようにします。

ファイアウォールを通るトラフィックの勘定にも興味があるでしょう。 次のスクリプトは全てのパケットを数えます。 あなたはシングルシステムに向かうパケットを数える為に 一、二行加えることができます。

          
  # 現在のアカウントルールを破棄する。
  ipfwadm -A -f
  # Accounting
  /sbin/ipfwadm -A -f
  /sbin/ipfwadm -A out -i -S 192.1.2.0/24 -D 0.0.0.0/0
  /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 192.1.2.0/24
  /sbin/ipfwadm -A in -i -S 192.1.2.0/24 -D 0.0.0.0/0
  /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 192.1.2.0/24

必要なのがフィルタリングファイアウォールだけなら、あなたはここで設定を 終えることができます。 テストしてから運用してください。


次のページ 前のページ 目次へ