Khắc phục sự cố các vấn đề đối với Kerberos trong SharePoint – Phần 1

Jesper M. Christensen

Quản trị mạng - Trong phần này chúng tôi sẽ tạo một môi trường test để thể hiện thông báo lỗi nào đến từ các vấn đề cấu hình nào.

Giới thiệu

Nếu bạn đã chưa đọc bài viết mang tiêu đề Kerberos trong môi trường Sharepoint, đây là bài viết nói về quá trình cấu hình và đăng nhập của Kerberos, xin hãy đọc qua bài viết này để hiểu kỹ hơn về những gì sẽ diễn ra khi truy cập vào website và các vấn đề cấu hình cơ bản.

Quả thực rất khó khăn trong việc chỉ ra một cách chính xác nghĩa của các thông báo lỗi xuất hiện và các bạn có thể tốn rất nhiều thời gian trong việc tìm kiếm sự trợ giúp trên internet. Chính vì vậy trong phần này chúng tôi sẽ tạo một môi trường test để giúp cải thiện các công việc đó cho bạn.

Đây không phải là hướng dẫn có thể thể hiện được tất cả các lỗi có liên quan đến Kerberos, mà chúng tôi tạo một môi trường thử nghiệm và tạo các vấn đề khác nhau nhằm thể hiện lỗi nào xuất phát từ vấn đề nào. Bên cạnh đó các thông báo lỗi trong bản ghi sự kiện của máy chủ dường như khá rõ ràng nhưng đôi khi vẫn cần có những đầu tư lớn hơn về chúng.

Cài đặt

Demo-lab có các máy tính sau:
DC1 Domain Controller (KDC)
SQL1 SQL Server 2008
WSS1 Windows Sharepoint Services 3.0 SP1 (+nâng cấp sơ sở hạ tầng)
PC1 Windows Vista


Hình 1

Service Principal Names (SPN) và sự ủy nhiệm được cấu hình như bản dưới đây.


Hình 2

Toolbox nằm ở đâu?

Khi khắc phục sự cố các lỗi, chúng ta phải có một tập các công cụ. Trong loạt bài này chúng tôi sẽ chỉ sử dụng một số trong các công cụ đó, tuy nhiên để thuận tiện cho các bạn, ở đây chúng tôi có tiến cử một số công cụ khắc phục sự cố.

  • Sự kiện đăng nhập máy chủ và máy khách Windows
  • Các file bản ghi IIS trên máy chủ frontend, SQL servers và Domain Controllers
  • Các file bản ghi SharePoint
  • Các công cụ dòng lệnh
    - setspn (của bộ công cụ dành cho Windows Server, Windows Server 2008 cũng có bộ công cụ mặc định này)
    - ldifde
    - KList
    (của bộ công cụ dành cho Windows Server, Windows Server 2008 cũng có mặc định)
  • Các công cụ GUI
    - KerbTray (của Windows 200 Server, làm việc với tất cả các phiên bản của Windows)
    - ADSIEdit
    - Network Monitor
    -
    Bộ phân tích dữ liệu mạng WireShark

Một số lệnh hữu dụng để sử dụng khi test sự rõ ràng của các lệnh:

  • DNS cache: Ipconfig /flushdns
  • NetBIOS cache you type in: Nbtstat –R
  • Kerberos tickets: Klist purge

Khi phân tích thủ tục đăng nhập trong Kerberos bạn cần phải thực hiện theo các hành động có trong bảng sau.


Hình 3

Các vấn đề cần nghiên cứu tỉ mỉ

Có một số vấn đề hay xảy ra trên các máy chủ và đây là danh sách các vấn đề trong số sẽ được giới thiệu trong bài:

  • Ngày giờ
  • Tài khoản ứng dụng
  • Cấu hình SPN

Trong phần này chúng tôi sẽ giới thiệu những gì có thể thấy trong các file bản ghi sự kiện của Windows và bộ phân tích dữ liệu mạng cho mỗi một vấn đề chúng ta tạo ra.

Ngày giờ

Ngày giờ là một phần rất quan trọng trong cơ chế thẩm định Kerberos vì các thẻ được sử dụng bởi Key Distribution Center (KDC) chỉ hợp lệ trong khoảng một thời gian hạn chế nào đó. Nếu máy khách và máy chủ không được đồng bộ, sự hợp lệ hóa các thẻ sẽ thất bại vì đây là một phần của cấu trúc bảo mật. Chính vì lẽ đó việc kiểm tra tất cả các máy chủ và máy khách có đúng thời gian vùng và các thiết lập vùng là một việc quan trọng. Trong ví dụ này, chúng tôi sẽ giới thiệu đến các vấn đề về ngày giờ.

Sự khác nhau về thời gian trên máy chủ SharePoint

Chúng ta cấu hình SharePoint server WSS1 để có sự khách biệt sau 24h và các lỗi xuất hiện trong bản ghi sự kiện Windows System của

Warning, W32Time, Event ID: 52, Category: None
The time service has set the time with offset -86391 seconds

Thông thường các máy chủ sẽ đồng bộ thời gian một cách tự động và các lỗi này sẽ không gặp phải. Đó chỉ là trường hợp trong thí nghiệm của chúng tôi vì vậy không cần tới sự can thiệp của các quản trị viên.

Tuy nhiên đôi khi các bộ điều khiển miền có thể có các vấn đề về đồng bộ. Chúng tôi đã test thử bằng cách thay đổi thời gian trên bộ điều khiển miền và Kerberos thông báo LSASRV event id 40960 trong bản ghi sự kiện hệ thống.

Warning, LSASRV, Event ID: 40960, Category: SPNEGO (Negotiator)
The security System detected an authentication error for the server MSSQLSvc/sql1.domain.local:1433. The failure code from authentication protocol Kerberos was “The time at the Primary Domain Controller is different than the time at the Backup Domain Controller or member server by too large an amount. (0xc0000133)”.

Các lỗi về thời gian khá dễ dàng và sửa lỗi – chỉ cần điều chỉnh thời gian hoặc mở các cổng cần thiết trong tường lửa nếu các gói đồng bộ về thời gian bị lỗi. Trong các môi trường ảo, các vấn đề về đồng bộ thời gian có thể gây ra các vấn đề nghiêm trọng hơn, khi xung nhịp phần cứng ảo của máy ảo có thể khác với các máy chủ ảo khác.

Các tài khoản ứng dụng

Các website IIS cho các ứng dụng web sẽ tự động được cấu hình bởi SharePoint và khi tạo chúng bạn cần phải chọn hoặc bổ sung thêm Application Pools. Ứng dụng web sẽ chạy trong khối này và với sự nhận dạng đã được cấu hình của nó (người dùng).

Tự thay đổi tài khoản ứng dụng

Các website chạy trong các khối ứng dụng IIS và không có nghĩa là phải tự được cấu hình. Nếu một quản trị viên thay đổi sự nhận dạng của khối ứng dụng thành một tài khoản sai thì điều này có thể làm cho website rơi vào tình trạng unavailable. Khi đó cần phải điều chỉnh những gì người dùng thay đổi.

Chúng tôi cố gắng thay đổi tài khoản khối ứng dụng thành domain\spwrongacct cho http://intranet.domain.local.


Hình 4

Thao tác này sẽ gây ra các lỗi trong bản ghi sự kiện Windows System trên máy chủ SharePoint.

Warning, W3SVC, Event ID: 1012, Category: None
The identity of application pool, 'SharePoint - intranet.domain.local - 80' is invalid. If it remains invalid when the first request for the application pool is processed, the application pool will be disabled. The data field contains the error number.

Warning, W3SVC, Event ID: 1057, Category: None
The identity of application pool 'SharePoint - intranet.domain.local – 80' is invalid, so the World Wide Web Publishing Service cannot create a worker process to serve the application pool. Therefore, the application pool has been disabled.

Error, W3SVC, Event ID: 1059
A failure was encountered while launching the process serving application pool 'SharePoint - intranet.hendriksen.dk80'. The application pool has been disabled.

và lỗi trên máy tính khách đang truy cập website sẽ là: Service Unavailable

Để sửa lỗi trên, thay đổi tài khoản thành một tài khoản được cấu hình trong cấu hình SharePoint và bắt đầu khối ứng dụng lại lần nữa từ giao diện quản lý IIS. Nếu bạn cần thay đổi user/password trong cấu hình SharePoint hãy thực hiện theo các bước giới thiệu trong bài báo của Microsoft.

Cấu hình Service Principle Name (SPN)

Các cấu hình của SPN cũng rất quan trọng để thẩm định Kerberos làm việc. Trước tiên, chúng tôi tóm tắt cách chúng được sử dụng như thế nào giữa máy chủ và máy khách.

  1. Người dùng đánh một URL trong Internet Explorer (ví dụ như: http://intranet.domain.local)
  2. Trình duyệt của máy khách sẽ tạo một SPN gồm có tên của host và kiểu dịch vụ (SPN: http/intranet.domain.local – Service type: HTTP Name: intranet.domain.local)
  3. Máy khách sẽ gửi đi một yêu cầu đến KDC để lấy về một thẻ cho SPN này
  4. Máy chủ KDC sẽ mã hóa thẻ bằng khóa công của các tài khoản đã đăng ký (domain\spcontentpoolacct) và gửi thẻ này đến máy khách.
  5. Máy khách sẽ thẩm định với máy chủ SharePoint (frontend) bằng cách gửi đi một thẻ
  6. Máy chủ SharePoint sẽ giải mã thẻ bằng tài khoản ứng dụng (sự nhận dạng của nó) và kiểm tra nội dung bên trong.
  7. Người dùng được thẩm định hoặc một thông báo lỗi sẽ được gửi đến bản ghi sự kiện hay bản ghi trình duyệt máy khách.
  8. Nếu người dùng thất bại trong việc thẩm định Kerberos thì sự thẩm định NTLM sẽ được mang ra thực hiện.

Lỗi SPN cho ứng dụng web

Chúng ta sẽ thử xem những gì sẽ xảy ra nếu máy khách không thể lấy được thẻ từ KDC bằng cách remove ánh xạ SPN đến tài khoản.

Delete the wrong account: SETSPN –D HTTP/intranet.domain.local domain\spwrongpoolacct
Sau đó chúng ta truy cập vào website từ PC1, http://intranet.domain.local, và vào trang mặc đinh của website. – nhưng cách thực hiện thẩm định như thế nào?

Nếu chúng ta kiểm tra bản ghi sự kiện trên máy khách, chúng ta sẽ không thể thấy được bất cứ entry nào. Trong bản ghi sự kiện bảo mật của Windows trên máy chủ SharePoint, chúng ta thấy những thành phần dưới đây:

Audit Success, Event ID: 4624, Category: Logon

Logon process: NtLmSsp
Authentication Package: NTLM

Chính vì vậy, Kerberos đã bất bại đăng nhập và thẩm định bằng NTLM vì nó khắc phục được hiện tượng đó. Chúng ta cần nghiên cứu tỉ mỏ tại sao điều đó lại xảy ra và chúng ta có thể thêm được nhiều bản ghi Kerberos và máy khách và máy chủ hoặc sử dụng gói phân tích mạng. Hầu hết thời gian chúng tôi sử dụng gói phân tích mạng có tên gọi Wireshark và bắ đầu bằng cách cài đặt và chạy trên máy khách. Chúng ta sẽ nhận được đầu ra khi capture quá trình trên:


Hình 5

Khi mất SPN, Active Directory sẽ gửi một KDC_ERR_S_PRINCIPAL_UNKNOWN. Đây là thông báo nói rằng Active Directory không thể tìm thấy SPN tương xứng cho website này.

Cấu hình tài khoản lỗi trong Active Directory cho SPN

Nếu khóa giải mã không tương xứng bước 6, thì điều này có nghĩa là khóa mã hóa đến từ một tài khoản khác và cấu hình có lỗi ở đâu đó. Chúng ta hãy cấu hình SPN để sử dụng tài khoản lỗi và xem kết quả của chúng.

Delete the correct account: SETSPN –D HTTP/intranet.domain.local domain\spcontentpoolacct

Add the wrong account: SETSPN –A HTTP/intranet.domain.local domain\spwrongpoolacct

Nếu phân tích các gói dữ liệu từ máy chủ SharePoint, chúng ta sẽ thấy sự truyền thông khi chúng ta thực hiện iisreset /noforce và truy cập vào ứng dụng web.


Hình 6

Máy chủ SharePoint sẽ nhận được các thông tin Kerberos từ KDC và sử dụng nó để giải mã thẻ. Nếu không tương xứng, nó sẽ tạo một thông báo lỗi để được gửi đến máy khách.

Trong bản ghi sự kiện Windows System của máy khách, chúng ta sẽ gặp lỗi sau:

Error, Event ID: 4, Category: None
The Kerberos client received a KRB_AP_ERR_MODIFIED error from the server wss1$. The target name used was HTTP/intranet.domain.local. This indicates that the target server failed to decrypt the ticket provided by the client. This can occur when the target server principal name (SPN) is registered on an account other than the account the target service is using. Please ensure that the target SPN is registered on, and only registered on, the account used by the server. This error can also happen when the target service is using a different password for the target service account than what the Kerberos Key Distribution Center (KDC) has for the target service account. Please ensure that the service on the server and the KDC are both updated to use the current password. If the server name is not fully qualified, and the target domain (DOMAIN.LOCAL) is different from the client domain (DOMAIN.LOCAL), check if there are identically named server accounts in these two domains, or use the fully-qualified name to identify the server.

Khi máy chủ front-end cố gắng giải mã thẻ dịch vụ, khóa sẽ bị lỗi vì được mã hóa bằng khóa tài khoản SPN(domain\spcontentpoolacct) nhưng lại được giải mã bằng khóa riêng của các tài khoản khối ứng dụng (domain\spwrongacct). Lỗi KRB_AP_ERR_MODIFIED sẽ được gửi đến máy khách và xuất hiện trong bản ghi sự kiện của Windows System.

Môi trường được cấu hình lại đúng thành tài khoản domain\spcontentpoolacct:

Delete the wrong account: SETSPN –D HTTP/intranet.domain.local domain\spwrongpoolacct
Add the correct account: SETSPN –A HTTP/intranet.domain.local domain\spcontentpoolacct

Lưu ý: Lỗi KRB_AP_ERR_MODIFIED cũng bị gây ra bởi lỗi cấu hình.

Kết luận

Chúng ta đã thiết lập một môi trường test, đã tìm thấy một vài công cụ để sử dụng và gây ra các thông báo lỗi để giúp chúng ta tìm ra một số câu trả lời về date/time, các tài khoản trong các ứng dụng và cấu hình SPN.

Trong các phần tiếp theo của loạt bài này, chúng tôi sẽ giới thiệu cho các bạn một số vấn đề điển hình như:

  • Nhân bản Service Principal Names
  • Lỗi kiểu cấu hình của DNS
  • Ủy nhiệm khi được sử dụng và cách kiểm tra nó
  • Shared Service Provider (SSP)
  • Nghiên cứu thêm với bộ phân tích dữ liệu trong mạng
Thứ Năm, 15/01/2009 12:28
31 👨 2.181
0 Bình luận
Sắp xếp theo
    ❖ Kiến thức cơ bản