Xác thực mạng + thư mục nhà chuyển vùng - tôi nên xem xét sử dụng công nghệ nào?


9

Tôi đang xem xét phần mềm cung cấp cho người dùng một danh tính duy nhất trên nhiều máy tính. Nghĩa là, người dùng nên có cùng quyền trên mỗi máy tính và người dùng nên có quyền truy cập vào tất cả các tệp của mình (thư mục chính chuyển vùng) trên mỗi máy tính. Dường như có nhiều giải pháp cho ý tưởng chung này, nhưng tôi đang cố gắng xác định giải pháp tốt nhất cho mình. Dưới đây là một số chi tiết cùng với các yêu cầu:

  1. Mạng máy móc là các phiên bản Amazon EC2 chạy Ubuntu.
    • Chúng tôi truy cập vào các máy bằng SSH.
    • Một số máy trên mạng LAN này có thể có các cách sử dụng khác nhau, nhưng tôi chỉ thảo luận về các máy cho một mục đích sử dụng nhất định (chạy nền tảng đa thuê nhà).
  2. Hệ thống sẽ không nhất thiết phải có một lượng máy không đổi.
    • Chúng tôi có thể phải thay đổi vĩnh viễn hoặc tạm thời số lượng máy đang chạy. Đây là lý do tại sao tôi đang xem xét xác thực / lưu trữ tập trung.
  3. Việc thực hiện hiệu ứng này phải là một an toàn.
    • Chúng tôi không chắc chắn liệu người dùng có quyền truy cập shell trực tiếp hay không, nhưng phần mềm của họ có khả năng sẽ chạy (tất nhiên là dưới tên người dùng Linux bị hạn chế) trên các hệ thống của chúng tôi, cũng tốt như truy cập shell trực tiếp.
    • Chúng ta hãy giả sử rằng phần mềm của họ có khả năng độc hại vì mục đích bảo mật.

Tôi đã nghe nói về một số công nghệ / kết hợp để đạt được mục tiêu của mình, nhưng tôi không chắc về sự phân chia của từng công nghệ.

  • Một bài đăng ServerFault cũ hơn đã đề xuất NFS & NIS, mặc dù sự kết hợp này có vấn đề về bảo mật theo bài viết cũ này của Symantec . Bài báo đề nghị chuyển sang NIS +, nhưng, vì nó đã cũ, bài viết trên Wikipedia này đã trích dẫn các tuyên bố cho thấy xu hướng rời khỏi NIS + của Sun. Sự thay thế được đề nghị là một điều khác mà tôi đã nghe nói về ...
  • LDAP. Dường như LDAP có thể được sử dụng để lưu thông tin người dùng ở một vị trí tập trung trên mạng. NFS vẫn sẽ cần được sử dụng để đáp ứng yêu cầu 'thư mục nhà chuyển vùng', nhưng tôi thấy các tài liệu tham khảo về chúng được sử dụng cùng nhau. Vì bài viết của Symantec đã chỉ ra các vấn đề bảo mật trong cả NIS và NFS, nên có phần mềm nào để thay thế NFS hay tôi nên chú ý đến các đề xuất của bài viết đó để khóa nó? Tôi đang có xu hướng về LDAP vì một phần cơ bản khác trong kiến ​​trúc của chúng tôi, RabbitMQ, có một plugin xác thực / ủy quyền cho LDAP. RabbitMQ sẽ có thể truy cập theo cách hạn chế đối với người dùng trên hệ thống, vì vậy tôi muốn liên kết các hệ thống bảo mật với nhau nếu có thể.
  • Kerberos là một giao thức xác thực an toàn khác mà tôi đã nghe nói. Tôi đã học được một chút về nó vài năm trước trong một lớp học mật mã nhưng không nhớ nhiều về nó. Tôi đã thấy các đề xuất trực tuyến rằng nó có thể được kết hợp với LDAP theo nhiều cách. Điều này có cần thiết không? Rủi ro bảo mật của LDAP khi không có Kerberos là gì? Tôi cũng nhớ Kerberos đang được sử dụng trong một phần mềm khác do Đại học Carnegie Mellon phát triển ...
  • Hệ thống tệp Andrew, hoặc AFS. OpenAFS có sẵn để sử dụng, mặc dù thiết lập của nó có vẻ hơi phức tạp. Tại trường đại học của tôi, AFS cung cấp cả hai yêu cầu ... Tôi có thể đăng nhập vào bất kỳ máy nào và "thư mục AFS" của tôi luôn có sẵn (ít nhất là khi tôi có được mã thông báo AFS).

Cùng với những gợi ý về con đường tôi nên xem xét, có ai có hướng dẫn nào đặc biệt hữu ích không? Như văn bản in đậm đã chỉ ra, LDAP có vẻ là lựa chọn tốt nhất, nhưng tôi đặc biệt quan tâm đến các chi tiết triển khai (Keberos? NFS?) Liên quan đến bảo mật.

Câu trả lời:


7

Thông tin xác thực, ủy quyền và thư mục

Đây không phải là một câu trả lời hoàn chỉnh cho câu hỏi của bạn, nhưng tôi nghĩ nó có thể giúp giải quyết các câu hỏi của bạn về NIS so với LDAP so với Kerberos.

Bắt đầu với điều này , cung cấp một cái nhìn tổng quan tốt về sự khác biệt giữa xác thựcủy quyền , điều quan trọng cần hiểu cho loại thảo luận này.

Kerberos, như bạn nói, chỉ là một giao thức xác thực. Đưa ra một bộ thông tin đăng nhập - ví dụ: tên người dùng và mật khẩu - nó sẽ cho bạn biết liệu chúng có hợp lệ hay không. Đây là tất cả những gì nó làm.

Ngược lại, cả NIS và LDAP đều là dịch vụ thư mục. Chúng cho phép khách hàng truy vấn họ để biết thông tin về người dùng (thư mục chính của bạn là gì? ID người dùng của bạn là gì?). Cả hai có thể được sử dụng như là nguồn xác thực với các vấn đề khác nhau.

NIS không thực sự tự thực hiện bất kỳ xác thực nào cho bạn. Thay vào đó, nó hiển thị hàm băm mật khẩu cho các máy khách và hệ thống cục bộ của bạn thực hiện bước xác thực thực tế giống như cách thực hiện đối với các tài khoản cục bộ. Vấn đề ở đây là bất kỳ ai có tài khoản trên một trong các khách hàng NIS của bạn đều có thể lấy tất cả các băm mật khẩu của bạn, và sau đó thực hiện một cuộc tấn công vũ phu vào họ khi rảnh rỗi.

LDAP có phần an toàn hơn, vì bước xác thực được thực hiện trên máy chủ. Bạn phải đảm bảo rằng bạn đang mã hóa các phiên LDAP của mình bằng SSL hoặc TLS, nếu không mật khẩu sẽ bị lộ trong văn bản rõ ràng trên dây, nơi nó dễ bị đánh hơi gói.

Rất phổ biến để sử dụng Kerberos để xác thực và sau đó là NIS hoặc LDAP để ủy quyền (thường có nghĩa là "thành viên nhóm") và thông tin thư mục. Tôi sẽ lập luận rằng NIS, một khi bạn đã xóa băm mật khẩu (bằng cách chuyển xác thực của bạn sang Kerberos) không thực sự kém an toàn hơn LDAP và có lợi thế là có sẵn "ngoài hộp" trên bất kỳ bản phân phối Linux hiện đại nào.

Mặt khác, LDAP thường có khả năng mở rộng hơn, mở rộng tốt hơn nếu bạn có số lượng lớn người dùng (hoặc các đối tượng thư mục khác), cung cấp các truy vấn phong phú và thường dễ quản lý hơn. LDAP cũng được hỗ trợ tự nhiên trong nhiều ứng dụng, trong khi NIS có mối quan hệ loạn luân kỳ lạ với hệ điều hành cốt lõi có thể không mong muốn.

Nếu bạn đang xây dựng mọi thứ từ đầu, tôi sẽ đề nghị Kerberos xác thực và LDAP cho dịch vụ thư mục của bạn.

Hệ thống tập tin

NFS có một lợi thế lớn: bạn đã có nó, nó được triển khai rộng rãi và nhìn chung nó ổn định. Có hai nhược điểm chính đối với NFS:

  • Nó không mở rộng tốt cho i / o song song. Nếu bạn có một số lượng lớn máy chạy cùng hệ thống tệp, máy chủ NFS duy nhất của bạn có thể gặp khó khăn trong việc theo kịp. Đây là lý do tại sao các cụm lớn hơn thường sử dụng một hệ thống tệp cụm (như Luster, GlusterFS, GPFS, GFS, v.v.) đã được thiết kế để hỗ trợ i / o song song.

  • Nó có một mô hình bảo mật xấu. Nói chung, các quyết định bảo mật NFS hoàn toàn dựa trên ID người dùng số của bạn. Nếu bạn có quyền root trên một hệ thống có thể gắn hệ thống tệp NFS, bạn có quyền truy cập vào tất cả các tệp - bởi vì bạn luôn có thể tạo người dùng cục bộ với ID người dùng phù hợp. Điều này không hoàn toàn đúng, bởi vì cả NFSv3 và NFSv4 đều có các mức hỗ trợ khác nhau để xác thực Kerberos, nhưng tôi chưa gặp ai sử dụng điều này ... vì vậy, số dặm của bạn có thể thay đổi.

Đối với các triển khai nhỏ, hầu hết mọi người chỉ sử dụng NFS mặc dù có những hạn chế.

Có nhiều giải pháp khác - các hệ thống tập tin cụm mà tôi đã đề cập ở trên, cũng như AFS và các giải pháp khác - nhưng hầu hết các giải pháp này sẽ yêu cầu một số công việc của bạn để chúng chạy trên bất kỳ phân phối nào bạn đã chọn. Gần đây tôi đã nghe thấy những điều hay về GlusterFS, vì vậy nếu tôi đang tìm kiếm một giải pháp thay thế NFS có thể là nơi đầu tiên tôi tìm kiếm.


Cảm ơn đã làm sáng tỏ những điều đó. Tôi thực sự có một nền tảng tốt trong ủy quyền so với xác thực; Tôi chỉ không chắc về khả năng của từng phần mềm. Phần lưu trữ cũng quan trọng; Bạn có biết mô hình bảo mật của Kerberos / LDAP liên kết với NFS như thế nào không?
Brian

Tôi đã cập nhật câu trả lời với một số thông tin về NFS.
larsks

Trong trường hợp này, tôi thấy không có lý do gì để giới hạn trong một máy chủ NFS, mặc dù một máy chủ có thể là đủ và có thể thêm vào sau. help.ubuntu.com/community/AutofsLDAP
84.104

Tôi đã thử trải qua hướng dẫn AutofsLDAP đó cũng như những người khác. Nó được viết kém hoặc lỗi thời, vì kết quả của tôi khác nhau và tôi không thể tiến hành vượt quá một điểm nhất định. :(
Brian

Bạn có thể muốn mở một câu hỏi mới với các chi tiết thích hợp.
larsks

0

Đây là một câu trả lời một phần.

NIS / NIS +
Không sử dụng NIS. Sử dụng LDAP với lược đồ nis.

OpenLDAP (còn gọi là slapd trên Ubuntu)
Hãy chắc chắn thiết lập ACL và SSF (yếu tố cường độ bảo mật) phù hợp.
Rất dễ dàng để gửi mật khẩu rõ ràng nếu bạn không cẩn thận.
http://www.openldap.org/doc/

NFS
NFS không phải là một mã hóa.
Nó có thể được bọc trong ssl với một số mánh khóe.
Không có Kerberos thì dựa vào ip_addr để xác thực.
Với Kerberos, có thể sử dụng SASL để mã hóa mọi thứ.

Kerberos
Yêu cầu OpenLDAP để có xác thực thông qua SASL để xác thực LDAP. (Không khó.)
Nên sử dụng các mục DNS. (Không bắt buộc, nhưng rất hữu ích).
GSSAPI có thể được sử dụng thay cho phím ssh. (Có thể cùng tồn tại.)
Máy KDC nên tách biệt với máy khách của bạn.

OpenAFS
được mã hóa với DES. (Không được coi là an toàn.)
Yêu cầu kerberos hoặc máy chủ tự động kế thừa của riêng nó.
Có hệ thống tệp ACL riêng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.