2011年10月7日金曜日

mod_auth_kerb で統合認証

1.構成について


ドメイン名:foo.local
ドメイン・コントローラ:dom1.foo.local, dom2.foo.local
DNSサーバ:dom1.foo.local, dom2.foo.local
大文字ドメイン名:FOO
Windows Server は 2003 Server 以上を想定して書いている。
これに対し、CentOS で Apache環境を構築し、連帯する

2.必要モジュールのインストール

$ yum install mod_auth_kerb

3.Windows Domain Server 上での作業

ドメインのユーザとして、kerblinux1というアカウントを作成します。このアカウントは、統合認証のためだけに使用されるので、パスワードを入力する事がありません。よって、パスワードは長くして耐久性を持たせるようにします。
C:\>ktpass 
 –princ HTTP/linux1.foo.local@FOO.LOCAL 
 –mapuser kerblinux1@FOO.LOCAL
 -crypto RC4-HMAC-NT
 -ptype KRB5_NT_PRINCIPAL
 -pass nagai.nagai.password.wo.sextutei.suru
 -out e:\USBDISK\linux1.keytab
として、統合認証で必要なアカウントのkeytabファイルを作成します。

4.Kerberos設定

/etc/krb5.confを設定します。
[libdefaults]
 default_realm = FOO.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_life_time = 24h
 forwardable = yes

[domain_realm]
 foo.local = FOO.LOCAL
 .foo.local = FOO.LOCAL

[realms]
      # 実験した環境では、dom1.foo.local とURIをフル修飾すると
      # サーバを正しく認識しなかった。
 FOO.LOCAL = {
  kdc = dom1
  kdc = dom2
  admin_server = dom1
 }
手順 3. で作成した linux1.keytab ファイルを /etc/httpd/conf にコピーします。
$ cp /usbdisk/linux1.keytab /etc/httpd/conf/linux1.keytab
$ chown apache:apache /etc/httpd/conf/linux1.keytab
$ chmod 640 /etc/httpd/conf/linux1.keytab
実際にケルベロス認証が通るかチェックを行います。valid_user は、実際の有効なアカウントに置き換えて試します。
$ kinit valid_user@FOO.LOCAL

5.Active DirectoryでのSSPI認証

認証すべきディレクトリに、以下の設定を施します。ここでは、”.htaccess”というファイルを作成し、そこに制約を加える事にします。この他に、httpd.conf のディレクティブとして記述する方法もありますが、基本は変わりません。
AuthType           Kerberos
AuthName           "Kerberos Login"
KrbAuthRealms      FOO.LOCAL
KrbServiceName     HTTP/linux1.foo.local
KrbMethodNegotiate On
KrbMethodK5Passwd  Off
Krb5KeyTab         /etc/httpd/conf/linux1.keytab
Require            valid-user
これで、「統合Windows認証を使用する」設定になっている(IEデフォルトのようです)Internet Explorerからアクセスすると統合認証でアクセスされるようになります。尚、ゾーンがイントラゾーンかどうかの判定には、URL に「.」が含まれているかどうか?が基準となっているようです。よって、本例では、「http://linux1.foo.local/」ではなく「http://linux1/」でアクセスしないとシングルサインオンになりません。

6.認証後のアクセス制限に関して

 mod_auth_kerbによる統合認証では、認証が通っても、あくまでActiveDirectoryに認証してもらった正規のユーザ名の情報がセットされるのみです。ウェブ上のシステムでは、このユーザ名をキーとして、権限の制約を別途管理する事になります。


参考文献
http://grolmsnet.de/kerbtut/
http://www.dokuwiki.org/auth:ad


追伸:Bloggerプレビューできねぇーぜ、どうやって確認すんねん???くっそー

0 件のコメント: