[Centos6] OpenLDAP(1)

サーバの認証を統合できるOpenLDAPの導入を行います

正直LDAPの構築は結構難しいし、ネットの参考資料も少ないです
個人だとサーバ台数も少ないのでこの手の統合系のシステムはあまり入れてないってことですかね

今回はいくつかの記事に分けますがLinux認証・SSH認証(鍵)・SAMBA認証・メールサーバ認証を置き換えるところを作業ログを残します。
万人に解説するわけではなくあくまで作業ログにちょっとメモがついただけなのでご注意ください

作業端末はCentos6.4_x86_64です。

OpenLDAP ServerとClientのインストール

# yum -y install openldap-clients openldap-servers
# yum -y install openssh-ldap (LDAP用のSSHサーバを使うなら)

LDAP管理パスワードを作成します

# slappasswd
New password:
Re-enter new password:
{SSHA}うんちゃらかんちゃらうんぬんかんぬん…

↑この暗号化されたパスワードを控えます

OpenLDAPの設定ファイルの素を持ってきます。(新しい方式ではホントはslapd.d以下の内容で設定するようですが…情報が少ないので古い方法で)

# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

コピーしたらviとかのエディタで開きます

# vi /etc/openldap/slapd.conf

# それぞれsambaでの認証用のスキーマとSSHサーバでの公開鍵認証方式を使用する場合のスキーマです。使わないならいりません。
include /etc/openldap/schema/samba.schema
include /usr/share/doc/openssh-ldap-5.3p1/openssh-lpk-openldap.schema

# 識別子です
suffix             “dc=example,dc=local”
rootdn          “cn=Manager,dc=example,dc=local”
#さっき取得したパスワード
rootpw         {SSHA}aaaaaaaaaaaaaaaaaaaaaa…

#各種アクセスのポリシーを設定します(最低限の設定のみ)

# 自分のパスワード変更できるようにアクセス権を設定する
access to attrs=userPassword
by self write
by anonymous auth
by * none

# sambaパスワードも同じく
access to attrs=SambaLMPassword,SambaNTPassword
by self write
by anonymous auth
by * none

# 管理者のみ書き込み可能、その他のユーザは読み取り専用
access to *
by self write
by * read

これで保存します。

設定ファイルを変換します

# rm -rf /etc/openldap/slapd.d/*
# slaptest -f slapd.conf -F /etc/openldap/slapd.d/
# chown -R ldap.ldap  /etc/openldap/slapd.d/

初期データを作ります

# cd /etc/openldap
# vi BASE.LDF

# domain
dn: dc=example,dc=local
objectClass: dcObject
objectClass: organization
dc: example
o: example

# Manager
dn: cn=Manager,dc=example,dc=local
objectClass: organizationalRole
cn: Manager
description: Directory Manager

# People
dn: ou=People,dc=example,dc=local
objectClass: organizationalUnit
ou: People

# Group
dn: ou=Group,dc=example,dc=local
objectClass: organizationalUnit
ou: Group

初期データを流し、LDAPを起動します

# ldapadd -x -h localhost -D “cn=Manager,dc=example,dc=local” -w password -f BASE.LDF

# /etc/init.d/slapd start
# chkconfig slapd on

これでひとまず面倒な設定は終わります。ユーザ追加とかをコマンドとかでしこしこやるのは面倒なだけなのであとはGUIでやります

LdapAdmin (Windows用GUI管理ツール)
http://www.ldapadmin.org/download/ldapadmin.html

 

connection1

 

設定は簡単、HostにLDAPサーバのIPかDNSホストを入れて[Fetch DNs]を押すとBaseが自動検出されます
Accountは匿名だと管理出来ないのでManagerの権限を入力します。

ldapadmin1

 

Peopleの中に一般ユーザを登録します。New…→Userです。
SecondNameに何か入れれば必要なユーザ名の部分で自動入力されます。あとはSet Passwordを忘れずに
homedirectoryとかshellとかは基本的なコトなので適当に、初期グループが0(root)になってるのでこれは変えたほうがいい
Sambaとかの設定をするときはまたいろいろいじるのでほどほどにしときます

PAM認証とLDAP認証を併用するようにします
再びCUIに戻ります
さっきインストールしたやつも混ざってますが次のコマンドで必要なものをインストールします

# yum -y install authconfig nscd openldap-clients nss_ldap nss-pam-ldapd

次のコマンドはサーバ上のターミナルで実行します(SSHクライアントによっては?表示が崩れてまともに操作できません)

# authconfig-tui

authconf1

 

authconf2

こんな感じの設定が出てくるので画像のように設定します。

これでOKを押すとnscdとnslcdが起動すると思います。自動起動するように設定しときます

# chkconfig nscd on
# chkconfig nslcd on

そしてありがたいことにこれだけでほぼLinux認証はLDAP化できているのです。(今までのPAM認証も可能)
LDAPが落ちているときの設定だけPAMに追記します

# vi /etc/pam.d/system-auth

account [default=bad success=ok user_unknown=ignore authinfo_unavail=ignore] pam_ldap.so

/etc/pam.d/password-authファイルにも上記と同じ修正をします(こちらはSSH用)

nslcdの変更は再起動しないと反映しないことがあるようなのでrebootします。

さっそく先ほどのLdapAdminで作ったテストユーザでログインしてみます。
おそらくログインできる

ログイン後にidコマンドなどの結果を出すとちゃんとLDAPユーザなのかどうか確かめることが出来ます

authconfigコマンドを使用したのですごく楽でしたが、コイツがあちこちのファイルに書き込んでくれているおかげです。一応列挙してみます

/etc/openldap/ldap.conf
/etc/nslcd.conf
/etc/pam_ldap.conf
/etc/pam.d/system-auth
/etc/pam.d/password-auth
/etc/nsswitch.conf
/etc/sysconfig/authconfig

…これだけじゃないかもしれません、一応中身も見ておいたほうがいいと思います。

そんなわけでLinux認証編は終わり!SSHもパスワード認証ならこれでログインできると思います。

長くなってしまったのでここで切ります。次はSSHの公開鍵をLDAPに管理します。

 

Centos6 – OpenLDAP (1) – Linux認証(今ここ)

Centos6 – OpenLDAP(2) – SSH公開鍵認証

Centos6 – OpenLDAP(3) – Samba認証

Centos6 – OpenLDAP(4) – メールサーバ認証

コメントを残す

メールアドレスが公開されることはありません。