MỤC LỤC TÓM TẮT ĐỀ TÀI: 3 CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ LDAP 3 1. Giới thiệu tổng quan về ldap 3 2. Các model của ldap 3 CHƯƠNG 2: SƠ LƯỢC VỀ LDAPv3 3 1. LDIF 3 2. Thuộc tính trong ldap 3 3. Sự xác thực 3 4. Phân phối thư mục 3 CHƯƠNG 3. OPENLDAP 3 1. Openldap distribution : 3 2. Software requirements 3 2.1 Threads 3 2.2 Thư viện SSLTLS 3 2.3 Database Backend Modules 3 2.4 SASL Libraries 3 3. Compiling OpenLDAP 2: 3 4. OpenLDAP Clients and Servers : 3 5. Slapd.conf Configuration file 3 5.1 Schema files 3 5.2 Logging 3 5.3 SASL Option 3 5.4 SSLTLS Options 3 5.4.1 Tạo server’s certificate 3 5.5 Các thông số liên quan tới bảo mật khác : 3 5.6 Serving up data : 3 6. Access control lists (ACLs) 3 CHƯƠNG 4: LDAP MỞ XÂY DỰNG MỘT CÔNG TY WHITE PAGES 3 1. Điểm bắt đầu 3 2. Xác định giản đồ 3 3. Cập Nhật slapd.conf 3 4. Bắt đầu từ slapd 3 5. Thêm khoản mục thư mục ban đầu 3 5.1 Xác nhận các nội dung của thư mục 3 5.2 Cập Nhật những gì đang có 3 6. Đồ họa biên tập viên 3 CHƯƠNG 5: GIẢI THÍCH VỀ SAO CHÉP (REPLICATION), GIỚI THIỆU (REFFERALS), TÌM KIẾM (SEARCHING) VÀ SASL. 3 1. Nên có nhiều hơn 1 bản copy 3 1.1 Tạo slurpd 3 1.2 Tóm lược sự sao chép 3 1.3 Cấu hình cho Server Master 3 1.4 Cấu hình server bản sao 3 1.5 Replogfile của slurpd 3 2. Phân phối thư mục 3 3. Lựa chọn tìm kiếm nâng cao: 3 3.1 Dùng Referrals với ldapsearch 3 3.2 Giới hạn việc tìm kiếm 3 4. Tìm công suất server: 3 5. Tạo các file lược đồ tùy chỉnh (Custom Schema) cho slapd: 3 6. SASL và OpenLDAP 3 CHƯƠNG 6: THAY THẾ NIS 3 1. Nis là gì 3 2. Lưu đồ thông tin dịch vụ 3 3. Di chuyển thông tin 3 4. Modun pam_ldap 3 5. Modun nss_ldap 3 6. OPENSSH, PAM và NSS 3 7. Xác thực thông qua ldap 3 7.1 Một host và nhóm các user 3 7.2 Một user và một nhóm các host 3 8. Netgroup 3 9. Bảo mật 3 10. Automount maps 3 CHƯƠNG 7: EMAIL VÀ LDAP 3 1. Đại diện cho user 3 2. Tác nhân chuyển thư Mail Transfer Agents (MTAs) 3 2.1 Sendmail 3 2.1.1 Bản đồ 3 2.1.2 Aliases 3 2.1.3 Định tuyến mail dùng LDAP 3 2.2 Postfix 3 2.3 Exim. 3 CHƯƠNG 8. STANDARD UNIX SERVICES AND LDAP 3 1. The Directorry Namespace 3 2. An FTPHTTP Combination 3 2.1 ProFTPD 3 2.2 Apache 3 3. User Authentication with Samba 3 3.1 Configuring Samba 3 3.2 Adding and Using Samba Account 3 4. FreeRadius 3 4.1 FreeRadius and OpenLDAP 3 5. Resolving Hosts 3 6. Central Print Management 3 CHƯƠNG 9: KHẢ NĂNG TƯƠNG TÁC LDAP 3 1. Khả năng tương tác hoặc hội nhập? 3 2. Directory Gateways 3 3. Nền tảng dịch vụ xác thực 3 3.1 Thảo luận ngắn về Kerberos 3 4. Phân phối, thư mục Multivendor 3 5. Metadirectories 3 6. Đẩykéo các đại lý cho đồng bộ hóa thư mục 3 6.1 Ngôn ngữ đánh dấu thư mục dịch vụ 3 CHƯƠNG 10: NET::LDAP VÀ CÁC VẤN ĐỀ LIÊN QUAN 3 1. Môđun (module) Net::LDAP 3 2. Kết nối, ràng buộc, tìm kiếm: 3 3. Làm việc với Net::LDAP::LDIF 3 4. Cập nhật thư mục 3 4.1 Thêm nội dung: 3 4.2 Xóa bớt nội dung: 3 4.3 Chỉnh sửa nội dung: 3 4.3.1 Net::LDAP::Entry 3 4.3.2 Đẩy bản cập nhật nội dung về server 3 4.3.3 Thay đổi nội dung thư mục: 3 5. Advanced Net::LDAP Scripting 3 5.1 References và Referrals 3 5.2 Script chứng thực với SASL (Scripting Authentication) 3 5.3 Mở rộng và kiểm soát 3 5.3.1 Mở rộng 3 5.3.2 Kiểm soát 3
Trang 1MỤC LỤC
Trang 2TÓM TẮT ĐỀ TÀI:
Đề tài này nghiên cứu về giao thức LDAP (Lightweight Directory Access Protocol)
CHƯA BIẾT GHI GÌ THÊM
Trang 3GIAO THỨC LDAP ( LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL )
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ LDAP
1 Giới thiệu tổng quan về ldap
LDAP (Lightweight Directory Access Protocol):
Là một giao thức tìm, truy nhập các thông tin dạng thư mục trên server
Là giao thức dạng Client/Server dùng để truy cập dịch vụ thư mục
LDAP chạy trên TCP/IP hoặc các dịch vụ hướng kết nối khác
Một mô hình thông tin cho phép xác định cấu trúc và đặc điểm của thông tin trong thư mục.Trong LDAP các thông tin cần truy cập theo dạng phân cấp từ trên xuống dựa vào các chỉ mục (Index)
Một cấu trúc thư mục là một tập hợp các đối tượng có các thuộc tính hay đặc điểm tương tự và được sắp xếp theo lôgic thành nhiều cấp bậc Ví dụ thường thấy nhất là danh bạ điện thoại Trong
đó, mỗi cá nhân hay tổ chức được xấp xếp theo thứ tự tên và có các thuộc tính là địa chỉ và số điện thoại Vì mẫu cấu trúc một thư mục LDAP tương đối đơn giản nên nó cũng thường được dùng để xác nhận người sử dụng các hệ thống thông tin
Vào giữa thập niên 1980, tổ chức CCITT (International Telegraph and Telephone Consultative Committee), tiền thân của ITU (International Telecommunication Union) và tổ chức tiêu chuẩn hóa quốc tế (ISO) đã hợp tác với nhau để tạo ra một chuẩn mới cho dịch vụ thư mục (Drectory Service – DS) Cuối năm 1988, CCITT đã công bố chuẩn dịch vụ thư mục X.500 đầu tiên Sau
đó, chuẩn này đã được cập nhật vào các năm 1993, 1997, và 2001
X.500 hoạt động trên nền tảng OSI stack.
Khi mới xuất hiện, X.500 đã mang lại rất nhiều tiện ích cho người dùng Nhưng sau này, nó bộc
lộ những khiếm khuyết Một trong những khiếm khuyết đó nằm ở giao thức DAP (Directory client Access Protocol) của X.500 Giao thức này tương đối phức tạp, không thích hợp và không
có sẵn trên các máy tính thời đó Bên cạnh đó, DAP cũng khá cồng kềnh và khó hiện thực Vì những lý do đó, người ta bắt đầu nghĩ đến một cách tiếp cận mới để tránh việc phải hiện thực một giao thức phức tạp như vậy
X.500 khá phức tạp cũng do cấu trúc của nó Nó đòi hỏi client và server giao tiếp với nhau giao thức 7 lớp OSI Đó là điểm yếu của nó khi so sánh bộ giao thức TCP / IP
Vào khoảng năm 1990, 2 giao thức đơn giản hóa của DAP, gọi là DAS (Directory Assistance Service) và DIXIE (Directory Interface to X.500 Implemented Efficiently) đã được định nghĩa trong RFC 1202 và RFC 1249
Sau sự ứng dụng thành công của DIXIE và DAS, các thành viên của OSI-DS quyết định tăng cường nguồn lực vào việc tạo ra một giao thức truy cập thư mục đơn giản hóa với đầy đủ tính năng cho X.500 Đó chính là LDAP
Trang 4LDAP là khá nhẹ khi vì các gói tin nhắn được map trực tiếp lên các lớp TCP (cổng 389) của giao thức TCP / IP
2 Các model của ldap
Information model: cho biết các loại dữ liệu, thông tin có thể chứa trong LDAP thư mục
Naming model: cho biết cách sắp xếp, tham chiếu đến dữ liệu trong thư mục
Function model: cho biết người dùng có thể làm gì với dữ liệu LDAP
Security model: chứa các thông tin xác thực, phân quyền với dữ liệu LDAP
LDAP Data Interchange Format (LDIF): định dạng chuẩn dùng để trao đổi dữ liệu LDAP
Dữ liệu trong LDAP directory được lưu dưới dạng các cây thư mục phân cấp
Trang 5CHƯƠNG 2: SƠ LƯỢC VỀ LDAPv3
1 LDIF
The LDAP Interchange Format (LDIF), là một chuẩn định dạng file text để lưu trữ thông tin cấu hình của hệ thống LDAP.định dạng chuẩn dùng để trao đổi dữ liệu LDAP.Thông tin lưu trữ trong LDIF gồm có:
Các thông tin đăng nhập ( collection of entries)
Bản đồ tên và giá trị các thuộc tính
Các thông tin hướng dẫn xử lý thông tin
Các tập tin LDIF thường được sử dụng để đưa dữ liệu mới vào thư mục hoặc thay đổi dữ liệu hiện có Các dữ liệu trong file LDIF cần phải tuân theo các quy tắc cấu trúc của thư mục LDAP Chúng ta có thể nghĩ của lược đồ như là một định nghĩa dữ liệu cho thư mục của bạn Mỗi mục được thêm vào hoặc thay đổi trong thư mục được kiểm tra để đảm bảo tính chính xác Một lược đồ sẽ vi phạm nếu các dữ liệu không tương ứng với các quy định hiện hành
Cấu trúc cây thông tin thư mục:
cú pháp LDIF:
# LDIF listing for the entry dn: dc=plainjoe,dc=org
Trang 6Ta có thể xem xét ví dụ sau :
Giả sử rằng có hai nhân viên tên là Jane Smith trong công ty : một người ở Kinh doanh và một ở khu Kỹ thuật Bây giờ giả sử các mục cho các nhân viên có cùng một mục gốc Tên gọi chung (cn)và tên đơn vị tổ chức (ou) không phải là thuộc tính là duy nhất Tuy nhiên, cả hai có thể được sử dụng kết hợp để tạo ra một RDN duy nhất
# Example of two entries with a multivalued RDN
dn: cn=Jane Smith+ou=Sales,dc=plainjoe,dc=org //RDN co nhieu thuoc tinh:cn,ou
ou: Sales //ou: organizational unit
2 Thuộc tính trong ldap
Các khái niệm của các loại thuộc tính và cú pháp thuộc tính đã được đề cập trong các chương trước Các loại thuộc tính và quy tắc cú pháp liên quan tương tự như khai báo kiểu biến và kiểu
dữ liệu như trong nhiều ngôn ngữ lập trình Các thuộc tính được sử dụng để giữ giá trị Các biến trong các chương trình thực hiện một nhiệm vụ tương tự-lưu trữ thông tin
Không giống như các biến, các thuộc tính của LDAP có thể có nhiều giá trị Khi gán một giá trị mới cho một thuộc tính , nó sẽ thêm vào giá trị mới cùng với các giá trị khác đã có Ta có thể xem xét ví dụ sau:
# LDIF listing for dn: ou=devices,dc=plainjoe,dc=org
description: Container for all network enabled
devices existing within the plainjoe.org domain
Trang 7Ta thấy tập tin LDIF có lưu hai giá trị cho thuộc tính telephoneNumber.Một số thuộc tính chỉ có thể mang một giá trị duy nhất Việc một thuộc tính đơn trị hoặc đa trị phụ thuộc vào định nghĩa trong các server máy chủ Các thuộc tính đơn trị bao thường gặp như tên quốc gia gia (c), tên hiển thị (DisplayName), hoặc ID của user (uidNumber).
ý nghĩa giá trị các thuộc tính của objectClass
Tất cả các mục trong một thư mục LDAP luôn có một thuộc tính objectClass, và thuộc tính này phải có ít nhất một giá trị Mỗi giá trị objectClass có tác dụng như một khuôn mẫu để các dữ liệu được lưu trữ trong mục Nó định nghĩa một tập hợp các thuộc tính phải có mặt trong mục và các thuộc tính tùy chọn có thể có hoặc không
Ta có thể xem theo ví dụ trên, giá trị của objectClass là organizationalUnit được quy định như sau:
Từ khóa MUST: các thuộc tính bắt buộc
Từ khóa MAY:các thuộc tính tùy chọn cho các đối tượng
Từ khóa SUP: chỉ ra đối tượng cha.Đối tượng con có đầy đủ các thuộc tính ,cú pháp của đối tượng cha
3 Sự xác thực
Tại sao sự xác thực lại cần thiết trong một thư mục LDAP? Hãy nhớ rằng LDAP là một giao thức dựa trên hướng kết nối Quá trình xác thực được sử dụng để thiết lập các đặc quyền của user cho mỗi phiên Tất cả các việc như tìm kiếm, truy vấn, được thay đổi tùy theo mức độ được cấp cho của người sử dụng
Trang 8Ta đã thêm một thuộc tính có tên là UserPassword Thuộc tính này lưu trữ một thông tin đại diện cần thiết
để xác thực user Tiền tố (trong trường hợp này, {MD5}) mô tả cách các thông tin được mã hóa RFC
2307 định nghĩa các thuật toán mã hóa như {CRYPT},{MD5},{SHA},{SSHA}.
Mỗi user được cấp username và password.Trong trường hợp trên username là DN(cn=gerald
carter,ou=people,dc=plainjoe,dc=org) và password sử dụng là giá trị trong userPassword
Trong LDAP còn định nghĩa một vài phương thức xác nhận khách như:
Anonymous Authentication: Xác định nặc danh
Simple Authentication: xác thực đơn giản
Simple Authentication over SSL/TLS:xác thực đơn giản thông qua SSL/TLS
Simple Authentication and Security Layer (SASL):xác thực đơn giản và lớp bảo vệ
Anonymous Authentication:cho phép truy nhập với DN và password trống
Simple Authentication:tên đăng nhập DN và password sẽ được gửi đến LDAP server.Server sẽ so sánh với giá trị có trong hệ thống (server sẽ thực hiện các chuyển đổi nếu cần thiết).Tuy nhiên phương thức này có điểm yếu là thông tin gửi đến cho server ở dạng clear text
Simple Authentication over SSL/TLS:mã hóa các thông tin gửi đi đến server.Có 2 cách sử dụng phương thức này:
LDAP over SSL(LDAPS-tcp/636): được hỗ trợ bởi nhiều server LDAP
LDAP over TLS(tcp/port389):cho phép server mã hóa hoặc không mã hóa các phiên
Simple Authentication and Security Layer (SASL):
Một phương thức mở rộng được định nghĩa trong RFC 2222,được dùng để thêm các thông tin xác thực trong việc kết nối định hướng
RFC 2222 định nghĩa một vài phương thức xác thực cho SASL
Trang 9• The External (EXTERNAL) mechanism
•
4 Phân phối thư mục
Trong phân phối thư mục,các host khác nhau chứa các phần khác nhau của cây thư mục
Hình trên lớp people ou được lưu trong lớp riêng lẻ Lý do để thực hiện phân phối thư mục:a.Hiệu suất
Khi một phần của cây thư mục được sử dụng nhiều thì ta nên đặt phần này trên máy chủ của chính nó, điều này cho phép client truy cập vào subtrees còn lại nhanh hơn
Để chia cây thư mục giữa 2 server,ta phải cấu hình link giữa server chính và server giữ cây thư mục people ou.Ta cần thiết lập superior knowledge reference link và subordinate knowledge reference link
Subordinate( cấp dưới) knowledge link( hay reference) :kết nối 1 node trong cây thư mục đến naming context của server khác.Thông thường naming context của server thứ 2 là sự tiếp tục của thư mục
Trang 10Trong ví dụ trên, people ou trong cây thư mục chính không có thư mục con do query of entry
ou=people,dc=plainjoe,dc=org nằm trong server 2.Lúc này entry (lối vào)ou=people,dc=plainjoe,dc=org
trên server thư mục chính chứa thông tin tham khảo tới server thư mục thực sự chứa nó
Hình ảnh thể hiện định nghĩa của lớp đối tượng referral trong RFC 3296
Lớp trên chỉ chứa 1 thuộc tính đó là ref.Thuộc tính này chứa file URI chỉ ra host chứa cây.Định dạng của URI như sau:
ldap://[host:port]/[/dn[?attribute][?scope][?filter][?extensions]]
khi đó entry mới của people ou như sau :
# LDIF listing for the entry ou=people,dc=plainjoe,dc=org
Trang 11CHƯƠNG 3 OPENLDAP
Chương này giới thiệu về OpenLDAP, một server phổ biến, mã nguồn mở theo tiêu chuẩn LDAPv3 Có một số những sản phẩm thương mại khác tương tự, bao gồm Sun Microsystem's SunOne directory server, Novell's eDirectory và Microsoft's Active Directory, mặc dù những Directory này không đơn thuần chỉ là LDAP.
Vậy, tại sao chúng ta sử dụng OpenLDAP server thay vì một trong những sản phẩm khác ? Có khá nhiều
lí do khiến OpenLDAP trở nên thu hút:
• OpenLDAP là sản phẩm mã nguồn mở, mã nguồn của nó có thể được tải về từ
http://www.openldap.org Mã nguồn giúp cung cấp khá nhiều sự trợ giúp cho người sử dụng.
• OpenLDAP 2 được làm theo chuẩn LDAPv3.
• OpenLDAP có trên nhiều nền khác nhau, bao gồm Linux, Solaris, Mac OS 10.2, và Windows (hầu hết các phiên bản).
• Dự án OpenLDAP là sự tiếp nối từ LDAP server của Đại học Michigan Quan hệ giữa LDAP server của Michi gan và các sản phẩm LDAP server hiện đại khác có thể được so sánh như là mối quan hệ của trình duyệt Web hiện đại và NCSA code base.
Những ví dụ trong chương này giới thiệu OpenLDAP trên nền 1 Unix server, vì vậy, họ sử dụng những
dòng lênh chuẩn của Unix chẳng hạn như tar, gzip và make.
1 Openldap distribution :
Phiên bản mới nhất của OpenLDAP có thể tải về từ http://www.OpenLDAP.org/software/download/ OpenLDAP có hai phiên bản chính, bản 1.2 chỉ nâng cao và sửa một số bug nhỏ từ bản gốc LDAP server của Đại học Michigan và chỉ hỗ trợ LDAPv2, còn bản OpenLDAP 2 là một sản phẩm hoàn thiện theo chuẩn LDAPv3.
Có khá nhiều ưu điểm của LDAPv3 so với các phiên bản trước, chẳng hạn :
• Khả năng hỗ trợ refferal: LDAPv2 không có sự chuẩn bị về việc trả lại một refferal cho client Trong khi LDAP server của Đại học Michigan có thí nghiệm hỗ trợ cho việc thực thi referral, khái niệm này vẫn chưa được chuẩn hóa cho khi LDAPv3 xuất hiện Việc chuẩn hóa này tạo nên khả năng tương tác giữa server và clients từ các sản phẩm LDAP server khác nhau, điều mà LDAPv2 chưa làm được.
• Khả năng cung cấp server’s schema qua các hoạt động của LDAP, làm cho việc client học schema của server trước khi thực hiện các tìm kiếm trở nên dễ dàng hơn Các duy nhất để xác định schema trong LDAPv2 là kiểm tra các file configuration của server Cung cấp server’s schema như là các mục trong directory cho phép những dịch vụ real-time cập nhật qua các hoạt động của LDAP (lưu rằng LDAPv3 không yêu cầu cập nhật động).
• Hỗ trợ sử dụng kí tự UTF-8 trong các chuỗi (RFC 2253) và language tags cho việc mô tả các thuộc tính (RFC 2596).
• Cải thiện bảo mật và tính linh hoạt cho authentication credentials và data qua SASL và SSL/TLS, trong khi LDAPv2 chỉ hỗ trợ simple binds hoặc Kerberos 4 cho authentication
• Hỗ trợ protocol extensions như là một cơ chế để tăng cường những hoạt động có sẵn hoặc tạo những lệnh mới mà không cần phải sửa lại những LDAP protocol đã định nghĩa.
Trang 122 Software requirements
Những ví dụ trong sách này sử dụng phiên bản OpenLDAP version 2.1.8 Giống như các phần mềm khác, software requirement thay đổi theo từng phiên bản, vì vậy, hãy kiểm tra kĩ thông tin của các bản đó trước khi sử dụng.
OpenLDAP server sẽ cần một số gói phần mềm mở rộng như sau:
• Hỗ trợ cho POSIX threads, kể cả hệ điều hành hay thư viện ngoài
• Thư viện SSL/TLS (chẳng hạn OpenSSL package có ở http://www.openssl.org )
• Một thư viện quản lí dữ liệu có hỗ trợ lữu trữ DBM type một cách dễ dàng Có thể chọn Berkeley
DB 4.1 package từ Sleepycat Software ( http://www.sleepycat.com/ ).
• Thư viện SASL phiên bản 2.1 từ Đại học Carnegie Mellon ( library.html ).
http://asg.web.cmu.edu/sasl/sasl-2.1 Threads
Nếu hệ điều hành server của bạn hỗ trợ threads, OpenLDAP 2 hoạt động hiệu quả hơn với thứ này Sự
hỗ trợ này có ở hầy hết các hệ điều hành Linux, Solaris và nhiều hệ khác.
Nếu bạn gặp vấn đề với hỗ trợ POSIX thread, lựa chọn đầu tiên là kiểm tra lại các ghi chú về cài đặt ứng với hệ điều hành của bạn trên web site OpenLDAP.org, hoặc bạn có thể vào
http://www.gnu.ai.mit.edu/software/pth/related.html , nơi có một danh sách những thư viện POSIX
thread cho hệ điều hành Unix Có thể tắt hỗ trợ thread bằng lệnh –disble-threads trong configuration
script để compile Tuy nhiên, replcation helper daemon (sẽ được nhắc đến trong chương 5) cần đến
thread support này.
2.2 Thư viện SSL/TLS
RFC 2246 mô tả TLS 1.0, tương ứng với SSL 3.0 Những họat động mở rộng của StartTLS định nghĩa trong RFC 2830 cho phép LDAP clients và servers negotiate một TLS sesion tại bất kỳ điểm nào trong một conversation (ngay cả khi đang authenticate client) Để bật việc hỗ trợ này, bạn cần phải cài đặt phiên bản mới nhất của thư viện OpenSSL tại http://www.openssl.org/
Xây dựng và cài đặc OpenSSL khá đơn giản Chỉ cần nhớ rằng, với bản 0.9.6, thư viện chia sẻ không được xây dựng một cách mặc định Để tạo các thư viện chia sẻ, trong build script của OpenSSL, mở
tùy chọn shared lên.
Tùy chọn –opensldir để định nghĩa thư mục cài đặt
$ /configuration shared openssldir=/usr/local
Theo sau đó là phần bắt buộc để cài đặt thư viện phát triển và các công cụ ở /usr/local :
$ make
$ /bin/su -c "make install"
Trang 132.3 Database Backend Modules
Để xây dựng một OpenLDAP server độc lập, cần phải cung cấp một thư viện cho một vài loại
database manager (DBM) OpenLDAP hỗ trợ hai loại lưu trữ local DB Loại thứ nhất là ldbm, có thể
sử dụng GNU Database manâger từ Free Software Foundation ( http://www.fsf.org ) hoặc BerkeleyDB package từ Sleepyal Software( http://www.sleepycat.com ) Loại thứ 2 được giới thiệu ở OpenLDAP
2.1 gọi là bdb, được chỉnh sửa để sử dụng mỗi thư viện Berkeley DB 4
Tải thư viện Berkeley DB 4.1 từ http://www.sleepycat.com/download/index.shtml Sau đó extract ra một thư mục nào đó, ví dụ :
Cài đặt SASL chỉ cần một số bước quen thuộc :
$ gzip dc cyrussasl2.1.9.tar.gz | tar xf
Giải nén source file :
$ gzip -dc openldap-2.1.8.tar.gz | tar xvf –
Đến thư mục mới tạo ra, chạy /configure script, chỉnh lại các tùy chọn mà bạn muốn mở hoặc tắt, ví dụ :
Trang 144 OpenLDAP Clients and Servers :
OpenLDAP package chứa những thư viện client, server và development Bảng 3.1 cho ta một cái nhìn tổng quan về các tiện ích đi kèm với package.
Table 3-1 Installed components included with OpenLDAP
libexec/slapd The LDAP server.
libexec/slurpd The LDAP replication helper.
Tools for manipulating the local backend data store used by the slapd daemon.
sbin/slappasswd A simple utility to generate password hashes suitable for use in slapd.conf.
lib/libldap*
lib/liblber*
include/ldap*.h
include/lber*.h
The OpenLDAP client SDK.
5. Slapd.conf Configuration file
File slapd.conf là nơi chứa các thông tin cấu hình chính cho một OpenLDAP server độc lập, replication helper daemon slurpd, và các công cụ liên quan như slapcat và slapadd Tương tự, OpenLDAP client tool sửa dụng ldap.conf cho các tùy chỉnh mặc định.
File slapd.conf chia làm 2 phần chính Phần đầu chứa các thông số ảnh hưởng tới hoạt động tổng thể cho
OpenLDAP server (ví dụ như : lượng thông tin gửi đến log file) Phần thứ hai là những thông số liên quan
tới các database backend sử dụng bởi slapd daemon Chúng ta có thể định nghĩa những cài đặt mặc định cho phần đầu trong slapd.conf Tuy nhiên, trong phần thứ hai, các giá trị được chỉnh sẽ đè lên giá trị mặc
Trang 15OpenLDAP 2 chứa khá nhiều schema thông dụng, các định nghĩa attributeType và objectClass cần
thiết trong core.schema.
Mặc định, tập tin trên ở /usr/local/etc/openldap/schema/ sau khi cài đặt Trong file config, thông số
include chỉ ra schema sẽ được sử dụng bởi server :
## Database sections omitted
Có rất nhiều loại schema trong mặc định của OpenLDAP 2.1 :
Trang 16The schema that defines the inetOrgPerson object class and its associated attributes defined in RFC 2798 This object is frequently used to store contact information for people.
## Database sections omitted
Thông số đầu tiên cần chú ý là loglevel, dùng để chỉ loại thông tin cần được ghi lại trong system logs Có thể coi loglevel như một chuỗi các bit flag có thể cộng với nhau.
Bảng dưới đây cho biết 1 số giá trị của loglevel và ý nghĩa của chúng :
Table 3-2 OpenLDAP logging levels
-1 All logging information
Trang 170 No Logging information
1 Trace function calls
2 Packet-handling debugging information
4 Heavy trace debugging
8 Connection management
16 Packets sent and received
32 Search filter processing
64 Configuration file processing
128 Access control list processing
256 Statistics for connection, operations, and results
512 Statistics for results returned to clients
1024 Communication with shell backends
2048 Print entry parsing debug information
Mọi thông tin debug sẽ được ghi lại nhờ LOG-LEVEL4 syslogs Vì vậy, để hướng dẫn slapd ghi log vào các file riêng biệt, thêm dòng sau đây vào /etc/syslog.conf và hướng dẫn syslogd daemon đọc lại cấu hình
của nó bằng cách gửi lại 1 kill-HUP signal
local4.debug /var/log/slapd.log
Hai thông số còn lại được đề cập trong phần này là :
pidfile filename
This parameter specifies the absolute location of a file that will contain the process ID of the
currently running master slapd process.
argsfile filename
This parameter specifies the absolute path to a file containing the command-line parameters used
by the currently running master slapd This parameter is processed only if slapd is started without
the debug command-line argument.
Trang 18sasl-host dùng để đánh giá domain name cho các host sử dụng SASL authentication Với cơ chế local authentication như DIGEST-MD5, đây sẽ là host và domain name của slapd server.
sasl-realm là SASL domain sử dụng cho authentication.
Thông số thứ 3, sasl-secprops, cho phép bạn xác định những điều kiện khác nhau ảnh hưởng tới bảo mật của SASL Bảng dưới đây sẽ cho biết các giá trị và ý nghĩa của chúng :
Table 3-3 sasl-secprops parameter values and descriptions
None Clears the default security properties (noplain, noanonymous).
noplain Disables mechanisms vulnerable to passive attacks, such as viewing network packets to examine passwords.noactive Disables mechanisms vulnerable to active attacks.
nodict Disables mechanisms that are vulnerable to dictionary-based password attacks.
noanonymous Disables mechanisms that support anonymous login.
forwardsec Requires forward secrecy between sessions.
passcred Requires mechanisms that pass client credentials.
maxbufsize=sizeDefines the maximum size of the security layer receive buffer A value of 0 disables the
security layer The default value is the maximum of INT_MAX (i.e., 65536).
Để hiểu thêm về sasl-secprops, bạn nên tìm hiểu về hoạt động của các plugin của sasl :
Table 3-4 SASL authentication mechanism security properties
NOANONYMOUS
128 if compiled with RC4; 112 if compiled with DES; 0 if compiled with neither RC4 nor DES
Trang 19NOPLAIN NOACTIVE NOANONYMOUS
56
KERBEROS_V4
NOPLAIN NOACTIVE NOANONYMOUS
Giả sử trong file slapd.conf của bạn có các dòng sau :
## No PLAIN or ANONYMOUS mechanisms; use DES encrpytion
Hai thông số còn lại cho slapd biết vị trí của server’s certificate và private key tương ứng.
5.4.1 Tạo server’s certificate
Chúng ta sẽ dùng CA.pl script để tạo các certificates Để tạo mới 1 certificate, ta dùng lệnh –
newcert và trả lời các câu hỏi cần thiết
Trang 20$ /usr/local/misc/CA.pl -newcert
Enter PEM pass phrase:test
Verifying password - Enter PEM pass phrase:test
-You are about to be asked to enter information that will be incorporated into your
certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-Country Name (2 letter code) [GB]:US
State or Province Name (full name) [Berkshire]:Alabama
Locality Name (eg, city) [Newbury]:Somewhere
Organization Name (eg, company) [My Company Ltd]:PlaineJoe Dot Org
Organizational Unit Name (eg, section) [ ]:IT
Common Name (eg, your name or your server's hostname) [ ]:pogo.plainjoe.org
Email Address [ ]:jerry@plainjoe.org
Certificate (and private key) is in newreq.pem
Lệnh trên sẽ tạo ra 1 file tên là newreq.pem chứa private key được bảo vệ bởi passworf và tự đăng
kí certificate Đây là nội dung của newreq.pem
-BEGIN RSA PRIVATE
KEY -Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,D8851189E7EA85CE
ImZpOfzqhNhNa6MRQBtYxjPbWmHw+3XxVAowO1FJyFQRQhuRDqrUia1IW7Tikb4d rvjbv8T1+SN9vRGWBpz3nAERnS6uEnzPu201b9X413uXaF80TYYId7OUalG5mjqr
GG0oHaYwbmvAIRyhq3zhqCnBgscZ0l5DCXGTw0T1TeqaTfD8BpRE4ES+F0dlKjRf
yXuXmLrTg0C9ITokzRj4Xtu0nJfQ5LKouooeI43FHqFBFV4Jw5IIKOuAg/tkinez
VqVesaV707PLqdlYNAVx26z/nPwbbAT2JY4fqemBzjBJPDN6Tr/QncYgbMcG+H5/
7z7mBmOWq7nCpgFSwV1KgvtDIOjqZmGSpTLbZ/pY+JUT3iPsRAaL5XHDZDM6pF0l R70ePd3Z5sUcg1TJlnuPYejyTi1OM/hoKrNnjM+4bTY8St14zAaMV15G/3GGJue0
jeJkBZba8UpQ539yPfuPINueJFG+QipDUnHWVHSWIGhqiKVZxPTZWCZrgHx7UbYw fQVORGQ6ddu6vYNiODYXUnN3YtvD02OkbiGVl53OXlYv5hOydqdWRhA1hfR8SKAG fnt1OV9yjC/0K2mj+nMNOu5kHMfA+Q6hw7mvWAsR/2ldX+/QTA8n1oRi7U4zySUL
EDAOBgNVBAgTB0FsYWJhbWExEjAQBgNVBAcTCVNvbWV3aGVyZTEaMBgGA1UECh MR
UGxhaW5lSm9lIERvdCBPcmcxCzAJBgNVBAsTAklUMRwwGgYDVQQDExNnYXJpb24u cGxhaW5qb2Uub3JnMSEwHwYJKoZIhvcNAQkBFhJqZXJyeUBwbGFpbmpvZS5vcmcw HhcNMDIxMTE2MjI0MzA5WhcNMDMxMTE2MjI0MzA5WjCBnTELMAkGA1UEBhMCVV Mx
Trang 21EDAOBgNVBAgTB0FsYWJhbWExEjAQBgNVBAcTCVNvbWV3aGVyZTEaMBgGA1UECh MR
UGxhaW5lSm9lIERvdCBPcmcxCzAJBgNVBAsTAklUMRwwGgYDVQQDExNnYXJpb24u cGxhaW5qb2Uub3JnMSEwHwYJKoZIhvcNAQkBFhJqZXJyeUBwbGFpbmpvZS5vcmcw gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALV0pZLKCwqioakJtgKr0+DScZ9h C/nLcOxw9t6RUHlWSD9aGC9rMaMGrxG5YqI+dEuhbGWhnVo37IsMlHC+oJsXwY/2
r/RQT5dk1jyC4qt+2r4mGGC/QbCX0GRjT0gn3obB570XZ19qBCfYwIXOtYncIX0P
0fUwFVRG5frBL5QDAgMBAAGjgf0wgfowHQYDVR0OBBYEFPVRTbSjVJ4v4pOb0N0k oJk8YZIGMIHKBgNVHSMEgcIwgb+AFPVRTbSjVJ4v4pOb0N0koJk8YZIGoYGjpIGg
MIGdMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHQWxhYmFtYTESMBAGA1UEBxM JU29t
ZXdoZXJlMRowGAYDVQQKExFQbGFpbmVKb2UgRG90IE9yZzELMAkGA1UECxMCSVQ x
HDAaBgNVBAMTE2dhcmlvbi5wbGFpbmpvZS5vcmcxITAfBgkqhkiG9w0BCQEWEmpl cnJ5QHBsYWluam9lLm9yZ4IBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAU A
A4GBAIM+ySiITRXb/d1qcO/XUQSKdU3IXqPgS8jY3U12Bll/kCZFcZxjksg6xBib
91Y/bonSEisJG74zn/0ts3sjsr3QKZp5xFcYCyK3IYjaqnFeAOh+eUp54vLpmQZX
e4QaeTkg/8MnS3vFvWoxfo4Z1Zu/wWhp9WMRRwIVAR99Ppps
-END
CERTIFICATE -Lưu lại key vào file mới newkey.pem
$ openssl rsa -in newreq.pem -out newkey.pem
read RSA key
Enter PEM pass phrase:test
writing RSA key
Đổi tên file newkey.pem lại tùy theo lựa chọn của bạn, như slapd-key.pem chẳng hạn.
Cuối cùng, sử dụng text editor, xóa private key cũ trong newreq.pem, đổi tên lại (chẳng hạn:
slapd-cert.pem) Bây giờ ta đã có 2 file :
slapd-key.pem
LDAP server's private key
slapd-cert.pem
LDAP server's public certificate
Dưới đây là các thông số TLS configuration :
Trang 22## Database sections omitted
5.5 Các thông số liên quan tới bảo mật khác :
Ngoài các thông số trên, còn 5 tùy chỉnh khác liên quan tới bảo mật :
sasl Defines the SASL security strength factor.
ssf Defines the overall security strength factor.
tls Defines the security strength factor to the SSL/TLS security layer.
transport
Defines the security strength provided by the underlying transport layer Eventually, this option will be used to choose between multiple secure transport layer protocols, such as TLS and IPSEC.
Các hệ số lấy giá trị sử dụng cho minssf và maxssf trong bảng 3.3
Tham số require phân biệt với tham số security bởi việc cho phép administrator định nghĩa nhữn điều kiện để cung cấp quyền truy cập vào directory.
Trang 23Table 3-6 Values for the require parameter
Value Description
none Clears all requirements.
authc Requires client authentication prior to directory access (i.e., no anonymous access).
bind Requires the client to issue a bind request, possibly an anonymous bind, prior to directory operations.LDAPv3 Requires the client to use Version 3 of the LDAP protocol for directory access By default,
OpenLDAP supports both LDAPv2 and v3 clients.
Allows TLS to force the current session to anonymous status.
Tham số disallow cho nhiều tùy chỉnh hơn :
Trang 24Disables Kerberos 4 bind requests
tls_authc
Disables StartTLS if the client is authenticated
Cuối cùng, tham số password-hash xác định default password encrytion cheme để lưu lại các giá trị trong thuộc tính userPassword Mặc định scheme là {SSHA}, các scheme khác :
Trang 25This backend has been specifically written to take advantage of the Berkley DB 4 database manager This backend makes extensive use of indexing and caching to speed up performance; it
is the recommended backend used on an OpenLDAP server.
ldbm
An ldbm database is implemented via either the GNU Database Manager or the Sleepycat Berkeley DB software package This backend is the older implementation of the bdb backend The details of this backend are described in the slapd-ldbm(5) manpage.
passwd
The passwd backend is a quick and dirty means of providing a directory interface to the system
passwd(5) file It has only one configuration parameter: the file directive, which defines the
location of the password file (if different from /etc/passwd) used to respond to directory queries
The details of this backend are described in the slapd-passwd(5) manpage.
shell
The shell backend directive allows the use of alternative (and external) databases This directive lets you specify external programs that are called for each of the LDAPv3 core operations The details of this backend are described in the slapd-shell(5) manpage.
Tham số tiếp theo là suffix :
## Define the beginning of example database.
6 Access control lists (ACLs)
Directory ACLs cung cấp bởi OpenLDAP khá đơn giản trong cú pháp nhưng lại cực kỳ linh hoạt và mạnh
mẽ trong thực thi Ý tưởng cơ bản là xác định Who has Access to What ? “Who” bao gồm :
*
Tất cả các user
Trang 26Matches a DN or an SASL identity
Còn về việc Access được chia thành các cấp độ khác nhau như sau :
Table 3-7 Summary of access levels from most (top) to least (bottom)
Access
write Access to update attribute values (e.g., Change this telephoneNumber to 555-2345).
read Access to read search results (e.g., Show me all the entries with a telephoneNumber of 555*) search Access to apply search filters (e.g., Are there any entries with a telephoneNumber of 555*) compare Access to compare attributes (e.g., Is your telephoneNumber 555-1234?).
auth Access to bind (authenticate) This requires that the client send a username in the form of a
DN and some type of credentials to prove his or her identity.
none No access.
Cách đơn giản nhất để điều khiển access là tạo các cấp độ mặc định, chuyện này được điều khiển bởi
tham số defaultaccess trong slapd.conf , ví dụ:
## Give users search access when no other ACL applies.
• Phần dành riêng cho các attributes
Nếu không có cả 3 phần, nó sẽ được thay thế bởi 1 dấu *, tức là bao gồm tất cả.
Ví dụ :
Trang 27# Set control on the userPassword attribute.
Trang 28CHƯƠNG 4: LDAP MỞ- XÂY DỰNG MỘT CÔNG TY WHITE PAGES
Các chương trước đó đã thảo luận làm thế nào để cài đặt OpenLDAP và cung cấp một tổng quan
về tập tin cấu hình slapd, slapd.conf Sử dụng slapd.conf từ chương 3 như là một điểm khởi đầu, chương này cho thấy bạn làm thế nào để tạo một thư mục công ty để lưu trữ thông tin liên lạc với nhân viên, bao gồm địa chỉ bưu điện, địa chỉ email và số điện thoại
Trang 30# Simple ACL granting read access to the world
Lưu trữ thông tin liên lạc cho các nhân viên trong mục people
ou = people , dc = plainjoe, dc = org
Có một số cách để xác định dữ liệu phụ thuộc vào tình trạng của mỗi nhân viên Thông tin được lưu trữ trong một cơ sở dữ liệu nguồn nhân lực hiện có có thể cung cấp một điểm bắt đầu tốt Tất nhiên, bạn có thể không muốn đặt tất cả các thông tin này trong thư mục của bạn Như một quy luật chung, tôi không muốn đưa thông tin trong một thư mục nếu dữ liệu
đó có lẽ sẽ không được sử dụng Nếu nó chỉ ra rằng dữ liệu là thực sự cần thiết, bạn luôn có thể thêm nó sau này Loại bỏ dữ liệu không cần thiết khi bắt đầu là điều quan trọng hơn so với việc lo lắng về việc bảo vệ thư mục chống truy cập trái phép
Một cách khác để bắt đầu với một cơ sở dữ liệu hiện có là xác định những thuộc tính nhân viên bạn muốn làm cho có sẵn và xác định một giản đồ để phù hợp với danh sách đó Bạn có thể chọn một lược đồ tiêu chuẩn và sử dụng các thuộc tính đã được định nghĩa Cách tiếp cận này rất được ưa dùng bởi vì nó giúp bạn dễ dàng thay đổi từ một nhà cung cấp khác Lược
đồ sử dụng rộng rãi, tiêu chuẩn có nhiều khả năng được hỗ trợ bởi một loạt các nhà cung cấp Tuỳ chỉnh, lược đồ trong nhà có thể cần phải được thiết kế lại để thích ứng với một người bán hàng mới (hoặc thậm chí là một phiên bản mới từ nhà cung cấp tương tự)
Trang 31Đối với thư mục của bạn, giản đồ inetOrgPerson được định nghĩa trong RFC 2798 là quá đủ
Từ phần 3.5.1 trong chương 3, chúng ta biết rằng đối tượng lớp và thuộc tính liên kết này được định nghĩa trong OpenLDAP của inetorgperson.schema tập tin Như thể hiện trong con
số 4-1, một inetOrgPerson là kế thừa của organizationalPerson
Hình 4.1 Hệ thống các lớp đối tượng inetOrgPerson
Sự kết hợp của các lớp đối tượng sẽ định nghĩa tập thuộc tính cần thiết và tùy chọn có sẵn Điều này có nghĩa rằng các thuộc tính yêu cầu duy nhất trong một đối tượng inetOrgPerson
là các thuộc tính cn và sn có nguồn gốc từ lớp đối tượng person
Thư mục của bạn sẽ sử dụng các thuộc tính cn để RDN cho mỗi mục Hãy nhớ rằng RDN mục nhập phải là duy nhất trong số các mục ngang cấp của cùng một thư mục gốc Trong tổ chức lớn hơn, hai people có thể giống họ và tên Trong những trường hợp này, bằng cách sử
Trang 32dụng một giá trị cụ thể hơn cho cn, chẳng hạn như trong đó có một tên đệm (hoặc ban đầu),
có thể làm giảm bớt tên giống nhau
Một cách để giảm số lượng tên giống nhau là thiết kế lại giao diện thư mục để giảm tổng số người dùng mục chia sẻ một thư mục gốc Nói cách khác, nhóm nhân viên trong một tập hợp chứa hợp lý, ví dụ như một đơn vị tổ chức khoa Hình 4-2 minh hoạ cách thiết kế này tránh xung đột không gian tên Trong thư mục này "John Arbuckle" trong bán hàng là khác nhau từ
"John Arbuckle" trong kỹ thuật bởi vì các mục có các nút cha mẹ khác nhau
Hình 4-2 Sử dụng đơn vị tổ chức để tránh va chạm của tên gọi phổ biến (cn)
Ví dụ của chúng tôi, đi với một tập hợp chứa duy nhất của ou = people là tốt ; hơn nữa, cơ sở nhân viên của chúng tôi là nhỏ, đủ để sử dụng một nhân viên tên chung (cn) mà không sợ bị xung đột Hình 4-3 cho thấy không gian tên thư mục được phát triển cho đến nay
Trang 33
Đây là một nhân viên có chứa các thuộc tính cần thiết cho thư mục của chúng tôi Chú ý rằng các thuộc tính yêu cầu hai vạch ra trong con số 4-1, cn và sn, hiện tại thêm vào một số tùy chọn thuộc tính.
## LDIF entry for employee "Gerald W Carter"
Ví dụ, thay vì đặt tất cả nhân viên theo ou = người, bằng cách sử dụng đặc tính, chẳng hạn như phòng ban, mô tả công việc và vị trí địa lý làm cho một nhóm được xác định hơn Tuy nhiên, nếu những đặc điểm là có khả năng thay đổi thường xuyên, bạn sẽ chỉ tạo ra nhiều việc cho chính mình trong dài hạn Nó cũng là tốt để lưu ý rằng sâu thư mục yêu cầu dài DNs
để tham khảo mục Điều này có thể trở thành một ít phiền toái theo thời gian
Trang 34Việc thực hiện của bạn phục vụ LDAP mục ưu tiên một thiết kế hơn một thứ hai? Cho OpenLDAP, câu trả lời này phụ thuộc vào nhu cầu của bạn Yếu tố quyết định sẽ là số lượng các bản Cập Nhật, hoặc viết, mà sẽ được thực hiện vào thư mục Để cập nhật các mục nhập, máy chủ slapd lấy được một khóa vào mục nhập phụ huynh cho các khách hàng yêu cầu Bây giờ giả sử bạn có một cây thư mục rất nông với 10.000 mục dưới một phụ huynh đơn Nếu thông tin Cập Nhật nhiều xảy ra cùng một lúc, ganh đua cho khóa vào mục nhập phụ huynh
sẽ rất cao Kết quả cuối cùng sẽ là Cập Nhật chậm hơn bởi vì quá trình sẽ chặn chờ đợi cho các khóa
Một cây sâu hơn có nghĩa là bạn có thể thường làm cho tìm kiếm hiệu quả hơn bằng cách cho một tìm kiếm chi tiết hơn cơ sở Để biết thêm chi tiết về việc thiết kế không gian tên LDAP, bạn có thể đọc Howes, et al., sự hiểu biết và triển khai LDAP Directory Services
3 Cập Nhật slapd.conf
Một khi giản đồ đã được lựa chọn, bước tiếp theo là để sửa đổi slapd.conf để hỗ trợ các thuộc tính được chọn loại và đối tượng lớp học Để hỗ trợ inetOrgPerson đối tượng lớp, bạn phải có inetorgperson.schema, core.schema và cosine.schema trong slapd.conf Inetorgperson.schema phác thảo dựa vào lược đồ COSIN Dưới đây là những sửa đổi nhiệm
vụ chia vùng địa phương của slapd.conf:
## Added logging parameters
Phần cơ sở dữ liệu là hiện đang trong điều kiện làm việc, do đó chỉ có một số thay đổi là cần thiết Để hỗ trợ tốt hơn tìm kiếm cho nhân viên, bạn nên sửa đổi các thiết lập chỉ số một danh sách hoàn chỉnh hơn các thuộc tính Ngoài việc tạo ra một chỉ số cho các thuộc tính
cn, bạn sẽ cũng lập bảng chỉ dẫn họ (sn) và địa chỉ email (thư) thuộc tính Thêm vào chỉ số trung bình (eq), bạn sẽ thêm một chỉ số chuỗi con (phụ) để hỗ trợ tìm kiếm như "Tất cả các nhân viên mà qua tên bắt đầu bằng C." Cuối cùng, bạn sẽ thêm một chỉ số bình đẳng cho thuộc tính departmentNumber do đó người dùng có thể tìm kiếm nhân viên trong một vùng nhất định Chỉ số này sẽ không cần thiết nếu thư mục đã được đặt ra như thể hiện trong con
số 4-2 bởi vì cùng một kết quả có thể đạt được bởi bắt đầu tìm kiếm tại vùng ou Dưới đây là những thay đổi vào phần cơ sở dữ liệu:
## Indexes to maintain
index objectClass eq
index cn,sn,mail eq,sub
Trang 35index departmentNumber eq
Tại thời điểm này, nó là một ý tưởng tốt để kiểm chứng rằng vị trí xác định bởi tham số thư mục tồn tại và có quyền truy cập thích hợp Trong ví dụ của chúng tôi, thư mục đó là /var/ldap/plainjoe.org Nếu thư mục này không tồn tại, hai lệnh sau đây đảm bảo rằng hệ thống tập tin đã sẵn sàng để lưu trữ dữ liệu:
root# mkdir -p /var/ldap/plainjoe.org
root# chmod 700 /var/ldap/plainjoe.org
Dừng OpenLDAP máy chủ yêu cầu rằng daemon có một cơ hội để tuôn ra thư mục sửa đổi
dữ liệu vào đĩa Cách tốt nhất để làm điều này là để gửi cha mẹ slapd quá trình một INT tín hiệu, như được hiển thị ở đây (vị trí pidfile đã được xác định trong tập tin cấu hình của máy chủ):
root# kill -INT 'cat /var/run/slapd.pid’
Tắt slapd bằng phương tiện mạnh mẽ hơn, như kill -9, có thể dẫn đến dữ liệu tham nhũng và cần tránh mọi giá
Nếu không có bất cứ tùy chọn dòng lệnh, hành vi của slapd được quản lý bởi biên dịch mặc định hoặc tùy chọn được xác định trong tập tin slapd.conf Đôi khi, nó là cần thiết để ghi đè lên một số các cài đặt thông qua dòng lệnh
Tùy chọn dòng lệnh cho máy chủ slapd tùy chọn
Mô tả
Trang 36-d interger
Xác định mức độ đăng nhập để sử dụng cho thông tin đăng nhập Tùy chọn này gây ra slapd
để đăng nhập tất cả các thông tin tiêu chuẩn đầu ra vào nhà ga kiểm soát; nó có thể rất hữu ích cho hệ phục vụ nhanh gỡ lỗi phiên Giá trị số nguyên đã chỉ định nên là một sự kết hợp các đơn vị đăng nhập liên kết với các tham số loglevel trong slapd.conf
Chỉ ra người sử dụng có hiệu quả hoặc nhóm ID cho slapd
Tất nhiên, bắt đầu từ slapd từ dòng lệnh là một cái gì đó bạn chỉ có thể trong khi thử nghiệm Trong thực tế, nó sẽ được bắt đầu bởi một trong các hệ thống khởi động thời gian khởi tạo script — dù rc.local cho hệ thống BSD, hoặc một trong /etc/rc.d/rc?.d / (hoặc /etc/init.d/) kịch bản cho các máy chủ hệ thống V Bạn nên tham khảo manpage init(8) cho một mô tả ngắn
Trang 37gọn về mức độ chạy và mức độ mà được sử dụng (và cho những gì chức năng) trên hệ thống của bạn Trên hầu hết hệ thống Linux, slapd daemon nên được đưa ra ở các cấp độ chạy 3 và
5 Chạy cấp độ 5 là cơ bản giống như chạy cấp 3 với việc bổ sung các X 11
5 Thêm khoản mục thư mục ban đầu
Một thư mục mà không có dữ liệu thì không được sử dụng nhiều Có hai cách để thêm thông tin vào thư mục của bạn; phương pháp sử dụng phụ thuộc vào nhà nước của thư mục Đã lần đầu tiên, slapadd và các slap * lệnh khác được trình bày trong chương 3 như là công cụ cơ sở dữ liệu bảo trì Chúng cho phép người quản trị truy cập trực tiếp vào các tập tin cơ sở dữ liệu nhập và xuất toàn bộ thư mục như một LDIF tập tin Họ làm việc trực tiếp với cơ sở dữ liệu, và không tương tác với slapd ở tất cả Thứ hai, sự phân bố OpenLDAP bao gồm một số các công cụ, như ldapmodify, mà có thể cập nhật một thư mục trực tiếp bằng cách sử dụng các hoạt động mạng LDAPv3 Các công cụ truy cập thư mục thông qua máy chủ
Những lợi thế và bất lợi của các phương pháp tiếp cận là gì? Các công cụ gián tuyến có thể nhanh hơn nhiều; hơn nữa, có những trường hợp khi bạn không thể khởi động hệ phục vụ không
có thêm dữ liệu đầu tiên (ví dụ, khi khôi phục lại nội dung của thư mục từ bản sao lưu) Những bất lợi của các công cụ gián tuyến, tất nhiên, là phải được chạy tại địa phương trên máy chủ Ngược lại với các công cụ gián tuyến, các tiện ích khách hàng LDAP linh hoạt hơn và cho phép một quản trị thư mục kiểm soát lớn bằng cách buộc người dùng xác thực và bằng cách sử dụng danh sách điều khiển truy cập vào thư mục mục Một quy luật tốt của ngón tay cái là công cụ slap * được sử dụng để nhận được máy chủ LDAP của bạn trực tuyến, và công cụ ldap * là về quản lý ngày này sang ngày của thư mục
Các công cụ cho thao tác ngoại tuyến của thông tin thư mục là slapadd, slapcat, slapindex, và slappasswd (bao gồm trong chương 3) Công cụ slapadd xác định tập tin và lập chỉ mục để Cập Nhật dựa trên các tập tin slapd.conf Bởi vì nó có thể cho một tập tin cấu hình nhất định để xác định nhiều hơn một cơ sở dữ liệu phân vùng, slapadd cung cấp tùy chọn để chỉ định một phân vùng cơ sở dữ liệu của một trong hai hậu tố directory (-hậu tố b) hay xảy ra đánh số (-số nguyên n) ở slapd.conf Đề cập đến một cơ sở dữ liệu cụ thể bằng cách sử dụng một trường hợp số là khó hiểu và dễ bị lỗi Sẽ trực quan hơn rất nhiều để đề cập đến cùng một cơ sở dữ liệu bằng cách sử dụng hậu tố directory Lưu ý rằng tùy chọn -b và -n là loại trừ lẫn nhau Một bản tóm tắt của các tùy chọn dòng lệnh slapadd khác nhau được cung cấp trong bảng 4-2
Tùy
-c Tiếp tục xử lý đầu vào trong trường hợp của lỗi.
Trang 38Slapindex lệnh có thể được dùng để tái tạo các chỉ số cho một phụ trợ bdb Điều này có thể cần thiết nếu một chỉ số mới được thêm vào slapd.conf sau khi thư mục được dân cư với các mục Công cụ slapindex cổ phần tùy chọn dòng lệnh tương tự như slapadd, với ngoại lệ của -l Tùy chọn -l là không được sử dụng cho slapindex vì không một đầu vào, cũng như một tập tin đầu ra là cần thiết.
Để bắt đầu populating thư mục của bạn, tạo một tập tin có chứa các mục LDIF của các hạch cấp Những khoản mục LDIF xây dựng nút gốc và các đơn vị tổ chức people
Trang 39top-## Build the root node.
Đầu ra chỉ ra rằng các mục đã được thêm vào thành công
5.1Xác nhận các nội dung của thư mục
Tiếp theo, bạn sẽ mang lại cho các thư mục trực tuyến do đó bạn có thể sử dụng nó kết hợp với ldapsearch, ldapmodify và các công cụ khác để làm việc trên một thư mục trực tiếp:
root# /usr/local/libexec/slapd
Sau khi hệ phục vụ thư mục đã bắt đầu, bạn có thể sử dụng ldapsearch để truy vấn các máy chủ ldapsearch cho phép bạn để khai thác thông qua các thư mục của bạn, kiểm tra sự tồn tại của dữ liệu, và thử nghiệm cho dù điều khiển truy nhập đã được thiết lập đúng
OpenLDAP của ldapsearch bắt đầu cuộc sống như một wrapper đơn giản cho các chiến dịch tìm kiếm LDAP Danh sách các khả năng tìm kiếm là dài; Tôi sẽ không bao gồm
nó cho đến chương 5 Để bây giờ, tôi sẽ tập trung vào tìm kiếm rất đơn giản mà đảm
Trang 40bảo với bạn thư mục và chạy một cách chính xác Trong hình thức đơn giản nhất, một truy vấn yêu các thông tin sau:
+Tên máy chủ hoặc địa chỉ IP của máy chủ LDAP
+Thông tin đăng nhập (tức là, người dùng DN và mật khẩu) để sử dụng liên kết với máy chủ lưu trữ
$ ldapsearch -x -b "dc=plainjoe,dc=org" "(objectclass=*)"