pGina-2.Xを使ってみた

pGina(http://www.pgina.org/index.php/Main_Page)はWindowsのログインロジックを修正して、ログイン方法を変更するツールなのだが、今回はFreeIPAと組み合わせて使ってみた。検証にはwindows7 32bit版の試用版を使用した。

元々pGinaはWindowsXPまでのWindowsの機能(GINA)を使っていたのだが、Vista以降で動作が変化し、上手く動かない状態だった。(そのため、AD以外でWindowsのパスワードを集約管理する方法がほぼ皆無だった。。) pGina2.X系列で遂にVista以降の仕組みにも対応した形となる。
pGina自体はPluginを通じて動作するのだが、今回はLDAPと、Kerberos用のプラグインを使ってみた。

pGina本体のインストール

本家からダウンロードしてインストーラを叩くだけなので、特に問題は無かったはず。。

FreeIPAの構築

詳細は参考URLを参照。基本的には次の2コマンドを叩くだけである。(/etc/hosts, DNS等の設定が必要かも)

# yum -y install freeipa-server
# ipa-server-install

<<参考URL>>
http://obriend.fedorapeople.org/freeIPA2.0/Identity_and_Policy_Management_Guide/html-single/
FreeIPAはFedora15でメジャーバージョンが変わっており、動作が大きく変わっているので注意。。大きい変更としては、sssdと連携してオフラインキャッシュが出来たり、hbacの管理がWebコンソールから出来るようになっている。。

LDAP

LDAPのpGinaプラグインは、本家からダウンロードできる。インストールとして、プラグインファイル(dllファイル)をc:\program files\pgina\plugins 以下に置く必要がある。

インストールが終わった後、設定(スタート=>全てのプログラム=>Configure pGina から実施)として次を設定した。

モード: Searchモード
LDAPサーバー: IPAサーバーのIP
ポート: 389
adminユーザー,adminパスワード: adminの情報(実際には各LDAPユーザーでbindしているだけなので不要かも。。)
Filter: (cn=%s)
Context: dc=jp,dc=example,dc=org

なお、LDAPユーザーをローカルのユーザーとして作成するために、次の設定を行う必要があった。(こちらは次のKerberosの設定でも必要となる)

keep user profiles persistent: 有効 
replace plugin authenticated password with local password: 無効 

この状態でログオン画面から、LDAPユーザーでログオンできるはずである。(上手くいかない場合、次のログを確認。。 "c:\program files\pgina\doc\pgina.log")

Kerberos

Kerberosログインのプラグインも本家からダウンロードできる。マニュアルがドイツ語しかない w ので、正しい方法なのかわからないが、一応動作するところまでいったので、ここに書いておこう。。。
1. 事前にkfw-3.2.2 (http://web.mit.edu/kerberos/dist/index.html#kfw-3.2)をインストールしておく。c:\windows\krb5.ini を編集し、IPAドメインを指定し、次のコマンドでチケットが取得できるかを確認する。(上手くいかない場合、DNS, NTP, IPAサーバーの/var/log/krb5kdc.log等を確認。。) なお、klistでチケットを確認できるが、Windows7 デフォルトではWindows付属のklist が優先されるので、フルパスで指定する必要がある。

> kinit admin

2. ダウンロードしたファイルを展開すると、dllファイルが4つあるが、krb5plugin.dllをpGinaのプラグインフォルダに置くだけでよいらしい。(READMEの通り各ファイルをc:\windowsにコピーすると上手く動作しなかった。。)
3. この状態でpGinaの設定を行い、Pluginでkrb5plugin.dll を指定する。対応するドメインが表示されれば成功となる。
4. 一旦ログオフして、該当ドメインプリンシパルでログオンしてみる。ログオンが成功すれば上手く行っている。
なお、このプラグインでログオンした場合、デフォルトではkerberosのチケットは取得できず、明示的にkinitを実施する必要があった。また、WindowsデフォルトのCIFSは、MIT Kerberosのチケットを見ないらしく、このままだとSambaと連携することは出来ない。。orz (PuttyによるOpenSSHサーバーへの接続はパスワード無しで実施出来るため、こちらは連携出来ている, また、Linux同士だと、SambaにKerberosログインが出来ている)
なお、KerberosログインについてはWindows付属の機能を使った次の方法もあるようだが、こちらで試した限りでは、この方法ではログイン出来なかった。。(何故かKDCがクラッシュする。。 w )
http://freeipa.org/page/Implementing_FreeIPA_in_a_mixed_Environment_%28Windows/Linux%29_-_Step_by_step

SambaのFreeIPA追加については次を参照。Fedora15:FreeIPA, Samba, ScientificLinux6: smbcllient として、kerberosログインが出来ることを確認している。。 ( https://help.ubuntu.com/community/Samba/Kerberos ) 迷った点として、こちらの環境でkeytabの名前を変更したことに伴い、smb.confに次の設定を追加する必要が生じていた点があった。

1. dedicated keytab file = /etc/samba/cifs.keytab に変更
2. "system keytab" を "dedicated keytab"に変更

まとめ

現状 Windows CIFSのKerberos連携が出来ていない段階なのでなんなのだが、一応 pGinaを使うことでWindowsのIDとLinuxのIDを集約管理できそうだ。今までWindows, LinuxのIDを統一するには、WinbindでADにLinuxを追加するしかなかったので、これで構成の幅が広がるだろうか。。
なおファイルサービスについては、OpenAFSを使うことでKerberos化されたファイル共有が出来そうなのだが、こちらはまだ試していない。。他にFilezilla, WinSCP等もKerberosに対応しているようなので、単純にファイル転送が必要ならこちらを使えばよさそうだ。(ただし、エクセル等の"共有"機能を有効に活用するにはこれでは不十分なのだが。。)