#Solaris でファイアーウォールを作ろう/其の3 目次†変更点の概要†其の二で作ったモジュールにさらに以下の変更を加えました。
機能を追加した分、コードも少々長く、複雑になってきてしまいました。本当は内容の解説を載せたいと思っていたのですが、ちょっと辛くなってきたので省きます。そのかわりにコード内に日本語(EUC)のコメントを多く記述するようにしましたので、そちらを参照いただければと思います。 ご注意†処理が多くなった分、見落としが多くなり、ここまでくるまでにも何十回もシステムを PANIC させました。大分無茶なテストをして PANIC はどうにかしないところまで修正したつもりですが、依然問題を含んでいると思われます。ですので、PANIC するとまずいことになるマシンでは絶対に動作させないでください。 ソースコードとダウンロード†ソースファイル: fwall-0.3.tar.gz
使い方 その他†使い方†Ultra-1 が手に入り、64bit kernel の Solaris9 上にてテストできるようになったので、これ以降は Solaris9 の 64bit kernel を前提にしてインストール方法を解説します。個人で中古 sparc マシンをもっている人でも大部分の方は Ultra Sparc マシンを持っていると思いますので・・。ですが、基本的にコードは変わらないので、tar ファイルに添付している Makefile32 という Makefile を使えば sun4m マシン上で 32bit モジュールも作成できます。 make を実行する前に、Makefile の中で、ネットワークインターフェース(hme0)の指定している個所がありますので、そこを適宜変更します。 ifconfig hme0 modinsert fwall@2 あと make、make install するだけで、モジュールがロードされ、ネットワークインターフェースと IP モジュールの間にに挿入されます。 # make # make install この段階ではフィルターする IP アドレスは設定されていません。モジュールと同時に作られる fwalladm コマンドの「-a」オプションにて拒否したい IP アドレスを指定します。 Usage: fwalladm [-a addr] | [-r number] | [-l] -a <address> :<address> で指定したアドレスを拒否するルールを追加 -r <rule nuber> :<rule nuber> で指定した既存のルールを削除 -l : 既存のルール(ルール番号と、拒否するアドレス)を表示 # /usr/local/bin/fwalladm -a 192.168.49.7 其の二までは一つのルールしか指定できませんでしたが、今回からは複数のルールを指定できます。 # /usr/local/bin/fwalladm -a 192.168.49.7 # /usr/local/bin/fwalladm -a 192.168.49.8 # /usr/local/bin/fwalladm -a 192.168.49.9 追加したルールは fwalladm コマンドの「-l」オプションで確認できます。 # /usr/local/bin/fwalladm -l Rule 0: 192.168.49.7 Rule 1: 192.168.49.8 Rule 2: 192.168.49.9 これにより、指定したアドレスから packet が到着すると、packet は破棄され、以下のメッセージが記録されます。 Mar 18 01:02:51 u1 fwall: [ID 782524 kern.notice] Packet Dropped 設定したルールを削除する場合には、fwalladm コマンドの「-r」オプションでルール番号(-l オプションで表示される)を指定します。以下の例では上記のルール番号1(Rule 1: 192.168.49.8)を削除しています。 # /usr/local/bin/fwalladm -r 1 # /usr/local/bin/fwalladm -l Rule 0: 192.168.49.7 Rule 1: 192.168.49.9 モジュールのアンインストールするには以下ようにします。 # make uninstall これでモジュールの STREAM からの取り外し、アンロード、ファイルの削除まで一辺に行われます。 32bit 環境での利用†32bit 環境では Makefile32 という Makefile をつかって、コンパイル、インストールが行えます。 # make -f Makefile32 # make -f Makefile32 install # make -f Makefile32 uninstall 今後の課題†
|