OpenLDAP
この章では、OpenLDAPをインストールし、認証サーバを構築します。
ミドルウェアやOSの認証設定をOpenLDAPサーバにすることで、ユーザーの一元管理ができるようになります。
準備
rootに昇格
1 |
sudo su - |
便利ツールインストール
1 |
yum -y install vim bash-completion net-tools |
SELinux停止
1 |
vi /etc/selinux/config |
1 |
SELINUX=disabled |
反映
1 |
reboot |
LDAPサーバの構築
- OpenLDAPをインストール
インストール
1 |
yum -y install openldap-servers openldap-clients |
DB設定ファイルをセット
- exampleから初期値を設定
1 2 |
cp -p /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap. /var/lib/ldap/DB_CONFIG |
自動起動設定
1 2 |
systemctl start slapd systemctl enable slapd |
管理者アカウントパスワード設定
- のちに追加するManagerとは別
ハッシュ化されたパスワード出力
- デフォルトでSHA-1暗号化アルゴリズムで暗号化される
- プレーンパスワードでもOK
1 |
slappasswd |
出力
1 2 3 |
New password: Re-enter new password: {SSHA}gtNovF08wCs9igii4/RBa4MSoAtiqdfr |
ldifファイル作成
- olcRootPWにslappasswdコマンドで出力されたパスワードを埋め込む
1 |
vi chrootpw.ldif |
1 2 3 4 |
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}gtNovF08wCs9igii4/RBa4MSoAtiqdfr |
追加
-Y EXTERNAL
オプションでrootパスワード入力をスキップ
1 |
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif |
標準スキーマの追加
1 2 3 4 5 6 7 8 |
# 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アカウントパスワード変更
ハッシュ化されたパスワード出力
1 |
slappasswd |
出力
1 2 3 |
New password: Re-enter new password: {SSHA}jjvqxnULFJHaCjntF7TqIbhD9+Y1aevU |
1 |
vi chdomain.ldif |
olcRootPW
に生成したディレクトリマネージャーのパスワードを指定する
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 |
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 |
反映
1 |
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif |
OU作成
1 |
vi basedomain.ldif |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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 |
反映
1 |
ldapadd -x -D cn=Manager,dc=vamdemic,dc=inc -W -f basedomain.ldif |
ファイアウォール設定
1 2 |
firewall-cmd --add-service=ldap --permanent firewall-cmd --reload |
ユーザー作成
ハッシュ化されたパスワード出力
1 |
slappasswd |
出力
1 2 3 |
New password: Re-enter new password: {SSHA}jjvqxnULFJHaCjntF7TqIbhD9+Y1aevU |
ldifファイル作成
1 |
vi ldapuser.ldif |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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 |
1 |
ldapadd -x -D cn=Manager,dc=vamdemic,dc=inc -W -f ldapuser.ldif |
エントリの確認
1 |
ldapsearch -x -b "ou=Group,dc=vamdemic,dc=inc" cn=system |
エントリの削除
1 2 |
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" |
ユーザーのパスワード変更
1 |
ldappasswd -x -D "cn=Manager,dc=vamdemic,dc=inc" -w password -s pass "uid=yuta,ou=People,dc=vamdemic,dc=inc" |
クライアント設定
パッケージインストール
1 |
yum -y install openldap-clients nss-pam-ldapd |
SELinux停止
1 |
vi /etc/selinux/config |
1 |
SELINUX=disabled |
反映
1 |
reboot |
設定投入
authconfig-tui
でGUI風に設定も可能
123456authconfig --enableldap \--enableldapauth \--ldapserver=192.168.11.221 \--ldapbasedn="dc=vamdemic,dc=inc" \--enablemkhomedir \--update
ログイン動作確認
1 |
ssh yuta@192.168.11.222 |
Webツールインストール
- phpldapadmin
Apacheインストール
1 |
yum -y install httpd |
1 2 |
systemctl start httpd systemctl enable httpd |
1 2 |
firewall-cmd --add-service=http --permanent firewall-cmd --reload |
PHPインストール
1 |
yum -y install php php-mbstring php-pear |
phpldapadmin
インストール
1 2 |
yum -y install epel-release yum --enablerepo=epel -y install phpldapadmin |
IPアドレス許可設定
1 |
vi /etc/httpd/conf.d/phpldapadmin.conf |
Require ip
にLANのCIDRblockを追記
1 2 3 4 |
<IfModule mod_authz_core.c> Require local Require ip 192.168.11.0/24 </IfModule> |
認証方法変更
1 |
vi /etc/phpldapadmin/config.php |
398行目
1 2 |
$servers->setValue('login','attr','dn'); // $servers->setValue('login','attr','uid'); |
設定反映
1 |
systemctl restart httpd |
アクセス
http://192.168.11.221/ldapadmin/
cn=Manager,dc=vamdemic,dc=inc/password
ミドルウェアでの認証(NextCloud)
インストール
1 2 3 4 |
yum -y install docker docker ps systemctl enable docker systemctl start docker |
NextCloud起動
1 |
docker run -d -p 8080:80 nextcloud |
ファイアウォール設定
1 2 |
firewall-cmd --add-port=8080 --permanent firewall-cmd --reload |
アクセス
付録
動作している仮想マシンのovaファイルです。うまくいかない場合、こちらをインポートしていただき設定値をご確認いただければと思います!
https://vamdemic.sharepoint.com/:f:/s/vamdemicsystem/Ek84RP2mCJlHuk2pb-B1iV8BOs77i6KA_t3fVTL4OlcZMA?e=rIZUdk
pass: openldap