Authentication Gateway HOWTO
Nathan
Zorn
zornnh@musc.edu
yomoyomo
日本語訳
ymgrtq@ma.neweb.ne.jp
0.03
2001-12-06
nhz
0.02
2001-09-28
KET
0.01
2001-09-06
nhz
無線ネットワークや、図書館や寮などの公開アクセスエリアにおける
セキュリティには、多くの懸念事項があります。そうした懸念事項は、
現行のセキュリティ実装では解決できません。その回避策として、
認証ゲートウェイを利用する方法が推奨されてきました。このゲートウェイは、
ユーザがネットワークを利用する際に認証を強制することで、
セキュリティに関する懸念事項に取り組むものです。
はじめに
security!introduction
無線ネットワークや公開アクセスエリアに、許可されてないユーザがアクセス
するのはとても簡単です。許可されてないユーザでも、通信を探り、
その通信から接続情報を横取りできます。許可されてないユーザが、
マシンを公開ターミナルにつなぎ、ネットワークにアクセスすることが
可能なのです。セキュリティが WEP などで整備されてきていますが、
こうしたものによるセキュリティは、AirSnort などのツールによって
破られる可能性があります。以上の問題を解決するアプローチの一つとして、
無線のセキュリティ機能に頼らず、代わりに無線ネットワークや公開
アクセスエリアの前面に認証ゲートウェイを設置し、ユーザがネットワーク
を利用する前に、そのゲートウェイに認証を受けることを強制するというのが
あります。この HOWTO は、Linux でこのゲートウェイを構築する方法を説明
するものです。
著作権情報
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
で入手可能です。
何か質問があれば、zornnh@musc.edu に連絡してください。
免責
この文書の内容に関しては、何の責任も持てません。ご自身の責任の元で、
この文書のコンセプト、例、そしてその他の内容を利用してください。
これは本文書の新版ですので、誤りや不正確な記述を含んでいる
かもしれませんし、それらの誤りや不正確な記述によって、
あなたのシステムに被害を与える可能性もまた当然ながらあります。
慎重に読み進んでください。実際に何らかの被害を生ずるといった
可能性はほとんど無いはずですが、たとえそうしたことが起きて
しまったとしても、著者(達)は、それについて何の責任も負いません。
特に記述がない限り、著作権はそれぞれの保有者に帰するものとします。
またこの文書中で使用される用語は、各商標の範囲に抵触しないものとします。
特定の商品名やブランド名を挙げた場合でも、
それらを推奨するものではありません。
主要なインストールを行う前にご利用のシステムのバックアップを取り、
そしてバックアップを定期的に行うことを強くお勧めします。
最新版
(your index root)!news on
これは初期公開版です。
この文書の最新版は、
http://www.itlab.musc.edu/
~nathan/authentication_gateway/
にあります。関連する HOWTO 文書は、
Linux Documentation Project
ホームページで見つけられます。
クレジット
Jamin W. Collins
Kristin E Thomas
フィードバック
この文書に関するフィードバックを、もちろん歓迎します。
あなたがたの提案や意見がなければ、この文書は存在しなかったでしょう。
追加、批評、そして批判を以下の電子メールアドレスまでお送りください:
zornnh@musc.edu
必要なもの
このセクションでは、認証ゲートウェイに必要なものについて記述します。
Netfilter
認証ゲートウェイは、ファイヤウォールを管理するのに、Netfilter と
iptables を利用します。
Netfi
lter HOWTO
を参照ください。
Netfilter ルール用 PAM
これは Nathan Zorn によって書かれたプラグ可能認証モジュール(PAM)で、
http://www.itlab.musc.edu/~nathan/pa
m_iptables
から入手できます。
DHCP サーバ
認証ゲートウェイは、公開ネットワークに対して、動的ホスト設定プロトコル
(DHCP)サーバの役割を果たします。それは公開ネットワークからの
DHCP サービス要求にのみ応答します。私は
ISC DHCP Server
を使用しました。
認証のメカニズム
ゲートウェイは、PAM の認証方法ならどれでも利用できます。
サウスカロライナ医大が使用している認証機構は LDAP です。
LDAP を認証目的に使用しますので、ゲートウェイ上の PAM
モジュールは、LDAP を使用するように設定されました。
もっと多くの情報を、
http://www.padl.com/pam_ldap.html
で見つけることができます。PAM により、多くの認証手段を利用
できるようになります。他の手法についての情報をもっと知りたい場合は、
PAM モジュールにつ
いての文章
を参照してください。
DNS サーバ
ゲートウェイは、公開ネットワークに対する DNS サーバの機能も果たします。
私は Bind
をインストールし、それをキャッシングネームサーバとして使用しています。
キャッシングサーバ構築には Red Hat に同梱されている caching-namserver
という RPM パッケージも利用可能です。
ゲートウェイサービスの設定
このセクションでは、認証ゲートウェイの各部分の設定方法を説明します。
ここで使用される例は、サブネットが 10.0.1.0 のプライベート
公開ネットワークです。eth0 は内部ネットワークに接続される、
ゲートウェイのインタフェースです。eth1 が公開ネットワークに接続
されるインタフェースです。このインタフェース側の IP アドレスは
10.0.1.1 です。これらの設定は、あなたが利用しているネットワーク
に合うように変更可能です。ゲートウェイには Red Hat 7.1
を利用したので、多くの例が Red Hat に限定されます。
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
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
ルールが適切に設定されたら、以下のコマンドを実行して、
IP フォワーディングを有効にしてください。
echo 1 > /proc/sys/net/ipv4/ip_forward
マシンの再起動時に IP フォワーディングが確実に有効になるように、
以下の行を /etc/sysctl.conf に追加してください。
net.ipv4.ip_forward = 1
これでゲートウェイはネットワークアドレス変換(NAT)を行えるように
なりますが、公開ネットワークの中から送信されたゲートウェイ宛ての
パケット以外は、フォワーディングパケットをすべて破棄します。
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
ゲートウェイに選択された認証クライアントは SSH だったので、
以下の行を /etc/pam.d/sshd に追加しました。
session required /lib/security/pam_iptables.so
これでユーザがSSHでログインすれば、ファイヤウォールルールが追加される
ようになります。
pam_iptables のデフォルトインタフェースは eth0 です。このデフォルト設定は、
インタフェースパラメータを追加することで変更可能です。
session required /lib/security/pam_iptables.so interface=eth1
この設定は、外部ネットワークに接続するインタフェース名が eth0
でない場合のみ必要になります。
pam_iptables モジュールが動作しているかテストするには、
以下の手順を実行してください。
SSH でゲートウェイにログイン。
ルールが追加されているか、iptables -L で確認。
ゲートウェイからログアウトして、そのルールが削除されているのを確認。
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
認証手法の設定
前のセクションで述べたように、私は認証に LDAP を使用するよう
ゲートウェイの設定を行いました。しかし、あなたがたは PAM
が認証を許容するどの方法でも利用可能です。もっと情報が必要ならば、
を参照ください。
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
DNS の設定
私は、Red Hat 7.1 についてきたデフォルトバージョンの Bind
とキャッシングネームサーバ RPM をインストールしました。DHCP サーバは、
公開ネットワーク上のマシンがネームサーバとしてゲートウェイ
を利用するよう設定しています。
認証ゲートウェイの利用
認証ゲートウェイを利用するためには、クライアントに DHCP
を使用するように設定してください。そのマシンに SSH
クライアントをインストールして、ゲートウェイに SSH
でログインしてください。一旦ログインすれば、
内部ネットワークにアクセスが行えるようになります。以下は、unix
ベースのクライアントにおけるセッション例です。
bash>ssh zornnh@10.0.1.1
zornnh's Password:
gateway>
ログインした状態である限り、アクセスが可能です。ログアウトしてしまうと、
アクセスできなくなります。
追加の情報源
NASA における認証ゲートウェイの実装について説明した
文書
。
アルバータ大学において認証ゲートウェイを作成した方法を記述した
白書。
質問と答え
(your index root)!FAQ
(your index root)!frequently asked questions
ここは、頂いた質問のうち、多くの人達が同じように疑問を抱くだろう
と思われるものを集めていく場所です。本当に多くのフィードバック
を頂けたなら、本来の意味のFAQにしていきます。
日本語訳について
disk!japanese
日本語訳は Linux Japanese FAQ Project が行いました。
翻訳に関するご意見は JF プロジェクト <JF@linux.or.jp> 宛に連絡
してください。
0.03j
翻訳:
yomoyomo ymgrtq@ma.neweb.ne.jp
校正:
office さん office@ukky.net
佐野 武俊さん kgh12351@nifty.ne.jp
高橋 全さん arms405@jade.dti.ne.jp
早川 仁さん cz@hykw.tv