「Kerberos 5応用編」
# 初出: Software Design Jul.2004 「ネットワーク認証システムKerberos活用術」


ここでは、日本におけるKerberosの普及状況、
Kerberos 5が稼働するプラットホームの対応につ
いて述べて、最も簡単にKDCを構成できる 
Windows Server 2003 の ActiveDirectoryサーバ
のインストールについて説明します。


## 日本におけるKerberosの普及状況

KerberosはMicrosoftもActiveDirectoryの認証系
に採用した米国ではデファクトスタンダードのネッ
トワーク認証システムですが、残念ながら、日本
ではほとんど普及していませんでした(ただし、
一部の外資系企業では使われているそうです)。
MITのプロジェクトAthenaでは分散コンピューティ
ング環境(DCE)の研究の一貫として、可用性を高
めるためのX Window Systemと並行して、セキュ
リティを高めるためのKerberos認証システムの開
発も行なっていました。その成果として、
Kerberos 4 が公開されることになりましたが、
当時日本では米国の輸出規制のため、暗号モジュー
ルにDESを使ったKerberos 4を輸入することはで
きず、暗号化のないバージョン(Bones)の実装し
かワークステーションメーカーのOSには含まれて
いなかったため、シングルサインオンのような環
境を実現する認証システムとしてはセキュリティ
が低く、より設定が簡単な r-系(リモート) コマ
ンドやNISが代わりに使われ、Kerberosが普及す
ることはありませんでした。


## 国際化版のKerberos

## Kerberos 4

こうした状況の中、スウェーデンのKTH(The
Royal Institute of Technology in Stockholm) 
でeBones(Bonesに Erick Youngが作り直したDES 
を付け加えたバージョン)をもとに改良された
KTH-KRB4をダウンロードすることは可能で、ほと
んどのUnix系OSで稼働させることができ、ケルベ
ロス化されたtelnet,ftp,popの実装を利用するこ
とができました。また、KTHからKTelnetという
Windows版クライアントも提供されていましたの
で、日本語に不自由はあるものの、キャラクタ端
末ベースでのシングルサインオンというのがかな
り限定的には実現できていました(KTelnetには 
ktelnet, kftp, kpopproxyが含まれていました)。


## Kerberos 5

Kerberos 4プロトコルの暗号化モジュールはDES 
に固定されていました。シングルDESは米国標準
暗号でしたので、これが、輸出規制にひかかる理
由でもあったのですが、この数年来DES Charange
などの懸賞付きコンテストで破られたこともあり、
最近では安全とは言われなくなりつつあります。
そこで、Kerberos 5プロトコルではプロトコルの
改良とともに、暗号化モジュールを自由に選ぶこ
とができるようになりました。Microsoftは、
ActiveDirectoryの認証システムにKerberos 5を
採用しましたが、従来のパスワードシステムから
の移行をスムーズにするためと暗号システムの輸
出規制への配慮から暗号化方式のデフォルトには
RC4を採用しました。これに追従して、MIT
Kerberos 5 もKTH Heimdalも現在の最新版ではこ
の暗号化方式にも対応しています。


## Kerberos 5のプラットホーム

今では、Kerberos 5によってマルチプラットホー
ムでのシングルサインオンのための認証システム
を実現することができるようになっています。既
に米国ではMITがKerberos 5のWindowsやMacに対
応したバイナリを用意し、MITサイトからダウン
ロードして利用可能でしたが(米国とカナダの国
内において)(*1)、日本にいてそれをダウンロー
ドすることは輸出規制のためにできませんでした。
最近は、MIT版を米国とカナダ国外から(日本か
らも)ダウンロードできるサイトも用意されてい
るようです。

そんな折、この数年のうちにMicrosoftがWindows
2000以降、ActiveDirectory の認証系にKerberos
5を採用したり、AppleのMac OS X 10.2以降でも、
MIT Kerbeors 5 がOS に取り込まれるなど
Kerberos 5 によるシングルサインオンが、にわ
かにに実現可能となりました。これらのOSの
Kerberos 5ではチケットのキャッシュをメモリに
持たせるなど、セキュリティ強化のために独自の
改良も加えられています。また、KerbNetを開発
していたCygnus Solutionsを買収したRed Hatの
Red Hat Linux にもMIT Kerberos 5が組み込まれ
るようになりました。米国輸出規制の緩和で、
MIT KerberosをOSに組み込んで輸出するベンダー
も増えました。その他、Sun, HP, IBMなど大手の
コンピュータベンダーもそれぞれの持つOSに
Kerberosを実装しています(表1)。

一方、FreeBSD,OpenBSD,NetBSDやDebian Linuxな
どオープンソース系のUNIX互換OSのディストリ
ビューションでは、国際化版で自由にダウンロー
ドのできるKTH Heimdalを組み込むことが多いよ
うです。筆者も、米国政府の規制にからむ法的な
問題に関わりたくないため、Plamo Linuxのパッ
ケージにはKTH-KRB4とHeimdalを採用してきまし
た。この記事を執筆時点でHeimdal のバージョン
は 0.6.2 ですが、既に実際に使えるものとなっ
ています。

(表1) コンピュータベンダのKerberos対応(*3)
Sun Microsystems
   Solaris 8, 9, 10 (SEAM: Sun Enterprise Authentication Mechanism)
      http://wwws.sun.com/software/solaris/8/ds/ds-seam/
Hewlett-Packard Company
   HP-UX 11i(Kerberos Server Version 2.0)
      http://www.hp.com/products1/unix/operating/security/index.html
   OpenVMS Alpha version 7.2-2以降(Kerberos version 2.0)
      http://h71000.www7.hp.com/openvms/products/kerberos/index.html
IBM
   AIX 4.3.3, 5.x(Network Authentication Service)
      http://www-1.ibm.com/servers/aix/products/bonuspack/aix433/details.html
   mainframe zOS V1 R2
      http://www.redbooks.ibm.com/redbooks/SG246235.html
   OS/400 V2 R5
      http://www-912.ibm.com/supporthome.nsf/document/27912622

(*1)
MITのKerberosページ  http://web.mit.edu/kerberos/www/
(*2)
KTHのHeimdalページ  http://www.pdc.kth.se/heimdal/
(*3)
WRQ社サイトより      http://support.wrq.com/techdocs/1387.html



### ActiveDirectory サーバの構成手順

Windows Server 2003 の Windowsドメインコント
ローラは、情報をLDAPに格納し、認証にKerberos 
を用いるActiveDirectoryになっています。
Windows Server 2003では、ActiveDirectoryのサー
バとして構成するためのウィザードが用意されて
いて、KDCを新規に構成、すなわち、
ActiveDirectoryのサーバーとして構成すること
が簡単にできます。ここでは、ローカルネットワー
クに繋がったマシンでその手順を説明します。た
だし、Windows Server 2003 OS のインストール
については触れません。


## サーバ構成ウィザード

ログインをすると、(図1)のような「サーバの
役割管理」のウィンドウが現れます(出ない場合
は、スタートボタンを押して[サーバの役割管理]
を選びます)。


図1「サーバの役割管理」のウィンドウ

次に、「役割を追加または削除する」をクリック
します。「サーバの構成ウィザード」が起動し、
最初の準備作業のウィンドウが表示されますので、
各項目について確認して[次へ(N)>]のボタンを押
すします。サーバの構成ウィザードはネットワー
クの設定を検出し、ローカルネットワークが検出
されると、(図2)のように構成オプションのウィ
ンドウが表示されます。


図2 「サーバの構成ウィザード」の「構成オプション」のウィンドウ

ここでは、「最初のサーバーの標準構成」を選ん
で、[次へ(N)>]のボタンを押します。(図3)の
ようなActive Directory ドメイン名の指定のウィ
ンドウが表示されます。


図3 「サーバの構成ウィザード」の「Active Directory ドメイン名」のウィンドウ

ここでは、自分が構成したいドメイン名を指定し
(example.comとして説明をします)、[次へ
(N)>] のボタンを押します。(図4)のような
NetBios 名を指定するウィンドウが表示されます。


図4 「サーバの構成ウィザード」の「NetBios 名」のウィンドウ

ここでは、NetBIOS 名を指定し(EXAMPLEとしま
す)、[次へ(N)>] のボタンを押します。(図5)
の選択内容の概要が表示されます。内容を見ると、
DHCP サーバをインストールするとあります。こ
の構成ウィザードでは、ネットワークに必要な
DHCPとDNSのインストールも自動的にやってくれ
ます。


図5 「サーバの構成ウィザード」の「選択内容の概要」のウィンドウ

選択内容の確認をして[次へ(N)>]を押すと、(図
6)のように「選択を適用しています」が表示さ
れ、処理中にコンピュータが再起動するというダ
イアログが出ますので、[OK]ボタンを押します。
(OSのCDROMがセットされていることが必要にな
ります。)


図6 「サーバの構成ウィザード」の「選択を適用しています」のウィンドウ

この後、コンポーネントの構成が行なわれ、
「Active Directory の構成ウィザードが自動的
に起動され」、Active Directoryの構成が行なわ
れます(図7)。


図7 Active Directoryインストール中のダイアログ

DNSサーバとDHCP サーバの構成がおこなわれて、
マシンは自動的にリブートされます。

再びログインをすると、(図8)のようなサーバ
構成の進行状況が表示され、サーバの構成が完了します。


図8 「サーバの構成ウィザード」の「サーバーの構成の進行状況」のウィンドウ

サーバの構成が完了したことを確認して、[次へ
(N)>] を押すと、(図9)のように「サーバの構
成が完了しました」と表示され、作業は終了です。


図9「サーバの構成ウィザード」の「サーバの構成が完了しました」のウィンドウ

が表示され、最後に[完了]ボタンを押すと、「サー
バの構成ウィザード」は終了し、再び「サーバの
役割管理」のウィンドウが表示されます。このウィ
ンドウにはドメインコントローラ、DNSサーバ、
DHCPサーバの役割構成のメニューが追加されてい
ます。


## 既存のネットワークでの構成

サーバ構成ウィザードによる構成では、ほとんど
のネットワーク情報が自動的に割り当てられ、
192.168.0.0 のネットワークとして構成されます。
もし、既存のネットワークのドメインコントロー
ラにしたいのであれば、dcpromo.exe を実行して
行なってください。参考文献の「Kerberos」に
はその構成の手順が載っています。


## ユーザプリンシパルの登録

ActiveDirectory サーバ構成後の(図10)のよ
うな「サーバの役割管理」のウィンドウから、
「ドメインコントローラ(Active Directory)」の
項目のところの「Active Directory のユーザー
とコンピュータを管理する」というリンクを選択
します。


図10 ActiveDirectory サーバ構成後の「サーバの役割管理」のウィンドウ

「Active Directory ユーザーとコンピュータ」
ウィンドウが現れます。ドメイン(ここでは 
example.com)を選択して、[Users]で右ボタンを
クリックをして、[新規作成] -> [ユーザー] を
選びます。

そうすると、「新しいオブジェクト - ユーザー」
のダイアログが現れますので、ユーザのログオン
名を指定します。Active Directoryのドメインが
Kerberosレルムに対応します。ここで指定するユー
ザーログオン名がKerberosのユーザプリンシパル
に対応します。

[次へ(N)]のボタンを押して、次のダイアログで
パスワードとそれに関する設定をして、さらに
[次へ(N)] を押すと、設定内容がリストされます
ので[完了] を押して終了します。ただし、パス
ワードの強度が十分でない場合は、ここでエラー
ダイアログが表示されますので、確認をし、[戻
る]を押してパスワードの指定からやり直す必要
があります。

## Unixクライアント利用上の注意

注意すべき点は、Windows Active Directoryでは、
鍵の暗号化方式のデフォルトがRC4ということで
です。歴史的にKerberosの暗号化の鍵はDESが標
準的に使われていたため、Unix系のKerberosとの
相互運用においては、鍵の暗号化方式に注意しま
す。(図11)のようにActive Directoryのユー
ザーのプロパティーで、ユーザの暗号化鍵を
Kerberosではより一般的なDES鍵を使うように指
定するか、あるいは、Unix クライアント側でRC4
暗号化鍵対応のリリース(MITもHeimdalも最新版
では対応済み)を使うようにします。


図11 ユーザのプロパティ

また、Unixでサービスを提供するためには、その
Unixホストにkeytabを設置しなくてはならないの
ですが、Active Directory からkeytabを作るた
めには、特別のプログラムを必要とします。この
プログラムは標準ではインストールされていない
ため、Windows 2003 Installation CD の 
support/tools フォルダーからインストールする
必要があります。

さらに、そのサービスプリンシパルのために、
Active Directory内のユーザーアカウントが必要
となります。しかし、Active Directoryは
Kerberos方式のプリンシパル名のフォーマットを
扱わず、Active Directoryユーザー名に
OU(Organization Unit) 名を付け加えた形で表さ
れる。Windowsは '/' などの特殊文字をユーザー
名の中に使えないので、Kerberosプリンシパルの
インスタンスを表すことができません。このため
にActive Directory内のユーザー名とプリンシパ
ル名とのマッピングを行なう、ktpass というプ
ログラムが用意されています。


### 最後に

紙面の都合で、ここで詳細には触れませんが、興
味を持たれた読者の方は参考文献などを参照して
クロスプラットホームのシングルサインオン環境
を実現してみてください。なお、何年か前にシンク
ラボという会社の方と始めたメーリングリストが
あります。このMLの案内は、

http://www.krb-jp.org/mailman/listinfo/krb-jp
にありますので、是非、情報交換に使ってください。


参考文献

「Kerberos」、Jason Garman, 桑村潤/我妻佳子訳(オライリー)
「Kerberosネットワーク認証システム」、Brian Tung, 桑村潤訳(ピアソン・エデュケーション)
「ファイアウォール&ネットワークセキュリティ実戦テクニック」、技術評論社第2編集部(技術評論社)
「認証技術パスワードから公開鍵まで」、Richard E. Smith, 稲村 雄監訳(オーム社)
「詳説Active Directory」、Alistair Lowe‐Norris, 山本 浩/アクロバイト/イエローレーベル(オライリー)

WRQ社サイトより      http://support.wrq.com/techdocs/1387.html