Mac OS X serverのOpen DirectoryにWindowsを参加させるためにpGinaをWindowsにinstallしてみました。
MacはWindowsのActive Directoryに参加出来ますし、Mac OS X serverのOpen Directoryは、上位にActive Directoryサーバーを置いて、その下にぶら下がることができます。
しかしこれですと、Active Directoryをマスターサーバーにしないといけない、つまりWindows Serverが必要です。MacがWindowsに合わせる形になります。Macが大半でWindowsが数台というような環境ではこれはありえません。(そもそも、MacがADに参加しても、Windows中心の設定をしているとMacに取っては非常に使いづらいことになるようです。私が経験したネットワークはそうでした)
Macのことだから何かWindowsクライアントが繋げられるようになっているんじゃないか、と思ったのですがどうもそうはなっていないようです。ちなみに、以前のServerではWindows NT 4.0型のPrimary Domain Controler (PDC)になることが出来たようです。これですとよかったのですが、Windowsが(公式には)Active Directoryに移行してしまったので廃止せざるを得なかったのでしょう。
去年('12年)の暮れにSamba 4.0の安定版がリリースされ、ここにActive Directory機能が載りました。Mac OS X serverがこれを取り入れればActive Directoryサーバー機能が出るかもしれませんが、今のところこれについて目立った情報はありません。
ということで、pGinaを試してみました。
pGinaは、オープンソースのLDAP(など)の認証機構です。LDAPサーバーがあればなんでもよく、従ってLinuxのネットワークでも使えます。Mac OS X serverのOpen DirectoryはLDAPもしゃべるので、pGinaを使って、ODにLDAPでぶら下がって、ネットワークアカウントを使う、という形にします。
感想
先に感想をいいますと:
- installは簡単
- 設定はLDAPがわかってないといけなくて難しいのですが、実際には「丸写し」で設定すればよし
- 機能的にはイマイチなところがあり、ネットワークから外れているとログイン出来ない(色々、やりくりは可能だが完璧な答えにならない)
- パスワードの変更が出来ない(変更しても実際には変わってない)('13.07.18. 追記)
というところです。
installと設定
参考にしたのは
Authenticate Windows clients in Open Directory using pGina | Mac4Schools
installは簡単で、pGinaのホームページからinstallerをダウンロードして、ダブルクリック。これで、ほぼ一発でinstall終わり。
設定は、"plugin selection"タブへ行き、LDAP pluginとlocalMachineの二つを設定します。
LDAP plugin
以下の場所を設定します:
- LDAP Host:
- Mac OS X serverのFQDN
- LDAP port:
- 初期値のまま389。
SSLを使うなら636 - Group DN Pattern:
- dc=のところをMac OS X serverのドメイン、サブドメインに
- User DN Pattern:
uid=%u,cn=users,dc=server,dc=example,dc=com
でdc=のところはMac OS X serverのドメイン、サブドメインに
localMachine plugin
- "scramble password after logout"をチェック
- "Only scramble when LocalMachine authentication ..."のチェックを外す
- "Never scramble the password for these accounts:"に、ネットワークに繋がっていない時も使いたいアカウントを登録。
最低限Administratorは登録すること
設定はこれで終わりですが、確認をするので、pGinaを開いたままにしておきます。
Simulation(ログインテスト)
"Simulation"タブへ行き、ODに登録されているuser IDとパスワードを入れ、緑のボタンを押してみます。これで下のResultに緑の、右上のpGIna Stageに三つとも緑のが付けばOKです。
よくあるエラーは、DNSサーバーの設定にMac OS X serverの名前が解決できるDNSサーバーが指定されていなくて、LDAPサーバーにアクセス出来ていないというのがあります。LDAP pluginの設定でLDAP HostにFQDNを指定した場合このFQDNを解決出来るDNSサーバー(Mac OS X serverとか)がちゃんとDNSの指定に入っている必要があります。そうでなければLDAPの指定にIPアドレスを直接いれれば回避出来ます。その場合dcはIPアドレスのドットで区切っている各数字を指定します。
テストが通ったら完成です。pGinaを閉じます。ログインパネルを出すと、pGinaのログインパネルに変わっています。
問題点
pGinaは、LDAPで認証に成功してログインすると、擬似的にローカルにアカウントを作るようです。これは普通では見えません。ここにパスワードもコピーされます。このため"scramble..."を指定しないと、LDAPのパスワードを変更しても、ローカルにコピーされた古い方のパスワードとマッチしてしまい、古い方のパスワードでログインが出来てしまいます。例えばパスワードが盗まれた、というのでパスワードを変更しても、これでは効果ありません。
"scramble..."は、logout後約1分すると、ローカルのパスワードデータを乱数に置き換えてしまうという方法で、これを防いでいます。しかしその副作用として、ネットワークから外したマシンではログインができなくなります(LDAPがつながらないのでLDAPで認証できない。その代わりのローカルのパスワードデータも壊してあるので認証出来ない)。Macでmobileアカウントというタイプのアカウントにすると、ODに繋がらなくても、最後のパスワードでログインができます。Active DirectoryのWindowsでも、設定で同じようなことが出来たと思います。これに相当する使い方が出来ないわけです。
"scramble..."しない場合(初期設定)、新しいパスワードでログインしようとすると、当然ローカルのパスワードとはマッチしませんので、LDAPと認証し、そして成功します。そうすると、ローカルのパスワードはこのLDAPにある新しいパスワードがコピーされますから、置き換わるわけです。ですので"scramble..."をしない場合は、LDAPのパスワードを新しくしたらすぐに一度Windowsでログインする必要があります。これは…せっかくログイン情報をサーバーに一元化した意味があんまり無い感じです。が、もしWindowsノートを使っている場合は、"scramble..."をオフにしておかないと、外出先などではログイン出来ませんから、こうやるしかないかもしれません。
('13.07.18.追記 - ここから)
pGina(Windows)からLDAPのパスワードを変更出来ません。Windowsの「パスワードの変更」でパスワードを変更しても、実際には変わっていません。MacかMac OS X server(のWorkgroup Manager)で変える必要があります。
('13.07.18.追記 - ここまで)
pGina は開発が止まってしまい、有志が GitHub で fork して pGina fork を作っています:
返信削除http://mutonufoai.github.io/pgina/
pGina fork の設定画面は少し違っています。pGina fork の設定についてはこれが参考になりました:
Let Windows use the Open Directory user authentication
https://lisowski-development.com/let-windows-use-the-open-directory-user-authentication/