samba4でWindowsとLinux認証統合/ADのopenldapでLinux認証


ADのopenldapでLinux認証

前回ADアカウントでLDAP認証をしてみましたが、なんかいろいろ気持ち悪さを感じたところで終了しました。
で、結局のところWindows向けのAD認証とLinux向けのLDAP認証を分ければいいんじゃないかと思った次第ですが、それならADのopenldap内にLinux認証用にしか使わないツリーを作っちゃえばいいんじゃね?っていうのが今回の主旨です。

例によってsambaADが立ってるのは前提です。

ユーザー、グループ追加

ldap管理ツールで追加します。
basednはdc=example,dc=co,dc=jp、ログインアカウントはcn=Administrator,cn=Users,dc=example,dc=co,dc=jpとしてログインしましょう。

ログインできたら適当にオブジェクトを追加します。
とりあえず cn=Linux,dc=example,dc=co,dc=jp とかにしておきましょう。
自分はLDAP Adminとかいうツール使ってやったので厳密には分かりませんが、ldifにするとこんな感じでしょうか。※このldifがそのまま使えるかは未検証です
dn: cn=Linux,dn=example,dn=co,dn=jp
objectClass: container
cn: Linux

containerにはいくつか必須属性があるんですが、(少なくともLDAP Adminにおいては)特に指定しなくても勝手に値を生成して作ってくれるようです。
cnだけは記述する必要がありそうっていうか、cn自動生成されても嫌な感じですね。

で、追加したら更にその下にUsersとGroupsのオブジェクトでも作っておきますか。※このldifがそのまま使えるかは未検証です
dn: cn=Users,cn=Linux,dn=example,dn=co,dn=jp
objectClass: container
cn: Users

dn: cn=Groups,cn=Linux,dn=example,dn=co,dn=jp
objectClass: container
cn: Groups

そしたらグループ追加。※このldifがそのまま使えるかは未検証です
dn: cn=UnixUsers,cn=Groups,cn=Linux,dn=example,dn=co,dn=jp
objectClass: posixGroup
cn: UnixUsers
gidNumber: 10000

ユーザーも追加。※このldifがそのまま使えるかは未検証です
dn: cn=UnixUser,cn=Users,cn=Linux,dn=example,dn=co,dn=jp
objectClass: account
objectClass: posixAccount
cn: unixuser
uid: unixuser
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/unixuser
userPassword: password
loginShell: /bin/bash

以上でユーザーとグループ追加は完了です。

ldapクライアントインストール、設定

続けてユーザーがログインするノード側の作業です。

これらのインストール
# yum install openldap-clients pam_ldap nss-pam-ldapd

authconfig-tuiでこんな感じに認証設定の変更を行います。
# authconfig-tui

ユーザー情報
[ ] キャッシュ情報
[*] LDAP を使用
[ ] NIS を使用
[ ] IPAv2 を使用
[ ] Winbind を使用

認証
[ ] MD5 パスワードを使用
[*] シャドウパスワードを使用
[*] LDAP 認証を使用
[ ] Kerberos 5 を使用
[ ] 指紋リーダーを使用
[ ] Winbind 認証を使用
[*] ローカル認証で十分

サーバー: ldap://[sambaADのアドレス]/
ベースDN: cn=Users,cn=Linux,dc=example,dc=co,dc=jp

⇒OK

更に/etc/nslcd.confを編集し、以下の行を追加します。
binddn cn=administrator,cn=Users,dc=example,dc=co,dc=jp
bindpw ********
binddnに関しては一応administratorにしましたが、DomainAdminsに入っているユーザーであれば大丈夫です。
接続するだけならADユーザーであれば何でも大丈夫みたいです。
bindpwの部分はbinddnで指定したユーザーのパスワードを平文でそのままクォーテーション等付けずに入力して下さい。

nslcdを再起動します。
# systemctl restart nslcd

これは必須ではないですが、ホームディレクトリを自動作成する設定にしておきます。
# authconfig --enablemkhomedir --update

結果

で、ここまでやった結果idコマンドでのアカウント情報確認やrootアカウントから su でのユーザー切り替えはできるものの、SSHを含むパスワード認証を使うケースでのログインができない状態だった。

結論から言うとこちらのサイトに書かれているように、ADのopenldapは通常のopenldapとは違ったパスワード保持の仕方をしていたためでした。

sambaのログレベル上げたらshadowAccountのオブジェクトクラスを検索していたり、パケットキャプチャーしたら simple bind failed NT_STATUS_UNSUCCESSFUL のエラーが出ていたりと紆余曲折ありましたが、最終的には無事sambaADでのLDAP認証が役に立たないということが判明致しました。

やっぱり構成はシンプルが一番ですね。
素直にサーバー2台にするかIPアドレスを追加して対応することにします。




  • 最終更新:2016-01-26 11:08:52

このWIKIを編集するにはパスワード入力が必要です

認証パスワード