1. Trang chủ >
  2. Công nghệ thông tin >
  3. Hệ thống thông tin >

CHƯƠNG 5: GIẢI THÍCH VỀ SAO CHÉP (REPLICATION), GIỚI THIỆU (REFFERALS), TÌM KIẾM (SEARCHING) VÀ SASL.

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.36 MB, 188 trang )


Giao thức LDAP



GVHD: TS. Lưu Thanh Trà



1.1Tạo slurpd

Để tạo slurpd, ta phải viết các dòng lệnh –enable-slurpd trong chỗ cấu hình. Sau khi chạy

./configure, -enable-slurpd, ta tạo server trong server/slurpd/subdirectory của cây mã nguồn

openLDAP. Có thể dùng “make install” để copy slurpd hoặc copy bằng tay. Tất cả các ví dụ ở

đây đều giả sử rằng slurpd đã được cài đặt ở vị trí mặc định là /usr/local/libexec/.



1.2Tóm lược sự sao chép

Khi server slapd được tạo ra (xem các chương trước), việc tạo ra server bản sao được thực hiện

qua các bước sau:

1.

2.

3.

4.

5.

6.

7.



Dừng daemon slapd của server master

Tái cấu hình slapd.conf của server master để enable việc sao chép cho server slave

Sao chép dữ liệu từ server master đến bản sao

Cấu hình cho slapd.conf của server bản sao

Chạy slapd của server bản sao

Chạy slapd của server master

Chạy slurpd của server master.



Các bước này chỉ là các bước chung, còn chi tiết cụ thể việc thực hiện (như làm thế nào để cấu

hình server gởi updates và làm thế nào để cấu hình server nhận updates từ server master). Bây

giờ chúng ta bắt đầu bước 2.



1.3Cấu hình cho Server Master

Để cấu hình cho server master, ta cần phải thêm 2 directives vào phần cơ sở dữ liệu của

slapd.conf. Ta có thể tạo cho slurpd một file cấu hình bằng cách dùng câu lệnh –f, nhưng quan hệ

giữa slapd và slurpd là quan hệ nhà cung cấp/khách hàng, nên tốt hơn là dùng 1 file cấu hình cho

cả 2 daemon này. Đây là bản cấu hình cơ sở dữ liệu đã làm ở chương trước:

## -- master slapd -#######################################################

## Define the beginning of example database.



Chương 5



59



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP



database



GVHD: TS. Lưu Thanh Trà



bdb



## Define the root suffix you serve.

suffix

"dc=plainjoe,dc=org"

## Define a root DN for superuser privileges.

rootdn

"cn=Manager,dc=plainjoe,dc=org"

## Define the password used with rootdn. This is the Base64-encoded MD5 hash of

## "secret."

rootpw

{SSHA}2aksIaicAvwc+DhCrXUFlhgWsbBJPLxy

## Directory containing the database files

directory

/var/ldap/plainjoe.org

## Files should be created rw for the owner **only**.

mode

0600

## Indexes to maintain

index

objectClass eq

index

cn

pres,eq

## db tuning parameters; cache 2,000 entries in memory

cachesize

2000

# Simple ACL granting read access to the world

access to *

by * read



Đầu tiên, ta thêm vào tên của log file (slapd sẽ ghi lại tất cả các sự thay đổi trong file này. Ta làm

như sau:

## -- master slapd -# Specify the location of the file to append changes to.

replogfile /var/ldap/slapd.replog



Tiếp theo, ta thêm thông tin nơi nào được slurpd gởi các thay đổi đến.

## -- master slapd -# Set the hostname and bind credentials used to propagate the changes in the

# replogfile.

replica

host=replica1.plainjoe.org:389

suffix="dc=plainjoe,dc=org"

binddn="cn=replica,dc=plainjoe,dc=org"

credentials=MyPass

bindmethod=simple

tls=yes



Lệnh replica xác định host và port mà dữ liệu được gởi, phần của partition nơi được sao chép, DN được

sử dụng khi binding đến server sao chép, bất kỳ thông tin (credentials) có được, và phương pháp binding,

các giao thức. Chú ý rằng “binddn” được dùng trong lệnh replica phải viết được trong server slave. Lệnh



Chương 5



60



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP



GVHD: TS. Lưu Thanh Trà



“credentials” xác định mật khẩu dùng cho simple binds and SASL binds đến server slave. Lệnh

“bindmethod” có 2 giá trị là: “simple” hoặc “sasl”.

Trong ví dụ này server slave replica1.plainjoe.org phải quan sát qua port 389 (port mặc định LDAP). TSL

được bật để bảo vệ thông tin được sao chép. Nếu không cẩn thận về vấn đề bảo mật dữ liệu, dùng một

đường truyền không được bảo vệ, và không dùng IPSec hoặc TLS để bảo vệ tầng transport, tất cả nỗ lực

của ta sẽ vô ích.



1.4Cấu hình server bản sao

Bước đầu tiên trong việc tạo một bản sao (replica) là khởi tạo cơ sở dữ liệu của nó bằng một bản copy của

thư mục hiện hành từ server master. Có 2 cách để làm việc này:

1. Copy file dữ liệu của master sang bản sao

2. Xuất dữ liệu của master ra file LDIF và nạp lại vào bản sao



Vài điều cần lưu ý:

1. Cả 2 host phải cùng phiên bản (hoặc phải tương thích) của thư viện DBM

2. Trong đa số trường hợp, 2 host phải dùng cùng một trật tự byte (kết nhỏ hoặc kết lớn)

3. Một số phương pháp copy file DBM, chẳng hạn dùng cp, sẽ điền vào các lỗ, kết quả ở

trong một file lớn hơn nhiều trên host bản sao.

Cách tốt nhất để chuyển dữ liệu từ master sang slave là xuất file LDIF bằng cách sử dụng slapcat. Sau đó

file sẽ được nạp lại vào thư mục của bản sao bằng cách dùng lệnh slapadd. Đoạn lệnh dưới đây khởi tạo

thư mục bản sao:

root@master# slapcat -b "dc=plainjoe,dc=org" -l contents.ldif

...copy contents.ldif to the slave server...

root@replica1# slapadd -l contents.ldif



Khi dữ liệu được copy sang server slave xong, tới việc update slapd.conf của bản sao để nó chấp nhận bản

update từ server master.

## -- slave slapd -## replica's administrative DN

rootdn "cn=replica,dc=plainjoe,dc=org"

## Salted Secure Hash version of MyPass

rootpw {SSHA}SMKnFPO435G+QstIzNGb4RGjT0KLz2TV



Để server này hoạt động như là một slave, ta phải thêm 2 đại lượng vào file cấu hình: master phải biết nó

gởi updates tới đâu, và slave phải biết ai gởi update đó cho nó.

## -- slave slapd -## Define the DN that will be used by the master slurpd to replicate data. Normally,

## this is the rootdn of the slave server or, at the minimum, a DN that is allowed

## write access to all entries via an ACL.

updatedn "cn=replica,dc=plainjoe,dc=org"



Chương 5



61



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP



GVHD: TS. Lưu Thanh Trà



Vì server slave chỉ lưu trữ dữ liệu sao chép và OpenLDAP chỉ hỗ trợ một hệ thống sao chép (master

replication system), nên server slave yêu cầu một url để kết nối các khách hàng tới server thư mục chủ

(master directory server). Việc này cần thiết khi khách hàng gởi một yêu cầu sửa đổi.

## -- slave slapd -## Specify the LDAP URL of the master server, which can accept update requests.

updateref ldap://pogo.plainjoe.org



Tới đây đã kết thúc bước 4 của quá trình cấu hình. Bước 5 và 6 là chạy slapd của master và slave bằng

cách dùng các chương trình con được giới thiệu ở các chương trước.



1.5Replogfile của slurpd

Hình 5-1 cho thấy daemon slurpd thực hiện việc thay đổi log được viết bởi slapd. Bản log file sao chép sử

dụng chung một format với các ví dụ LDIF trong cuốn sách này. Sau khi đọc replogfile, slurpd copy nội

dung vào file log của nó. Ta có thể chỉnh vị trí đặt file slurpd.replog bằng cách dùng câu lênh –t khi khởi

động slurpd. Mặc định /usr/local/var/openldap-slurp/replica/.



Ví dụ, nếu địa chỉ email của cn=Jerry Carter,ou=people,dc=plainjoe,dc=org đổi thành jcarter@nowhere.com:

replica: pogo.plainjoe.org

time: 975434259

dn: cn=jerry carter,ou=People,dc=plainjoe,dc=org

changetype: modify

replace: mail

mail: jcarter@nowhere.com

replace: entryCSN

entryCSN: 2002110403:55:49Z#0x0001#0#0000

replace: modifiersName

modifiersName: cn=Manager,dc=plainjoe,dc=org

replace: modifyTimestamp

modifyTimestamp: 20001128175739Z

-



Nếu có 1 giá trị thuộc tính thay đổi, nội dung file log sẽ update 4 thuộc tính sau: mail,

modifiersName, modifyTimestamp, entryCSN.

Slurpd đọc nội dung trong log file sao chép và tạo sự thay đổi bằng các lênh LDAP cơ bản (add,

modify, delete, modrdn, etc). Nếu không thể thay đổi nội dung, slurpd viết nội dung đó và lý do

lỗi đến .rej trong cùng thư mục với file slurpd.replog. Công việc của người

quản trị là đọc file đó và tìm ra cách giải quyết. Một vài lý do thường gặp để xảy ra lỗi: các



Chương 5



62



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP



GVHD: TS. Lưu Thanh Trà



schema của master và slave không tương thích, hoặc mục kiểm soát truy cập không được cài đặt

hợp lý, v.v…

Ta cài đặt slurpd để nó điều khiển các log file sao chép và cập nhật các thay đổi định kỳ. Tuy

nhiên cũng có thể làm việc đó bằng các dòng lệnh cho 1 thay đổi nào đó. Sau đây là bảng các

dòng lệnh dùng khi khởi động slurpd



Để hoàn thành việc cấu hình thư mục bản sao, ta phải khởi động daemon slurpd trên server

master.

root@master# /usr/local/libexec/slurpd

1.6 Sử dụng bản sao chép trong “Khôi phục dữ liệu”

Một server slave có thể được dùng như một server backup để khôi phục dữ liệu.

Đầu tiên, dừng slurpd trên master, khi đó replica đã có những bản sao của thư mục. Mặc dù

slapd vấn đang ghi các thay đổi lên replogfile, nhưng ta có thể dùng slapcat trên slave để xuất

file cơ sở dữ liệu thành file LDIF trong khi slapd vẫn đang chạy, vì dữ liệu được bảo đảm là

không đổi trong các đoạn mid-backup. Khi backup xong, khởi động lại slurpd để bảo đảm tất cả

thay đổi trong master khi replica đang backup sẽ được cập nhật. Sau đó đồng bộ slave trở về

trạng thái như cũ.



Chương 5



63



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP



GVHD: TS. Lưu Thanh Trà



2. Phân phối thư mục

Thư mục được chia thành nhiều phân vùng, được đặt trên nhiều server. Ví dụ hình 5-2, bậc cao

nhất của thư mục (dc=plainjoe,dc=org) được duy trì tại 1 nơi, và server chứa thông tin host

(ou=hosts,dc=plainjoe,dc=org) thì được quản lý ở một nơi khác. Làm sao để kết hợp 2 thư mục này lại vào 1 DIT

logic.



Định nghĩa phân vùng ou=hosts của server thứ hai rất quen thuộc với phần cơ sở dữ liệu mà chúng

ta đã dùng. Thay đổi chính là phần hậu tố ( ou=hosts,dc=plainjoe,dc=org) và thư mục mà file

BerkeleyDB được lưu trữ (/var/ldap/hosts/). Phần rootdn (cn=Manager,ou=hosts,dc=plainjoe,dc=org)

phải được update.

#######################################################

## Partition on second server holding ou=hosts

database

bdb

## Define the root suffix you serve.

suffix

"ou=hosts,dc=plainjoe,dc=org"

## Define a root DN for superuser privileges.

rootdn

"cn=Manager,ou=hosts,dc=plainjoe,dc=org"

## Define the password used with rootdn. This is the Base64-encoded MD5 hash of

## "secret."

rootpw

{SSHA}2aksIaicAvwc+DhCrXUFlhgWsbBJPLxy

## Directory containing the database files

directory

/var/ldap/hosts

## Files should be created rw for the owner **only**.

mode

0600

## Indexes to maintain

index

objectClass



Chương 5



eq



64



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP

index



cn



GVHD: TS. Lưu Thanh Trà

pres,eq



## db tuning parameters; cache 2,000 entries in memory

cachesize

2000

# Simple ACL granting read access to the world

access to *



by * read

Chương 2 đã đề cập đến vấn đề phân phối thư mục được thực hiện bởi “Referrals” (trỏ từ root

của subtree đến server của thư mục lớn) và “Reference” (nó trỏ từ một điểm trong thư mục lớn

về subtree hoặc phân vùng). Theo hình 5-2 thì Referrals và Reference sẽ link phân vùng

dc=plainjoe,dc=org đến phân vùng ou=hosts,dc=plainjoe,dc=org



Việc kết nối này cho phép khách hàng yêu cầu tìm kiếm từ bất kỳ node nào trên thư mục. Nếu

không tìm được, reference URI sẽ được gởi lại khách hàng, trong đó có lựa chọn tiếp tục tìm

kiếm trên một server hoặc một hậu tố khác.

OpenLDAP dùng referral để định nghĩa một LDAP URI cho host mà khách hàng nên liên hệ

trong trường hợp các yêu cầu của khách hàng không thể thực hiện.

## slapd.conf for ou=hosts (ldap2.plainjoe.org)

##

##

## . . .

## Define the URL (only host:port) for the host that clients should contact in the

## event that you cannot service their requests.



referral



ldap://master.plainjoe.org:389/



References được thực hiện như một nội dung trong thư mục. Các mục này sử dụng cấu trúc lớp

đối lượng của referrals. Lớp này gồm một yêu cầu tên thuộc tính là ref. Để kết nối phân vùng

cao nhất trong hình 5-3 với ou people, ta phải tạo mục tham chiếu đến thư mục. Giả sử rằng

Chương 5



65



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP



GVHD: TS. Lưu Thanh Trà



ou=hosts được tổ chức bởi server ldap2.plainjoe.org, ví dụ sau đây đọc một mục mới từ đầu vào

chuẩn:

$ ldapadd -H ldap://localhost/ -D "cn=Manager,dc=plainjoe,dc=org" \

> -w secret -x << EOR

> dn: ou=hosts,dc=plainjoe,dc=org

> ou: people

> objectClass: extensibleObject

> objectClass: referral

> ref: ldap://ldap2.plainjoe.org/ou=hosts,dc=plainjoe,dc=org

> EOR



adding new entry "ou=hosts,dc=plainjoe,dc=org"

Sau đó ta tạo một mẫu trong ou=hosts của cây ldap2.plainjoe.org để sau này dùng:

$ ldapadd -H ldap://ldap2.plainjoe.org/ \

> -D "cn=Manager,ou=hosts,dc=plainjoe,dc=org" \

> -w secret -x << EOR

> dn: ou=hosts,dc=plainjoe,dc=org

> objectclass: organizationalUnit

> ou: hosts

> description: Container for host information in plainjoe.org domain

> EOR



adding new entry "ou=hosts,dc=plainjoe,dc=org"



Chương 5



66



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP



GVHD: TS. Lưu Thanh Trà



3. Lựa chọn tìm kiếm nâng cao:

Chương 4 đã trình bày việc tìm kiếm LDAP như một phương tiện để xác minh tính chính xác của

thư mục. Như vậy việc sử dụng công cụ tìm kiếm rất giới hạn. Thư mục sẽ rất lãng phí nếu

không thể tìm kiếm. Bây giờ ta sẽ đi sâu vào vấn đề lọc tìm kiếm.

Bộ lọc tìm kiếm LDAP có cú pháp sau:

(attribute filterOperator value)

Attribute là tên thực tế của các thuộc tính. FilterOperator có thể là:

=, ~=, <=,>=

Nếu tìm kiếm chuỗi thì nên dùng “=”

Value chính là giá trị cần tìm, hoặc là dấu * để tìm kiếm chung.

Ta cũng có thể kết hợp các bộ lọc đơn bằng cách dùng các hàm luận lý (Boolean):

& AND, | OR, ! NOT

Bộ lọc tìm kiếm LDAP dùng tiền tố cho việc kết hợp các điều kiện tìm kiếm. Do đó, để tìm một

user có tên hoặc là smith hoặc là jones, ta viết câu lệnh:

(| (sn=smith)(sn=jones))

Thuộc tính sn không phân việc chữ hoa chữ thường.



3.1Dùng Referrals với ldapsearch

Mặc định thì công cụ ldapsearch chứa thông tin về các đối tượng giới thiệu nhưng không tự

động theo chúng. Ví dụ, dùng ldapsearch để list ra tất cả các mục trong thư mục có thuộc tinh

ou:

$ ldapsearch -H ldap://localhost/ -LL -x \

> -b "dc=plainjoe,dc=org" "(ou=*)" ou

# plainjoe.org

dn: dc=plainjoe,dc=org

ou: PlainJoe Dot Org

# people, plainjoe.org

dn: ou=people,dc=plainjoe,dc=org

ou: people

# Search reference

# refldap://ldap2.plainjoe.org/ou=hosts,dc=plainjoe,dc=org??sub



Chương 5



67



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP



GVHD: TS. Lưu Thanh Trà



Chú ý rằng ldapsearch trả lại các giá trị tham chiếu, nhưng không phải là các mục dưới

ou=hosts,dc=plainjoe,dc=org.



3.2Giới hạn việc tìm kiếm

Một thư mục sẽ có thể có tới hàng triệu mục nhỏ, và nếu là một thư mục lớn, việc tìm kiếm với

(objectclass=*) sẽ trả lại quá nhiều kết quả và lấy tài nguyên quá nhiều. Do đó, ldapsearch cung

cấp các giới hạn tìm kiếm sau:



-l integer : xác định số giây realtime ta mong muốn chờ đáp ứng.

-z integer: xác định số lượng mục lớn nhất mà ta muốn tìm kiếm.



Chương 5



68



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Giao thức LDAP



GVHD: TS. Lưu Thanh Trà



4. Tìm công suất server:

Chương 2 đã giới thiệu 2 tính năng của LDAPv3 là subschemaSubentry và rootDSE. Cả 2 đều cho

phép khách hàng biết thông tin về server thư mục chưa biết.

rootDSE chứa các thông tin về server naming context, thực hiện SASL, và hỗ trợ hoạt động điều

khiển và mở rộng. LDAPv3 yêu cầu rootDSE phải có DN trống. OpenLDAP chỉ trả lại giá trị của

rootDSE nếu yêu cầu tìm kiếm bị trả lại, do đó ký tự “+” được thêm vào yêu cầu tìm kiếm.

$ ldapsearch -x -s base -b "" "(objectclass=*)" +

dn:

structuralObjectClass: OpenLDAProotDSE

namingContexts: dc=plainjoe,dc=org

supportedControl: 2.16.840.1.113730.3.4.2

supportedControl: 1.3.6.1.4.1.4203.1.10.2

supportedControl: 1.2.826.0.1.334810.2.3

supportedExtension: 1.3.6.1.4.1.4203.1.11.3

supportedExtension: 1.3.6.1.4.1.4203.1.11.1

supportedExtension: 1.3.6.1.4.1.1466.20037

supportedFeatures: 1.3.6.1.4.1.4203.1.5.1

supportedFeatures: 1.3.6.1.4.1.4203.1.5.2

supportedFeatures: 1.3.6.1.4.1.4203.1.5.3

supportedFeatures: 1.3.6.1.4.1.4203.1.5.4

supportedFeatures: 1.3.6.1.4.1.4203.1.5.5

supportedLDAPVersion: 3

supportedSASLMechanisms: GSSAPI

supportedSASLMechanisms: DIGEST-MD5

supportedSASLMechanisms: CRAM-MD5

subschemaSubentry: cn=Subschema



Danh sách này có thể thay đổi và khác nhau giữa các server.

+ StartTLS (OID 1.3.6.1.4.1.1466.20037) và hai hoạt động mở rộng khác

+ ManageDsaIT (OID 2.16.840.1.113730.3.4.2) và 2 công cụ điều khiển LDAP

+ Hoạt động LDAPv3

+ Cơ chế GSSAPI, DIGEST-MD5, và CRAM-MD5 SASL

+ Một naming context "dc=plainjoe,dc=org"

Thuộc tính SubSchemaSubentry xác định hậu tố tìm kiếm để truy vấn lược đồ được hỗ trợ của máy

chủ. Điều này có nghĩa là khách hàng có thể xác minh rằng server hỗ trợ một quy tắc phù hợp,

loại thuộc tính, hoặc lớp đối tượng trước khi thực hiện một hoạt động phụ thuộc vào đặc tính

nhất định. Đầu ra của ldapsearch sau đây chỉ ra loại thông tin trong cây SubSchemaSubentry.



Chương 5



69



Lê Tiến Cường – Nguyễn Minh Đức

Lê Thạch Giang- Hoàng Ngọc Hưng



Xem Thêm
Tải bản đầy đủ (.docx) (188 trang)

×