TIS FWTK は次のところで入手できます。 http://www.tis.com/research/software/
私がやったような間違いをしてはいけません。 TIS からファイルを ftp する時、 README をしっかり読んでください。 TIS fwtk はサーバの隠しディレクトリに置かれています。
TIS は、次の場所で http://www.tis.com/research/software/fwtk_readme.html 同意書を読み、それから隠しディレクトリの名称を知らせてもらう為に 本文に同意する(accepted)とだけ書いて次のアドレス宛に メールを送るよう要請しています。 fwtk-request@tislabs.com subject は不要です。 TIS のシステムはソースをダウンロードできる (12 時間有効の) ディレクトリの 名を書いたメールを返送してきます。
この文書を書いている時点での FWTK の最新版は 2.1 です。
FWTK の Version 2.1 は、旧版のどれよりも簡単にコンパイルできます。
説明はこれだけ!!!
さあ、 make を実行しましょう。
make install を実行しましょう。
デフォルトでインストールされるディレクトリは、/usr/local/etc です。 (私は変更はしていませんが) インストールディレクトリはもっと安全な ディレクトリに変更できます。 私はデフォルトのディレクトリを 'chmod 700' に変更しています。
最後にファイアウォールを設定する仕事が残っています。
さて、ここから佳境に入ります。 これらの新しいサービスの呼び出しをシステムに教えてやり、それらを 制御するテーブルを作らなくてはいけません。
ここで TIS FWTK のマニュアルをもう一度書くつもりはありません。 私が動作を確認した設定、はまりこんだ問題を説明し、それらを回避する 方法についてお伝えします。
制御を構成する三つのファイルがあります。
FWTK の機能を使う為に、これらのファイルを手順に従って 編集しなければいけません。 inetd.conf や netperm-table ファイルを正しく設定しないで サービスファイルを編集すると、お使いのシステムに アクセスできなくなります。
このファイルは TIS FWTK のサービスにアクセスできる者をコントロールします。 ファイアウォールの両側からのトラフィックについて考えなければいけません。 ネットの外部の人たちはアクセスする前に認証すべきですが、ネットワークの 内部の人たちは単に通過を許可するように設定する場合もあります。
そこでユーザが自分自身を認証できるように、ファイアウォールは ユーザの ID とパスワードのデータベースを保管する authsrv と 呼ばれるプログラムを使います。 netperm-table の認証部分は、データベースが保存される場所と、それに アクセスできる人をコントロールします。
私は、このサービスへのアクセスを止めてしまうトラブルに遭遇しました。
全ての人がアクセスできるように、 '*' を使っている premit-host 行に
注意してください。
動かすことができるようになったならば、この行の正しい設定は
'' authsrv: premit-hosts localhost
です。
# # Proxy configuration table # # Authentication server and client rules authsrv: database /usr/local/etc/fw-authdb authsrv: permit-hosts * authsrv: badsleep 1200 authsrv: nobogus true # Client Applications using the Authentication server *: authserver 127.0.0.1 114
データベースを初期化するため、su で root になります。 そして /var/local/etc で管理用ユーザ記録を作成する為に ./authsrv を動かします。 例を示しておきます。
FWTK の文書を読み users と groups を加える方法について調べてください。
# # authsrv authsrv# list authsrv# adduser admin "Auth DB admin" ok - user added initially disabled authsrv# ena admin enabled authsrv# proto admin pass changed authsrv# pass admin "plugh" Password changed. authsrv# superwiz admin set wizard authsrv# list Report for users in database user group longname ok? proto last ------ ------ ------------------ ----- ------ ----- admin Auth DB admin ena passw never authsrv# display admin Report for user admin (Auth DB admin) Authentication protocol: password Flags: WIZARD authsrv# ^D EOT #
telnet gateway (tn-gw) コントロールは正確に、しかも最初に設定を 行わなければなりません。
私の例では、プライベートネットワーク内部のホストには自身の認証なしで 通過を許可しています(permit-hosts 19961.2.* -passok) 。 しかし、その他のユーザはプロキシを使う為に、自分の ID とパスワードを 入力しなければなりません (permit-hosts * -auth)。
ここではまた、一台の別のシステム(192.1.2.202)からはファイアウォールを 通さないで、直接ファイアウォールマシンへのアクセスを許可しています。 二つのinetacl-in.telnetd 行がこれを行います。 どのようにしてこれらの行が呼び出されるかは後で説明します。
telnet のタイムアウトは短くしたほうがよいでしょう。
# telnet ゲートウェイルール - tn-gw: denial-msg /usr/local/etc/tn-deny.txt tn-gw: welcome-msg /usr/local/etc/tn-welcome.txt tn-gw: help-msg /usr/local/etc/tn-help.txt tn-gw: timeout 90 tn-gw: permit-hosts 192.1.2.* -passok -xok tn-gw: permit-hosts * -auth # 管理者だけがポート 24 経由でファイアウォールに直接 telnet できます。 netacl-in.telnetd: permit-hosts 192.1.2.202 -exec /usr/sbin/in.telnetd
(rlogin や rcp や rshなどの)リモート関連コマンドは telnet と 同じような方法で動きます。
# rlogin ゲートウェイルール - rlogin-gw: denial-msg /usr/local/etc/rlogin-deny.txt rlogin-gw: welcome-msg /usr/local/etc/rlogin-welcome.txt rlogin-gw: help-msg /usr/local/etc/rlogin-help.txt rlogin-gw: timeout 90 rlogin-gw: permit-hosts 192.1.2.* -passok -xok rlogin-gw: permit-hosts * -auth -xok # 管理者だけがポートを通じてファイアウォールに直接 telnetできます。 netacl-rlogind: permit-hosts 192.1.2.202 -exec /usr/libexec/rlogind -a
FTP も含め、ファイアウォールを直接アクセスできるようにすべきではありません。 そのためファイアウォールに FTP サーバを置いてはいけません。
次の permit-hosts 行は、保護されたネットワーク内に居る全ての者に インターネットへの自由なアクセスを許可し、その他の者は自分自身を 認証しなければなりません。 私は送受信した全てのファイルの記録を取る設定も含めてあります。 (-log { retr stor })
ftp のタイムアウトは、接続が入力がないままオープンになっている時間を どれくらいにするのかと同じように、不正な接続を停止するのに必要な時間を どれくらいにするかを制御します。
# ftp gateway rules: ftp-gw: denial-msg /usr/local/etc/ftp-deny.txt ftp-gw: welcome-msg /usr/local/etc/ftp-welcome.txt ftp-gw: help-msg /usr/local/etc/ftp-help.txt ftp-gw: timeout 300 ftp-gw: permit-hosts 192.1.2.* -log { retr stor } ftp-gw: permit-hosts * -authall -log { retr stor }
Web, gopher, ブラウザを使った ftp は http-gw によって制御されます。 最初の二行は ftp やファイアウォールを通って渡されているような web 文書を 置くディレクトリを作ります。 私はこれらのファイルを root 所有にし、root のみがアクセスできる ディレクトリに置いています。
Web 接続は短くしたほうがよいでしょう。 ユーザが不正な接続でどれくらい待つかを制御します。
# www and gopher gateway rules: http-gw: userid root http-gw: directory /jail http-gw: timeout 90 http-gw: default-httpd www.afs.net http-gw: hosts 192.1.2.* -log { read write ftp } http-gw: deny-hosts *
ssl-gw は実際はなんでも通してしまう gateway です。 注意してください。 この例では、私はアドレス 127.0.0.* と 192.1.1.* それから、ポート 443 から 563 上でだけ、ネットワークの外部のどのサーバにも接続するため保護された ネットワークの内部で全ての人を許可しています。 ポート 443 から 563 は SSL ポートです。
# ssl gateway rules: ssl-gw: timeout 300 ssl-gw: hosts 192.1.2.* -dest { !127.0.0.* !192.1.1.* *:443:563 } ssl-gw: deny-hosts *
ここでは、新しいサーバに接続を許可する為に plug-gw をどのように 使うかについての例を示します。 この例で、私は保護されたネットワークの内側で一つのシステムにだけ接続し、 それが新しいポートにだけ接続するのを全ての人に許可します。
二行目は保護されたネットワークにそのデータを戻す為に新しいサーバを許可します。
殆どのクライアントはユーザがニュースを読んでいる間は接続状態に あることを期待しますから、ニュースサーバのタイムアウトは長くしておくべきです。
# NetNews Pluged gateway plug-gw: timeout 3600 plug-gw: port nntp 192.1.2.* -plug-to 24.94.1.22 -port nntp plug-gw: port nntp 24.94.1.22 -plug-to 192.1.2.* -port nntp
finger gateway はシンプルです。 保護されたネットワークの内部の人は誰でも最初にログインしなければならず、 その後ファイアウォール上の finger プログラムを使うことができます。 それ以外の全ての人は次のようなメッセージを受け取ります。
# Enable finger service netacl-fingerd: permit-hosts 192.1.2.* -exec /usr/libexec/fingerd netacl-fingerd: permit-hosts * -exec /bin/cat /usr/local/etc/finger.txt
私は Mail と X Window System のサービスの設定をしていないので、ここには例を 含めていません。 どなたか動いている例をお持ちなら e-mail で私に送ってください。
ここが全ての始まりです。クライアントがファイアウォールに接続するとき、 既知のポート( 1024 より以下)に接続します。たとえばtelnet はポート23 上に 接続します。inetd デーモンはこの接続を知ると、 /etc/services ファイルに あるこれらのサービスの名前を探します。それから /etc/inetd.conf ファイルに ある名前に割り当てられたプログラムを呼び出します。
われわれが作成しているサービスのあるものは、普通は /etc/services ファイルにはありません。 あなたは、自分が望むどれかのポートに何かのサービスを割り当てることが できます。 例えば、私は管理者の telnet ポート (telnet-a) をポート24 に割り当てています。 お望みならポート 2323 にそれを割り当てることもできます。 ファイアウォールに直接接続する管理者(あなた)に対して、私が行ったように、 あなたがご自分の netperm-table ファイルを設定するならポート23 ではなく、 ポート24 にtelnet する必要があり、保護されたネットワークの内部で、 一つのシステムからこれをできるようにするだけです。
telnet-a 24/tcp ftp-gw 21/tcp # this named changed auth 113/tcp ident # User Verification ssl-gw 443/tcp