Cài đặt OpenLDAP và phpLDAPadmin trên Ubuntu 20.04

Hôm nay mình sẽ hướng dẫn bạn đọc cách cài đặt OpenLDAP để xác thực tập trung và phpLDAPadmin để quản lý LDAP Server thông qua giao diện web.

Chuẩn bị môi trường #

  • Server chạy Ubuntu 20.04.
  • Một domain để gán cho địa chỉ IP của Server.
  • User Root.

Cài đặt và cấu hình OpenLDAP Server #

Đầu tiên, bạn cần cập nhật Server trước:

apt-get update -y

Tiếp theo, thực hiện cài đặt OpenLDAP từ repository:

apt-get install slapd ldap-utils

Trong quá trình cài đặt, bạn sẽ được hỏi về mật khẩu của người dùng quản trị:

password-admin-openldap

Sau khi cài đặt xong, bạn cần cấu hình lại:

dpkg-reconfigure slapd

Trong cửa sổ hiện ra, chọn NO:

reconfigure-openldap

Tiếp theo, bạn sẽ được hỏi về domain của LDAP, hãy điền vào domain của bạn:

domain-ldap

Tiếp tục bạn sẽ được hỏi về tên tổ chức, công ty, thực hiện điền tên công ty của bạn tại đó:

organization-ldap

Bạn sẽ được hỏi về mật khẩu của người dùng admin trong LDAP:

ask-password-ldap

Cuối cùng là chọn Yes để lưu lại cấu hình vừa rồi:

confirm-option

Bạn có thể xem lại cấu hình hiện giờ của LDAP bằng câu lệnh dưới:

slapcat

Cấu hình sẽ hiển thị tương tự bên dưới:

dn: dc=tel4vn,dc=edu,dc=vn
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.com
dc: example
structuralObjectClass: organization
entryUUID: 971829cc-ac5f-103a-8e42-9f8486ff5685
creatorsName: cn=admin,dc=tel4vn,dc=edu,dc=vn
createTimestamp: 20201027051828Z
entryCSN: 20201027051828.103064Z#000000#000#000000
modifiersName: cn=admin,dc=tel4vn,dc=edu,dc=vn
modifyTimestamp: 20201027051828Z

dn: cn=admin,dc=tel4vn,dc=edu,dc=vn
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9Tm5OYlpSMktkYjVnUUprb284MHFPTEVkMjQrQXpQWEk=
structuralObjectClass: organizationalRole
entryUUID: 9718c198-ac5f-103a-8e43-9f8486ff5685
creatorsName: cn=admin,dc=tel4vn,dc=edu,dc=vn
createTimestamp: 20201027051828Z
entryCSN: 20201027051828.107057Z#000000#000#000000
modifiersName: cn=admin,dc=tel4vn,dc=edu,dc=vn
modifyTimestamp: 20201027051828Z

Tạo tài khoản người dùng trong OpenLDAP #

Trước hết, bạn cần tạo một organization unit để lưu trữ thông tin người dùng và nhóm người dùng:

nano users-ou.ldif

Thêm đoạn cấu hình sau, lưu ý thay đổi domain là domain của bạn:

dn: ou=people,dc=tel4vn,dc=edu,dc=vn
objectClass: organizationalUnit
objectClass: top
ou: people

dn: ou=groups,dc=tel4vn,dc=edu,dc=vn
objectClass: organizationalUnit
objectClass: top
ou: groups

Lưu lại file và tiếp tục tạo mới file thực thi LDAP như sau:

nano update-mdb-acl.ldif

Thêm đoạn cấu hình sau vào file:

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire
  by self write
  by anonymous auth
  by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
  by dn.exact="cn=readonly,ou=people,dc=tel4vn,dc=edu,dc=vn" read 
  by * none
olcAccess: to dn.exact="cn=readonly,ou=people,dc=tel4vn,dc=edu,dc=vn" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
olcAccess: to dn.subtree="dc=tel4vn,dc=edu,dc=vn" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by users read 
  by * none

Lưu lại file và thực thi câu lệnh bên dưới để thao tác với LDAP database:

ldapadd -Y EXTERNAL -H ldapi:/// -f update-mdb-acl.ldif

Bạn sẽ nhận được thông tin như bên dưới:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"

Tiếp tục cập nhật thông tin OU bằng câu lệnh bên dưới:

ldapadd -Y EXTERNAL -H ldapi:/// -f users-ou.ldif

Bạn sẽ có thông tin hiện ra như bên dưới:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "ou=people,dc=tel4vn,dc=edu,dc=vn"

adding new entry "ou=groups,dc=tel4vn,dc=edu,dc=vn"

Như vậy, bạn đã có thể tạo tài khoản người dùng mới. Để làm điều đó, thực hiện tạo file như bên dưới:

nano hitesh.ldif

Với nội dung sau:

dn: uid=tel4vn,ou=people,dc=tel4vn,dc=edu,dc=vn
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: tel4vn
cn: Hitesh
sn: Jethva
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/tel4vn
shadowMax: 60
shadowMin: 1
shadowWarning: 7
shadowInactive: 7
shadowLastChange: 0

dn: cn=tel4vn,ou=groups,dc=tel4vn,dc=edu,dc=vn
objectClass: posixGroup
cn: tel4vn
gidNumber: 10000
memberUid: tel4vn

Lưu ý: thay đổi phù hợp thông tin với ou và domain của bạn.

Lưu lại thay đổi và sử dụng câu lệnh bên dưới để thêm mới người dùng:

ldapadd -Y EXTERNAL -H ldapi:/// -f hitesh.ldif

Bạn sẽ nhận được thông tin như bên dưới nếu thêm người dùng thành công:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "uid=tel4vn,ou=people,dc=tel4vn,dc=edu,dc=vn"

adding new entry "cn=tel4vn,ou=groups,dc=tel4vn,dc=edu,dc=vn"

Tiếp theo, bạn hãy sử dụng câu lệnh bên dưới để đặt mật khẩu cho người dùng mới thêm:

ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=tel4vn,ou=people,dc=tel4vn,dc=edu,dc=vn"

Tạo Bind DN trên OpenLDAP #

Để có thể truy vấn trên LDAP database, bạn cần phải tạo một Bind DN tương ứng. Thực hiện tạo mới Bind DN bằng câu lệnh sau:

slappasswd

Sau khi nhập mật khẩu, bạn sẽ nhận được đoạn mật khẩu đã mã hoá như bên dưới:

New password: 
Re-enter new password: 
{SSHA}DhjyJN5akaj2etaFKoyeAY8QMgSD/OTb

Tiếp theo, bạn hãy tạo một file như bên dưới:

nano readonly-user.ldif

Với nội dung file như sau:

dn: cn=readonly,ou=people,dc=tel4vn,dc=edu,dc=vn
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: readonly
userPassword: {SSHA}DhjyJN5akaj2etaFKoyeAY8QMgSD/OTb
description: Bind DN user for LDAP Operations

Lưu ý: userPassword là đoạn mật khẩu đã mã hoá có được từ bước trên.

Lưu lại file và thực hiện thêm mới tài khoản trên với câu lệnh sau:

ldapadd -Y EXTERNAL -H ldapi:/// -f readonly-user.ldif

Kiểm tra lại tài khoản trên có thể sử dụng để truy vấn được như sau:

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase={1}mdb)' olcAccess

Lúc đó bạn sẽ nhận được thông tin bên dưới từ màn hình:

dn: olcDatabase={1}mdb,cn=config
olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowExpire by self writ
 e by anonymous auth by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=ext
 ernal,cn=auth" manage  by dn.exact="cn=readonly,ou=people,dc=tel4vn,dc=edu,dc=vn" 
 read  by * none
olcAccess: {1}to dn.exact="cn=readonly,ou=people,dc=tel4vn,dc=edu,dc=vn" by dn.subt
 ree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * non
 e
olcAccess: {2}to dn.subtree="dc=tel4vn,dc=edu,dc=vn" by dn.subtree="gidNumber=0+uid
 Number=0,cn=peercred,cn=external,cn=auth" manage by users read  by * none

Cài đặt và cấu hình phpLDAPadmin #

Để tiện cho việc quản lý LDAP database, bạn hãy cài đặt phpLDAPadmin như bên dưới:

apt-get install phpldapadmin -y

Sau khi cài đặt xong, thực hiện chỉnh sửa file bên dưới:

nano /etc/phpldapadmin/config.php

Thay đổi nội dung file như bên dưới rồi lưu lại:

$servers->setValue('server','name','My LDAP Server');
$servers->setValue('server','host','69.87.216.102');
$servers->;setValue('server','base',array('dc=tel4vn,dc=edu,dc=vn'));
$servers->setValue('login','auth_type','session');
$servers->setValue('login','bind_id','cn=admin,dc=tel4vn,dc=edu,dc=vn');
$servers->setValue('auto_number','min',array('uidNumber'=>10000,'gidNumber'=>10000));

Tiếp tục tắt website mặc định của Apache và khởi động lại Apache để cập nhật cấu hình:

a2dissite 000-default.conf
systemctl restart apache2

Như vậy, bạn đã có thể truy cập vào phpLDAPadmin thông qua trình duyệt web với địa chỉ: http://your-server-ip/phpldapadmin:

dashboard-phpLDAPadmin

Thực hiện đăng nhập với Bind DN là người dùng admin hoặc người dùng readonly như bên trên là bạn có thể xem, quản lý, chỉnh sửa LDAP database.

Kết luận #

Thông qua hướng dẫn bên trên, hi vọng bạn có thể cài đặt OpenLDAP và sử dụng phpLDAPadmin trong công việc của mình. Cuối cùng, với bất kì thắc mắc nào, bạn hãy bình luận bên dưới để mình hỗ trợ nhé.

Nguồn bài viết: https://www.howtoforge.com/

Mình là Tùng, hiện đang là DevOps tại Công Ty CP EcoIT. Với kinh nghiệm có được từ trong công việc, mình muốn chia sẻ cho bạn đọc cùng biết và cùng nhau học thêm nhiều điều mới trong lĩnh vực DevOps.

Powered by BetterDocs

Để lại bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *