検索 K
CentOS 4.5で確認しました。
LDAPにユーザとパスワードを問い合わせてSSHログイン可能なサーバの構築方法を説明します。 また、PAMのアクセス制御機構を使い、サーバ上でsuしたりsshできるユーザを制限します。
説明の便宜上LDAP外にsshというユーザもつくりますが、必須ではありません。
## useradd -g wheel ssh
## passwd ssh
## id ssh
uid=500(ssh) gid=10(wheel) 所属グループ=10(wheel)LDAPにエントリを用意する
LDAPにエントリを登録するためのldifファイルを用意します。
やり方は色々ありますが、手作業で妥当なスキーマを書くのは手間がかかるので smbldap-tools付属のmigrationツールを使うことにします。 使い方はweb上にたくさん情報があるので書きません。 たとえばhttp://fedorasrv.com/openldap.shtmlを参考にsamba関連設定をスキップすれば達成できます。 既存エントリの修正ならLDAP AdminなどのLDAPクライアントソフトが便利です。
migrationツールでldifファイルが得られたら以下の編集をします。 サーバでsuやsshさせても良いユーザをadministratorグループに所属させます。 wheelグループと同じgidを、administratorグループでも宣言します。
dn: cn=administrator,ou=Group,dc=kurusugawa,dc=jp
objectClass: posixGroup
objectClass: top
cn: administrator
userPassword:: ***** *****
gidNumber: 10
structuralObjectClass: posixGroup
entryUUID: ***** ***** ***** ***** ***** ***** ***
creatorsName: cn=Manager,dc=kurusugawa,dc=jp
createTimestamp: 20070720084523Z
entryCSN: 20070720084523Z#00000b#00#000000
modifiersName: cn=Manager,dc=kurusugawa,dc=jp
modifyTimestamp: 20070720084523Zmigrationツールはユーザのパスワードをmigrateしてくれません。 この状態では認証に失敗します。
dn: uid=mizuno,ou=People,dc=kurusugawa,dc=jp
uid: mizuno
(省略)
userPassword: {crypt}x
(省略)userPassword属性にはslappasswdコマンドで得られるハッシュ値を使います。
## slappasswd
New password:
Re-enter new password:
{SSHA} ***** ***** ***** ***** ***** ***** ****migrationツールで得られるldifファイルのuserPassword属性にコピペします。
userPassword: {SSHA} ***** ***** ***** ***** ***** ***** ****最終的にldifファイルには次のエントリが存在するようにします。
## suやsshできるユーザ
dn: uid=mizuno,ou=People,dc=kurusugawa,dc=jp
uid: mizuno
cn: mizuno
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {SSHA} ***** ***** ***** ***** ***** *
loginShell: /bin/bash
uidNumber: 505
gidNumber: 10
homeDirectory: /home/mizuno
## suやsshできないユーザ
dn: uid=hiromi,ou=People,dc=kurusugawa,dc=jp
uid: samba
cn: Uehara Hiromi
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {SSHA} ***** ***** ***** ***** ***** *
loginShell: /bin/bash
uidNumber: 506
gidNumber: 504
homeDirectory: /home/hiromildifファイルの編集が完了したら、LDAPへ投入します。
nsswitchの変更
ログイン時にローカル(/etc/passwdなど)に該当するユーザがいない場合は LDAPを参照するように設定します。
## authconfig
ユーザ情報 の LDAPを使用
認証 の MD5パスワードを使用
認証 の シャドウパスワードを使用
認証 の LDAP認証を使用
にチェックをいれます。TLSを使用 にはチェックをいれず
サーバー には LDAPサーバのホスト名 or IPアドレス
ベースdn には LDAPサーバの/etc/openldap/slapd.conf の suffixディレクティブの内容を入力します。
サーバー:myldapserver
ベースdn:dc=kurusugawa,dc=jpローカルとLDAPサーバ両方のユーザ情報が取得できることを確認します。
## id ssh
uid=500(ssh) gid=10(wheel) 所属グループ=10(wheel)
## id mizuno
uid=505(mizuno) gid=10(wheel) 所属グループ=10(wheel),500(kurusugawa)
## id hiromi
uid=506(hiromi) gid=504(hiromi) 所属グループ=504(hiromi)rootへの権限昇格を制限
三人ともsuでrootになれることを確認します。
## su - ssh
$ whoami
ssh
$ su -
## whoami
root
## su - mizuno
以下同様
## su - hiromi
以下同様PAMを使いhiromiのsuコマンドでのroot権限取得を制限します。 /etc/pam.d/suで
## コメントを外す
auth required /lib/security/$ISA/pam_wheel.so use_uid確認してみます。
## su - hiromi
$ whoami
hiromi
## su -
Password:
su: パスワードが違いますsuされるユーザを制限
/etc/pam.d/suに
## 最終行に以下を追加
account required pam_access.so/etc/security/access.confの最終行に以下を追加
-:ALL EXCEPT root wheel:ALL確認してみます。
## su - hiromi
su: パスワードが違いますsshログインを制限
SSHログインできることを確認します。
## ssh ssh@localhost
ssh@localhost's password:
Last login: Fri Jul 20 14:00:08 2007 from localhost.localdomain
## ssh mizuno@localhost
以下同様
## ssh hiromi@localhost
以下同様PAMを使いhiromiのSSHログインを制限します。 /etc/pam.d/sshdの最終行に以下を追加
account required pam_access.so同様に/etc/security/access.confを参照しているので、/etc/security/access.confは変更しません。
確認してみます。
## ssh hiromi@localhost
hiromi@localhost's password:
Permission denied, please try again.あとはsudoも制限しないといけない気がする。
