(+84) 463.28.7979

Chứng nhận client Linux với Active Directory


Đảng Cộng hoà và Đảng Dân chủ. Kem đánh răng và nước cam ép. Linux và Windows. Một số thứ không thể hòa trộn với nhau đúng không?

Mọi cửa hàng IT tôi từng đến đều chia thành 2 nhóm: nhóm Linux và nhóm Windows. Họ không thật sự đấu tranh với nhau, nhưng chắc chắn là không hợp tác cùng nhau. Thực tế, chúng ta còn tiến xa hơn khi kẻ một vạch vàng trên sàn nhà và đảm bảo hoàn toàn là không có sự thân thích không phù hợp giữa hai nhớm này.

Tôi thuộc nhóm Windows, và cũng thích trêu chọc các đồng nghiệp Linux của tôi, nhưng chúng tôi đều có chung mục đích khi cung cấp các dịch vụ IT hiệu quả cao và chi phí thấp cho tổ chức.

Một cách chúng tôi có thể làm điều này là chia sẻ cấu trúc phần mềm lõi như Active Directory. Tất cả các tổ chức IT đã giải quyết về Active Directory để cung cấp các dịch vụ chứng nhận cho desktop Windows và các server. Thay vì duy trì cấu trúc chứng nhận tách biệt cho môi trường Linux (cùng với một set tách biệt tên người dùng và password), sẽ tốt hơn nếu các máy tính Linux có thể dùng chung Active Directory đúng không? Hẳn là vậy, và tôi sẽ hướng dẫn cho các bạn về điều này trong bài.

Chứng nhận Windows

Windows đã được chuyển giao với một chứng nhận mạng được tích hợp và hệ thống sign-on đơn lẻ. Trước Windows 2000, Windows NT domain controllers (DCs) cung cấp các dịch vụ chứng nhận cho các client Windows sử dụng giao thức NT LAN Manager (NTLM). Mặc dù NTLM không bảo mật như mọi người nghĩ lúc đầu, nhưng nó cũng rất hữu ích vì gần như giải quyết được vấn đề về nhu cầu duy trì các tài khoản người dùng sao chép trên nhiều server trong mạng.

Bắt đầu với Windows 2000, Microsoft đã di chuyển từ NTLM sang Active Directory và các dịch vụ tích hợp chứng nhận Kerberos. Kerberos được xem là bảo mật hơn NTLM. Và Kerberos là một chuẩn công nghiệp đã được các hệ thống Linux và UNIX sử dụng, mở cửa để tích hợp những nền tảng này với Windows

Chứng nhận Linux

Ban đầu, Linux (và các công cụ GUI và các thư viện chạy trên nó) không được xây dựng với một cấu trúc chứng nhận. Và kết quả là các nhà phát triển ứng dụng Linux nói chung phải tạo giản đồ chứng nhận cho riêng họ. Họ thực hiện điều này bằng cách hoặc là tìm tên và password trong /etc/passwd (file text truyền thống chứa credential người dùng) và cung cấp một cấu trúc hoàn toàn khác biệt (và tách biệt)

Kết quả là sự dư thừa các cấu trúc chứng nhận không thể được kiểm soát. Năm 1995, Sun đề xuất một cấu trúc gọi là Pluggable Authentication Modules (PAM). PAM cung cấp một set thông thường các chứng nhận API mà tất cả các nhà phát triển ứng dụng đều sử dụng, cùng với chương trình phụ trợ được quản trị viên cấu hình cho phép nhiều giản đồ chứng nhận có thể cắm nối vào. Sử dụng PAM APIs để chứng nhận và Name Server Switch (NSS) APIs để tìm các thông tin người dùng, các nhà phát triển ứng dụng Linux sẽ viết cần ít code hơn, và các quản trị viên Linux có thể có nơi để cấu hình và quản lý quá trình chứng nhận.

Phần lớn các phân bổ Linux đi cùng một số module chứng nhận PAM, bao gồm các module hỗ trợ chứng nhận cho một thư mục LDAP và chứng nhận sử dụng Kerberos. Bạn có thể sử dụng những module này để chứng nhận cho Active Directory, nhưng có những hạn chế lớn, mà tôi sẽ nói ở sau.

Samba và Winbind

Samba là một dự án mã nguồn mở mục đích là cung cấp sự tích hợp giữa môi trường Windows và Linux. Samba chứ các thành phần cung cấp cho các máy Linux được truy cập đến file Windows và các dịch vụ in ấn cũng như cung cấp cho các dịch vụ dựa trên Linux mô phỏng Windows NT 4.0 DCs. Sử dụng các thành phần client Samba, các máy Linux có thể tận dụng các dịch vụ chứng nhận Windows được Windows NT và Active Directory DCs cung cấp.

Phần đặc biệt của Samba thu hút chúng ta nhất là dự án này được gọi là Winbind. Winbind là một deamon (dịch vụ trong cách nói Windows) chạy trên các client Samba và đóng vai trò là một proxy để giao tiếp giữa PAM và NSS đang chạy trên máy Linux và Active Directory đang chạy trên một DC. Đặc biệt, Winbind sử dụng Kerberos để chứng nhận với Active Directory và LDAP để tìm thông tin người dùng và nhóm. Winbind cũng cung cấp thêm các dịch vụ như khả năng định vị các DC sử dụng thuật toán tương tự như DCLOCATOR trong Active Directory và khả năng reset lại password Active Directory bằng cách giao tiếp với một DC sử dụng RPC.

Winbind giải quyết một số vấn đề chỉ đơn giản bằng cách sử dụng Kerberos mà PAM không dùng. Cụ thể, thay vì hard-coding một DC để chứng nhận cách mà module PAM làm việc, Winbind chọn một DC bằng cách tìm các record DNS locator tương tự cách mà module Microsoft DC LOCATOR làm việc

Ba chiến lược chứng nhận

Với sự sẵn có của LDAP, Kerberos, và Winbind trên các máy Linux, có ba chiến lược thực thi khác nhau mà chúng ta có thể triển khai để cho phép máy Linux của chúng ta sử dụng Active Directory để chứng nhận

Sử dụng LDAP Authentication: cách dễ dàng nhưng ít hài lòng nhất sử dụng Active Directory cho việc chứng nhận là cấu hình PAM để dùng chứng nhận LDAP, như hình 1. Mặc dù Active Directory là một dịch vụ LDAPv3, các client Windows sử dụng Kerberos (vẫn có hạn chế ở NTLM) chứ không phải là LDAP, cho mục đích chứng nhận
Chứng nhận LDAP (còn gọi là binding LDAP) để lộ tên người dùng và password trong một text rõ ràng qua khắp mạng. Đây là vô cùng mất an toàn và không thể chấp nhận được cho bất kể việc gì.

Authenticate-Linux-Windows-1

Hình 1 Chứng nhận Active Directory sử dụng LDAP

Một cách để giảm nhẹ nguy cơ để lộ chứng thư rõ ràng như vậy là mã hoá kênh giao tiếp client-Active Directory sử dụng những thứ như SLL. Mặc dù điều này là có thể thực hiện được, nó cũng gây cản trở cho việc quản lý các chứng nhận SSL trên cả DC và máy Linux. Ngoài ra, sử dụng module PAM LDAP không hỗ trợ tahy đổi reset hay gia hạn password.

Sử dụng LDAP and Kerberos: Một chiến lược khác để tăng cấp Active Directory cho chứng nhận Linux là cấu hình PAM sử dụng chứng nhận Kerberos cho NSS để sử dụng LDAP tìm thông tin người dùng và nhóm, như hình 3. Giản đồ này có ưu điểm là bảo mật hơn, và nó tăng cấp các khả năng “in-the-box” của Linux. Nhưng nó không tận dụng ưu điểm của các record DNS Service Location (SRV) mà Active Directory DCs publish, nên bạn buột phải chọn một set cụ thể của các DC để chứng nhận. Nó cũng không cung cấp một cách trực giác để quản lý các password Active Directory đang hết hạn, hay, mãi đến gần đây, là để tìm kiếm tư cách thành viên các chính xác các nhóm

Authenticate-Linux-Windows-2

Hình 2 Chứng nhận đến Active Directory sử dụng LDAP và Kerberos

Pages: 1 2 3 4

Leave a Reply

Your email address will not be published. Required fields are marked *