LDAPでホストへのアクセスを制限する
LDAPを用いてホストごとでのアクセスを制限する方法の備忘録。
続きは↓へ
参考URL
LDAPサーバ側の設定
参考URLによるとLDAPサーバ側のユーザにdescriptionを追加するようだ。
自分は1台1台に制限をかけようと思ったので、descriptionにはサーバ名を書く方法で行こうと思った。
dn: cn=dev_user,ou=development,ou=People,dc=example,dc=com
add: description
description: server01
description: server02
ldapmodifyなどで上記を追加する。
新規にサーバとかが増えたらdescriptionなどを足していく方針。
クライアント側の設定
クライアントになるサーバのldap.confに以下の記述をする
pam_filter &(objectclass=posixaccount)(|(description=server01) (description=root))
descriptionにサーバ名を入れることにした。
また、管理者は必ず入れるようにもしといた。
これだけでいけるようになるはず。
めでたしめでたし
おまけ:pam_check_host_attr yesについて
クライアント側のldap.confにて「pam_check_host_attr yes」を設定すると以下の様なフィルターとおなじになるらしい。
cf : [LDAP] LinuxでLDAP認証を使用する(応用編) | EastCamp
pam_filter &(objectclass=posixAccount)(|([email protected])(host=testserver01))
なんだよ!
host属性つかえばいいじゃん!とか思ったけど、以下の様な罠が。。
cf : LDAPでホストごとにアクセスを制限する – hide-k.net#blog
OpenLDAP 2.2からはスキーマチェックが厳しくなったためユーザーのobjectClassとしてよく使われるinetOrgPersonとhostアトリビュートを定義できるobjectClassのaccountが同居できない点です。
・・・
objectClass: inetOrgPerson
objectClass: account
・・・
とするとRESULT tag=103 err=65 text=invalid structural object class chain (account/inetOrgPerson)
といったログがLDAPサーバーの方で吐かれます。これを回避するにはスキーマを変更するかスキーマチェックを無視するしかないっぽいです。
記事では無理やりhost属性を使えるようにしてるけど、なんかそんなことするならdescriptionでやればいいかなとおもった。
どちらにせよpam_filterのほうが柔軟にできるしなー。