Hướng dẫn này sẽ chỉ cho bạn cách lưu trữ người dùng của bạn trong LDAP và xác thực một số dịch vụ dựa trên LDAP. Tôi sẽ không chỉ cách cài đặt các gói cụ thể vì nó phụ thuộc vào bản phân phối/hệ thống. Tôi sẽ tập trung vào cấu hình "thuần túy" của tất cả các thành phần cần thiết để có xác thực/lưu trữ người dùng LDAP. Hướng dẫn này giả định rằng bạn đang di chuyển từ xác thực passwd/shadow thông thường, nhưng nó cũng phù hợp với những người thực hiện từ đầu.
Theo cách này, chúng ta có thể sử dụng tất cả phần mềm có hỗ trợ LDAP hoặc chuyển sang mô-đun LDAP của PAM, mô-đun này sẽ hoạt động như một PAM->Cổng LDAP.
Bạn có thể tìm thêm thông tin về ý tưởng LDAP trên Wikipedia: LDAP wikipedia
Trên hệ thống của tôi (Gentoo), cấu hình OpenLDAP được lưu trữ trong /etc/openldap, chúng tôi quan tâm đến tệp /etc/openldap/slapd.conf. Nhưng trước tiên chúng ta phải tạo mật khẩu cho quản trị viên LDAP, để đưa vào tệp cấu hình:
Cấu hình trông như thế này:
Nhớ thay đổi hậu tố và đường dẫn theo nhu cầu của bạn.
Đây là các tùy chọn cơ bản với một số ACL cơ bản cần thiết để thay đổi mật khẩu theo người dùng. Nếu bạn muốn có nhiều chức năng hơn, vui lòng đọc hướng dẫn về OpenLDAP. Bây giờ khi chúng ta có cấu hình phù hợp cho slapd, chúng ta có thể khởi động daemon:
Vui lòng nhớ có một cái gì đó tương tự như thế trong tệp cấu hình chịu trách nhiệm cho các đối số được truyền tới slapd (đường dẫn phải trỏ đến slapd.sock):
Bây giờ chúng ta có thể kiểm tra xem openldap có đang chạy và hoạt động bình thường không. Chúng ta chưa có bất kỳ dữ liệu nào trong thư mục, nhưng chúng ta có thể thử liên kết dưới dạng cn=Manager,dc=domain,dc=com. Khi bạn được yêu cầu nhập mật khẩu, bạn nên sử dụng mật khẩu bạn đã tạo (tất nhiên là phiên bản văn bản thuần túy của nó
:
Bước đầu tiên là cấu hình mogrationtools theo nhu cầu của bạn. Tệp cấu hình trên Gentoo nằm trong /usr/share/migrationtools/migrate_common.ph.
Nói chung, bạn chỉ cần thay đổi những mục sau:
Bây giờ bạn đã sẵn sàng di chuyển dữ liệu (thực tế, nó hoạt động ngay cả khi không có lệnh xuất):
Bây giờ chúng ta đã có dữ liệu ở định dạng mà máy chủ LDAP hiểu được. Vui lòng mở một trong các tệp bằng trình soạn thảo văn bản để làm quen với cú pháp. Sau đó, chúng ta có thể thêm dữ liệu từ ldifs.
Bạn có thể thử tìm kiếm một số dữ liệu:
Chúng ta hãy bắt đầu với ldap.conf, máy khách của ldap:
Bây giờ là lúc cho nsswitch.conf và pam
Thêm những thứ này vào nsswitch.conf:
Và thay đổi system-auth (hoặc bất kỳ thứ gì bạn có như login, sshd, v.v.) thành:
Đã đến lúc kiểm tra. Công cụ tốt nhất cho nó là getent cũ. Chọn một người dùng từ hệ thống của bạn và phát lệnh:
Bạn sẽ nhận được kết quả hai lần, nếu vậy thì nss_ldap hoạt động tốt. Phần pam có thể được kiểm tra bằng cách xóa người dùng khỏi /etc/passwd và thử đăng nhập qua ssh.
Bây giờ chỉ cần tạo .htaccess như thế này là đủ:
Lưu ý rằng phương pháp này có thể cũng có thể được sử dụng để ủy quyền WebDAV subversion
Yêu cầu
Giới thiệu
Điều chúng tôi muốn đạt được là lưu trữ người dùng của mình trong LDAP, xác thực với LDAP (trực tiếp hoặc pam) và có một số công cụ để quản lý điều này theo cách mà con người có thể hiểu được.Theo cách này, chúng ta có thể sử dụng tất cả phần mềm có hỗ trợ LDAP hoặc chuyển sang mô-đun LDAP của PAM, mô-đun này sẽ hoạt động như một PAM->Cổng LDAP.
Bạn có thể tìm thêm thông tin về ý tưởng LDAP trên Wikipedia: LDAP wikipedia
Cấu hình OpenLDAP
OpenLDAP bao gồm daemon slapd và slurpd. Hướng dẫn này chỉ đề cập đến một máy chủ LDAP không có bản sao, vì vậy chúng ta sẽ chỉ tập trung vào slapd. Tôi cũng cho rằng bạn đã cài đặt và khởi tạo cài đặt OpenLDAP của mình (tùy thuộc vào hệ thống/phân phối). Nếu vậy, chúng ta hãy chuyển sang phần cấu hình.Trên hệ thống của tôi (Gentoo), cấu hình OpenLDAP được lưu trữ trong /etc/openldap, chúng tôi quan tâm đến tệp /etc/openldap/slapd.conf. Nhưng trước tiên chúng ta phải tạo mật khẩu cho quản trị viên LDAP, để đưa vào tệp cấu hình:
Mã:
slappasswd -h {md5}
Mã:
include /etc/openldap/schema/core.schemainclude /etc/openldap/schema/cosine.schemainclude /etc/openldap/schema/inetorgperson.schemainclude /etc/openldap/schema/nis.schemaallow bind_v2
pidfile /var/run/openldap/slapd.pidargsfile /var/run/openldap/slapd.args
modulepath /usr/lib/openldap/openldap
truy cập vào attrs=userPassword bởi dn="uid=root,ou=People,dc=domain,dc=com" write by dn="cn=Manager,dc=domain,dc=com" write by xác thực ẩn danh bằng self write bằng * nonetruy cập vào dn.base="" bằng * read
truy cập vào * bằng dn="cn=Manager,dc=domain,dc=com" write bằng * readdatabase bdbhậu tố "dc=domain,dc=com"
rootdn "cn=Manager,dc=domain,dc=com"rootpw {MD5}Tk1sMytv5ipjr+Vhcf03JQ==
thư mục /var/lib/openldap-dataindex objectClass eq
Đây là các tùy chọn cơ bản với một số ACL cơ bản cần thiết để thay đổi mật khẩu theo người dùng. Nếu bạn muốn có nhiều chức năng hơn, vui lòng đọc hướng dẫn về OpenLDAP. Bây giờ khi chúng ta có cấu hình phù hợp cho slapd, chúng ta có thể khởi động daemon:
Mã:
service slapd start
Mã:
OPTS="-h 'ldaps:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"
Mã:
ldapsearch -D "cn=Manager,dc=domain,dc=com" -W
Di chuyển/Thêm dữ liệu vào thư mục
Bây giờ khi chúng ta có một máy chủ LDAP đang chạy, chúng ta phải điền dữ liệu vào đó, tạo hoặc di chuyển các mục nhập. Tôi sẽ chỉ cho bạn cách di chuyển các mục nhập hiện có từ /etc/passwd, /etc/shadow , /etc/groupsBước đầu tiên là cấu hình mogrationtools theo nhu cầu của bạn. Tệp cấu hình trên Gentoo nằm trong /usr/share/migrationtools/migrate_common.ph.
Nói chung, bạn chỉ cần thay đổi những mục sau:
Mã:
$DEFAULT_BASE = "dc=domain,dc=com";$EXTENDED_SCHEMA = 1;
Mã:
export ETC_SHADOW=/etc/shadow
./migrate_base.pl > /tmp/base.ldif
./migrate_group.pl /etc/group /tmp/group.ldif
./migrate_hosts.pl /etc/hosts /tmp/hosts.ldif
./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif
Mã:
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/base.ldif
Mã:
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/group.ldif
Mã:
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/passwd.ldif
Mã:
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/hosts.ldif
Mã:
ldapsearch uid=foouser
Cấu hình máy khách
Theo tôi, máy khách có nghĩa là máy, kết nối với máy chủ LDAP để lấy người dùng và cấp quyền. Nó cũng có thể là máy mà máy chủ LDAP chạy trên đó. Trong cả hai trường hợp, chúng ta phải chỉnh sửa ba tệp: /etc/ldap.conf, /etc/nsswitch.conf và /etc/pam.d/system-authChúng ta hãy bắt đầu với ldap.conf, máy khách của ldap:
Mã:
BASE dc=domain, dc=comscope subsuffix "dc=domain,dc=com"## khi bạn muốn thay đổi mật khẩu của người dùng bằng rootrootbinddn cn=Manager,dc=domain,dc=com## cần thiết khi ldap của bạn chếttimelimit 5bind_timelimit 5uri ldap://ldap.domain.com/pam_password exopldap_version 3pam_filter objectclass=posixAccountpam_login_attribute uidpam_member_attribute memberuid
nss_base_passwd ou=Máy tính,dc=cognifide,dc=plnss_base_passwd ou=Mọi người,dc=cognifide,dc=plnss_base_shadow ou=Mọi người,dc=cognifide,dc=plnss_base_group ou=Nhóm,dc=cognifide,dc=plnss_base_hosts ou=Máy chủ,dc=cognifide,dc=pl
Thêm những thứ này vào nsswitch.conf:
Mã:
passwd: files ldapshadow: files ldapgroup: files ldap
Mã:
auth required pam_env.soauth enough pam_unix.so likeauth nullokauth enough pam_ldap.so use_first_passauth required pam_deny.soaccount enough pam_unix.soaccount enough pam_ldap.soaccount required pam_ldap.sopassword required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3password eligible pam_unix.so nullok md5 shadow use_authtokpassword eligible pam_ldap.so use_first_passpassword required pam_deny.sosession required pam_limits.sosession required pam_unix.sosession optional pam_ldap.so
Mã:
getent passwd | grep foouser
Apache mod_auth_ldap
Để có quyền LDAP trong apache, bạn phải tải mô-đun mod_auth_ldap
Mã:
LoadModule mm_auth_ldap_module modules/mod_auth_ldap.so
Mã:
AuthName "Restricted"AuthType BasicAuthLDAPURL ldap://ldap.domain.com:389/ou=People,dc=domain,dc=com?uidAuthLDAPBindDN "cn=Manager,dc=domain,dc=com"AuthLDAPBindPassword "your_secret_secret_password_to_ldap_admin"require valid-user
Công cụ quản trị cho LDAP
Có một số công cụ tôi khuyên dùng để quản trị máy chủ OpenLDAP- phpldapadmin - công cụ dựa trên web
- ldapvi - duyệt vim
- PADL migrationtools - công cụ di chuyển
- IDEALX sambaldap tools - công cụ LDAP samba
Các ứng dụng nhận biết ldap khác
- Postfix
- Courier IMAP
- jabberd
- eGroupware