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