Tại sao nên sử dụng Kerberos thay vì NTLM trong IIS?


40

Đây là điều mà tôi chưa bao giờ thực sự có thể trả lời cũng như tôi thích: lợi thế thực sự của việc sử dụng xác thực Kerberos trong IIS thay vì NTLM là gì?

Tôi đã thấy rất nhiều người thực sự đấu tranh để thiết lập nó (bao gồm cả bản thân tôi) và tôi đã không thể đưa ra một lý do chính đáng để sử dụng nó. Phải có một số lợi thế khá quan trọng, nếu không, nó sẽ không đáng để bạn phải thiết lập nó, phải không?

Câu trả lời:


66

Từ góc độ Windows chỉ:

NTLM

  • hoạt động với cả máy khách bên ngoài (không phải miền) và máy khách nội bộ
  • hoạt động với cả tài khoản miềntài khoản người dùng cục bộ trên hộp IIS
    • sử dụng tài khoản miền, chỉ máy chủ yêu cầu kết nối trực tiếp với bộ điều khiển miền (DC)
    • sử dụng tài khoản cục bộ, bạn không cần kết nối ở bất cứ đâu :)
    • bạn không cần phải đăng nhập với tư cách là người dùng được đề cập để sử dụng thông tin đăng nhập
    • Ngoài ra : không có gì lạ khi DC bị tràn ngập bởi máy chủ NTLM bận rộn (IIS, Exchange, TMG / ISA, v.v.) với khối lượng yêu cầu NTLM (để giảm thiểu : MaxConcurrentAPI, AuthPersistSingleRequest(sai) , DC nhanh hơn.) ( Tự- tiền thưởng tham khảo .)
  • yêu cầu kết nối khách hàng chỉ đến máy chủ IIS (trên cổng trang web, không có gì khác. tức là Tất cả mọi thứ xảy ra trên HTTP (hay HTTPS).)
  • có thể duyệt bất kỳ proxy nào hỗ trợ HTTP Keep-Alive s
    • bạn có thể sử dụng TLS / SSL để làm việc với những người khác
  • yêu cầu nhiều chuyến đi khứ hồi để xác thực, với các gói nhỏ
    • (mẫu nhật ký là 401.2, 401.1, 200 với tên người dùng)
  • không thể được sử dụng trong các tình huống yêu cầu xác thực hai bước
    • tức là thông tin đăng nhập của người dùng sẽ được chuyển tiếp đến một dịch vụ trên máy tính khác
  • hỗ trợ khách hàng cũ (<Win2000)
  • Dễ bị chênh lệch cấp độ LM Auth (không khớp lmcompatibilitylevel)
  • được sử dụng làm dự phòng cho gói Thương lượng nếu Curb thất bại.
    • ( Không "nếu truy cập được từ chối với Curb", Curb phải phá vỡ cho NTLM được sử dụng -. Thường nhìn này thích không nhận được một vé Nếu khách hàng nhận được một vé và nó không phải là hoàn hảo, điều đó không có nguyên nhân một dự phòng.)

Kerberos

  • chỉ hoạt động với các khách hàng hiện đang tham gia tên miền
    • yêu cầu kết nối máy khách với AD DC (tcp / udp 88) VÀ máy chủ (vé được máy khách lấy từ DC qua cổng Curb, sau đó được cung cấp cho máy chủ bằng HTTP)
  • thể có thể duyệt qua proxy, nhưng xem điểm DC ở trên: bạn vẫn cần ở trên cùng một mạng với DC hoạt động, cũng như máy chủ .

    • vì vậy về mặt lý thuyết nếu bạn có một miền trong đó các máy khách được kết nối internet trò chuyện trực tiếp với một DC được kết nối internet, thì nó hoàn toàn khả thi. Nhưng đừng làm điều đó trừ khi bạn đã biết điều đó.
    • Trong các kịch bản proxy ngược (ISA / TMG), máy chủ chuyển đổi giao thức cần phải ở trên mạng đó, tức là không phải máy khách ... nhưng sau đó máy khách không thực sự là máy thực hiện bit Kerberos (nhất thiết - nghĩ rằng hãy xác thực biểu mẫu cho Curb chuyển tiếp).
  • vé tồn tại lâu (10h) có nghĩa là giao tiếp DC ít hơn trong suốt thời gian bán vé - và nhấn mạnh: điều này có thể tiết kiệm hàng ngàn đến hàng triệu yêu cầu cho mỗi khách hàng trong suốt cuộc đời đó - ( AuthPersistNonNTLMvẫn là một điều; xác thực Kerberos PAC từng là một điều)

  • yêu cầu một chuyến đi khứ hồi duy nhất để xác thực, nhưng kích thước tải trọng xác thực tương đối lớn (thường là 6-16K) ( 401 , {(được mã hóa) kích thước mã thông báo} 200 )
  • có thể được sử dụng với ủy quyền (vui lòng, luôn bị ràng buộc ) để cho phép xác thực Windows của người dùng kết nối với dịch vụ tiếp theo
    • ví dụ: để cho phép UserAtruy cập IIS và sử dụng cùng một tài khoản người dùng khi IIS truy cập SQL Server, đây là "ủy quyền xác thực".
    • ( Bị ràng buộc trong ngữ cảnh này có nghĩa là "nhưng không phải bất cứ điều gì khác", ví dụ như Exchange hoặc hộp SQL khác)
  • hiện là gói bảo mật chính để xác thực đàm phán
    • có nghĩa là các thành viên miền Windows thích nó khi họ có thể có được nó
  • yêu cầu đăng ký SPN , có thể khó khăn. Quy tắc giúp .
  • yêu cầu sử dụng tên làm mục tiêu, không phải địa chỉ IP
  • Lý do Curb có thể thất bại:
    • sử dụng địa chỉ IP thay vì tên
    • chưa đăng ký SPN
    • SPN trùng lặp đã đăng ký
    • SPN đã đăng ký với tài khoản sai ( KRB_ERR_AP_MODIFIED)
    • không có kết nối DNS / DC của máy khách
    • cài đặt proxy máy khách / Vùng Intranet cục bộ không được sử dụng cho trang đích

Trong khi chúng tôi đang ở đó:

Căn bản

  • có thể đa hop. Nhưng làm như vậy bằng cách tiết lộ tên người dùng và mật khẩu của bạn trực tiếp đến ứng dụng web đích
    • mà sau đó có thể làm bất cứ điều gì nó muốn với họ. Bất cứ điều gì .
    • "Ồ, Quản trị viên tên miền có sử dụng ứng dụng của tôi không? Và tôi vừa đọc email của họ phải không? Sau đó đặt lại mật khẩu của họ? Awww. Đáng tiếc "
  • cần bảo mật lớp vận chuyển (ví dụ TLS / SSL) cho bất kỳ hình thức bảo mật nào.
    • và sau đó, xem vấn đề trước
  • hoạt động với mọi trình duyệt
    • (nhưng xem vấn đề đầu tiên )
  • yêu cầu một chuyến đi khứ hồi duy nhất để xác thực ( 401 , 200 )
  • có thể được sử dụng trong các kịch bản nhiều bước nhảy vì Windows có thể thực hiện đăng nhập tương tác với các thông tin cơ bản
    • Có thể cần phải LogonTypeđược cấu hình để thực hiện điều này (nghĩ rằng mặc định đã thay đổi thành Cleartext mạng từ năm 2000 đến 2003, nhưng có thể bị đánh giá sai)
    • nhưng một lần nữa , xem vấn đề đầu tiên .
    • Lấy ấn tượng rằng vấn đề đầu tiên là thực sự, thực sự quan trọng? Nó là.

Tóm lại:

Curb có thể khó cài đặt, nhưng có rất nhiều hướng dẫn ( một trong số đó ) cố gắng đơn giản hóa quy trình và các công cụ đã được cải thiện rất nhiều từ năm 2003 đến 2008 ( SetSPNcó thể tìm kiếm các bản sao, đây là vấn đề vi phạm phổ biến nhất ; sử dụngSETSPN -S bất cứ lúc nào bạn thấy hướng dẫn sử dụng -A, và cuộc sống sẽ hạnh phúc hơn).

Đoàn hạn chế là giá trị nhập học.


2
Về mặt kỹ thuật, khách hàng của Curb không cần phải tham gia vào miền / lĩnh vực họ muốn sử dụng. Miễn là họ có kết nối với DC, bạn có thể thực hiện những việc như sử dụng runas với cờ / netonly và khởi chạy một quy trình trong bối cảnh người dùng miền vẫn sẽ kéo TGT hợp lệ nếu có thể tìm thấy DC thông qua tra cứu DNS . Và ngay cả khi DNS bị lỗi, về mặt kỹ thuật bạn có thể làm việc xung quanh nó với các gợi ý đăng ký bằng cách sử dụng ksetup.exe. Bạn cũng có thể làm những điều tương tự với máy khách Linux. Rõ ràng, đây là những trường hợp cạnh mặc dù.
Ryan Bolger

10
  • Kerberos nổi tiếng là một cơ chế xác thực nhanh hơn và an toàn hơn NTLM.
  • Về mặt lịch sử, nó cũng dễ dàng kết nối thông qua các máy chủ proxy hơn NTLM, do tính chất dựa trên kết nối của NTLM.
  • Điều đó nói rằng, như bạn lưu ý, Kerberos khó khăn hơn để đứng dậy và chạy, và yêu cầu một kết nối với AD không phải lúc nào cũng thực tế.

Một cách tiếp cận khác là đặt xác thực negotiatevà sử dụng cả hai thay vì một thay vì cách khác.


9

Từ Trình xác minh ứng dụng Microsoft , phát hiện các lỗi phổ biến của nhà phát triển. Một trong những sai lầm đó là việc sử dụng NTLM :

NTLM là một giao thức xác thực lỗi thời với các lỗ hổng có khả năng ảnh hưởng đến bảo mật của các ứng dụng và hệ điều hành. Thiếu sót quan trọng nhất là thiếu xác thực máy chủ, có thể cho phép kẻ tấn công lừa người dùng kết nối với máy chủ giả mạo. Là một hệ quả của việc xác thực máy chủ bị thiếu, các ứng dụng sử dụng NTLM cũng có thể dễ bị tấn công bởi một loại tấn công được gọi là tấn công phản xạ Hồi giáo. Cái sau này cho phép kẻ tấn công chiếm quyền điều khiển cuộc trò chuyện xác thực của người dùng đến một máy chủ hợp pháp và sử dụng nó để xác thực kẻ tấn công vào máy tính của người dùng. Các lỗ hổng và cách khai thác chúng của NTLM là mục tiêu của hoạt động nghiên cứu trong cộng đồng bảo mật.

Mặc dù Kerberos đã có sẵn trong nhiều năm, nhiều ứng dụng vẫn được viết để chỉ sử dụng NTLM. Điều này không cần thiết làm giảm tính bảo mật của các ứng dụng. Tuy nhiên, Kerberos không thể thay thế NTLM trong tất cả các kịch bản - chủ yếu là những nơi mà khách hàng cần xác thực với các hệ thống không được kết nối với một miền (mạng gia đình có lẽ là phổ biến nhất trong số này). Gói bảo mật đàm phán cho phép thỏa hiệp tương thích ngược sử dụng Kerberos bất cứ khi nào có thể và chỉ hoàn nguyên về NTLM khi không có tùy chọn nào khác. Chuyển đổi mã để sử dụng Đàm phán thay vì NTLM sẽ tăng đáng kể bảo mật cho khách hàng của chúng tôi trong khi giới thiệu một vài hoặc không có tính tương thích ứng dụng. Đàm phán tự nó không phải là một viên đạn bạc - có những trường hợp kẻ tấn công có thể buộc hạ cấp xuống NTLM nhưng những điều này khó khai thác hơn đáng kể. Tuy nhiên, một cải tiến ngay lập tức là các ứng dụng được viết để sử dụng đàm phán chính xác sẽ tự động miễn nhiễm với các cuộc tấn công phản chiếu NTLM.

Bằng cách thận trọng cuối cùng đối với việc sử dụng NTLM: trong các phiên bản Windows trong tương lai, có thể vô hiệu hóa việc sử dụng NTLM tại hệ điều hành. Nếu các ứng dụng có sự phụ thuộc lớn vào NTLM, đơn giản là chúng sẽ không xác thực được khi NTLM bị tắt.


3
Trích dẫn tuyệt vời. Đánh dấu nó.
Michael-O

4

Bạn nên thêm một điểm rất quan trọng:

Kerberos đã là giao thức chuẩn và mở trong Unix hơn 20 năm trong khi NTLM là một giải pháp hoàn toàn độc quyền từ Microsoft và chỉ được biết đến với Microsoft.


Nó được biết đến bởi hầu hết tất cả các trình duyệt di động (mac và windows) và (hiện đại). Vì vậy, không chỉ là "Microsoft".
Aardvark

Không, chỉ do kỹ thuật đảo ngược. NTLM ist không mở không được công khai tài liệu từ Microsoft. Vì vậy, đây là một cơ chế bảo mật vô nghĩa.
Michael-O

Tôi không biết những gì trong đó, nhưng: msdn.microsoft.com/en-us/l
Library / cc236621.aspx

@thinkOfaNumber, nghĩa là, đã được thừa nhận, đã được phát hành từ nhiều năm trước mặc dù không có một tính năng duy nhất nào hoàn thành việc triển khai NTLM mã nguồn mở. Nghĩ tại sao không?
Michael-O

1

Kerberos là bắt buộc nếu bạn cần mạo danh người dùng để truy cập các tài nguyên không có trên máy chủ iis.

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.