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ị:
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:
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:
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 đó:
Bạn sẽ được hỏi về mật khẩu của người dùng admin trong LDAP:
Cuối cùng là chọn Yes để lưu lại cấu hình vừa rồi:
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:
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/