![]() |
Krb5OSX |
|
Menu
★ Kerberos
★ リンク集
暦
最新の20件2006-04-032006-01-302005-09-282005-04-282004-10-282004-09-262004-09-102004-08-232004-07-142004-06-102004-05-142004-04-202004-04-062004-02-042003-12-18 |
Mac OS X での Kerberos5 ↑
Mac OS X 10.2 以降、MIT Kerberos 5 for Mac(KfM)は OSにバンドルされました。したがって、最新の Mac を買えば Kerberos 認証が利用できるのです。このページでは、iBook G4 をテストプラットホームとして Kerberos 5 認証のテストを行なった手順と結果について記述します。 その前に ↑
root になる ↑
ファインダで(アプリケーション→ユーティリティ→ターミナルにて)Terminal を開き、(通常ユーザの場合はマシンの管理ユーザに su してから)sudo でシェルを起動します。 $ sudo bash
レルム(realm)の構成を決める ↑
ここでテストする Kerberos 5 のレルム(管理領域)について以下のようにします。
ここでは、1台のマシンに認証サーバとアプリケーションサーバを設定し、同じマシンのクライアントからアクセスをするテストにとどめます。 認証サーバとしては、KDC(Key Distribution Center)を演じる krb5kdc デーモンと管理サーバの kadmind を走らせます。 また、テスト用のアプリケーションサーバとしては、Telnet デーモンを走らせます。 DNSにKDCマシンを登録 ↑
DNSサーバに KDCマシンとする osx.kuwamura.jp を登録しておきます。IPアドレスはKDCにするマシンのターミナルで、 ifconfig コマンドを実行して確認しましょう。Ethernetを使っている場合のインターフェースは en0 になっているはずです。 DNSサーバの登録と再起動を行なったらアドレスを引けるか確認しておきます。 # host osx.kuwamura.jp
KDCの設定 ↑
KDB(Kerberos Database)ディレクトリの作成 ↑
Macにバンドルされている Kerberos は /var/db/krb5kdc を Kerberos Database を置くディレクトリにしています。このディレクトリにACL(アクセス制御リスト)ファイルなんかも置くことにします。 # mkdir /var/db/krb5kdc # chown root /var/db/krb5kdc # chmod 700 /var/db/krb5kdc
Kerberos 5 構成ファイル ↑
デフォルトの Kerberos 5 の構成ファイルは /etc/krb5.conf です。そのマシンのデフォルトのレルムやサーバ、さらに、ログの出力先などの指定を行ないます。 KDC 構成ファイル ↑
デフォルトの KDCの構成ファイルは /etc/kdc.conf です。そこで走るKDCや管理サーバのデフォルトの設定を行ないます。 レルムの作成 ↑
新しくつくるレルムの構成ファイルの設定ができたら、KDB(Kerberos Database)を作成してレルムをつくります。 # kdb5_util create -s
このコマンドを実行するとスタッシュファイルに保存されるマスターパスワードを訊かれるので、タイプ入力します。スタッシュファイルは "/var/db/krb5kdc/.k5.レルム名" に作成される。"principal" という名前の KDB も同じディレクトリにつくられるので、ls コマンドで確認しておくと良いでしょう。 # ls -l /var/db/krb5kdc/
KDCの起動 ↑
これで、基本となるプリンシパルを含む新しいレルムのKDBができあがったので、あとはKDCデーモンを起動することで、認証を行なう準備が整います。KDCデーモンは krb5kdc という名前のプログラムで引数なしで実行できます。 # krb5kdc
管理プリンシパルの登録 ↑
kadmin.local を起動し、管理用プリンシパルを登録します。登録された管理用プリンシパルで認証することにより、リモートから kadmin を起動して、KDCの管理デーモン(kadmind)に接続してプリンシパルの管理をできるようになる。kadmin.local は kadmind に接続することなく直接 KDBにアクセスするためのプログラムです。 kadmin.local ↑
# kadmin.local Authenticating as principal root/admin@KUWAMURA.JP with password. kadmin.local:
kadmin.local を起動すると "kadmin.local:" のプロンプトが表示される。このプロンプトから、listprincs コマンドを実行すると登録されているプリンシパルをすべて表示できます。 kadmin.local: listprincs K/M@KUWAMURA.JP kadmin/admin@KUWAMURA.JP kadmin/changepw@KUWAMURA.JP kadmin/history@KUWAMURA.JP krbtgt/KUWAMURA.JP@KUWAMURA.JP
この状態で表示されたプリンシパルは、上記の "kdb5_util create -s" コマンドで初期化したときに登録されたものです。 管理用プリンシパルの登録 ↑
現在 Mac にログインしているユーザアカウント(juk)の admin インスタンスを登録し、管理用プリンシパルにします。この管理用プリンシパルは juk/admin という名前になります。 kadmin.local: addprinc juk/admin
パスワードを入力して登録を完了する。登録したプリンシパルは listprincs コマンドで表示できます。 管理用プリンシパルのACL設定 ↑
ACL(アクセス制御リスト)ファイル /var/db/krb5kdc/kadm5.acl に管理用プリンシパルのを設定します。ここでは、ワイルドカード(*)を使ってすべてのパーミッションを与えます。 # vi /var/db/krb5kdc/kadm5.acl
ACLファイル内では空白文字(スペースやタブ)が意味を持つため余計な空白文字が混入しないように気をつけましょう。 kadmind 用 keytab の生成 ↑
ふたたび、kadmin.local に戻り、ktadd コマンドを実行して kadmind 用の keytab を生成します。この keytab ファイルは、KDBと同じディレクトリに kadm5.keytab という名前に生成します。 kadmin.local: ktadd -k /var/db/krb5kdc/kadm5.keytab kadmin/admin kadmin/changepw kadmin.local: quit
これで、kadmind を起動することで、kadmin プログラムをリモートで起動して kadmind にアクセスする準備ができたことになります。 # kadmind
kadminでのプリンシパル登録 ↑
kadminを起動して、KDCのkadmindにアクセスして、他のプリンシパルも追加してみます。 まず、juk/admin プリンシパルのためにKerberos TGT(Ticket Granting Ticket)を取得するのですが、ここではエラー("Kerberos Login Failed: Unknown Error Code: 223")になってしまいます。このエラーは認証に成功した後(認証に失敗すると、"Password incorrect"というようなメッセージが出力されます)に起きるエラーのようです。再び、パスワードを訊いてくるので、"^C"(キーボードのcontrolとCを同時に押して)でキャンセルします。 直接 kadmin を実行して、先に設定したパスワードを入力すると kadmin: プロンプトになりkadminコマンドを実行できるようになります。 $ kadmin kadmin: listprincs
ここでは、juk というユーザプリンシパルを追加してみます。 kadmin: addprinc juk
アプリケーションサーバ ↑
hostプリンシパルの登録 ↑
続いて、後で説明するアプリケーションサーバの設定に必要なホストプリンシパルの追加をします。ホストプリンシパルの登録には addprinc に -randkey オプションを指定して、ランダムパスワードをその都度生成するようにします。 kadmin: addprinc -randkey host/osx.kuwamura.jp
ここでは、KDCと同じ osx.kuwamura.jp をインスタンスとしていますが、本来はアプリケーションを走らせるマシンで、kadmin を起動してそのマシンのホスト名をインスタンスとして指定します。 そして、keytab ファイルを生成してアプリケーションサーバプログラムの鍵を追加します。 kadmin: ktadd host/osx.kuwamura.jp@KUWAMURA.JP
デフォルトの keytab ファイルは /etc/krb5.keytab となります。 INETデーモンへの登録 ↑
Mac OS X では、inetd プログラムのかわりに xinetd プログラムが INETスーパデーモンとして使われてます。xinetd は inetd.conf のかわりに /etc/xinetd.conf および、/etc/xinetd.d/ ディレクトリ下のファイルを構成ファイルとして読み込みます。たとえば、telnet デーモンの構成は /etc/xinetd.d/telnet ファイルにて、ssh デーモンの構成は /etc/xinetd.d/ssh ファイルにて行ないます。これらの構成ファイルの中で、初期状態では、"disable = yes" となっていて起動しないようになっています。これを有効にするには、/sbin/service コマンドを使います。 # service telnet start # service ssh start
これで、xinetd の各サービスの構成に有効のフラグをたてて、xinetd を初期化して、サービスを受け付けるようになる。 簡易テスト ↑
ユーザアカウントでは、プリンシパルの初期チケットの取得に失敗するため、root でチケットを取得してテストをしてみました。 # kinit juk
パスワードを省略するオプション -a を付けて telnet を実行してみます。 # telnet -a -l juk osx.kuwamura.jp Trying 192.168.2.25... Connected to osx.2.168.192.in-addr.arpa. Escape character is '^]'. login:
チケットは取得できているにもかかわらず、Kerberos 認証は行なわれていないようでした。klist で確認しても、kinit で取得した krbtgt 以外のチケットはなく、また、念のため少し時間を置いて再度実行してみた後にログファイル /var/log/krb5kdc.log を確認しても、そのタイミングでのアクセス記録は残されていませんでした。(Kerberos 認証していないようです。telnet サーバのオプション指定が必要?) 次に、ssh を試してみます。sshd デーモンの構成を修正して、 # vi /etc/sshd_config
Kerberos 認証をするように変更します。 KerberosAuthentication yes
ssh によるテスト(ssh コマンドのかわりに slogin コマンドを使ってもかまいません)。
osx:~ juk$ kinit
Please enter the password for juk@KUWAMURA.JP:
osx:~ juk$ klist
Kerberos 5 ticket cache: 'API:Initial default ccache'
Default Principal: juk@KUWAMURA.JP
Valid Starting Expires Service Principal
02/01/04 16:25:14 02/02/04 02:25:14 krbtgt/KUWAMURA.JP@KUWAMURA.JP
renew until 02/01/04 16:25:14
osx:~ juk$ ssh juk@osx.kuwamura.jp Welcome to Darwin! osx:~ juk$ exit
osx:~ juk$ klist
Kerberos 5 ticket cache: 'API:Initial default ccache'
Default Principal: juk@KUWAMURA.JP
Valid Starting Expires Service Principal
02/01/04 16:25:14 02/02/04 02:25:14 krbtgt/KUWAMURA.JP@KUWAMURA.JP
renew until 02/01/04 16:25:14
02/01/04 16:25:31 02/02/04 02:25:14 host/osx.kuwamura.jp@KUWAMURA.JP
renew until 02/01/04 16:25:14
Extrasクライアント ↑
MIT Information System の Macintosh Development には、 Kerberos for Macintosh (KfM) があります。 現在の KfM のバージョンは 5.0 で、 Mac OS X 10.3 にはバンドルされています。KfM は Kerberos v5 と Kerberos v4 のプロトコル、GSSAPI の他、グラフィカルなログインインターフェースを含んでいます。Kerberos Extras をインストールすると、グラフィカルインタフェースのリンクが「ユーティリティ」フォルダにつくられます。 ![]() (すなわち、 '/System/library/CoreServices?/Kerberos/' の下から '/Applications/Utilities/' の中へリンクされます)。 このユーティリティを使うと GUIから kinit などのコマンドを実行することが可能になります。 このユーティリティの構成ファイルは MITの Kerberos と違うMacの慣例に従った場所('/Library/Preferences/edu.mit.Kerberos')に配置されるため、インストールしたままでは、MITのユーザ向けの設定になっているため、ローカルな構成ファイルをコピーして利用する。 # cp /etc/krb5.conf /Library/Preferences/edu.mit.Kerberos
Kerberosグラフィカルチケットユーティリティ Kerberosチケットマネージャ ↑###ref() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||