2013年7月17日水曜日

WindowsをOpenDirectoryに参加させる - pGinaでOD/LDAPにbind

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と設定

参考にしたのは

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のログインパネルに変わっています。

Windows XP
Windows 8

問題点

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.追記 - ここまで)

1 件のコメント:

  1. 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/

    返信削除