Với sự phát triển của phần mềm Open Source ngày càng mạnh mẽ, với ưu điểm là miễn phí, bảo mật, linh hoạt …Việc kiểm tra của các ngành chức năng trong việc sử dụng phầm mềm bản quyền ở Việt Nam trong thời gian tới ngày càng chặt trẽ hơn. Có thể ứng dụng triển khai hệ thống mạng hoàn chỉnh, bao gồm những services cần thiết như Mail, Web, FTP, DNS, DHCP, Proxy …nhưng vẫn đảm bảo được việc không vi phạm bản quyền lại tiết kiệm thì việc sử dụng Open Source là hợp lý nhất. Nhưng khi sử dụng những dịch vụ trên thì hệ thống mạng cần phải có một dịch vụ chứng thực tập trung cho cả hệ thống, đó là OpenLDAP. Đề tài này được đưa ra nhằm xây dựng giải pháp giải pháp chứng thực với những mục tiêu sau:Phân tích, thiết kế hệ thống mạng Xây dựng hệ thống services trên Open SourceTriển khai xây dựng dịch vụ OpenLDAPTriển khai xây dựng các dịch vụ Mail, Web, FTP, Squid, File serverChứng thực tập chung cho các services trên bằng OpenLDAPQuản trị hệ thống mạng linux
Trang 1LỜI CẢM ƠN
Để đề tài chuyên ngành mạng được kết quả tốt đẹp, trước hết cho em xin gửi lời cảm ơn tới tất cả thầy cô khoa Công Nghệ Thông Tin lời chúc sức khỏe, lời chào trân trọng và cảm ơn sâu sắc nhất Với sự quan tâm, dạy dỗ chỉ bảo tận tình chu đáo của thầy cô, sự giúp đỡ nhiệt tình của các bạn đến này em đã có thể hoàn thành đề tài tốt nghiệp: “ Quản lý tập trung với dịch vụ Linux LDAP (Lightweight Directory Access Protocol)
Để có được kết quả này em xin đặc biệt gửi lời cảm ơn chân thành tới thầy Ths.Nguyễn Đức Quang đã quan
tâm giúp đỡ, vạch kế hoạch hướng dẫn em hoàn thành một cách tốt nhất đề tài chuyên ngành mạng trong thời gian qua.
Với điều kiện thời gian có hạn cũng như kinh nghiệm còn hạn chế của em nên đề tài sẽ không tránh khỏi những thiếu sót Em rất mong được sự chỉ bảo, đóng góp ý kiến của các thầy cô để em có điều kiện bổ sung , nâng cao ý thức của mình, phục vụ tốt hơn cho công việc thực tế sau này.
Em xin chân thành cảm ơn !
Sinh viên thực hiện: Lê Sơn
Lớp : 10LDTH11
Trang 2MỤC TIÊU ĐỀ TÀI
Với sự phát triển của phần mềm Open Source ngày càng mạnh mẽ, với ưu điểm là miễn phí, bảo mật, linh hoạt …Việc kiểm tra của các ngành chức năng trong việc sử dụng phầm mềm bản quyền ở Việt Nam trong thời gian tới ngày càng chặt trẽ hơn Có thể ứng dụng triển khai hệ thống mạng hoàn chỉnh, bao gồm những services cần thiết như Mail, Web, FTP, DNS, DHCP, Proxy …nhưng vẫn đảm bảo được việc không vi phạm bản quyền lại tiết kiệm thì việc sử dụng Open Source là hợp lý nhất Nhưng khi sử dụng những dịch vụ trên thì hệ thống mạng cần phải có một dịch vụ chứng thực tập trung cho cả hệ thống, đó là OpenLDAP.
Đề tài này được đưa ra nhằm xây dựng giải pháp giải pháp chứng thực với những mục tiêu sau:
Phân tích, thiết kế hệ thống mạng
Xây dựng hệ thống services trên Open Source
Triển khai xây dựng dịch vụ OpenLDAP
Triển khai xây dựng các dịch vụ Mail, Web, FTP, Squid, File server
Chứng thực tập chung cho các services trên bằng OpenLDAP
Quản trị hệ thống mạng linux
Trang 3Quản lý tập trung dịch vụ LDAP GVHD : Ths.Nguyễn Đức Quang
THUẬT NGỮ VIẾT TẮT
-
Transport Layer Security
Secure Socket Layer
LDAP Data Interchange FormatNetwork Information Services
Hệ điều hànhHypertext Transfer Protocol DaemonBerkeley Internet Name DomainVery Secure FTP Daemon
Trang 4CHƯƠNG I GIỚI THIỆU
TỔNG QUAN
1.1 Giới thiệu tổng quan về Linux
1.1.1 Giới thiệu về Linux
Hình 2.1: Linux
Vào những năm đầu của thập kỷ
90, Linus Tovarlds - một sinh viên đại
học tổng hợp Helsinki (Phần Lan) - qua
quá trình mày mò nghiên cứu cách làm
việc của máy tính PC có trang bị bộ xử
lý 386 trên hệ điều hành Minix (là hệ
điều hành Unix cỡ nhỏ) Do có sự hạn
chế của hệ điều hành này, Linus đã viết
lại một số phần mềm để thêm các chức
năng cho nó Hệ điều hành mới ra đời
với tên gọi là Linux - (chữ viết tắt của
Linus và Unix) Ông ta đã công bố kết
quả của mình miễn phí trên Internet và
ông ta cũng không thể ngờ rằng chính
điều này đã khiến cho Linux có một sự
phát triển chóng mặt và đã trở thành
một hệ điều hành tiên tiến nhất, ổn định
nhất và phổ biến nhất hiện nay trên
phạm vi toàn thế giới
1.1.1.1 Khái niệm Linux
Linux đươc tạo thành bởi các
module hoạt động độc lập với nhau,
người dùng có thể tự xây dựng kernel
(nhân) cho hệ điều hành của mình bằng
những module cần thiết vào Vì vậy hệ thống Linux có tính linh hoạt cao hơn Windows
Thường Linux được sử dụng làm máy chủ nhiều hơn là làm máy trạm vì việc cấu hình cho Linux phức tạp hơn nhiều vì thường phải dùng command line để cấu hình chứ không có giao diện đồ hoạ như Windows
Hệ thống chạy
thường nhanh hơn và ổn định hơn là chạy trên Windows Sở dĩ Linux chạy được dùng nhiều cho máy tính cá nhân vì nó hỗ trợ giao diện đồ hoạt chưa tốt
Tuy nhiên, hiện nay một số phiên bản mới của hệ điều hành dạng Linux có giao diện đồ hoạ tương đối tốt (như Centos, Solais, Fedora, v.v )
1.1.1.2 Các phiên bản hệ điều hành Linux
Tên bản phân phối
Phiên bản mới nhất
Ubuntu 12.04
Trang 5Debian GNU/Linux 6.0 www.debian.org
dựng cho mình những phần mềm thương hiệu Việt Nam đang trở nên một vấn đề cấp bách
Phần mềm mã nguồn
mở được xem
là một giải pháp hữu hiệu nhất cho bài toán bản quyền ở nước ta hiện nay Phần mềm
mã nguồn mở một mặt có chi phí rẻ hơn so với các phần mềm truyền thống, mặt khác rất dễ nâng cấp, cải tiến (do cung cấp mã nguồn kèm theo) Chính vì thế, phát triển phần mềm mã
chúng ta có thể tận dụng được những công nghệ tiên tiến
có sẵn trên thế giới, cải tiến cho phù hợp với người Việt Nam, tiết kiệm được rất nhiều công sức so với việc phát triển
từ đầu Linux là một HĐH mã nguồn mở như vậy!!!
Kỹ thuậ
t nổi bật của Lin ux.
- Kinh
tế, đó là một
Trang 6đặc điểm không thể bỏ qua của Linux
(ít nhất là đối với nước ta hiện nay)
Tuy nhiên đối với Linux đó vẫn chưa là
tất cả HĐH này còn rất nhiều ưu điểm
khác mà không một hệ điều hành nào
có Chính những đặc điểm này mới là
nguyên nhân khiến cho Linux ngày
càng trở nên phổ biến không chỉ ở Việt
Nam mà cả ở trên thế giới
- Linh hoạt, uyển chuyển Có thể
chỉnh sửa Linux và các ứng dụng trên
đó sao cho phù hợp với mình nhất Việc
Việt hóa Windows được xem là không
thể nếu như bạn không có sự đồng ý và
hỗ trợ của Microsoft Tuy nhiên với
Linux thì bạn có thể làm được điều này
một cách đơn giản hơn.( tham khảo
thêm Sản phẩmViệt key Linux đã đoạt
giải nhất TTVN 2002) Mặt khác do
Linux được một cộng đồng rất lớn
những người làm phần mềm cùng phát
triển trên các môi trường, hoàn cảnh
khác nhau nên tìm một phiên bản phù
hợp với yêu cầu của bạn sẽ không phải
là một vấn đề quá khó khăn
- Tính linh hoạt của Linux còn
được thể hiện ở chỗ nó tương thích
được với rất nhiều môi trường Hiện tại,
ngoài Linux dành cho server,máy tính
để bàn nhân Linux (Linux kernel) còn
được nhúng vào các thiết bị điều khiển
như máy tính palm, robot Phạm vi
ứng dụng của Linux được xem là rất
rộng rãi
- Ngoài ra chính tính chất "mở"
cũng tạo nên sự an toàn của Linux Nếu
như một lỗ hổng nào đó trên Linux
được phát hiện thì nó sẽ được cả cộng
đồng mã nguồn mở cùng sửa và thường
thì chỉ sau 24h sẽ có thể cho ra bản sửa
lỗi
- Mặt khác, đối với những HĐH
mã nguồn đóng như Windows, bạn
không thể biết được người ta viết gì, và
viết ra sao mà chỉ biết được chúng chạy
như thế nào Vì vậy nếu như Windows
có chứa những đoạn mã cho phép tạo
những "back door" để xâm nhập vào hệ
thống của bạn thì bạn cũng không thể
biết được Đối với người dùng bình
thường như chúng ta vấn đề này có vẻ
như không quan trọng nhưng đối với
một hệ thống tầm cỡ như hệ thống quốc
phòng thì vấn đề như thế này lại mang
tính sống còn Các nhân viên
an ninh không được phép để lộ một kẽ hở nào,
dù là nhỏ nhất
vì nó liên quan đến an ninh của
cả một quốc gia.Và một lần nữa các phần mềm mã nguồn
mở nói chung
và Linux nói riêng lại là sự lựa chọn số 1 Trong Linux mọi thứ đều công khai, người quản trị
có thể tìm hiểu tới mọi ngõ ngách của hệ điều hành Điều
đó cũng có nghĩa là độ an toàn được nâng cao
- Thích hợp cho quản trị mạng được thiết kế ngay từ đầu cho chế độ
đa người dùng Linux được xem là một hệ điều hành mạng rất giá trị Nếu như Windows
tỏ ra là một HĐH thích hợp với máy tính Desktop thì Linux lại là hệ điều hành thống trị đối với các Server Đó là do Linux có rất nhiều ưu điểm thỏa mãn đòi hỏi của một hệ
mạng: tính bảo mật cao, chạy
ổn định, các cơ
Trang 7chế chia sẻ tài nguyên tốt Giao thức TCP/IP mà chúng ta vẫn thấy ngày nay chính là một giao thức truyền tin của Linux (sau này mới được đưa vào Windows
- Dù cho có rất nhiều phiên bản Linux được các nhà phân phối khác nhau ban hành nhưng nhìn chung đều chạy khá ổn định trên mọi thiết bị phần cứng, từ Intel 486 đến những máy Pentium mới nhất, từ những máy có dung lượng RAM chỉ 4MB đến những máy có cấu hình cực mạnh (tất nhiên là tốc độ sẽ khác nhau nhưng về nguyên tắc vẫn có thể chạy được) Nguyên nhân là Linux được rất nhiều lập trình viên ở nhiều môi trường khác nhau cùng phát triển (không như Windows chỉ do Microsoft phát triển) và bạn sẽ bắt gặp nhiều người có "cùng cảnh ngộ"
như mình và dễ dàng tìm được các driver tương ứng với thiết bị của mình Tính chất này hoàn toàn trái ngược với Windows Mỗi khi có một phiên bản Windows mới ra đời thì bao giờ kèm theo đó cũng là một cơn khát về phần cứng vì HĐH mới thường không hỗ trợ các thiết bị quá cũ
Một vài nhược điểm cố hữu của
Đây là một trong những nguyên nhân chủ yếu khiến Linux mặc dù có rất nhiều đặc tính kỹ thuật tốt nhưng vẫn chưa đến được với người dùng cuối
Tính tiêu chuẩn hóa.
- Linux được phát hành miễn phí nên bất cứ ai cũng có thể tự mình đóng gói, phân phối theo những cách riêng
Hiện tại có khá nhiều bản Linux phát triển từ một nhân ban đầu cùng tồn tại như: RedHat, SuSE, Knoppix
Người dùng phải tự so sánh xem bản nào là phù hợp với mình Điều này có thể gây khó khăn cho người dùng, nhất là những người còn có kiến thức về tin học hạn chế
- Số lượng các ứng dụng chất lượng cao trên Linux còn hạn chế Mặc dù Windows có sản phẩm nào thì Linux cũng gần như có phần mềm tương tự.(Vd: OpenOffice trên Linux Tuy nhiên chất lượng những sản phẩm này
là chưa thể so sánh được với các sản phẩm
Window
- Một số nhà sản xuất phần cứng không có driver hỗ trợ Linux
Do hiện nay Linux chưa phổ biến bằng Windows nên nhiều nhà sản xuất không
hỗ trợ các driver chạy trên Linux
Tuy nhiên bạn vẫn có thể tìm
thấy các driv
er này
do
ai
đó tron
g cộn
g đồn
g
mã ngu
ồn
mở viết.- Lin
Trang 8ux có một số nhược điểm
mang tính cố hữu như vậy
nhưng ta vẫn có thể chạy
được một số chương trình
Windows trên nên Linux
thông qua chương trình
WINE.(một Chương trình
giả lập để chạy các ứng
dụng Windows trên
Linux) Do đó, có thể tận
dụng được các ưu điểm
của Windows lẫn Linux
- Trên cơ sở nhìn nhận một
cách khách quan các ưu
nhược điểm của HĐH
Linux cũng như xem xét
xu hướng phát triển tin học
ở nước ta có thể thấy: Đối
với người dùng thông
thường việc chuyển từ
Windows sang Linux trong
ngày một ngày hai là chưa
chuẩn mở rộng cho giao
thức truy cập thư mục, hay
“lightweight ”
có nghĩa là đây
là một giao thức có tính hiệu quả, đơn giản và dễ dàng
để cài đặt
chúng sử dụng các hàm ở mức cao
- Điều này trái ngược với giao thức
“heavyweight”
như là giao thức truy cập thư mục X.500 (DAP) Giao thức này sử
phương thức
mã hoá quá phức tạp
Điều này trái nguwcj với Điều
- LDAP
sử dụng các tập các phương thức đơn giản
và là một giao thức thuộc tầng ứng dụng
Độ
1.1.2 Giới thiệu về LDAP
LDAP (Lightweight Directory Access
Protocol) là một chuẩn mở rộng cho giao thức
truy cập thư mục, hay là một ngôn ngữ để
LDAP client và severs sử dụng để giao tiếp
với nhau
LDAP là một giao thức “lightweight ”
có nghĩa là đây là một giao thức có tính hiệu
quả, đơn giản và dễ dàng để cài đặt Trong khi
chúng sử dụng các hàm ở mức cao Điều này
trái ngược với giao thức “heavyweight” như
là giao thức truy cập thư mục X.500 (DAP)
Giao thức này sử dụng các phương thức mã
hoá quá phức tạp
LDAP sử dụng các tập các phương thức đơn giản và là một giao thức thuộc tầng ứng dụng
LDAP đã phát triển với phiên bản LDAP v2 được định nghĩa trong chuẩn RFC 1777 và 1778, LDAP v3 là một phần trong chuẩn Internet, được định nghĩa trong RFC 2251 cho đến RFC 2256, do chúng quá mới nên không phải tất cả các nhà
Các tổ chức tích hợp LDAP trong sản phẩm của mình
- Ngoài vai trò như là một thủ tục mạng, LDAP còn định nghĩa
ra 04 mô hình, các mô hình này cho phép linh động trong việc sắp đặt
Stt
Vendors Ghi chú
1OpenLDAPMiễn phí2
SunOne (iPlanet) Directory Server
Thương mại3
Trang 9các thư mục:
Mô hình LDAP information - định nghĩa ra
các loại dữ liệumà bạn cần đặt vào thư mục
Mô hình LDAP Naming - định nghĩa ra cách
bạn sắp xếp và tham chiếu đến thư mục Functional -
định nghĩa cách mà bạn truy cập và cập nhật thông tin
trong thư mục của bạn
Mô hình LDAP Security - định nghĩa ra cách
thông tin trong trong thư mục của bạn được bảo vệ
tránh các truy cập không được phép
- Ngoài các mô hình ra LDAP còn định nghĩa ra khuôn dạng để trao đổi dữ liệu LDIF (LDAP Data Interchange Format), ở dạng thức văn bản dùng để mô tả thông tin
về thư mục LDIF còn có thể mô tả một tập hợp các thư mục hay các cập nhật có thể được áp dụng trên thư mục
1.2 Giới thiệu các dịch vụ của Linux 1.2.1 HTTPD ( Hypertext Transfer Protocol Daemon )
- Apache ( httpd) là một open-source Web server và free hoàn toàn được hỗ trợ bởi Apache Software Foundation Mặc dù free và Open-Source nhưng Apache sức mạnh và tính ổn định của nó được đánh giá
ở tầm cỡ thương mại Đến nay đây vẫn là best choice cho giải pháp máy chủ Web
e
Hình 2.2 Apache
- Hầu hết các web server trên toàn thế giới đều sử dụng dịch vụ Apache HTTP Server Vì vậy, khi xuất hiện bất
kỳ một lỗi bảo mật nào thì nó phải được khắc phục càng sớm càng tốt
- Phiên bản mới nhất ủca Apache
là Apache httpd 2.4.2
1.2.2 SAMBA
- Samba là dịch vụ của hệ điều hành Linux, chạy trên nền giao thức SMB (Server Message Block) cho phép chia sẻ file hệ thống, máy in với các máy chạy Win 95, 98 hoặc NT SMB là giao thức được các hệ điều hành của
Microsoft sử dụng để chia sẻ
dữ liệu qua mạng Với Linux Samba cũng dựa vào giao thức SMB để viết một
số tiến trình điển hình như smbd, nmbd Các hệ điều hành của Microsoft có thể làm việc với máy Linux qua Network
Neighborhood
Hình 2.3: Samba
Trang 101.2.3 ZIMBRA
- Zimbra nguyên là một công ty
độc lập về phần mềm mã nguồn mở
được yahoo mua lại vào năm 2007 Theo
quảng cáo trên website của hãng thì hiện
chạy trên máy chủ và máy trạm có các
đặc điểm và tính năng chính sau
Thư điện tử: là một hệ thống thư điện tử hoàn chỉnh gồm: Mail server(SMTP,POP3,IMAP,antivirus,antispam,openLDAP,backup,… có đầy đủ tính năng như auto-reply, auto-forward,mail fillter,
…) và mail client ( zimbra desktop và zimbra web client)
desktop và zimbra web
Client là giao diện với người dùng Zimbra desktop (tương tự như Outlook,…) cài được trên cả windowns , Mac, Linux
Ngoài ra có thể dùng các email client khác như Outlook, Evolution,…hai loại Mail client trên ứng dụng với hai cách làm việc: Làm việc online, dùng zimbra webclient Mọi thông tin sẽ sao trên máy chủ zimbra Zimbra web client có hai giao diện dạng html thông thường, nhanh nhưng ít tính năng và dạng lưu Ajax( tương tự như yahoo mail) zimbra web client là một trong những web client hoàn chỉnh nhất hiện này ( hỗ trợ hầu hết tính năng zimbra server kể cả chat)
Làm việc offline dùng các mail client còn lại Riêng Outlook, Apple Desktop, Evolution có thể đồng bộ email, calendar, contacts, task với máy chủ zimbra , các mail client khác chỉ đọc và gửi mail
Zimbra có một bản
opensource miễn phí và ba bản khác có thu phí Bản opensource có các tính năng
sử dụng giống như bản có phí , chỉ kém một số tính năng người quản trị nhưng có thể
bù đắp bằng cách tự cài bổ xung và hoàn toàn có thể dùng bản opensource vào các hệ thống thật
1.2.4
BIND (Berkeley Internet Name Domain)
Internet Name Domain) là phần mềm miễn phí, mã nguồn mở sử dụng cho các máy chủ làm DNS Server
Trang 11 BIND được lập trình bởi 4 sinh viên đại học ở
Berkeley, California năm 1980 và được phát hành lần
đầu tiên trên hệ thống 4.3BSD
BIND version 8 được phát hành vào tháng 5
năm 1997 Sau đó đến tháng 9 năm 2000 BIND
version 9 ra đời, phiên bản mới nhất hiện nay là 9.3
với nhiều tính năng quan trọng được cải thiện và bảo
mật cao hơn các phiên bản trước
Thư mục làm việc mặc định của BIND:
Server kiểu Master, Slave hoặc Caching-Only đều yêu
cầu 3 file cấu hình sau:
named.conf: chứa trong thu
mục /etc là file cấu hình tổng thể cho dịch vụ named
named.ca: chứa trong thư
mục /var/named chứa tên miền và địa chỉ IP của các root server chứa trong thư mục /var/named cung cấp thông tin cho quátrình phâ địa chỉ IP ảo cho localhost
named.local:
Và 2 file cấu hình sử dụng cho Master DNS Server :
zone: chứa tên miền và địa chỉ IP của các máy chủ
và thông tin về ánh xạ giữa tên miền và địa chỉ IP này
reverse zone: ngược lại của file zone chứa thông
tin về ánh xạ giữa địa chỉ IP và tên miền
- VSFTPD là một công cụ truyền tải file giữa các máy tính với nhau VSFTPD cho phép truyền và tải files, quản lí thư mục và lấy mail Chú ý rằng VSFPTD không được thiết kế để truy cập và thi hành files Nhưng nó là
một công cụ tuyệt vời để truyền tải file, đặc biệt là truyền file lên mạng Internet
- VSFTPD dùng hai kênh TCP TCP cổng 20 và cổng 21 là nhận lệnh, cho phép giả lập truyền tải lệnh và dữ liệu của VSFTPD
- VSFTPD cũng khác với giao thức khác ở một chức năng quan
VSFTPD truyền tải file ở foreground, còn các giao thức khác thì ở background Có
VSFTPD không
sử dụng các spooler hay queue Cũng vì thế mà việc truyền tải thực hiện bằng thời gian thực
- Trong VSFTPD
có hai kênh tồn tại giữa hai máy gọi là Protocol Interpreter hay còn gọi là PI và Data Tranfer Process hay còn gọi là DTP Cấu trúc truyền tải PI dùng kênh lệnh
21 TCP và truyền tải dữ liệu DTP trên kênh
dữ liệu 20 TCP FTP gần giống với Telnet trong
Trang 12chương trình máy chủ chạy liên tục và ngắt quãng chương trình chạy trên máy khách.
1.2.6 SQUID PROXY
- Squid proxy là một là một giải pháp proxy phần mềm mã nguồn mở được sử dụng nhất trong giải pháp Proxy của cộng đồng mạng Squid proxy làm nhiệm vụ chuyển tiếp các yêu cầu từ phía client và đồng thời đóng vai trò kiểm soát tạo sự an toàn cho việc truy cập Internet của các client Do vậy
nó tăng tốc truy cập web và tiết kiệm được băng thông mạng
- Squid xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, nó sẽ kết nốivới server thật thay cho client và tiếp tục chuyển tiếp đến những yêu cầu từ client đến server, cũng như đáp ứng những yêu cầucủa server đến client Vì vậy squid proxy giống cầu nối trung gian giữa server và client
- Bên cạnh việc chuyển tiếp các yêu cầu từ phía client, nó cũng
sẽ đồng thời lưu lại trên đĩa những dữ liệu được trả về từ Internet Server – gọi
là caching ( thường là nội dung các trang Web, các tập tin…) Nếu trong thời gian hiệu lực mà một hay nhiều client cùng yêu cầu một nội dung thì squid proxy sẽ ngay lập tức đáp ứng lại những yêu cầu
từ phía client
Trang 13 CHƯƠNG II.TÌM HIỂU
KIẾN THỨC
1.1 Giới thiệu tổng quan về LDAP server
1.1.1 Lịch sử ra đời của LDAP
- Vào giữa thập niên 1980,
Ủy
ban tư vấn Điện thoại - Điện tín quốc
tế (International Telegraph and Telephone Consultative Committee - CCITT), tiền thân của Liên minh Viễn thông quốc tế (International Telecommunication Union - ITU) và Tổ chức Tiêu chuẩn hóa quốc tế
(International Organization for Standardization - ISO) đã hợp tác với nhau để tạo ra một chuẩn mới cho dịch
vụ thư mục nhằm mục đích thống nhất
nỗ lực của 2 tổ chức 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,
- 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 của mình Một trong những khiếm khuyết đó nằm ở giao thức DAP (tiếng Anh: Directory client Access Protocol - giao thức truy cập thư mục khách) 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
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 lần lượt trong
RFC 1202 và
RFC 1249
Sa
u 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
1.1.2 Phương thức hoạt động của LDAP
Ldap dùng giao thức giao tiếp client/sever
- Giao thức giao tiếp client/sever
là một mô hình giao thức giữa một chương
Trang 14trình client chạy trên một máy tính gởi một yêu cầu qua mạng đến cho một máy tính khác đang chạy một chương trình sever (phục vụ) Chương trình server này nhận lấy yêu cầu và thực hiện sau đó
nó trả lại kết quả cho chương trình client Ý tưởng cơ bản của giao thức client/server là công việc được gán cho những máy tính đã được tối ƣu hoá để thực hiện công việc đó
- Một máy server LDAP cần có rất nhiều RAM (bô nhớ) dùng để lưu trữ nội dung các thư mục cho các thao tác thực thi nhanh và máy này cũng cần đĩa cứng và các bộ vi xử lý ở tốc độ cao
Đây là một tiến trình hoạt động trao đổi LDAP client/server :
sẽ được sử dụng trong quá trình xác thực, uỷ nhiệm thư thông thường là pasword nhưng cũng có thể là chứng chỉ điện tử dùng để xác thực client Sau khi thư mục có được sự xác định của thao tác bind, kết quả của thao tác bind được trả về cho client Client phát ra các yêu cầu tìm kiếm Server thực hiện xử lý và trả về kết quả cho client Server gởi thông điệp kết thúc việc tìm kiếm Client phát ra yêu cầu unbind, với yêu cầu này server biết rằng client muốn huỷ bỏ kết nối.Server đóng kết nối
LDAP là một giao thức hướng thông điệp
- Do client và sever giao tiếp thông qua các thông điệp, Client tạo một thông điệp (LDAP message) chứa yêu cầu và gởi nó đến cho server Server nhận được thông điệp và xử lý yêu cầu của client sau đó gởi trả cho client cũng bằng một thông điệp LDAP
-
LDAP client muốn tìm kiếm trên thư mục, client tạo LDAP tìm kiếm và gởi thông điệp cho server Sever tìm trong cơ sở dữ liệu và gởi kết quả cho client trong một thông điệp LDAP
LDAP là giao thức hướng
thông điệp nên client được phép phát ra nhiều thông điệp yêu cầu đồng thời cùng một
lúc Trong LDAP, message ID
dùng để phân biệt các yêu cầu của client và kết quả trả về của server
Trang 15
- Việc cho phép nhiều thông điệp cùng
xử lý đồng thời làm cho LDAP linh động hơn các
nghi thức khác
- Ví dụ như HTTP, với mỗi yêu cầu từ
client phải được trả lời trước khi một yêu cầu khác
được gởi đi, một HTTP Client program như là Web
browser muốn tải xuống cùng lúc nhiều file thì Web
browser phải thực hiện mở từng kết nối cho từng file,
LDAP thực hiện theo cách hoàn toàn khác, quản lý tất
cả thao tác trên một kết nối
1.1.3 Cấu trúc file Ldif
Khái niệm LDIF
- LDIF ( LDAP
Interchange Format) được định nghĩa trong RFC 2849, là một chuẩn định dạng file text lưu trữ những thông tincấu hình LDAP và nội dung thư mục
- File LDIF thường được sử dụng để import dữ liệu mới vào trong directory của bạn hoặc thay đổi dữ liệu đã có Dữ liệu trong file LDIF cần phải tuân theo một luật có trong schema của LDAP directory
- Schema là một loại
dữ liệu đã được định nghĩa từ trước trong directory của bạn Mọi thành phần được thêm vào hoặc thay đổi trong directory của bạn sẽ được kiểm tra lại trong schema để đảm bảo sự chính xác Lỗi vi phạm schema sẽ xuất hiện nếudữ liệu không đúng với các luật đã có
- Giải pháp Import dữ liệu lớn vào LDAP Nếu dữ liệu được lưu trong excel khoảng vài chục ngàn mẫu tin, viết tool chuyểnthành định dạng trên rồi import vào LDAP Server
Cấu trúc tập tin Ldif
Thông thường một file LDIF sẽ theo
một
tập
entry
khác
nhau
được
phân
cách
bởi
một
dòn
Trang 16 Một tập các chỉ dẫn cú pháp để làm sao
xử lý được thông tin
Những yêu cầu khi khai báo nội dung file
Thuộc tính được liệt
kê phía bên trái của dấu (:) và giá trị được biểu diễn bên phải Dấu đặc biệt được phân cách với giá trị bằng dấu cách trắng
mô tả một nét đặt trưng tiêu biểu của một đối tượng Một entry bao gồm nhiều dòng :
là tên của entry thư mục, tất cả được viết trên một dòng Sau đó lần lượt là các thuộc tính của entry, thuộc tính dùng để lưu giữ
dữ liệu
Mỗi thuộc tính trên một dòng theo định dạng là ” kiểu thuộc tính : giá trị thuộc tính” Thứ tự các thuộc tính không quan trọng, tuy nhiên
để dễ đọc được thông tin chúng ta nên đặt các giá trị objectclass trước tiên và nên làm sao cho các giá trị của các thuộc tính cùng kiểu ở gần nhau
objectClass: inetOrgPersonobjectClass: organizationalPersonobjectClass: top
givenName: anhtam_testuid: anhtam_test
cn: anhtam_testtelephoneNumber: 125698742sn: anhtam_test
userPassword: {SSHA}WixBYpdCo4bEZPRPwUriImctcWZ9sDgQQ/WElg==
mail: anhtam_testfacsimileTelephoneNumber: 5426entryUUID: bc95b0ee-6e3e-480d-83c1-2c1e13c89dc9createTimestamp: 20100326001110Z
creatorsName: cn=Directory Manager,cn=Root DNs,cn=configpwdChangedTime: 20100326001110.323Z
Stt Tên
Mô tả
1dnDistinguished Name : tên gọi phân biệt2
ccountry – 2 kí tự viết tắt tên của một nước
dcDomain component - Thành phần tên miền3
oorganization – tổ chức4
ouorganization unit – đơn vị tổ chức5
objectClassMỗi giá trị objectClass hoạt động như mộtkhuôn mẫu cho các dữ liệu được lưu giữ trongmột entry Nó định nghĩa một bộ các thuộc tính phải được trình bày trong entry (Ví dụ : entry này có giá trị của thuộc tính objectClass là eperson, mà trong eperson có quy định cần có các thuộc tính là tên, email, uid ,
…thì entry này sẽ có các thuộc tính đó), còn bộ các thuộctính tùy chọn có thể có hoặc có thể không cómặt
6givenNametên
7uid
Trang 17 1.1.4.1 Mô hình LDAP (LDAP Information Model)
- Mô hình LDAP Information định nghĩa ra các kiểu của dữ liệu và các thành phần cơ bản của thông tin mà bạn
có thể chứa trong hư mục Hay chúng ta có thể nói rằng LDAP
Information mô
tả cách xây dựng
ra các khối dữ liệu mà chúng ta
có thể sử dụng
để tạo ra thư mục Thành phần cơ bản của thông tin trong một thư mục gọi
là entry đây là một tập hợp chứa các thông tin về đối tượng (Object)
Thường thì các thông tin trong một entry mô tả một đối tượng thật như là thông tin về người,
không phải là qui định bắt buộc với mô hình Ví dụ như trên thư mục dưới đây
số phách14createTimestampthời gian tạo ra entry này15
creatorsNametên người tạo ra entry này16
Trang 18mục có thể trao đổi cho nhau bằng cách dùng LDIF.
-
Ví dụ thông tin thư mục ở dạng văn bản LDIF, đây là dạng chuẩn dành cho việc nhập và xuất thông tin trên thư mục, và các tập tin LDIF đều ở dạng ASCII điều này làm cho chúng
dễ dàng chuyền tải trên hệ thống email
- Một entry thư mục ở dạng LDIF:
distinguished name (dn) là tên của entry thư mục tất cả được viết trên một dòng, sau đó lần lượt là các thuộc tính của entry, mỗi thuộc tính trên một dòng theo thứ tự là kiểu thuộc tính :
dn: uid=cuonglc, dc=anhtam, dc=vnobjectClass: top
objectClass: personobjectClass: organizationalPersonobjectClass: inetOrgPerson
cn: Nguyen Anh Tamcn: AnhTam
sn: Nguyenmail: anhtam@anhtam.vntelephoneNumber: +84 0165 207 2093description: Nhan vien chinh thuc
Trang 19giá trị thuộc tính Thứ tự các thuộc tính
không quan trọng tuy nhiên để dễ đọc
được thông tin chúng ta nên đặt các giá
trị objectclass trước tiên và nên làm sao
cho các giá trị của các thuộc tính cùng
kiểu ở gần nhau Kiểu thuộc tính dữ liệu
qui định, mô tả dữ liệu được đặt vào và
cách thư mục so sánh giá trị khi dò tìm
* caseIgnoreString : qui
định trong trong một ngữ cảnh nào đó
thì chúng ta xem như nhau và không cần
thực hiện so sánh như là Tom và tom
như nhau không phân biệt chữ hoa và
thường
* caseExactString : trái
ngược lại với cú pháp trên phân biệt rõ
ràng chữ hoa và chữ thường LDAP
sever không hổ trợ các kiểu dữ liệu trù
tượng chỉ hổ trợ duy nhất cho các kiểu
chuẩn Không như những nghi thức khác
chẳng hạn là X.500 ngoài một số liểu dữ
liệu chuẩn (chuỗi, số, kiểu bool) và một
số kiểu dữ liệu phức tạp xây dựng từ các
kiểu dữ liệu trên Tuy nhiên những giao
diện plug-in cho phép định nghĩa các cú
pháp mới
- Các thuộc tính cũng phân
thành 2 loại: thuộc tính người dùng,
thuộc tính thao tác thuộc tính người
dùng (user attributes) là các thuộc tính
bình thường của một entry thư mục, các
thuộc tính này có thể được điều chỉnh
bởi user của thư mục (tất nhiên là các
thao tác sữa chữa được phép) Thuộc
tính thao tác (operational attributes) đây
là các thuộc tính đặc biệt và chỉ có thể
được điều chỉnh bởi directory server hay
là các thuộc tính cho biết trạng thái của
thư mục, ví dụ một thuộc tính thao tác là
một thuộc tính modifytimestamp, những
thuộc tính này được bảo trì bởi thư muc
và nó cho biết thời điểm cuối cùng mà
entry này được cập nhật Khi entry được
gởi đến cho client, các operational
attributes sẽ không được gởi đi cùng trừ
khi client yêu cầu
- Có một số ràng buộc trên
giá trị của thuộc tính Một số server
software cho phép nhà quản trị khai báo
rằng một thuộc tính có thể giữ một hay
nhiều giá trị Ví dụ như thuộc tính
givenName có thể chứa nhiều giá trị, khi một người muốn thêm vào nhiều tên và cũng có một số thuộc tính chỉ chứa duy nhất một giá trị những nhà quản trị hệ thống đặt ra phạm vi giới hạn của dữ liệu để ngăn chặn các user sử dụng vượt qua giới hạn cho phép
Bảo Trì các hệ thống thư mục.
Bất kì một entry trong thư mục có tập các kiểu thuộc tính đây là các kiểu được yêu cầu và được cho phép, ví dụ như
một entry mô tả một người thì thuộc tính yêu cầu cho entry đó là phải có cn(common name) và sn (surname) Một số thuộc tính cho phép nhưng phải là cần thiết cho entry mô tả một người, các thuộc tính khác không được yêu cầu hay không được phép sẽ không có mặt trong entry
Những tập hợp các tập thuộc tính yêu cầu và thuộc tính được phép được gọi là mô hình thư mục (directory schemas) Directory schemas
có thể được thiết kế cho phép chúng ta có quyền điều khiển
và bảo trì các thông tin chứa trong entry
Chúng ta đã có một khối thông tin cơ bản đó là entry, nhưng làm sao để có thể sắp xếp xây dựng một cây thông tin thư mục (directory information tree) DIT Chúng
ta sẽ nghiên cứu các quy tắc xây dựng trong phần LDAP Naming Model
Trang 20 1.1.4.2 Mô hình LDAP Naming (LDAP Naming Model)
Mô hình LDAP Naming định nghĩa ra cách để chúng ta có thể sắp xếp và tham chiếu đến dữ liệu của mình Hay chúng ta có thể nói rằng mô hình này mô tả cách sắp xếp các entry của chúng vào một cấu trúc có logical,
và mô hình LDAP Naming chỉ ra cách
để chúng ta có thể tham chiếu đến bất kỳ một entry thư mục nào nằm trong cấu trúc đó
Mô hình LDAP Naming cho phép chúng ta có thể đặt dữ liệu vào thư mục theo cách mà chúng ta có thể dễ dàng quản lý nhất
2:
M
ột câ
y th
ư m
ục LDAP
Trang 21có một entry gốc (root) Root
là nơi mà chúng
ta có thể đặt các entry vào Trên
hệ thống LDAP
có một entry đặc biệt được gọi là root DES chứa các thông tin về server,
không phải là một entry thư
thường
Khác biệt thứ hai là thư mục LDAP mỗi một node chứa
dữ liệu, và cũng
có thể là một container chứa các entry khác
Đây là một khác biệt với hệ thống tập tin do ở hệ thống tập tin chỉ
có thư mục có thể chứa thư mục con và chỉ
có tập tin mới chứa dữ liệu
Distinguished names & Relative Distingguished name.
Trang 22Distinguished names (DNS) trong LDAP đây
là tên của một entry chỉ ra cách bạn có thể tham chiếu đến các entry trên thư mục, hai entry khác nhau trên thư mục hai DNS cũng khác nhau
Giống như đường dẫn của hệ thống tập tin, tên của một entry LDAP được hình thành bằng cách nối tất cả các tên của từng entry cấp trên (cha) cho đến khi trở lên root, như hình trên ta thấy node có màu đậm sẽ có tên là uid=ldap, ou=people, dc=anhtam, dc=vn nếu chúng ta đi từ trái sang phải thì chúng ta có thể quay ngược lại đỉnh của cây, chúng ta thấy rằng các thành phần riêng lẽ của cây được phân cách bởi dấu phẩy khoảng trắng sau dấu phẩy là tuỳ ý,
do đó hai DNS sau là tương đương: uid=ldap,
uid=ldap,ou=people,dc=anhtam,dc=vn
Với bất kỳ một tổ chức nào, thành phần trái nhất được gọi là relative distingguished name (RDN), như đã nói đến tổ chức là tên duy nhất cho mỗi entry trên thư mục, do đó các entry có cùng cha thì RDN cũng phải phân biệt ví dụ hình dưới đây ta thấy trên thư mục, mặc dù cho có hai entry có cùng RDN cn=ldap như hai entry ở hai nhánh khác nhau
Để tạo ra một alias entry trong thư mục trước tiên bạn phải tạo ra một entry với tên thuộc tính
là aliasedOjecctName với giá trị thuộc tính của entry
mà chúng ta muốn alias entry này chỉ đến
Nhưng không phải tất cả các LDAP Directory Server đều hỗ trợ Aliases Bởi vì một alias entry có thể chỉ đến bất kỳ một entry nào, kể cả các entry LDAP server khác Do việc tìm kiếm khi gặp phải một bí danh có thể phải thực hiện tìm kiếm trên một cây thư mục khác nằm trên các server khác, do đó làm tăng chi phi cho việc tìm kiếm và đây cũng là lý
do chính mà các phần mềm không hổ trợ alias
1.1.4.3 Mô hình LDAP Function
- Phần trên chúng ta đã nói đến mô hình LDAP Information và LDAP Naming, bây giờ chúng
ta sẽ xem xét mô hình LDAP Functional, đây là mô hình mô tả các thao tác cho phép chúng ta có thể thao tác trên thư mục Chúng ta nhắc lại khái quát về mô hình LDAP Functional
- Mô hình LDAP Functional chứa một
tập các thao tác chia thành
3 nhóm Thao tác thẩm tra (interrogation) cho phép có thể search trên thư mục và nhận dữ liệu từ thư mục Thao tác cập nhật
(update): add, delete, rename và thay đổi các entry thư mục Thao tác xác thực và điều khiển (authentiaction and control) cho phép client xác định mình đến cho thư mục và điều kiển các hoạt động của phiên kết nối
Trang 23 - Với version 3 giao thức LDAP ngoài 3 nhóm thao tác trên, còn có thao tác LDAP extended, thao tác này cho phép nghi thức LDAP sau này có thể
mở rộng một cách có tổ chức và không làm thay đổi đến nghi thức Bây giờ chúng sẽ phân tích kĩ các thao tác theo từng nhóm và đầu tiên là các thao tác LDAP interrogation
- Các thao tác thẩm tra (LDAP Interrogation)
- Hai thao tác thẩm tra (LDAP Interrogation) cho phép client có thể tìm và nhận lại thông tin từ thư mục nhưng nghi thức LDAP không có thao tác đọc một entry thư mục,do đó khi đó chúng ta muốn đọc một entry thì ta phải thực hiện tìm kiếm và dừng tìm kiếm ngay khi nhận được kết quả đầu tiên
Thao tác tìm kiếm (LDAP search operation) yêu cầu 8 tham số:
Tham số đầu tiên là đối tượng cơ sở mà các thao tác tìm
kiếm thực hiện trên đây, tham số này là DN chỉ đến đỉnh của cây mà
Phạm vi “onelevel” thao tác tìm kiếm diễn
ra tại cấp dưới (con trực tiếp của đối tượng cơ sở)
Phạm vi “subtree” thao tác này thực hiện tìm hết trên cây mà đối tượng cơ sở là đỉnh
Tham số thứ baderefAliases , cho server biết
rằng liệu bí danh aliases có bị bỏ qua hay không tham khảo đến khi thực hiện tìm kiếm, có 4 giá trị mà derefAliases có thể nhận được:
Nerverderefaliases - nghĩa là thực hiện tìm kiếm
và không bỏ qua bí danh Ner (aliases) trong lúc thực hiện tìm kiếm và áp dụng với cả đối tượng
cơ sở
Derefinsearching - bỏ qua các aliases trong trong các entry cấp dưới của đối tượng cơ sở, và không quan tâm đến thuộc tính của đối tượng cơ sở
Dereffindingbaseobject - ngược lại với giá trị thuộc tính trên với
giá
trị
này
thì
việc
tìm
kiếm
sẽ
bỏ
qua
các
aliases
của
Trang 24đối tượng cơ sở, và không quan tâm đến thuộc tính của các entry thấp hơn đối tượng cơ sở
derfAlways - bỏ qua cả hai nếu việc tìm kiếm thấy đối tượng cơ
sở hay là các entry cấp thấp là các entry aliases
Tham số thứ bốn cho server biết có tối đa bao
nhiêu Entry kết quả được trả về, ví dụ như nếu
client cho biết tham số này là 100, nhưng
server lại tìm được 500 entry thoả mãn, nhưng
lúc này server sẽ gởi 100 entry cho cilent, nếu
client đặt tham số này là zero thì client nhận
được tất cả các kết quả của việc dò tìm(chú ý
tham số này có thể được áp đặt bởi server và
những người dùng bình thường không thể thay
đổi được)
Tham số thứ năm qui định thời gian tối đa
cho việc thực hiện tìm kiếm, khi thời gian tìm
kiếm đã vượt thời gian tối da thì Servẻ sẽ gởi
cho Clien LDAP_TIMELIMIT_EXCEEDED,
nếu tham số này được thiết lập là zero thì nghĩa
là không có giới hạn thới gian cho việc tìm
kiếm, cũng như tham số thứ bốn tham số này
có thể do server thiết lập một giới hạn và chỉ
có những người dùng có đặc quyền mới có thể
thay đổi được
Tham số thứ sáu attrOnly – là một tham số
kiểu bool, nếu được thiết lập là true, thì server
chỉ gởi các kiểu thuộc tính của entry cho client,
nhưng sever không gởi giá trị của các thuộc
tính đi, điều này là cần thiết nếu như client chỉ
quan tâm đến các kiểu thuộc tính chứa trong
Tham số thứ bảy là bộ lọc tìm kiếm(search
filter) đây là một biểu thức mô tả các loại entry
sẽ được giữ lại Trong LDAP chức năng tìm
kiếm với biểu thức lọc như vậy là rất linh
động, tham khảo chi tiết các loại bộ lọc với
phần tiếp theo
Tham số thứ tám và đây là tham số cuối cùng
đây là một danh sách các thuộc tính được giữ
lại với mỗi entry
Chỉ định các thuộc tính được giữ lại.
Thao tác cập nhật, chúng ta có 4 thao tác
cậ
p nhậ
t đ
ó l
à
a d d , d e l e t e , r e n a m
e
(modif
y DN)
Trang 25, và Update.
Add: Thao tác add tạo ra một entry mới
với tên DN vàdanh sách các thuộc tính truyền vào, khi thực hiện addmột entry mới vào thư mục phải thoả các điều kiện sau :
Entry là nút cha của entry mới phải tồn tại.Chưa tồn tại một entry nào có cùng tên
DN vớientry mới trên thư mục Các thao
tác điều kiển truy cập trên thư mục là các thaotác được phép
Delete: Thao tác xoá (delete) chỉ cần
truyền vào tên của entry cần xoá và thao tác thực hiện được nếu như:
• Entry tồn tại với tên là DN truyền vào
• Entry bị xoá không có các entry con
Các thao tác điều kiển truy cập trên thư mục là các thao tác được phép xoá
Rename: Thao tác rename hay modify
DN sử dụng để đổi tên hay dùng để di chuyển các entry trong thư mục, các tham số cần truyền vào là DN của entry cần đổi tên, RDN mới của entry và một
số tham số tuỳ chọn dành cho các entry
là cha mới của entry di chuyển đến, và cuối cùng là một cờ cho phép xoá hay không xóa với RDN cũ Cũng như trên thao tác thực hiện được nếu như thoả:
Các entry bị đổi tên phải tồn tại
Tên mới của entry phải chƣa tồn tại LDAP version 2 không
hổ trợ thao tác modify DN, chỉ
có thao tác modify RDN, do chỉ thay đổi RDN của entry cho nên LDAP version 2 chỉ cho phép thực hiện rename tên của entry nhưng không có khả năng
di chuyển có đến nơi khác trên cây
Update: Thao tác cuối cùng là thao tác cập nhật với tham số
DN và tập hợp các thay đổi được áp dụng lên đây Và thao tác này
Các thao tác cập nhật phải là các thao tác được phép
Nếu một điều kiện nào ở trên
không
thoả
thì
cách
cập
nhận
sẽ
không
được
áp
dụng
trên
Trang 26entry Các thao tác xác thực và điều kiện (LDAP authentiaction and control Operations) Thao tác xác thực gồm: thao tác bind
và unbind
Bind: Thao tác bind là cách client xác thực với server,
Client và uỷ nhiệm thư, server kiểm tra và uỷ nhiệm thư nếu thành công thì client có quyền thực hiện các thao tác lên thư mục Có nhiều phương thức bind khác nhau, đơn giản là client đƣa ra một DN và password các thông tin này ở dạng hiểu được Lúc này server chỉ cần tìm entry và kiểm tra xem giá trị thuộc tính userpassword có đúng với password truyền vào hay không Tuy các phương thức an toàn hơn là SSL hay là TLS Với LDAP version 3 có một thao tác bind, là SASL bind đây là một nghi thức độc lập với các mô hình xác thực, với SASL cho phép client chọn thao tác xác thực và nếu thao tác này được server hỗ trợ thì đy
là thao tác dùng để xác thực client
UnbiUnbind: Thao tác unbind, khi client
phát ra thông báo này thì server sẽ huỹ bỏ các thông tin liên quan đến khách hàng huỷ
bỏ tất cả các thao tác đang thi hành trên thư mục và đóng kết nối TCP
Thao tác điều khiển chỉ có abandon: Thao
tác abandon có một tham số duy nhất đó là
ID của thông điệp, client thực hiện thao tác này khi không quan tâm đến kết quả của thao tác bất kỳ trước đó
Khi thực hiện thao tác bind dưới một tên
DN hay một người vô danh thì với mỗi user có một số quyền thao tác trên thư mục entry Và những quyền nào được entry chấp nhận tất cả những điều trên gọi là truy cập điều khiển (access control)
Hiện nay LDAP chƣa định nghĩa ra một
mô hình Access Control, các điều kiện truy cập này được thiết lập bởi các nhà quản trị hệ thống bằng các server software
1.1.5 Ứng dụng xác thực dùng LDAP
Việc xác thực trong một thư mục LDAP là một điều cần thiết và không thể thiếu Các quá trình xác thực được sử dụng để thiết lập các quyền của khách hàng cho mỗi lần
sử dụng
Tất cả các công việc như tìm kiếm, truy vấn, vv… được sự kiểm soát bởi các mức
uỷ quyề
n củ
a ngườ
i đư
ợc xá
c thực
Kh
i xá
c nh
ận m
ột ngườ
i dù
ng củ
a LD
AP cầ
n tên ngườ
i dù
ng đư
ợc xá
c đị
nh nh
ư
là m
ột us
er
và
Trang 27mật khẩu tương ứng.
Một số phương thức xác thực người dùng
Xác thực người dùng chƣa xác định (Anonymous Authentication)
Xác thực người dùng chưa xác định là một
xử lý ràng buộc đăng nhập vào thư mục với một tên đăng nhập và mật khẩu là rỗng Cách đăng nhập này rất thông dụng
và đuợc thường xuyên sử dụng đối với ứng dụng client
Xác thực nguời dùng đơn giản ( Simple Authtication)
Xác thực nguời dùng đơn giản ( Simple Authtication)
Máy chủ sẽ so sánh mật khẩu với giá trị thuộc tính User Password hoặc với những giá trị thuộc tính đã được định nghĩa truớc trong entry cho DN đó Nếu mật khẩu đuợc lưu dưới dạng bị băm( mã hoá), máy chủ sẽ sử dụng hàm băm tuơng ứng để biến đối mật khẩu đƣa vài và so sánh với giá trị đó với giá trị mật khẩu đã mã hoá từ trước Nếu cả hai mật khẩu trùng nhau, việc xác thực client sẽ thành công Nếu cả hai mật khẩu trùng nhau, việc xác thực client sẽ thành công
Xác thực đơn giản qua SSL/TLS
Nếu việc gửi username và mật khẩu của bạn qua mạng khiến ta không cảm thấy yên tâm về tính bảo mật, sẽ là an toàn hơn khi truyền thông tin trong một lớp truyền tải được mã hóa LDAP sẽ vượt qua lớp truyền tải đã được mã hóa này trước khi thực hiện bất cứ hoạt động kết nối nào Do
đó, tất cả thông tin người dùng sẽ được đảm bảo an toàn (ít nhất là trong suốt session đó)
Có hai cách sử dụng SSL/TCL với LDAPv3
LDAP với SSL
LDAP với SSL (LDAPs-tcp/636) được hỗ trợ bởi rất
nhiều các máy chủ LDAP (cả phiên bản thương mại và
mã nguồn mỡ ) Mặc dù được sử dụng thường xuyên, nó
vẫn không chấp nhận quá trình mở rộng LDAP với
StartTLS
SSL sử dụng một lớp chương trình nằm giữa các lớp của
Internet Hypertext Transfer Protocol (HTTP) và
Transport Control Protocol (TCP) Dữ liệu được chuyển
từ trình duyệt web vào trang web ở định dạng đã được
mã hóa Điều này đảm bảo rằng thông tin cá nhân của
người sử dụng không được chuyển giao trong định dạng
có thể đọc được cho bất
cứ ai để nắm bắt và đọc khi nó truyền trên Internet
LDAP với TLS
RFC 2830 đưa ra một phương thức mở rộng đối với LDAPv 3 cho việc xử lý TLS qua tiêu chuẩn tcp/389
Phương thức này được biết đến như một StartTLS, giúp cho máy chủ có thể hỗ trợ các việc mã hóa và giải mã các phiên giao dịch trên cùng một cổng
Khi máy chủ và máy khách giao tiếp, TLS đảm bảo rằng không có bên thứ ba có thể nghe trộm hoặc giả mạo tin nhắn bất kỳ
TLS cho phép các máy chủ và khách để xác thực lẫn nhau và để thương lượng một thuật toán mã hóa và khóa mã hóa trược khi dữ liệu được trao đổi
TLS Là sự kế thừa của Secure Sockets Layer (SSL) Bằng cách này SSL đã phát
triể
n thàn
h cá
c gia
o thứ
c TLS
Trang 28 1.1 Hệ thống mạng của doanh nghiệp
1.1.1 Nhu cầu sử dụng LDAP
Hiện nay, để xây dựng các hệ thống lớn, điều tối quan trọng là
phải làm cách nào để có thể tích hợp dữ liệu để từ đó có thể dùng
chung giữa các hệ thống khác nhau Trong đó, tích hợp tài khoản của
người sử dụng là vấn đề cần thiết nhất trong những cái "tối quan
Trước đây NIS (Network Information Services) là một giải
pháp được nhiều người sử dụng, NIS là một giao thức dựa trên RPC
và tương tự như NFS Tuy nhiên NIS lại tỏ ra không thực sự ổn định
và LDAP xuất hiện như một sự thay thế phù hợp
1.1.2 Hướng phát triển.
Với quy mô ngày càng mở rộng, thì việc đòi hỏi cần phải có
một hệ thống đầy đủ với những dịch vụ cần thiết như Mail, File
server, Web, FTP, Firewall, DNS là không thể thiếu, nhưng ban giám
đốc cũng đề ra hướng khi thực hiện dự án, vừa đảm bảo hệ thống ổn
định chạy tốt, không vi phạm bản quyền nhưng tiết kiệm nhất
Tất cả những yêu cầu trên thì việc triển khai hệ thống mạng
bằng HĐH Linux là tất yếu Với OpenLDAP là trung tâm của hệ
thống mạng, cung cấp chứng thực cho các dịch vụ như mail Zimbra,
Squid proxy, web server (httpd), ftp server, file server (samba)
1.2 Yêu cầu về version.
Apache
httpd-2.2.3-63.el5.centos.1.i3863
Samba
samba-common-3.0.33-3.39.el5_84
Bind
bind.i386 30:9.3.6-20.P1.el55
Vsftpd
vsftpd.i386 0:2.0.5-24.el5_8.1
Trang 29 1.3 Lập kế hoạch triển khai hệ thống OpenLDAP và các services
1.3.1 Kế hoạch triển khai OpenLDAP
Triển khai Master & Slave LDAP dự phòng
Master LDAP
Gateway192.168.19.18
Master
DNS-DHCP
IP192.168.19.20/24Gateway
Trang 30 Cài đặt chung trên server Master LDAP
Tạo File server cho phép lưu trữ Data,
1NSns.anhtam.vnXác định DNS Server cho một Zone anhtam.vn2
MXmail.anhtam.vnXác định máy chủ mail3
A192.168.19.19Phân giải thuận cho LDAP server4
A192.168.19.20Phân giải thuận cho DNS server5
A192.168.19.21Phân giải thuận cho SlaveLDAP server6
A192.168.19.22Phân giải thuận cho MAIL server7
A192.168.19.23Phân giải thuận cho Web server8
A
Web server
IP192.168.19.23/24
Web server
Trang 31 Cài đặt trong vùng DMZ, cấu hình web server chứng thực LDAP
FTP server public ra ngoài internet
Tạo 2 thư mục local và public
• Local: tạo cho mỗi user trong Group 1 thư mục với quyền full
trong thư mục của mình, các user khác cùng group chỉ được phép xem
• Public: cho phép users anonymous được xem, trong thư mục
upload cho phép mọi người được upload tài liệu lên
FTP server
IP192.168.19.24/24
FTP server
Trang 32 1.3.2.5 Mail server
Cài đặt trong vùng DMZ, cấu hình mail server chứng thực LDAP
Mail được Public ra ngoài các services sau:
Cài đặt Squid proxy tăng tốc truy cập web và kết hợp với
iptables Với 3 card mạng eth0 ( internal ), eth1 ( DMZ ), eth2
Eth0DNS192.168.19.20
Trang 33 Mục tiêu demo : quản lý user người dùng xây dưng
hệ thông ldap server với mục đich là tạo tài khoản người
dùng, cho phép user truy cập vào hệ thống mạng
1.1 Triển khai hạ tầng
Sơ đồ triển khai
hệ thống mạng cho tất cả các dịch vụ chạy trên nền tảng HĐH CentOS 5.8
Sơ đồ triển khai
Có 7 server sẽ được triển khai
1) Master LDAP – Samba PDC
NAT Inbount
Source Port Destination Services
NAT
Inbount
Trang 34 Khi có những thay đổi trên Master LDAP thì nó sẽ đồng bộ (replication) cho Slave LDAP (one way), còn khi thay đổi trên slave LDAP thì không được cập nhật qua Master LDAP.
Trang 35 .1.1.1 Master LDAP
Cài đặt online: yum –y install openldap-servers openldap-clients
Bước 1 : Cấu hình file hosts vi /etc/hosts
Trang 37 Dòng 87 – 89: Nhập suffix và rootdn
Dòng 96: Copy LDAP admin password đã được mã hóa vào dòng rootpw
Dòng 104 – 106: Cấu hình replication database tới Slave LDAP
4
Copy
và
sửa
file
DB_CONFIG.example
thành
DB_CONF
Trang 38IG như sau:
#cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
Trang 39 Dùng lệnh ldapadd để add nội dung file base.ldif vào suffix.
#ldapadd -x -W -D "cn=Manager,dc=anhtam,dc=vn" –f base.ldif
Password: (nhập password LDAP admin root)
Trang 40dung sau để di trú groups local có sẵn qua LDAP.
#Enter LDAP Password: (nhập password LDAP admin root)
Bước 8 : Kiểm tra
Lệnh xem tất cả object trong LDAP
#ldapsearch -x -b 'dc=anhtam,dc=vn' '(objectclass=*)'
Nơi lưu trữ Database của LDAP