IP Firewall必要があって、IP フィルタを使うことがあったので、設定方法など。 FreeBSD では /sbin/ipfw というコマンドを使用して、パケットのフィル タリングを行います。このコマンドの使い方は FreeBSD のバージョンによっ て結構違ったりするらしいので、ご注意を。ちなみに僕の環境は FreeBSD 2.2.7-RELEASE です。 ipfw を使うためには kernel を作り直さなければいけません。kernel の
再構築については、以前書いた「kernel の再構築
」を参照してください。 options IPFIREWALL options IPFIREWALL_VERBOSE この記述を /usr/src/sys/pc98/conf/ 配下のコンフィギュレーションファイ ルに追加してやります。サンプルは /usr/src/sys/i386/conf/LINT にありま す。kernel のコンフィギュレーションファイルが用意できたら、kernel の再 構築をします。 で、リブートする前に、/etc/rc.conf の設定を変更してやる方が良いでしょ う。/etc/rc.conf で firewall_enable="YES" firewall_type="open" firewall_quiet="NO" を設定します。firewall_enable はデフォルトで NO になっています。こ れを YES に変更することで、IP フィルタが有効になります。フィルタの設定 は /etc/rc.firewall を読み込みます。ここに firewall_type が定義してあ り、デフォルトでは open、client、simple、UNKNOWN、filename が設定され ていますので、/etc/rc.conf の firewall_type には open を指定してやりま す。open の場合は、フィルタは全てのパケットを通す設定になっていますの で、実質フィルタがないのと同じことになります。その後 ipfw コマンドを使っ てフィルタを追加してやれば良いわけです。 準備ができたら、リブートします。これで ipfw コマンドが使える状態に なっていますので、ipfw -a list を実行してみます。現在のフィルタ状況が 表示されます。 # ipfw -a list 00100 44 3408 allow ip from any to any via lo0 00200 0 0 deny ip from any to 127.0.0.0/8 65000 133 24059 allow ip from any to any 65535 0 0 deny ip from any to any なにも設定していないとこんな感じ。第一フィールドがそのフィルタに与
えられた番号です。番号が小さい方から有効になります。一番最後の 65535
で全てのパケットを拒否する設定がされていますが、その前の 65000 で全て
のパケットを受け入れる設定がされていますので、問題なく通信ができるわけ
です。 # ipfw add 00005 deny tcp from foo.bar.com to myhost.bar.com 80 とすれば、この設定が 00005 番として登録されます。内容は見ればわかる と思いますが、foo.bar.com から myhost.bar.com への 80 番ポートへの TCP でのアクセスを拒否する、という意味です。80 番ポートは、ご存知の通り、 httpd ですね。 この設定を無効にしたければ、 # ipfw delete 00005 という風に、番号を指定して delete すれば良いです。 いちいちコマンドを叩くのが面倒という場合は /etc/rc.firewall に記述 してやれば良いでしょう。/etc/rc.firewall で firewall_type が open の場 合、 ipfw add 65000 pass all from any to any が実行されるようになっています。これは /etc/rc.firewall を読めばす
ぐわかると思います( sh スクリプトです)。これと同じ場所に、他のフィルタ
の設定を追加して記述してやれば、起動時に実行されますので、そのフィルタ
が常に有効になります。 僕の場合、ファイアウォールの内側にいるので、あまり使わないのですが、 外部から直接 IP リーチャブルな環境の方には ipfw は必須ですね。 [FreeBSD] | [TetsuoSTREAMS] |