(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Omarine Native Directory (OND): Tạo tài khoản người dùng ldap

Tài khoản người dùng ldap không nằm trong máy địa phương, mà là tài khoản từ xa trên máy chủ ldap. Hai lệnh dưới đây cho thấy emin không được liệt kê trong tệp /etc/passwd, nhưng được tìm thấy trong lệnh getent passwd.

Trong hình dưới đây, emin là người sử dụng hiện hành, sử dụng console tty2, có số id là 1000, thuộc các nhóm users, wheel và wireshark. Lệnh ldapsearch tìm thấy emin có dn là uid=emin,ou=People,dc=nfsv4,dc=omarine,dc=org.

Sử dụng vé

Ban đầu lệnh klist thông báo emin không có vé nào. Vì vậy emin không thể truy cập ldap và lệnh ldapwhoami thất bại. Vì emin được xác thực trước nên lấy vé TGT bằng kinit không cần vào mật khẩu. Sau kinit, lệnh klist trình bày TGT của emin. Từ đó lệnh ldapwhoami hoạt động. Khi sử dụng ldapwhoami emin đã trup cập ldap nên klist tiếp theo hiển thị thêm vé dịch vụ ldap/omarine.omarine.org. Sau cùng, emin hủy vé bằng lệnh kdestroy.

Tạo tài khoản người dùng ldap

Chúng ta tạo tài khoản tên là emin-air, có số id là 10002, thuộc nhóm users. emin-air có thư mục nhà là /hom/emin-air, sử dụng shell là /bin/bash, có tên trong miền nfsv4 là emin-air@nfsv4.omarine.org, và có principal là emin-air@OMARINE.ORG. Bạn soạn thảo tệp entries.ldif có nội dung sau

dn: uid=emin-air,ou=People,dc=nfsv4,dc=omarine,dc=org
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: NFSv4RemotePerson
cn: Pham Bang Ngoc (ldap)
cn: Bang Ngoc (ldap)
uid: emin-air
uidNumber: 10002
gidNumber: 999
homeDirectory: /home/emin-air
loginShell: /bin/bash
NFSv4Name: emin-air@nfsv4.omarine.org
GSSAuthName: emin-air@OMARINE.ORG

Sau đó lấy vé quản trị:

kinit admin

Hình dưới đây mô tả lệnh tạo tài khoản emin-air

Lệnh id ban đầu cho biết không có người dùng tên là emin-air. Sau khi thêm tài khoản người dùng với nội dung trong tệp entries.ldif bằng lệnh ldapadd, id đã tìm thấy emin-air.

Thêm thư mục nhà cho người dùng ldap

emin-air chưa có thư mục nhà, chúng ta thêm thư mục nhà cho emin-air:

sudo mkdir /home/emin-air &&
sudo chown emin-air.users /home/emin-air

Thư mục nhà của người dùng cũng có thể là thư mục từ xa sử dụng hệ thống file mạng.

Thêm principal cho người dùng ldap

kadmin -p root/admin -q 'addprinc -policy dict emin-air'

Nếu muốn emin-air được xác thực trước, bạn bổ sung +requires_preauth vào lệnh trên:

kadmin -p root/admin -q 'addprinc -policy dict +requires_preauth emin-air'

Trong trường hợp này một chứng chỉ cần được tạo cho emin-air.

Đặt mật khẩu cho người dùng ldap

Người dùng dn

ldap coi mỗi dn là một “người dùng” bên trong của nó. Để phân biệt, chúng ta gọi chúng là người dùng dn.

Người dùng dn nặc danh

Là người dùng dn chưa xác thực, được qui ước là có dn rỗng. Để xác định người dùng dn nặc danh, bạn chạy lệnh dưới đây

ldapwhoami -D ""

Kết quả là

anonymous

Nếu chính sách điều khiển truy cập acl cho phép, truy cập nặc danh có thể thực hiện. Ví dụ lệnh dưới đây xem rootDSE bằng người dùng dn nặc danh

ldapsearch -D "" -b "" -s base

Người dùng dn xác thực

Là người dùng dn đã xác thực với một dn cụ thể (không rỗng). Trong qui tắc điều khiển truy cập, biểu diễn dạng biểu thức chính quy dn.regex=".+" khớp mọi người dùng dn xác thực. Có thể viết users thay cho dn.regex=".+".

Mật khẩu người dùng ldap

Không giống như loại mật khẩu mà phơi bày phiên bản hash của nó, mật khẩu người dùng trong ldap được bao bọc bởi chính sách điều khiển truy cập acl. Chính sách an toàn không cho phép đọc mật khẩu người dùng. Nếu có, chỉ dành cho chủ nhân. Trong trường hợp này người sử dụng còn phải vượt qua tầng an ninh SASL (không sử dụng phương pháp xác thực đơn giản), chẳng hạn nếu không có vé thì không thể truy cập.

Trong các qui tắc điều khiển truy cập acl, những đối tượng được cấp phép như self, dn.exact, vv là những người dùng dn xác thực, và qui tắc chỉ có ý nghĩa khi xác thực thành công. Còn anonymous thường đi với auth, cho phép người dùng chưa xác thực được quyền xác thực với một dn nhất định, tức là vẫn yêu cầu xác thực và hoàn toàn không hàm ý truy cập nặc danh.

Chúng ta nhắc lại qui tắc điều khiển truy cập đối với mật khẩu

access to attrs=userPassword,userPKCS12
    by self =xw
    by * auth

Mệnh đề thứ nhất by self đã rõ ràng, chủ nhân có quyền cập nhật mật khẩu nhưng không có quyền đọc. Ở mệnh đề thứ hai, * bao gồm cả anonymous, nhưng phải xác thực mật khẩu (để login). Cả qui tắc không cho phép đọc mật khẩu và truy cập nặc danh.

Như vậy với chính sách điều khiển truy cập acl được nhấn mạnh, mật khẩu với kiểu hash không phải là yếu tố quan trọng nhất. Thậm chí mật khẩu có thể để dạng văn bản rõ. Chúng ta bổ sung chi tiết về kỹ thuật DIGEST-MD5. SASL yêu cầu truy cập mật khẩu dạng văn bản rõ đối với kỹ thuật này. Bản chất là bạn cần đặt mật khẩu nguyên dạng vào thuộc tính userPassword của người dùng, không hoàn toàn phụ thuộc vào phương pháp đặt mật khẩu hay cấu hình. Một cách thực hiện là dùng ldapmodify để thêm hoặc sửa đổi userPassword. Nếu sử dụng ldappasswd hay passwd, bạn cần thêm một chỉ thị cấu hình vào tệp slapd.conf như sau:

password-hash {CLEARTEXT}

Tuy nhiên cấu hình này chỉ cần vào lúc đó. Khi đặt mật khẩu xong bạn có thể bỏ dòng cấu hình đó để trở về cấu hình mặc định {SSHA} nếu muốn.

Bình thường, lệnh dưới đây được dùng để đặt mật khẩu cho người dùng ldap, ví dụ đặt mật khẩu cho emin-air

sudo passwd emin-air

Trong các cách đặt mật khẩu, sử dụng passwd là tốt hơn cả vì nó đi qua thư viện PAM do đó tận dụng được pam_cracklib để kiểm tra mật khẩu yếu. OND thiết kế tham số shadow để buộc thư viện pam_unix phải thất bại để xử lý mật khẩu đi xuống pam_ldap. pam_ldap xác thực mật khẩu tại server nên mật khẩu không đi qua dây khi login và đổi mật khẩu.

Thử login

Bạn test đăng nhập cho người dùng ldap mới (emin-air) như sau

Thêm nhóm ldap

Chúng ta tạo nhóm tên là users-air, có số gid là 15000. Sau đó thêm emin-air vào nhóm này. Bạn soạn thảo tệp entries.ldif có nội dung sau

# users-air, Groups, nfsv4.omarine.org
dn: cn=users-air,ou=Groups,dc=nfsv4,dc=omarine,dc=org
objectClass: top
objectClass: posixGroup
cn: users-air
gidNumber: 15000
memberUid: emin-air

Sử dụng ldapadd để thêm nhóm như hình dưới đây:

Thêm người dùng ldap vào nhóm địa phương

Người sử dụng trong nhóm wheel có chức năng quản trị systemd và sử dụng su, sudo. Để thêm emin-air vào nhóm wheel, bạn sử dụng lệnh usermod như thông thường

Với tài khoản người dùng ldap, bạn có thể đăng nhập từ mọi máy trong mạng mà không phải lập tài khoản theo cách cục bộ. Tài khoản người dùng là thông suốt trên toàn mạng, chức năng tương tự như NIS nhưng là giải pháp an ninh mật mã an toàn hơn.

Advertisements

Gửi phản hồi

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: