『KTH-KRB を使ってインターネット経由でアクセスする方法』 計算力学研究センター 技術開発部 桑村 潤 KTH-KRB(eBones:Kerberos4)を使ってインターネット経由でアクセスする方 法を、アクセスする側に立って、telnet を例に紹介します。 【注意】 この文書で "^D" の記述はキーボードのコントロールキーと "D" キー を同時に押すことを示します。 以後、次の条件を仮定します。 インターネット越しの端末のあるサイト: LOCAL Kerberos レルムのあるサイト: REMOTE レルムの名前: FOO.COM.JP FOO.COM.JP の Kerberos サーバ: kerberos.foo.com.jp LOCAL ホスト名: penty REMOTE ホスト名: peer ユーザ(プリンシパル)名: juk 1. 概要 REMOTE のマシンにインターネット越しのサイトから安全にアクセスす るための手順を、以下に簡単に説明します。 (1) REMOTE のピアーマシンとのセッションの認可を得るためのキーを取得し ます。 (2) セッションの安全を確保するために、REMOTE のピアーマシンとの間に 暗号化セッションを確立します。(暗号化フラグを立ててログインコマン ドの実行) 2. 準備 まず、レルム FOO.COM.JP の管理者に依頼してケルベロス・データベースに ユーザの記載を追加してもらいます。パスワードをもらったら、インターネッ トを経由しないネットワークから、そのパスワードを使ってそこのレルムのサー ビスを利用するためのチケットを取得し、実際にサービスが受けられることを 確認します。kpasswd でパスワードが変更できるかを確認すると良いでしょう。 それから、実際に利用するサービスを使ってみます。 つぎに、自分のサイトのマシンにケルベロス(あるいはケルベロスのトラベ ルセット)をインストールし、レルムの設定をします。設定ファイルは通常 /etc/ ディレクトリの下に置きます。 # cat > krb.conf FOO.COM.JP FOO.COM.JP kerberos.foo.com.jp admin server ^D # cat > krb.realms .foo.com.jp FOO.COM.JP ^D ケルベロス(あるいはケルベロスのトラベルセット)の使えるマシンは限ら れていますので、管理者に確認して下さい。 ※トラベルセットは ftp, kauth, kdestroy, klist, telnet からなります。 ケルベロスをインストールしたディレクトリ(例:/usr/athena/bin)を コマンドパスに入れます。 Cシェルの場合: % echo "set path = ( /usr/athena/bin $path )" > .cshrc.krb % source .cshrc.krb Bシェルの場合: $ echo "PATH=/usr/athena/bin:¥$PATH; export PATH" > .profile.krb $ . .profile.krb 3. LOCAL マシンから REMOTE へのアクセス ここでは、LOCAL サイトの端末 penty から、プロバイダ経由で peer との暗号化 セッションを安全に確立するのを順を追って説明します。 【注意】この節で文書の右側にある "<-" は入力操作のあることを示します。 ┌─────┐Kerberos サーバ │ kerberos │ └──┬──┘ │ レルム: FOO.COM.JP □──────┴─────────┬─────────┬─□ │ │ ┌──┴──┐ ┌──┴┐ │ peer │ │router│ REMOTE └─────┘ └┬──┘ ↑ │ -------- ¥ ↓ ¥ インターネット LOCAL / / ┌────┴┐ LOCALサイト端末 │ penty │ └─────┘ (0) TCP/IP のコネクションの確立(既に専用線などで接続されている場合や 自動的に接続される場合は必要ありません) 契約しているインターネット・プロバイダと自分のマシンとの間で TCP/IP の PPP 接続を行ないます。 (1) 発券許可証(チケット-グランティング・チケット)の取得 まず、kauth を使って発券許可証を取得します。kauth はパスワードを暗号 化したキーを KDC に提示して KDC からチケットをもらいます。これにより、 レルム FOO.COM.JP における発券許可証が LOCAL側のホストと REMOTE 側のホ ストとの双方に得られます。 111 juk@penty ‾> kauth -n juk -h peer.foo.com.jp <- juk@FOO.COM.JP's Password: ******** <- 112 juk@penty ‾> klist <- Ticket file: /tmp/tkt1001 Principal: juk@FOO.COM.JP Issued Expires Principal May 4 00:43:23 May 4 10:43:23 krbtgt.FOO.COM.JP@FOO.COM.JP (2) ケルベロス化 telnet による暗号化セッションの確立 次に、ケルベロス化された telnet を使って、ピアー間で暗号化セッション を確立します。KTH 版 telnet の実装では暗号化セッションのオプションは - x です。このオプションによるログインが成功すると、暗号化セッションが確 立されセッション中に入力するデータがすべて暗号化されてネットワークを流 れます。したがって、社内のマシンにログインするためのパスワードを安全に 入力できるわけです。 デフォルトの telnetd の設定では、ケルベロスによる認証が失敗すると OTP(One Time Password)あるいは通常のパスワードの入力を求めてきますの で注意が必要です。もしこの時点で、パスワードを聞いてきたら ^D で telnet を終了させて下さい。通常の telnet コマンドを利用した場合も同様 です。 11 juk@penty ‾> ./telnet -x peer.foo.com.jp <- Encryption is verbose Trying XXX.XXX.XXX.X... Connected to peer.foo.com.jp. Escape character is '^]'. [ Trying mutual KERBEROS4 ... ] [ Kerberos V4 accepts you ] [ Kerberos V4 challenge successful ] [ Input is now decrypted with type DES_CFB64 ] [ Output is now encrypted with type DES_CFB64 ] Last login: Sun May 4 00:45:24 from 202.213.131.136 peer:‾$ (4) アクセスの終了 peer:‾$ exit <- logout Connection closed by foreign host. 12 juk@penty ‾> (5) インターネット・プロバイダとの接続を終了(既に専用線などで接続され ている場合や自動的に接続される場合は必要ありません) 他に用がなければ、インターネット・プロバイダと自分のマシンとの間の 接続を切断します。