LoginSignup
2
2

More than 5 years have passed since last update.

LDAP認証サーバで,あるグループのメンバの認証を制限する.

Posted at

概要

利用者をグループごとに管理していると,「このグループのメンバにはこのサーバにsshログインでいないようにしたい」ということがあると思います.僕の研究室では「サーバ管理者」「研究室内の一般ユーザメンバ」「卒業生」というグループ分けでアカウントを管理していて,新たに卒業される先輩は「卒業生」グループに配属しなおし,このグループのメンバーははサーバにログインできないようにしたい,というようなことがあります.

これを実現するためには次の三つのステップを踏みます.
1. (必要であれば)ログインを制限したいメンバーのグループを作成する.
2. メンバーのグループを変更する.
3. サーバのssh設定で特定のグループをログイン禁止にする.

手順1:ログインを制限したいメンバーのグループを作成する.

例として,'graduated'グループを作成して,このグループのログインを禁止するとします.まずグループを作成するldapのスクリプトを作成し,次にldapaddコマンドでこのスクリプトを実行します.

add_group.ldif
dn: cn=graduated,ou=groups,dc=XXX-lab
gidNumber: 503
cn: graduated
objectClass: posixGroup
objectClass: top

ldapadd -x -D cn=admin,dc=XXX-lab -f add_group.ldif

手順2:メンバーのグループを変更する.

手順1と同様に,グループを変更するldapのスクリプトを作成し,ldapmodifyコマンドでこのスクリプトを実行します.その後,認証に関わるサービスであるnscdをリスタートしておきます.

modify_user_group.ldif
dn: uid=user0001,ou=users,dc=XXX-lab
changetype: modify
replace: gidNumber
gidNumber: 503

ldapmodify -D cn=admin,dc=XXX-lab -f modify_user_group.ldif; sudo service nscd restart

手順3:サーバのssh設定を変更する

最後に,クラスタを構成する全サーバの/etc/ssh/sshd_configを書き換えます.

# 最終行に追加
DenyGroups graduated

実はこの手順3,/etc/ldap.confを次のように設定するように紹介されることがあるのですが,sshの鍵認証を~/.ssh/authorized_keysファイルで管理していると,なぜか鍵認証ではログインが通っちゃうので,僕はsshの設定を変更しました.

ダメだったパターン↓

/etc/ldap.conf
# gidNumber=501と502はログイン許可したい.
pam_filter &(objectClass=posixaccount)(|(gidNumber=5001)(gidNumber=502))
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2