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

10. TIS プロキシサーバをインストールする

10.1 ソフトウェアを入手する

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 です。

10.2 TIS FWTK をコンパイルする

FWTK の Version 2.1 は、旧版のどれよりも簡単にコンパイルできます。

説明はこれだけ!!!

さあ、 make を実行しましょう。

10.3 TIS FWTK をインストールする

make install を実行しましょう。

デフォルトでインストールされるディレクトリは、/usr/local/etc です。 (私は変更はしていませんが) インストールディレクトリはもっと安全な ディレクトリに変更できます。 私はデフォルトのディレクトリを 'chmod 700' に変更しています。

最後にファイアウォールを設定する仕事が残っています。

10.4 TIS FWTK を設定する

さて、ここから佳境に入ります。 これらの新しいサービスの呼び出しをシステムに教えてやり、それらを 制御するテーブルを作らなくてはいけません。

ここで TIS FWTK のマニュアルをもう一度書くつもりはありません。 私が動作を確認した設定、はまりこんだ問題を説明し、それらを回避する 方法についてお伝えします。

制御を構成する三つのファイルがあります。

  • /etc/services
    • サービスがどのポートで行われるかをシステムに知らせる。
  • /etc/inetd.conf
    • 何者かがサービスポートを叩いたときに、呼び出されるプログラムを リストしてシステムに知らせる。
  • /usr/local/etc/netperm-table
    • サービスを許可と拒否している者を FWTK サービスに知らせる。

FWTK の機能を使う為に、これらのファイルを手順に従って 編集しなければいけません。 inetd.conf や netperm-table ファイルを正しく設定しないで サービスファイルを編集すると、お使いのシステムに アクセスできなくなります。

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 で私に送ってください。

/etc/services ファイル

ここが全ての始まりです。クライアントがファイアウォールに接続するとき、 既知のポート( 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


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

[