PPP 接続をしている間はファイアウォールを設定し,それ以外はファ イアウォールを設置しない,そういう状況を考えて設定してみましょう。
# pppd は ip-up,ip-down というスクリプトを実行します。前者は接
# 続が確立された時,後者は切断された時に実行されます。ip-up には
# 引数が渡ります。$1 は接続に用いるインターフェイス,$2 は tty
# デバイス,$3 はシリアルスピード,$4 はローカルの IP アドレス,
# $5 はリモート側のIP アドレスです。
ip-up は以下のようになりました。
8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<----- #!/bin/sh umask 022 # 変数の設定 iface=$1 device=$2 speed=$3 localip=$4 remoteip=$5 # ppp-in というチェインを作成します /sbin/ipchains -N ppp-in # input チェインに # 「インターフェイスが ppp0 の場合,ターゲットは ppp-in チェイン」 # というルールを追加します /sbin/ipchains -A input -i ppp0 -j ppp-in # 「自サイトの SMTP ポートへの接続を弾く」 # というルールを ppp-in チェインに追加します。 /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $localip smtp -j REJECT # 「自サイトの NetBIOS ポートへの接続を弾く」 # というルールを ppp-in チェインに追加します。 /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $localip 137:139 -j DENY /sbin/ipchains -A ppp-in -p udp -s 0/0 -d $localip 137:139 -j DENY # 「自サイトの X server ポートへの接続を弾く」 # というルールを ppp-in チェインに追加します。 /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $localip 6000 -j DENY # 「自サイトの X font server ポートへの接続を弾く」 # というルールを ppp-in チェインに追加します。 /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $localip 7000 -j DENY 8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<----- |
ip-down は以下のような感じです
8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<----- #!/bin/sh # input チェインから ppp-in ルールを削除します /sbin/ipchains -D input -i ppp0 -j ppp-in # ppp-in チェインを空にします /sbin/ipchains -F ppp-in # ppp-in チェインを削除します /sbin/ipchains -X ppp-in 8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<----- |
これまでの ipfwadm では ppp0 だけの特別な設定を任意に追加,削 除するといったことが非常に困難でしたが,チェインを使うことにより 非常にスマートに設定することができます。