目次
CentOS7でOpenLDAPを使ってみよう!
第二回目となる今回は、OpenLDAPの導入から基本設定について詳しく説明します。
今回用いるサーバは、フリーソフトのOpenLDAPが利用できるCentOS7 です。
OpenLDAPの導入についての解説を行う前に改めてLDAPを使うことのメリット(目的)についての説明をします。
第一回目から繰り返しになりますが、LDAPを使うことでユーザ情報の一元管理が可能 になります。
例えば、A、B、C、Dという4台のサーバがある場合に、通常であればユーザ情報はそれぞれのサーバに持たせる必要があります。
そして、それぞれのサーバに重複して登録済みのあるユーザのパスワードを変更する場合、一台一台にログインしてパスワードを変更しなくてはなりません。
ここにLDAPサーバを導入することで、ユーザ情報はLDAPサーバだけに持たせて、A、B、C、Dの各サーバ側にはユーザ情報を持たせないで運用することが可能になります。
具体的には、A、B、C、Dの各サーバにログインする際のユーザ認証をLDAPサーバに問い合わせをする(任せる)ようにすることで、一元管理を実現させます。
ユーザ、パスワード情報をLDAPサーバで一元管理できれば,新規ユーザが増えた場合でも,LDAPサーバ1台にアカウントを作成するだけで全てのサーバにログインできるようになります。
また、一時的に無効にしたいユーザもLDAPサーバ側でフラグをつけてしまえば全てのサーバへログインできなくなります。
例として4台のサーバとしましたが、何十台、何百台といった大規模システムに活用することも可能ですし、また多数のアプリケーションをサポートできる豊富な機能により使い道は様々です。
今回は例としてLDAPでユーザ管理を出来るようにするところまでの説明を行います。
パッケージのインストール
CentOSにおけるLDAPサーバの機能は、openldap-serversパッケージをインストールすることで使用可能になります。
openldap-serversをインストールするにはopenldapが必要です。
そしてLDAPサーバの基本設定を行うには、LDAP関連コマンドも必要ですので、openldap-clientsもインストールする必要があります。
さらに、libtool-ltdlはopen-clientsの依存パッケージの為、yumを使って依存パッケージも含めてインストールしてください。
1 2 3 4 5 |
現状の確認 # yum list installed 'openldap*' インストール済みパッケージ openldap.x86_64 2.4.39-3.el7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
OpenLDAPサーバとクライアントのインストール # yum install 'openldap-servers' 'openldap-clients' インストール中: openldap-clients x86_64 2.4.39-6.el7 base 184 k openldap-servers x86_64 2.4.39-6.el7 base 2.1 M 依存性関連でのインストールをします: libtool-ltdl x86_64 2.4.2-20.el7 base 49 k 以下、省略 インストール: openldap-clients.x86_64 0:2.4.39-6.el7 openldap-servers.x86_64 0:2.4.39-6.el7 依存性関連をインストールしました: libtool-ltdl.x86_64 0:2.4.2-20.el7 perl.x86_64 4:5.16.3-285.el7 perl-Carp.noarch 0:1.26-244.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-2.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-Pod-Escapes.noarch 1:1.04-285.el7 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-3.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-285.el7 perl-macros.x86_64 4:5.16.3-285.el7 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 依存性を更新しました: openldap.x86_64 0:2.4.39-6.el7 完了しました! |
ldapサービス
Unit name | slapd.service |
TCP Wrapper | slapd |
Daemon program | /usr/sbin/slapd |
Configuration | /etc/openldap/slapd.conf,/etc/openldap/slapd.d/ |
Document files | /usr/share/doc/openldap-servers-2.4.39/ |
Pid file | /var/run/openldap/slapd.pid |
パケットフィルタリングの設定
CentOS7で firewall-cmd を有効にしている場合には、下記のコマンドを実行して通信を許可してください。
1 2 3 4 5 |
# firewall-cmd --permanent --add-service=ldap ldapを許可 success # firewall-cmd --reload 設定を反映 success |
アクセス制御の設定
CentOSでは、LDAPサーバでTCP Wrapperを使用したIPアドレスベースのアクセス制御を行うことができるようになっています。したがって、接続するクライアントに合わせて設定を行う必要があります。
1 2 |
# vi /etc/hosts.allow slapd:192.168.0. |
LDAPサーバの基本設定とサービスの起動
データベースチューニング設定
slapdがデータを保管するデータベースファイルは、/var/lib/ldapに作成されます。slapdを起動する前に、このディレクトリにデータベースチューニングのための設定ファイルを配置しておきます。
サンプルの設定ファイルが用意されていますので、そのファイルをそのままコピーします。
1 2 |
DB_CONFIGファイルのコピー # cp -a /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG |
サービスの起動
データベースのチューニングの設定が出来たら、サービスを起動することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# systemctl start slapd.service # systemctl status slapd.service slapd.service - OpenLDAP Server Daemon Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled) Active: active (running) since 金 2015-09-04 14:45:07 JST; 3s ago Docs: man:slapd man:slapd-config man:slapd-hdb man:slapd-mdb file:///usr/share/doc/openldap-servers/guide.html Process: 2921 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS) Process: 2893 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS) Main PID: 2923 (slapd) CGroup: /system.slice/slapd.service mq2923 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// |
サービスの自動起動
インストールした時点では、セキュリティを考慮して自動的に起動されるようにはなっていません。
1 |
# systemctl enable slapd.service |
LDAPデータベースの設定
サービスを起動しましたが、実際にLDAPサーバを利用するには、次のような作業を行う必要があります。
LDAPサーバ利用のための準備
- LDAPデータベースの基本設定
- LDAPスキーマの登録
- LDAPエントリの登録
これらの作業は、すべてldapadd、ldapmodify、ldapdeleteなどのLDAPクライアントユーティリティプログラムを使って行います。
LDAPサーバを利用して何のデータを登録・管理するかによって設定内容に若干違いがでますが、基本的な作業方法は共通の手法で行うことができます。
LDAPデータベースの基本設定
CentOSでは、openldap-serversパッケージをインストールすると、標準的なLDAPデータベースの設定がすでに行われています。
しかし、次の3つの情報は、利用者の環境に合わせて修正する必要があります。
- LDAPディレクトリツリーのDN(olcSuffix)
- LDAPデータベースの管理用のアクセス権である特権DN(olcRootDN)
- 特権DNのパスワード(olcRootPW)
LDAPデータベースツリーのDNは、いわばデータベースの名前に相当するものです。ユーザデータを登録するデータベースには、自由に名前を設定することができます。
一般的にはその組織のドメイン名などを元に作成しますので、本記事ではnedia.ne.jpというドメイン名を元に作成したdc=nedia,dc=ne,dc=jpという名称にして解説します。
特権DNは、Linuxシステムのrootユーザに相当するもので、そのLDAPデータベースの全てのデータにアクセスすることのできる権限を持ちます。
本記事では、特権DNをcn=Manager,dc=nedia,dc=ne,dc=jpとして解説します。
データ用ディレクトリの基本設定の確認
まずは、データ用ディレクトリの基本設定がどうなっているかを確認します。設定の確認は、次の例のようにldapserchコマントで行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ldapseachによる基本設定の確認 # ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={2}hdb,cn=config' SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap ① olcSuffix: dc=my-domain,dc=com ② olcRootDN: cn=Manager,dc=my-domain,dc=com ③ olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub |
- ①は、実際のデータが格納されるディレクトリです。
- ②のolcSuffixがLDAPデータベースツリーのDNです。
- ③のolcRooDNがLDAP管理用のアクセス権である特権DNの設定です。
- olcRootPWは設定されていないことがわかります。 ※
※例) 設定されている場合
olcRootPW: xxxxxxxxxxxxx
と表示されます。
ldapseachの引数の「-Y EXTERNAL」は、認証方式の指定です。
また、-Hオプションは、接続するLDAPサーバの指定ですが、ここでは特殊な「ldapi:///」を指定しています。
これは、UNIXドメインソケットを使ってローカルなサーバーに設定を行うことを指定しています。
また、-dオプションは検索場所の指定です。ここでは、olcDatabase={2}hdb,cn=configを指定しています。
これはユーザデータを格納するための設定データが格納されているエントリです。
データ用ディレクトリの管理情報の変更
LDAPエントリのデータ修正は、ldapmodifyコマンドで行います。設定を行うためには次のようなLDIFファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
データ用ディレクトリの初期設定(hdb-init.ldif) # vi hdb-init.ldif dn: olcDatabase={2}hdb,cn=config ① changetype: modify ② replace: olcRootDN ③ olcRootDN: cn=Manager,dc=nedia,dc=ne,dc=jp ④ - replace: olcSuffix ⑤ olcSuffix: dc=nedia,dc=ne,dc=jp ⑥ - add: olcRootPW ⑦ olcRootPW: {SSHA}ofdjXMHz4fv+T9xaoSslDl7HYDLoQMe7 ⑧ |
- ①設定を行うDNです。先ほどldapsearchの-bオプションで指定したのと同じ、データベース設定設定が格納されているDNを指定します。
- ②このLDIFファイルでは修正(modify)を行うことを宣言しています。
- ③olcRootDNを書き換えることを指定しています。
- ④olcRootDNの値を指定しています。
- ⑤olcSuffixを書き換えることを指定しています。
- ⑥olcSuffixの値をしています。
- ⑦olcRootPWの属性を追加することを指定しています。
- ⑧olcRootPWの値を指定しています。
③と④、⑤と⑥、⑦と⑧は、それぞれ対になっています。
olcSuffix、olcRootDNは、すでに登録されているデータがあるため、属性値の修正となります。
olcRootPWは値が登録されていませんので、属性値の追加(add)を行います。
属性値には、次のようにslappasswdで作成したパスワードを指定します。
1 2 3 4 5 6 |
slappasswdコマンドによるパスワードの生成方法 # slappasswd New password: xxxxxx 暗号化するパスワード入力 Re-enter new password: xxxxxx パスワードの再入力 {SSHA}ofdjXMHz4fv+T9xaoSslDl7HYDLoQMe7 |
データができたら、次のようにldapmodifyコマンドを使ってサーバへ設定を行います。
1 2 3 4 5 6 |
# ldapmodify -Y EXTERNAL -H ldapi:/// -f hdb-init.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={2}hdb,cn=config" |
ちなみに間違った記述があった場合には、下記のようなメッセージが出て反映が行われません。
メッセージに出るヒントを元に記述内容を見直してください。
1 2 |
ldap_modify: Invalid DN syntax (34) additional info: invalid DN |
ldapmodifyコマンドの引数の-fオプションでは、先ほど作成したLDIFファイルを指定します。
先ほどのldapseachによる基本設定の確認コマンドで変更されているか確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={2}hdb,cn=config' SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub olcRootDN: cn=Manager,dc=nedia,dc=ne,dc=jp olcSuffix: dc=nedia,dc=ne,dc=jp olcRootPW: {SSHA}ofdjXMHz4fv+T9xaoSslDl7HYDLoQMe7 |
LDAPスキーマの登録
次に、このLDAPサーバで使用するスキーマを登録します。スキーマは、LDAPデータベースのエントリに登録することができるデータの種類や型を定義するものです。
LDAPでは、スキーマを柔軟に定義することができ、様々なアプリケーションのデータを格納することができます。
openldapパッケージをインストールすると、標準スキーマの登録に必要なldifファイルが/etc/openldap/schma/に用意されます。
CentOS標準では、coreスキーマだけが利用できるように設定されています。それ以外のスキーマを使いたい場合にいは、必要に応じて設定を追加する必要があります。
なお、定義されていないオブジェクトクラスは利用出来ません。今回の目的であるユーザ管理を行う上で必要となる オブジェクトクラス「account」 と 「posixAccount」は、 それぞれ、cosineスキーマ と nisスキーマ
で定義されていますので、この二つのスキーマを登録して利用出来るようにします。
スキーマの登録は、/etc/openldap/schema/に用意されているldifファイルを使い、ldapaddコマンドで行います。
下記は、スキーマ登録の例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
cosine、nisスキーマの登録 # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=cosine,cn=schema,cn=config" # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=nis,cn=schema,cn=config" |
LDAPエントリの登録
LDAPサーバの設定ができたら、次にLDAPサーバで管理するデータを登録します。ここではLinuxアカウントの管理を行うのに最低限必要な、LDAPデータの登録方法について解説します。
Linuxアカウントの管理を行うためにLDAPサーバを利用する場合、一般的に最初に登録すべきデータは次のようなものです。
- 基本となる組織、ユーザアカウントを管理する組織、グループを管理する組織の登録
- 初期グループアカウントの登録
- 初期ユーザアカウントの登録
基本となる組織・ユーザアカウントを管理する組織・グループを管理する組織の登録
ユーザやグループの情報を登録する前に、その受け皿となる基本の組織、ユーザアカウントを管理するための組織、グループを管理するための組織を登録する必要があります。
登録するためには、次のようなLDIFファイル(init.ldif)を用意します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
LDAP初期エントリLDIFファイル(init.ldif) # vi init.ldif dn: dc=nedia,dc=ne,dc=jp ① objectClass: dcObject objectClass: organization o: myorganization dc: nedia dn: cn=Manager,dc=nedia,dc=ne,dc=jp ② objectClass: organizationalRole cn: Manager dn: ou=People,dc=nedia,dc=ne,dc=jp ③ objectClass: organizationalUnit ou: People dn: ou=Group,dc=nedia,dc=ne,dc=jp ④ objectClass: organizationalUnit ou: Group |
- ①最も基本となるnedia組織のエントリです。このエントリの下位にすべてのエントリを作成します。
- ②特権DN(cn=Manager,dc=nedia,dc=ne,dc=jp)のエントリです。特権DNのobjectClassには、必ずorganizationalRoleを指定します。
- ③ユーザを管理するための組織単位(ou=People,dc=nedia,dc=ne,dc=jp)です。/etc/passwdに相当するものです。
- ④グループを管理するための組織単位(ou=Group,dc=nedia,dc=ne,dc=jp)です。/etc/gruopに相当するものです。
このファイルを、次のようにldapaddコマンドで登録します。
1 2 3 4 5 6 7 8 9 10 11 12 |
LDAP初期エントリ登録 # ldapadd -x -D "cn=Manager,dc=nedia,dc=ne,dc=jp" -W -f init.ldif 特権DNのパスワード Enter LDAP Password: adding new entry "dc=nedia,dc=ne,dc=jp" adding new entry "cn=Manager,dc=nedia,dc=ne,dc=jp" adding new entry "ou=People,dc=nedia,dc=ne,dc=jp" adding new entry "ou=Group,dc=nedia,dc=ne,dc=jp" |
ldapaddの-Dオプションで指定しているのは、先ほどolcRootDNに登録したデータベース特権DNです。-fオプションで、先ほど作成したファイルを指定しています。
LDAP初期エントリ登録内容の確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# ldapsearch -x -LLL -b "dc=nedia,dc=ne,dc=jp" "(objectClass=*)" dn: dc=nedia,dc=ne,dc=jp objectClass: dcObject objectClass: organization o: myorganization dc: nedia dn: cn=Manager,dc=nedia,dc=ne,dc=jp objectClass: organizationalRole cn: Manager dn: ou=People,dc=nedia,dc=ne,dc=jp objectClass: organizationalUnit ou: People dn: ou=Group,dc=nedia,dc=ne,dc=jp objectClass: organizationalUnit ou: Group |
グループアカウントの登録
/etc/groupに設定されているグループアカウントと同等のエントリを登録します。
グループアカウントはposixGroupオブジェクトクラスを用いて設定します。
posixGroupオブジェクトクラスは、先ほど登録したnisスキーマで定義されているオブジェクトクラスです。
posiGroupオブジェクトクラス(nisスキーマ)
属性タイプ | 説明 |
cn | 一般名称 [Organization Unit] |
gidNubber | グループ番号(必須項目) |
memberUid | 所属メンバーのユーザ番号 |
description | 説明 |
以下にsystem01,system02というグループを登録する場合の例を示しますので、この例にならって、必要なグループを指定してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
グループアカウントLDIFファイル(group.ldif) # vi group.ldif dn: cn=system01,ou=Group,dc=nedia,dc=ne,dc=jp objectClass: posixGroup objectClass: top cn: system01 gidNumber: 1001 dn: cn=system02,ou=Group,dc=nedia,dc=ne,dc=jp objectClass: posixGroup objectClass: top cn: system02 gidNumber: 1002 |
このファイルを使って、次の例のようにエントリを登録します。
1 2 |
グループアカウントのエントリ登録 # ldapadd -x -D "cn=Manager,dc=nedia,dc=ne,dc=jp" -W -f group.ldif |
ユーザアカウントの登録
/etc/passwdに設定されているユーザアカウントと、同等のエントリを登録します。
ユーザアカウントはposixAccountオブジェクトクラスを用いて設定します。
posixAccountオブジェクトクラス
属性タイプ | 説明 |
cn | 一般名称 [Common Name](必須項目) |
uid | ユーザ名(必須項目) |
uidNumber | ユーザ番号(必須項目) |
homeDirectory | ホームディレクトリ(必須項目) |
userPassword | パスワード |
loginShell | ログインシェル |
gecos | フルネームなど |
description | 説明 |
以下に、user01、user02というユーザを登録する場合の例を示しますので、この例にならって、必要なユーザをしてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
ユーザアカウントLDIFファイル(user.ldif) # vi user.ldif dn: uid=user01,ou=People,dc=nedia,dc=ne,dc=jp uid: user01 cn: User Tarou objectClass: account objectClass: posixAccount objectClass: top userPassword: {SSHA}id/UScQEgD0mm7ECT872kAr4W7amY3RK loginShell: /bin/bash uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/user01 dn: uid=user02,ou=People,dc=nedia,dc=ne,dc=jp uid: user02 cn: User Jirou objectClass: account objectClass: posixAccount objectClass: top userPassword: {SSHA}XItL0eeCd1EnMI+tuDaL3N3H0zbd0WrN loginShell: /bin/bash uidNumber: 1002 gidNumber: 1002 homeDirectory: /home/user02 |
オブジェクトクラスtopは基本となるオブジェクトクラスで、objectClass属性が必須項目となっています。
オブジェクトクラスaccountはコンピュータアカウントを表すもので、uidが必須項目となっています。
1 2 3 4 5 6 7 |
パスワードはslappasswdコマンドで作成します。 slappasswd user01 {SSHA}id/UScQEgD0mm7ECT872kAr4W7amY3RK user02 {SSHA}XItL0eeCd1EnMI+tuDaL3N3H0zbd0WrN |
このファイルを使って、次の例のようにエントリを登録します。
1 2 3 4 5 6 |
ユーザアカウントのエントリ登録 # ldapadd -x -D "cn=Manager,dc=nedia,dc=ne,dc=jp" -W -f user.ldif adding new entry "uid=user01,ou=People,dc=nedia,dc=ne,dc=jp" adding new entry "uid=user02,ou=People,dc=nedia,dc=ne,dc=jp" |
以上の作業でLDAPへのユーザ登録作業は完了です。
LDAPに登録したユーザを利用可能にする
LDAPユーザでログインできるよう認証方法の設定を変更します。
はじめにLDAP認証させるためのモジュールがインストールされていなければそれをインストールする必要があります。
1 2 3 4 5 6 7 |
# yum install nscd nss-pam-ldapd # cp -a /etc/nslcd.conf /etc/nslcd.conf_org # vi /etc/nslcd.conf base dc=example,dc=com →base dc=dc=nedia,dc=ne,dc=jp |
Linuxアカウントのパスワード、グループ情報の参照にLDAPディレクトリサービスを使用するようにネームサービススイッチの設定変更を行います。
設定ファイルは/etc/nsswitch.confで以下のように編集を行います。
1 2 3 4 5 6 |
# cp -a /etc/nsswitch.conf /etc/nsswitch.conf_org # vi /etc/nsswitch.conf passwd: files sss ldap shadow: files sss ldap group: files sss ldap |
Linux上に登録されていないアカウントでLDAP上に登録されているアカウントは認証は可能ですがホームディレクトリが存在しない状態です。
ログインできなくはないですがWarningが出るので、これを回避するためログインすると自動的にホームディレクトリが作成されるよう設定を変更します。
1 2 3 |
# authconfig --enablemkhomedir --update nslcd を起動中: [ OK ] nscd を起動中: [ OK ] |
この設定後、LDAPに登録されているアカウントでSSHログインなどをすると自動的にホームディレクトリが作成されます。
1 2 3 4 5 6 |
LDAPユーザにログインが出来るか確認します。 # su - user01 最終ログイン: 2015/09/04 (金) 16:57:28 JST日時 pts/0 $ pwd /home/user01 |
最後に、idコマンドを使ってLDAPに登録したユーザのユーザIDやグループIDを確認してみます。
1 2 3 4 5 6 |
# id user01 uid=1001(user01) gid=1001(system01) groups=1001(system01) # id user02 uid=1002(user02) gid=1002(system02) groups=1002(system02) |
ここまで出来れば作成したユーザでFTP接続なども出来るようになっているはずです。
クライアントサーバの設定
LDAPサーバ側の設定は完了しましたので、最後にクライアントサーバ側の設定方法について説明します。本記事の冒頭でA、B、C、Dの各サーバと表現した方のサーバとなります。
OpenLDAP クライアントをインストールしす。
1 |
# yum -y install openldap-clients nss-pam-ldapd |
Linuxアカウントのパスワード、グループ情報の参照にLDAPディレクトリサービスを使用するようにネームサービススイッチの設定変更を行います。
設定ファイルは/etc/nsswitch.confで以下のように編集を行います。
1 2 3 4 5 6 |
# cp -a /etc/nsswitch.conf /etc/nsswitch.conf_org # vi /etc/nsswitch.conf passwd: files sss ldap shadow: files sss ldap group: files sss ldap |
LDAP有効化、LDAP認証有効化、LDAPサーバ設定、LDAPベースDN設定、ホームディレクトリ自動生成設定を行います。
1 2 3 4 5 6 |
# authconfig --enableldap --enableldapauth --ldapserver=192.168.0.100 --ldapbasedn="dc=nedia,dc=ne,dc=jp" --enablemkhomedir --update ※--ldapserver=192.168.0.100 には、LDAPサーバのIPアドレスもしくは、URL(例:--ldapserver="ldap://192.168.0.100/")を入れてください。 nslcd を起動中: [ OK ] nscd を起動中: [ OK ] |
LDAPに登録したユーザが利用できるか確認します。
1 2 3 4 |
# su - user01 $ pwd /home/user01 |
最後に、idコマンドを使ってLDAPに登録したユーザのユーザIDやグループIDを確認してみます。
1 2 3 4 5 6 |
# id user01 uid=1001(user01) gid=1001(system01) groups=1001(system01) # id user02 uid=1002(user02) gid=1002(system02) groups=1002(system02) |
LDAPで行うユーザ管理の説明は以上となります。
いかがでしたでしょうか?
私が実際にLDAPサーバを構築してみてわかりにくいと感じた部分は、一番最初のサーバ管理者パスワードを設定するところと、スキーマの追加の部分です。逆に言うとこれさえできてしまえば他の部分は特に難しいと感じた場所はありませんでした。
ユーザ管理の一元管理は企業のセキュリティ事故を防ぐ意味でもとても重要です。
削除したと思っていたユーザアカウントが実は残っていて、外部から重要機密を持ち出させてしまった。
ということのないようにユーザ管理はLDAPで一元管理するのがオススメです。
それでは。