OpenLDAP
この章では、OpenLDAPをインストールし、認証サーバを構築します。
ミドルウェアやOSの認証設定をOpenLDAPサーバにすることで、ユーザーの一元管理ができるようになります。
準備
rootに昇格
sudo su -
便利ツールインストール
yum -y install vim bash-completion net-tools
SELinux停止
vi /etc/selinux/config
SELINUX=disabled
反映
reboot
LDAPサーバの構築
- OpenLDAPをインストール
インストール
yum -y install openldap-servers openldap-clients
DB設定ファイルをセット
- exampleから初期値を設定
cp -p /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
自動起動設定
systemctl start slapd
systemctl enable slapd
管理者アカウントパスワード設定
- のちに追加するManagerとは別
ハッシュ化されたパスワード出力
- デフォルトでSHA-1暗号化アルゴリズムで暗号化される
- プレーンパスワードでもOK
slappasswd
出力
New password:
Re-enter new password:
{SSHA}gtNovF08wCs9igii4/RBa4MSoAtiqdfr
ldifファイル作成
- olcRootPWにslappasswdコマンドで出力されたパスワードを埋め込む
vi chrootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}gtNovF08wCs9igii4/RBa4MSoAtiqdfr
追加
-Y EXTERNAL
オプションでrootパスワード入力をスキップ
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
標準スキーマの追加
# COSINEとInternet X.500スキーマ(必須)
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
# UNIXアカウント等を扱うために使用するスキーマ、posixAccountやposixGroupはこのファイルに定義されている。
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
# 組織に関連する人を表すオブジェクトクラスinetOrgPersonを定義するスキーマ
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
Managerアカウントパスワード変更
ハッシュ化されたパスワード出力
slappasswd
出力
New password:
Re-enter new password:
{SSHA}jjvqxnULFJHaCjntF7TqIbhD9+Y1aevU
vi chdomain.ldif
olcRootPW
に生成したディレクトリマネージャーのパスワードを指定する
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=Manager,dc=vamdemic,dc=inc" read by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=vamdemic,dc=inc
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=vamdemic,dc=inc
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}jjvqxnULFJHaCjntF7TqIbhD9+Y1aevU
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=vamdemic,dc=inc" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=vamdemic,dc=inc" write by * read
反映
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
OU作成
vi basedomain.ldif
dn: dc=vamdemic,dc=inc
objectClass: top
objectClass: dcObject
objectclass: organization
o: VamdemicSystem
dc: vamdemic
dn: cn=Manager,dc=vamdemic,dc=inc
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=People,dc=vamdemic,dc=inc
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=vamdemic,dc=inc
objectClass: organizationalUnit
ou: Group
反映
ldapadd -x -D cn=Manager,dc=vamdemic,dc=inc -W -f basedomain.ldif
ファイアウォール設定
firewall-cmd --add-service=ldap --permanent
firewall-cmd --reload
ユーザー作成
ハッシュ化されたパスワード出力
slappasswd
出力
New password:
Re-enter new password:
{SSHA}jjvqxnULFJHaCjntF7TqIbhD9+Y1aevU
ldifファイル作成
vi ldapuser.ldif
dn: uid=yuta,ou=People,dc=vamdemic,dc=inc
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: yuta
sn: Linux
userPassword: {SSHA}GdmS2szfRwKj5KiitpFSdVG4QLA0O0a/
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/yuta
dn: cn=system,ou=Group,dc=vamdemic,dc=inc
objectClass: posixGroup
cn: system
gidNumber: 1000
memberUid: yuta
ldapadd -x -D cn=Manager,dc=vamdemic,dc=inc -W -f ldapuser.ldif
エントリの確認
ldapsearch -x -b "ou=Group,dc=vamdemic,dc=inc" cn=system
エントリの削除
ldapdelete -x -D "cn=Manager,dc=vamdemic,dc=inc" -w password "uid=yuta,ou=People,dc=vamdemic,dc=inc"
ldapdelete -x -D "cn=Manager,dc=vamdemic,dc=inc" -w password "cn=system,ou=Group,dc=vamdemic,dc=inc"
ユーザーのパスワード変更
ldappasswd -x -D "cn=Manager,dc=vamdemic,dc=inc" -w password -s pass "uid=yuta,ou=People,dc=vamdemic,dc=inc"
クライアント設定
パッケージインストール
yum -y install openldap-clients nss-pam-ldapd
SELinux停止
vi /etc/selinux/config
SELINUX=disabled
反映
reboot
設定投入
authconfig-tui
でGUI風に設定も可能authconfig --enableldap \ --enableldapauth \ --ldapserver=192.168.11.221 \ --ldapbasedn="dc=vamdemic,dc=inc" \ --enablemkhomedir \ --update
ログイン動作確認
ssh yuta@192.168.11.222
Webツールインストール
- phpldapadmin
Apacheインストール
yum -y install httpd
systemctl start httpd
systemctl enable httpd
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
PHPインストール
yum -y install php php-mbstring php-pear
phpldapadmin
インストール
yum -y install epel-release
yum --enablerepo=epel -y install phpldapadmin
IPアドレス許可設定
vi /etc/httpd/conf.d/phpldapadmin.conf
Require ip
にLANのCIDRblockを追記
<IfModule mod_authz_core.c>
Require local
Require ip 192.168.11.0/24
</IfModule>
認証方法変更
vi /etc/phpldapadmin/config.php
398行目
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');
設定反映
systemctl restart httpd
アクセス
http://192.168.11.221/ldapadmin/
cn=Manager,dc=vamdemic,dc=inc/password
ミドルウェアでの認証(NextCloud)
インストール
yum -y install docker
docker ps
systemctl enable docker
systemctl start docker
NextCloud起動
docker run -d -p 8080:80 nextcloud
ファイアウォール設定
firewall-cmd --add-port=8080 --permanent
firewall-cmd --reload
アクセス
付録
動作している仮想マシンのovaファイルです。うまくいかない場合、こちらをインポートしていただき設定値をご確認いただければと思います!
https://vamdemic.sharepoint.com/:f:/s/vamdemicsystem/Ek84RP2mCJlHuk2pb-B1iV8BOs77i6KA_t3fVTL4OlcZMA?e=rIZUdk
pass: openldap