レンタルサーバ + Webシステム開発 = E-business

■レンタルサーバご利用参考資料
サーバご利用の参考にJF Project によるJF (Japanese FAQ)を掲載しています。

Linux JF(Japanese FAQ)Project.
JF は, Linux に関する解説文書・FAQ などを作成・収集・配布するプロジェクトです.

グリーンネット・トップページへ戻る


一覧に戻る
Authentication Gateway HOWTO

Nathan Zorn

           zornnh@musc.edu
        

yomoyomo - 日本語訳

ymgrtq@ma.neweb.ne.jp

Revision History                                                       
Revision 0.06            2002-11-05         Revised by: nhz            
Revision 0.05            2002-05-10         Revised by: nhz            
Revision 0.04            2002-02-28         Revised by: nhz            
Revision 0.03            2001-09-28         Revised by: nhz            
Revision 0.02            2001-09-28         Revised by: KET            
Revision 0.01            2001-09-06         Revised by: nhz            

  無線ネットワークや、図書館や寮などの公開アクセスエリアにおけるセキュ
リティには、多くの懸念事項があります。そうした懸念事項は、現行のセキュ
リティ実装では解決できません。その回避策として、認証ゲートウェイを利用
する方法が推奨されてきました。このゲートウェイは、ユーザがネットワーク
を利用する際に認証を強制することで、セキュリティに関する懸念事項に取り
組むものです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Table of Contents
1. はじめに
   
    1.1. 著作権情報
    1.2. 免責
    1.3. 最新版
    1.4. クレジット
    1.5. フィードバック
   
2. 必要なもの
   
    2.1. Netfilter
    2.2. 動的な Netfilter ルールに対応するソフトウェア
    2.3. DHCP サーバ
    2.4. 認証のメカニズム
    2.5. DNS サーバ
   
3. ゲートウェイサービスの設定
   
    3.1. Netfilterの設定
    3.2. 動的な Netfilter ルール
    3.3. DHCP サーバ設定
    3.4. 認証手法の設定
    3.5. DNS の設定
   
4. 認証ゲートウェイの利用
5. 終わりに
6. 追加の情報源
7. 質問と答え
8. 日本語訳について

1. はじめに

  無線ネットワークや公開アクセスエリアに、許可されてないユーザがアクセ
スするのはとても簡単です。許可されてないユーザでも、通信を探り、その通
信から接続情報を横取りできます。許可されてないユーザが、マシンを公開タ
ーミナルにつなぎ、ネットワークにアクセスすることが可能なのです。セキュ
リティが WEP などで整備されてきてますが、こうしたものによるセキュリティ
は、AirSnort などのツールによって破られる可能性があります。以上の問題を
解決するアプローチの一つとして、無線のセキュリティ機能に頼らず、代わり
に無線ネットワークや公開アクセスエリアの前面に認証ゲートウェイを設置し
、ユーザがネットワークを利用する前に、そのゲートウェイに認証を受けるこ
とを強制するというのがあります。この HOWTO は、Linux でこのゲートウェイ
を構築する方法を説明するものです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

1.1. 著作権情報

  This document is copyrighted (c) 2001 Nathan Zorn. Permission is
granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.1 or any later version
published by the Free Software Foundation; with no Invariant Sections,
with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the
license is available at http://www.gnu.org/copyleft/fdl.html

  (日本語訳) This document is copyrighted (c) 2001 Nathan Zorn. この文
書の複製、配布、修正は、Free Software Foundation により公開されている、
GNU Free Documentation License (以下 GFDL) バージョン 1.1、もしくはそれ
以降のバージョンの元で許可されます。ただし、この文書には GFDL で規定さ
れている「変更不可部分」はありませんし、また表紙テキストや裏表紙テキス
トなどもありません。このライセンスのコピーは、http://www.gnu.org/
copyleft/fdl.html で入手可能です。

何か質問があれば、 に連絡してください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

1.2. 免責

  この文書の内容に関しては、何の責任も持てません。ご自身の責任の元で、
この文書のコンセプト、例、そしてその他の内容を利用してください。これは
本文書の新版ですので、誤りや不正確な記述を含んでいるかもしれませんし、
それらの誤りや不正確な記述によって、あなたのシステムに被害を与える可能
性もまた当然ながらあります。慎重に読み進んでください。実際に何らかの被
害を生ずるといった可能性はほとんど無いはずですが、たとえそうしたことが
起きてしまったとしても、著者(達)は、それについて何の責任も負いません。

  特に記述がない限り、著作権はそれぞれの保有者に帰するものとします。ま
たこの文書中で使用される用語は、各商標の範囲に抵触しないものとします。

  特定の商品名やブランド名を挙げた場合でも、それらを推奨するものではあ
りません。

主要なインストールを行う前にご利用のシステムのバックアップを取り、そし
てバックアップを定期的に行うことを強くお勧めします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

1.3. 最新版

この文書の最新版は、 http://www.itlab.musc.edu/~nathan/
authentication_gateway/  にあります。関連する HOWTO 文書は、 Linux
Documentation Project  ホームページで見つけら
れます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

1.4. クレジット

Jamin W. Collins

Kristin E Thomas

Logu (visolve.com)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

1.5. フィードバック

この文書に関するフィードバックを、もちろん歓迎します。あなたがたの提案
や意見がなければ、この文書は存在しなかったでしょう。追加、批評、そして
批判を以下の電子メールアドレスまでお送りください: 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2. 必要なもの

このセクションでは、認証ゲートウェイに必要なものについて記述します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1. Netfilter

認証ゲートウェイは、ファイヤウォールを管理するのに、Netfilter と
iptables を利用します。 Netfilter HOWTO  を参照ください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.2. 動的な Netfilter ルールに対応するソフトウェア

Netfilter ルールを動的に挿入、削除する手段の一つに、 pam_iptables の利
用があります。これは Nathan Zorn によって書かれたプラグ可能認証モジュー
ル(PAM)で、 http://www.itlab.musc.edu/~nathan/pam_iptables  から入手できます。この PAM モ
ジュールにより、ユーザはゲートウェイで認証を行い、 ssh や telnet を利用
できるようになります。

Netfilter ルールを動的に追加、削除するもう一つの手段として、 NocatAuth
の利用があります。NocatAuth は、 http://nocat.net から入手できます。
NocatAuth により、ウェブクライアントからゲートウェイの認証が行えるよう
になります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.3. DHCP サーバ

  認証ゲートウェイは、公開ネットワークに対して、動的ホスト設定プロトコ
ル (DHCP)サーバの役割を果たします。それは公開ネットワークからの DHCP サ
ービス要求にのみ応答します。私は ISC DHCP Server  を使用しました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4. 認証のメカニズム

ゲートウェイは、PAM の認証方法ならどれでも利用できます。サウスカロライ
ナ医大が使用している認証機構は LDAP です。 LDAP は認証目的に使われるの
で、ゲートウェイ機上の PAM モジュールは、LDAP を使用するように設定され
ました。もっと多くの情報を、 http://www.padl.com/pam_ldap.html  で見つけることができます。PAM により、多く
の認証手段を利用できるようになります。他の手法についての情報をもっと知
りたい場合は、 PAM モジュールについての文章  を参照してください。

NocatAuth を利用するには、認証サービスを構築する必要があります。
NocatAuth 認証サービスは、LDAP, RADIUS, MySQL, そしてパスワードファイル
を利用した認証機能を支援します。 http://nocat.net/download/NoCatAuth/
 にもっと多くの情報があります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.5. DNS サーバ

ゲートウェイは、公開ネットワークに対する DNS サーバの機能も果たします。
私は Bind  をインストールし、それを
キャッシングネームサーバとして使用しています。キャッシングサーバ構築に
は Red Hat に同梱されている caching-namserver という RPM パッケージも利
用可能です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3. ゲートウェイサービスの設定

このセクションでは、認証ゲートウェイの各部分の設定方法を説明します。こ
こで使用される例は、サブネットが 10.0.1.0 のプライベート公開ネットワー
クです。eth0 は内部ネットワークに接続される、ゲートウェイのインタフェー
スです。eth1 が公開ネットワークに接続されるインタフェースです。このイン
タフェース側の IP アドレスは 10.0.1.1 です。これらの設定は、あなたが利
用しているネットワークに合うように変更可能です。ゲートウェイ機には Red
Hat 7.1 を利用したので、多くの例が Red Hat に限定されます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.1. Netfilterの設定

  netfilter を設定するためには、netfilter サポートを加えてカーネルを再
コンパイルしなければなりません。カーネルの設定とコンパイルについてもっ
と情報が必要なら、 Kernel-HOWTO  を参照してください。

私のカーネル設定は、以下のような感じです。
┌──────────────────────────────────┐
│   #                                                                │
│   # Networking options                                             │
│   #                                                                │
│   CONFIG_PACKET=y                                                  │
│   # CONFIG_PACKET_MMAP is not set                                  │
│   # CONFIG_NETLINK is not set                                      │
│   CONFIG_NETFILTER=y                                               │
│   CONFIG_NETFILTER_DEBUG=y                                         │
│   CONFIG_FILTER=y                                                  │
│   CONFIG_UNIX=y                                                    │
│   CONFIG_INET=y                                                    │
│   CONFIG_IP_MULTICAST=y                                            │
│   # CONFIG_IP_ADVANCED_ROUTER is not set                           │
│   # CONFIG_IP_PNP is not set                                       │
│   # CONFIG_NET_IPIP is not set                                     │
│   # CONFIG_NET_IPGRE is not set                                    │
│   # CONFIG_IP_MROUTE is not set                                    │
│   # CONFIG_INET_ECN is not set                                     │
│   # CONFIG_SYN_COOKIES is not set                                  │
│                                                                    │
│                                                                    │
│   #   IP: Netfilter Configuration                                  │
│   #                                                                │
│   CONFIG_IP_NF_CONNTRACK=y                                         │
│   CONFIG_IP_NF_FTP=y                                               │
│   CONFIG_IP_NF_IPTABLES=y                                          │
│   CONFIG_IP_NF_MATCH_LIMIT=y                                       │
│   CONFIG_IP_NF_MATCH_MAC=y                                         │
│   CONFIG_IP_NF_MATCH_MARK=y                                        │
│   CONFIG_IP_NF_MATCH_MULTIPORT=y                                   │
│   CONFIG_IP_NF_MATCH_TOS=y                                         │
│   CONFIG_IP_NF_MATCH_TCPMSS=y                                      │
│   CONFIG_IP_NF_MATCH_STATE=y                                       │
│   CONFIG_IP_NF_MATCH_UNCLEAN=y                                     │
│   CONFIG_IP_NF_MATCH_OWNER=y                                       │
│   CONFIG_IP_NF_FILTER=y                                            │
│   CONFIG_IP_NF_TARGET_REJECT=y                                     │
│   CONFIG_IP_NF_TARGET_MIRROR=y                                     │
│   CONFIG_IP_NF_NAT=y                                               │
│   CONFIG_IP_NF_NAT_NEEDED=y                                        │
│   CONFIG_IP_NF_TARGET_MASQUERADE=y                                 │
│   CONFIG_IP_NF_TARGET_REDIRECT=y                                   │
│   CONFIG_IP_NF_NAT_FTP=y                                           │
│   CONFIG_IP_NF_MANGLE=y                                            │
│   CONFIG_IP_NF_TARGET_TOS=y                                        │
│   CONFIG_IP_NF_TARGET_MARK=y                                       │
│   CONFIG_IP_NF_TARGET_LOG=y                                        │
│   CONFIG_IP_NF_TARGET_TCPMSS=y                                     │
│                                                                    │
└──────────────────────────────────┘

ルールが設定されたら、以下のコマンドを実行して、 IP フォワーディングを
有効にしてください。

┌──────────────────────────────────┐
│   echo 1 > /proc/sys/net/ipv4/ip_forward                           │
│                                                                    │
└──────────────────────────────────┘

マシンの再起動時に IP フォワーディングが確実に有効になるように、以下の
行を /etc/sysctl.conf に追加してください。

┌──────────────────────────────────┐
│   net.ipv4.ip_forward = 1                                          │
│                                                                    │
└──────────────────────────────────┘

もし NocatAuth を利用しているなら、 NoCatAuth ゲートウェイ設定セクショ
ンまで読み飛ばしてかまいません。

iptables をインストールする必要があります。iptables をインストールする
には、ご利用のディストリビューションに同梱されているパッケージを利用す
るか、ソースからインストールしてください。上記のオプションを設定し新し
いカーネルを作成して iptables をインストールした後に、私は以下のように
デフォルトのファイヤウォールルールを設定しました。

┌───────────────────────────────────┐
│   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE               │
│   iptables -A INPUT -i eth0 -m state --state NEW, INVALID -j DROP    │
│   iptables -A FORWARD -i eth0 -m state --state NEW, INVALID -j DROP  │
│   iptables -I FORWARD -o eth0 -j DROP                                │
│   iptables -I FORWARD -s 10.0.1.0/24 -d 10.0.1.1 -j ACCEPT           │
│                                                                      │
└───────────────────────────────────┘

  上記のコマンドは、サーバが再起動する際に起動するように、initscript の
中に置くこともできます。ルールが追加されたことを確かめるために、以下の
コマンドを発行してください。

┌──────────────────────────────────┐
│   iptables -v -t nat -L                                            │
│   iptables -v -t filter -L                                         │
│                                                                    │
└──────────────────────────────────┘

以上のルールを保存するため、私は Red Hat の init スクリプトを利用しまし
た。

┌──────────────────────────────────┐
│   /etc/init.d/iptables save                                        │
│   /etc/init.d/iptables restart                                     │
│                                                                    │
└──────────────────────────────────┘

これでゲートウェイはネットワークアドレス変換(NAT)を行えるようになります
が、公開ネットワークの中から送信されたゲートウェイ宛てのパケット以外は
、フォワーディングパケットをすべて破棄します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.2. 動的な Netfilter ルール

このセクションでは、ゲートウェイ上で Netfilter ルールを動的に追加、削除
するのに必要なソフトウェアの設定方法を解説します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.2.1. PAM iptables モジュール

ファイヤウォールルールを挿入する PAM セッションモジュールが、認証された
クライアントのためにフォワーディングを行えるようにするのに必要になりま
す。これを簡単にセットアップするには、単にソース  を入手し、以下のコマンドを
作動させて、コンパイルを行ってください。

┌──────────────────────────────────┐
│     gcc -fPIC -c pam_iptables.c                                    │
│     ld -x --shared -o pam_iptables.so pam_iptables.o               │
│                                                                    │
└──────────────────────────────────┘

これで pam_iptables.so と pam_iptables.o という名前の二つのバイナリがで
きるはずです。pam_iptables.so を /lib/security/pam_iptables.so にコピー
してください。

┌──────────────────────────────────┐
│     cp pam_iptables.so /lib/security/pam_iptables.so               │
│                                                                    │
└──────────────────────────────────┘

ここで /usr/local/auth-gw にファイヤウォールのスクリプトを組み込みます
。

┌──────────────────────────────────┐
│     mkdir /usr/local/auth-gw                                       │
│     cp insFwall /usr/local/auth-gw                                 │
│                                                                    │
└──────────────────────────────────┘

ゲートウェイに選択された認証クライアントは SSH だったので、以下の行を /
etc/pam.d/sshd に追加しました。

┌──────────────────────────────────┐
│     session    required     /lib/security/pam_iptables.so          │
│                                                                    │
└──────────────────────────────────┘

これでユーザがSSHでログインすれば、ファイヤウォールルールが追加されるよ
うになります。

pam_iptables モジュールが動作しているかテストするには、以下の手順を実行
してください。

 1. SSH でゲートウェイにログイン。
   
 2. ルールが追加されているか、iptables -L -v で確認。
   
 3. ゲートウェイからログアウトして、そのルールが削除されているのを確認
    。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.2.2. NoCatAuth ゲートウェイ

このセクションでは、NoCatAuth ゲートウェイを構築するプロセスを解説しま
す。NocatAuth ゲートウェイを構築するには、ソース  をダウンロードし、以下の手順でインストールしてくだ
さい。

gpgv がインストールされているか確かめてください。 gpgv は、PGP 署名証明
者です。それは gnupg の一部であり、 http://www.gnupg.org/download.html
 にあります。

NocatAuth の tar ファイルを展開する。
┌──────────────────────────────────┐
│     tar xvzf NocatAuth-x.xx.tar.gz                                 │
│                                                                    │
└──────────────────────────────────┘

もし NoCatAuth を /usr/local/nocat ディレクトリに置きたくないなら、
Makefile を編集し、INST_PATH をあなたが NoCatAuth を常駐させたいディレ
クトリに変更してください。

次にゲートウェイを構築します。
┌──────────────────────────────────┐
│     cd NoCatAuth-x.xx                                              │
│     make gateway                                                   │
│                                                                    │
└──────────────────────────────────┘

/usr/local/nocat.conf ファイルを編集します。conf ファイルに必要な設定に
ついては、詳しくは INSTALL ドキュメントを参照してください。例となる
conf ファイルは以下のような感じになります。

┌──────────────────────────────────┐
│                                                                    │
│     ###### gateway.conf -- NoCatAuth Gateway Configuration.        │
│     #                                                              │
│     # Format of this file is: Directive Value, one per             │
│     # line. Trailing and leading whitespace is ignored. Any        │
│     # line beginning with a punctuation character is assumed to    │
│     # be a comment.                                                │
│                                                                    │
│     Verbosity       10                                             │
│     #we are behind a NAT so put the gateway in passive mode        │
│     GatewayMode     Passive                                        │
│     GatewayLog      /usr/local/nocat/nocat.log                     │
│     LoginTimeout    300                                            │
│                                                                    │
│     ######Open Portal settings.                                    │
│     HomePage        http://www.itlab.musc.edu/                     │
│     DocumentRoot    /usr/local/nocat/htdocs                        │
│     SplashForm      splash.html                                    │
│     ###### Active/Passive Portal settings.                         │
│     TrustedGroups Any                                              │
│     AuthServiceAddr egon.itlab.musc.edu                            │
│     AuthServiceURL  https://$AuthServiceAddr/cgi-bin/login         │
│     LogoutURL       https://$AuthServiceAddr/forms/logout.html     │
│     ###### Other Common Gateway Options.                           │
│     AllowedWebHosts egon.itlab.musc.edu                            │
│     ResetCmd        initialize.fw                                  │
│     PermitCmd       access.fw permit $MAC $IP $Class               │
│     DenyCmd         access.fw deny $MAC $IP $Class                 │
│                                                                    │
└──────────────────────────────────┘

これでゲートウェイを起動できるようになるはずです。何か問題が発生したら
、展開した NoCatAuth ディレクトリにある INSTALL ドキュメントを確認して
ください。以下のコマンドにより、ゲートウェイを起動します。
┌──────────────────────────────────┐
│     /usr/local/nocat/bin/gateway                                   │
│                                                                    │
└──────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.3. DHCP サーバ設定

私は、以下の dhcpd.conf を用い、 DHCP を導入しました。

┌────────────────────────────────────┐
│   subnet 10.0.1.0 netmask 255.255.255.0 {                              │
│   # --- default gateway                                                │
│        option routers                  10.0.1.1;                       │
│        option subnet-mask              255.255.255.0;                  │
│        option broadcast-address        10.0.1.255;                     │
│                                                                        │
│        option domain-name-servers       10.0.1.1;                      │
│        range   10.0.1.3 10.0.1.254;                                    │
│        option time-offset              -5;     # Eastern Standard Time │
│                                                                        │
│        default-lease-time 21600;                                       │
│        max-lease-time 43200;                                           │
│                                                                        │
│    }                                                                   │
│                                                                        │
└────────────────────────────────────┘

  DHCP サーバはこの場合、公開ネットのインタフェースである、eth1 側に対
して作動させました。

┌──────────────────────────────────┐
│    /usr/sbin/dhcpd eth1                                            │
│                                                                    │
└──────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.4. 認証手法の設定

PAM による認証と NoCatAuth 認証サービスについて解説を行います。両方とも
例として LDAP を利用します。LDAP 以外の認証手段も利用可能です。PAM や
NoCatAuth のドキュメントを読み、別の認証手段を利用するための手順を理解
してください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.4.1. PAM LDAP

  前のセクションで述べたように、私は認証に LDAP を使用するようゲートウ
ェイの設定を行いました。しかし、あなたがたは PAM が認証を許容するどの方
法でも利用可能です。もっと情報が必要ならば、 Section 2.4 を参照ください
。

PAM LDAP で認証を行うために、私は OpenLDAP  を
インストールし、/etc/ldap.conf に以下の設定を行いました。

┌──────────────────────────────────┐
│     # Your LDAP server. Must be resolvable without using LDAP.     │
│     host itc.musc.edu                                              │
│                                                                    │
│     # The distinguished name of the search base.                   │
│     base dc=musc,dc=edu                                            │
│     ssl no                                                         │
│                                                                    │
└──────────────────────────────────┘

以下に挙げるファイルは、LDAP 認証を行うよう PAM を設定するのに使用され
ました。これらのファイルは、Red Hat の設定ユーティリティにより生成され
ました。

/etc/pam.d/system-auth が作成され、以下のような内容になりました。
   
    ┌─────────────────────────────────────────────────────────┐
    │      #%PAM-1.0                                                                                                   │
    │      # This file is auto-generated.                                                                              │
    │      # User changes will be destroyed the next time authconfig is run.                                           │
    │      auth        required      /lib/security/pam_env.so                                                          │
    │      auth        sufficient    /lib/security/pam_unix.so likeauth nullok                                         │
    │      auth        sufficient    /lib/security/pam_ldap.so use_first_pass                                          │
    │      auth        required      /lib/security/pam_deny.so                                                         │
    │                                                                                                                  │
    │      account     required      /lib/security/pam_unix.so                                                         │
    │      account     [default=ok user_unknown=ignore service_err=ignore system_err=ignore] /lib/security/pam_ldap.so │
    │                                                                                                                  │
    │      password    required      /lib/security/pam_cracklib.so retry=3                                             │
    │      password    sufficient    /lib/security/pam_unix.so nullok use_authtok                                      │
    │      password    sufficient    /lib/security/pam_ldap.so use_authtok                                             │
    │      password    required      /lib/security/pam_deny.so                                                         │
    │                                                                                                                  │
    │      session     required      /lib/security/pam_limits.so                                                       │
    │      session     required      /lib/security/pam_unix.so                                                         │
    │      session     optional      /lib/security/pam_ldap.so                                                         │
    │                                                                                                                  │
    └─────────────────────────────────────────────────────────┘
   
また、以下の /etc/pam.d/sshd ファイルが作成されました。
   
    ┌───────────────────────────────────────┐
    │       #%PAM-1.0                                                              │
    │       auth       required     /lib/security/pam_stack.so service=system-auth │
    │       auth       required     /lib/security/pam_nologin.so                   │
    │       account    required     /lib/security/pam_stack.so service=system-auth │
    │       password   required     /lib/security/pam_stack.so service=system-auth │
    │       session    required     /lib/security/pam_stack.so service=system-auth │
    │       #this line is added for firewall rule insertion upon login             │
    │       session    required     /lib/security/pam_iptables.so debug            │
    │       session    optional     /lib/security/pam_console.so                   │
    │                                                                              │
    └───────────────────────────────────────┘
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.4.2. NoCatAuth サービス

ゲートウェイ以外の別のサーバに、NoCatAuth サービスをインストールするこ
とをお勧めします。別のサーバが、僕の例において利用されました。
NoCatAuth サービスを構築するには、以下のソフトウェアが必要になります。

 1. SSL が有効化されたウェブサーバ。SSL 証明書が登録されているのが望ま
    しい。私は、Apache と mod_ssl の組み合わせを使用しました。
   
 2. Perl 5 (5.6 かそれ以降が望ましい)
   
 3. Net::LDAP, Digest::MD5, DBI, そして DBD::MySQL perl モジュール (そ
    れらは CPAN から取得してください)。必要なモジュールは、どんな認証手
    段を利用するつもりかということで変わってきます。僕の例では、認証手
    段として Net::LDAP を利用しました。
   
 4. Gnu Privacy Guard (gnupg 1.0.6 かそれ以降)。 http://www.gnupg.org/
    download.html で入手可能。
   
インストールするために、tar ファイルを展開。
┌──────────────────────────────────┐
│    $ tar zvxf NoCatAuth-x.xx.tar.gz                                │
│                                                                    │
└──────────────────────────────────┘

NoCatAuth が常駐するパスを変更したい場合は、Makefile を編集し、
INST_PATH を希望するディレクトリに変更してください。

次に、 make authserv コマンドを実行します。これで、/usr/local/nocat か
、あなたが INST_PATH の値を変更したところにすべてがインストールされます
。

そして make pgpkey を実行します。初期設定のままで、大抵の用途に使えるは
ずです。重要: パスフレーズを入力しないこと! 入力してしまうと、認証サー
ビスがメッセージを暗号化するために存在しない tty からパスフレーズを読み
込もうとして、奇妙なメッセージを出力してしまいます。

あなたの環境に合うように、/usr/local/nocat/nocat.conf を編集してくださ
い。以下に例を示します。
┌───────────────────────────────────────────────────────────────────────────────┐
│    ###### authserv.conf -- NoCatAuth Authentication Service Configuration.                                                                                   │
│    #                                                                                                                                                         │
│    # Format of this file is: Directive Value, one per                                                                                                        │
│    #   line. Trailing and leading whitespace is ignored. Any                                                                                                 │
│    #   line beginning with a punctuation character is assumed to                                                                                             │
│    #   be a comment.                                                                                                                                         │
│                                                                                                                                                              │
│    Verbosity       10                                                                                                                                        │
│    HomePage        http://www.itlab.musc.edu/                                                                                                                │
│    DocumentRoot    /usr/local/nocat/htdocs                                                                                                                   │
│    # LDAP source                                                                                                                                             │
│    DataSource LDAP                                                                                                                                           │
│    LDAPHost authldap.musc.edu                                                                                                                                │
│    LDAPBase dc=musc,dc=edu                                                                                                                                   │
│                                                                                                                                                              │
│    UserTable       Member                                                                                                                                    │
│    UserIDField     User                                                                                                                                      │
│    UserPasswdField Pass                                                                                                                                      │
│    UserAuthField   Status                                                                                                                                    │
│    UserStampField  Created                                                                                                                                   │
│                                                                                                                                                              │
│    GroupTable      Network                                                                                                                                   │
│    GroupIDField    Network                                                                                                                                   │
│    GroupAdminField Admin                                                                                                                                     │
│    MinPasswdLength 8                                                                                                                                         │
│                                                                                                                                                              │
│    # LocalGateway -- If you run auth service on the same subnet                                                                                              │
│    #   (or host) as the gateway you need to specify the hostname                                                                                             │
│    #   of the gateway. Otherwise omit it.  (Requires Net::Netmask)                                                                                           │
│    #                                                                                                                                                         │
│    # LocalGateway    192.168.1.7                                                                                                                             │
│                                                                                                                                                              │
│    LoginForm       login.html                                                                                                                                │
│    LoginOKForm     login_ok.html                                                                                                                             │
│    FatalForm       fatal.html                                                                                                                                │
│    ExpiredForm     expired.html                                                                                                                              │
│    RenewForm       renew.html                                                                                                                                │
│    PassiveRenewForm renew_pasv.html                                                                                                                          │
│    RegisterForm    register.html                                                                                                                             │
│    RegisterOKForm  register_ok.html                                                                                                                          │
│    RegisterFields  Name URL Description                                                                                                                      │
│                                                                                                                                                              │
│    UpdateForm      update.html                                                                                                                               │
│    UpdateFields    URL Description                                                                                                                           │
│                                                                                                                                                              │
│    ###### Auth service user messages. Should be self-explanatory.                                                                                            │
│    #                                                                                                                                                         │
│    LoginGreeting   Greetings! Welcome to the Medical University of SC's Network.                                                                             │
│    LoginMissing    Please fill in all fields!                                                                                                                │
│    LoginBadUser    That e-mail address is unknown. Please try again.                                                                                         │
│    LoginBadPass    That e-mail and password do not match. Please try again.                                                                                  │
│    LoginBadStatus  Sorry, you are not a registered co-op member.                                                                                             │
│                                                                                                                                                              │
│    RegisterGreeting    Welcome! Please enter the following information to register.RegisterMissing     Name, E-mail, and password fields must be filled in.  │
│    RegisterUserExists  Sorry, that e-mail address is already taken. Are you already registered?                                                              │
│    RegisterBadUser     The e-mail address provided appears to be invalid. Did you spell it correctly?                                                        │
│    RegisterInvalidPass All passwords must be at least six characters long.                                                                                   │
│    RegisterPassNoMatch The passwords you provided do not match. Please try again.                                                                            │
│    RegisterSuccess     Congratulations, you have successfully registered.                                                                                    │
│                                                                                                                                                              │
│    UpdateGreeting      Enter your E-mail and password to update your info.                                                                                   │
│    UpdateBadUser       That e-mail address is unknown. Please try again.                                                                                     │
│    UpdateBadPass       That e-mail and password do not match. Please try again.                                                                              │
│    UpdateInvalidPass   New passwords must be at least eight characters long.                                                                                 │
│    UpdatePassNoMatch   The new passwords you provided do not match. Please try again.                                                                        │
│    UpdateSuccess       Congratulations, you have successfully updated your account.                                                                          │
│                                                                                                                                                              │
│                                                                                                                                                              │
└───────────────────────────────────────────────────────────────────────────────┘

/usr/local/nocat/pgp がウェブサーバのユーザに所有されているか確かめてく
ださい(つまり、nobody か www-data になっているかどうか)。

Apache の httpd.conf ファイルに etc/authserv.conf を追加してください。
┌──────────────────────────────────┐
│ Include /usr/local/nocat/etc/authserv.conf                         │
└──────────────────────────────────┘

  /usr/local/nocat/trustedkeys.pgp をゲートウェイにコピーしてください。
Apache を再起動し、試してみてください。もっと多くの情報が必要な場合は、
NoCatAuth のドキュメントを参照ください。ドキュメントは、NoCatAuth を展
開したディレクトリの docs/ 配下にあります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.5. DNS の設定

  私は、Red Hat 7.1 についてきたデフォルトバージョンの Bind とキャッシ
ングネームサーバ RPM をインストールしました。DHCP サーバは、公開ネット
ワーク上のマシンがネームサーバとしてゲートウェイを利用するよう設定して
います。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4. 認証ゲートウェイの利用

認証ゲートウェイを利用するためには、クライアントに DHCP を使用するよう
に設定してください。そのマシンに SSH クライアントをインストールして、ゲ
ートウェイに SSH でログインしてください。一旦ログインすれば、内部ネット
ワークにアクセスが行えるようになります。以下は、unix ベースのクライアン
トにおけるセッション例です。

┌──────────────────────────────────┐
│ bash>ssh zornnh@10.0.1.1                                           │
│ zornnh's Password:                                                 │
│                                                                    │
│ gateway>                                                           │
│                                                                    │
└──────────────────────────────────┘

  ログインした状態である限り、アクセスが可能です。ログアウトしてしまう
と、アクセスできなくなります。

  認証ゲートウェイに NoCatAuth をインストールして利用するには、クライア
ント機が DHCP を利用するように設定してください。 Mozilla などのウェブブ
ラウザをインストールしてください。そしてそのウェブブラウザを起動してく
ださい。ブラウザは、認証画面にリダイレクトされるはずです。

Figure 1. Nocat のログイン

[nocat_auth]

ユーザ名とパスワードを入力すると、ポップアップスクリーンが現われます。
そこにはあなたがネットワークに認証されたこと、認証された状態を保つには
そのウィンドウを開いたままにしておくこと、が説明されているはずです。セ
ッションを終了するにはログアウトをクリックするか、そのウィンドウを閉じ
ます。

Figure 2. 認証ウィンドウ

[nocat_auth]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5. 終わりに

 ・ この文書で示されるセキュリティ手法は、無線ネットワークコミュニティ
    により提供されるセキュリティに依存しません。無線ネットワーク全体が
    安全でなくても、またその無線ネットワークがあなたの管理下になくても
    きちんと機能します。
   
 ・ ゲートウェイは、トラフィックを暗号化しません。その背後にあるネット
    ワークへのアクセスを許可するだけです。もし暗号化も認証も必要ならば
    、VPN を利用すべきです。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

6. 追加の情報源

 ・ NASA における認証ゲートウェイの実装について説明した文書 。
   
 ・ アルバータ大学において認証ゲートウェイを作成した方法を記述した白書
    。
   
 ・ Nocat.net  には、無線ネットワーク用の認証ゲートウ
    ェイがあります。このソフトウェアは、ウェブベースのクライアントにな
    ります。
   
 ・ Horatio: Authenticated Network Access  は、ファイヤウォール用認証ツールで
    す。利用の前提条件: 正規のユーザはラップトップマシンやその他のモバ
    イル端末をネットワークにつなごうとするが、セキュリティのため、正規
    のユーザが内部の、安全なネットワークにアクセスするのを防ぎ、一般の
    インターネットを悪用するのを防ぐ必要がある場合。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

7. 質問と答え

ここは、頂いた質問のうち、多くの人達が同じように疑問を抱くだろうと思わ
れるものを集めていく場所です。本当に多くのフィードバックを頂けたなら、
本来の意味のFAQにしていきます。

 1. なぜ、iptables のルールは、クライアントが telnet ウィンドウを閉じた
    ときにフラッシュしないのでしょうか? クライアントが telnet セッショ
    ンをログアウトした場合も、iptables のルールは機能します。 SSH の場
    合だと、SSH ウィンドウが閉じる場合でも、 iptables のルールはフラッ
    シュされます。
   
    私は、この問題に対する適切な答えや解決策を考え付いていません。 Logu
    が、この問題を解決する pam_iptables やその他のツールの修正を貢献し
    てくれました。これらのツールは、 contrib  ディレクトリに pam_iptables と一緒に
    置いてあります。
   
 2. IE6 だと NoCat が何かおかしくありません? 認証は行っているようですが
    、ファイヤウォールのルールを書かないのです。
   
    NoCat が出す HTML に次のメタタグが含まれていることを確かめてくださ
    い: < meta http-equiv="Refresh" content="$redirect" />
   
    このメタタグを含むべき HTML ファイルは、 login_ok.html, renew.html,
    そして renew_pasv.html です。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

8. 日本語訳について

日本語訳は Linux Japanese FAQ Project が行いました。翻訳に関するご意見
は JF プロジェクト  宛に連絡してください。

0.06j

翻訳:
   
    yomoyomo 
   
校正:
   
     □ office さん 
       
     □ 佐野武俊さん 
       
     □ 高橋全さん 
       
     □ 早川仁さん 
       
     □ 水原文さん 
       
一覧に戻る
グリーンネット・トップページへ戻る

http://www.green.ne.jp/