Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Cách vô hiệu hóa xác thực NTLM trong miền Windows?

NTLM (NT LAN Manager) đã được sử dụng làm giao thức xác thực cơ bản của Microsoft trong khá lâu: kể từ Windows NT. Mặc dù Microsoft đã giới thiệu giao thức xác thực Kerberos an toàn hơn trong Windows 2000, NTLM (chung là NTLMv2) vẫn được sử dụng rộng rãi để xác thực trên mạng miền Windows. Trong bài viết này, chúng ta sẽ xem xét cách vô hiệu hóa giao thức NTLMv1 và NTLMv2 và bắt đầu sử dụng Kerberos trong miền Active Directory của bạn.

Các vấn đề chính của NTLMv1:

  • mã hóa yếu;
  • lưu trữ hash mật khẩu trong bộ nhớ dịch vụ LSA có thể được trích xuất bằng các công cụ khác nhau (như mimikatz) và sau đó hash có thể được sử dụng cho các cuộc tấn công tiếp theo;
  • sự vắng mặt của xác thực tương hỗ giữa máy chủ và client dẫn đến tấn công chặn dữ liệu và truy cập trái phép vào tài nguyên mạng (một số công cụ như Responder có thể bắt dữ liệu NTLM được gửi qua mạng và sử dụng chúng để truy cập tài nguyên mạng);
  • và các lỗ hổng khác.

Một số trong số chúng đã được khắc phục trong phiên bản tiếp theo NTLMv2 sử dụng thuật toán mã hóa an toàn hơn và cho phép ngăn chặn các cuộc tấn công NTLM phổ biến. NTLMv1 và xác thực LM bị vô hiệu hóa theo mặc định kể từ Windows 7 / Windows Server 2008 R2.

Cấu hình GPO để buộc sử dụng NTLMv2

Nếu bạn đã nghĩ đến việc ngừng sử dụng NTLM trong miền của mình, trước hết, bạn phải đảm bảo rằng bạn không sử dụng phiên bản dễ bị tổn thương hơn – NTLMv1. Mạng của bạn có thể có một số thiết bị kế thừa hoặc dịch vụ vẫn đang sử dụng xác thực NTLMv1 thay vì NTLMv2 (hoặc Kerberos). Vì vậy, trước khi vô hiệu hóa hoàn toàn, hãy đọc phần kiểm tra sự kiện xác thực NTLM trong bài viết này.

Các sản phẩm mã nguồn mở nhỏ, mẫu cũ của các bộ quét mạng khác nhau (lưu quét vào thư mục chia sẻ mạng), một số thiết bị NAS và phần cứng, phần mềm và hệ điều hành cũ khác có thể gặp vấn đề xác thực khi vô hiệu hóa NTLMv1.

Trước hết, quản trị viên miền cần đảm bảo rằng giao thức NTLM và LM bị cấm sử dụng để xác thực trong miền, vì trong một số trường hợp kẻ tấn công có thể sử dụng yêu cầu đặc biệt để nhận phản hồi cho yêu cầu NTLM/LM.

Bạn có thể đặt loại xác thực ưu tiên bằng chính sách miền (hoặc cục bộ). Mở Group Policy Management Editor (gpmc.msc) và chỉnh sửa Default Domain Policy. Đi tới phần GPO Computer Configurations -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options và tìm chính sách Network Security: LAN Manager authentication level.

Có 6 tùy chọn trong cài đặt chính sách:

  1. Send LM & NTLM responses;
  2. Send LM & NTLM responses – use NTLMv2 session security if negotiated;
  3. Send NTLM response only;
  4. Send NTLMv2 response only;
  5. Send NTLMv2 response only. Refuse LM;
  6. Send NTLMv2 response only. Refuse LM& NTLM.

Các chính sách sử dụng xác thực NTLM được đưa ra theo thứ tự cải thiện bảo mật. Mặc định, Windows 7 và OS mới hơn sử dụng tùy chọn Send NTLMv2 response only. Nếu tùy chọn này được bật, máy tính client sử dụng xác thực NTLMv2, nhưng domain controller AD chấp nhận yêu cầu LM, NTLM và NTLMv2.

NTLMv2 có thể được sử dụng nếu giao thức Kerberos không hoạt động, cho một số thao tác (ví dụ, khi quản lý nhóm và tài khoản cục bộ trên máy tính tham gia miền) hoặc trong workgroup.

Bạn có thể thay đổi giá trị chính sách thành tùy chọn an toàn nhất 6: “Send NTLMv2 response only. Refuse LM & NTLM”. Nếu bạn cấu hình cài đặt này trên domain controller, chúng sẽ từ chối tất cả yêu cầu LM và NTLMv1.

Bạn cũng có thể vô hiệu hóa NTLMv1 thông qua registry. Để làm điều đó, hãy tạo tham số DWORD với tên LmCompatibilityLevel và giá trị 0-5 trong khóa registry HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa. Giá trị 5 tương ứng với tùy chọn chính sách “Send NTLMv2 response only. Refuse LM NTLM”.

Đảm bảo rằng chính sách Network security: Do not store LAN Manager hash value on next password change được bật trong cùng phần GPO. Nó được bật theo mặc định kể từ Windows Vista / Windows Server 2008 và ngăn chặn tạo hash LM.

Đừng quên áp dụng chính sách này cho domain controller của bạn.

Nếu bạn đã đảm bảo rằng bạn không sử dụng NTLMv1, bạn có thể tiến xa hơn và thử vô hiệu hóa NTLMv2. NTLMv2 là giao thức xác thực an toàn hơn, nhưng nó kém xa Kerberos về mặt bảo mật (mặc dù có ít lỗ hổng hơn trong NTLMv2 so với NTLMv1, nhưng vẫn có cơ hội bắt và tái sử dụng dữ liệu, cũng như nó không hỗ trợ xác thực tương hỗ).

Rủi ro chính của việc vô hiệu hóa NTLM là việc sử dụng tiềm ẩn của các ứng dụng kế thừa hoặc được cấu hình không đúng vẫn có thể sử dụng xác thực NTLM. Trong trường hợp này, bạn sẽ phải cập nhật hoặc cấu hình chúng theo cách đặc biệt để chuyển sang Kerberos.

Cách bật ghi nhật ký kiểm tra xác thực NTLM?

Trước khi bạn có thể vô hiệu hóa hoàn toàn NTLM trong miền của mình và chuyển sang Kerberos, hãy đảm bảo rằng không còn ứng dụng nào trong miền yêu cầu và sử dụng xác thực NTLM.

Để theo dõi tài khoản hoặc ứng dụng đang sử dụng xác thực NTLM, bạn có thể bật chính sách ghi nhật ký kiểm tra trên tất cả máy tính bằng GPO. Trong phần Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options, tìm và bật chính sách Network Security: Restrict NTLM: Audit NTLM authentication in this domain và đặt giá trị của nó thành Enable all.

Tương tự, bật chính sách Network Security: Restrict NTLM: Audit Incoming NTLM Traffic và đặt giá trị của nó thành Enable auditing for domain accounts.

Sau khi bật các chính sách này, các sự kiện sử dụng xác thực NTLM xuất hiện trong phần Application and Services Logs-> Microsoft -> Windows -> NTLM của Event Viewer.

Bạn có thể phân tích sự kiện trên từng máy chủ hoặc thu thập chúng vào bộ thu thập nhật ký sự kiện Windows trung tâm.

Bạn cần tìm sự kiện từ nguồn Microsoft-Windows-Security-Auditing với Event ID 4624 – “An Account was successfully logged on”. Vui lòng lưu ý thông tin trong phần “Detailed Authentication Information”. Nếu có NTLM trong giá trị Authentication Package, thì giao thức NTLM đã được sử dụng để xác thực người dùng này.

Nhìn vào giá trị Package Name (NTLM only). Dòng này cho thấy giao thức nào (LM, NTLMv1 hoặc NTLMv2) đã được sử dụng để xác thực. Do đó, bạn phải phát hiện tất cả máy chủ/ứng dụng đang sử dụng giao thức kế thừa.

Ví dụ, để tìm tất cả sự kiện xác thực NTLMv1 trên tất cả domain controller, bạn có thể sử dụng script PowerShell sau:

$ADDCs = Get-ADDomainController -filter
$Now = Get-Date
$Yesterday = $Now.AddDays(-1)
$NewOutputFile = "c:\Events\$($Yesterday.ToString('yyyyddMM'))_AD_NTLMv1_events.log"
function GetEvents($DC){
Write-Host "Searching log on " $DC.HostName
$Events = Get-EventLog "Security" -After $Yesterday.Date -Before $Now.Date -ComputerName $DC.HostName -Message "*V1*" -instanceid 4624
foreach($Event in $Events){
Write-Host $DC.HostName $Event.EventID $Event.TimeGenerated
Out-File -FilePath $NewOutputFile -InputObject "$($Event.EventID), $($Event.MachineName), $($Event.TimeGenerated), $($Event.ReplacementStrings),($Event.message)" -Append
}
}
foreach($DC in $ADDCs){GetEvents($DC)}

Sau khi bạn đã tìm thấy người dùng và ứng dụng đang sử dụng NTLM trong miền của mình, hãy thử chuyển chúng sang sử dụng Kerberos (có thể sử dụng SPN). Một số ứng dụng yêu cầu được cấu hình lại nhẹ để sử dụng xác thực Kerberos (xem bài viết Xác thực Kerberos trong IIS, Cách cấu hình các trình duyệt khác nhau cho xác thực Kerberos?). Từ kinh nghiệm của riêng tôi, tôi thấy rằng ngay cả các sản phẩm thương mại lớn vẫn đang sử dụng NTLM thay vì Kerberos, một số sản phẩm yêu cầu cập nhật hoặc thay đổi cấu hình. Tất cả là về việc phát hiện những ứng dụng nào đang sử dụng xác thực NTLM, và bây giờ bạn có phương pháp liên quan để xác định phần mềm và thiết bị này.

Bạn cần sử dụng tên DNS của máy chủ thay vì địa chỉ IP của nó để xác thực Kerberos. Nếu bạn chỉ định địa chỉ IP khi kết nối với tài nguyên của mình, xác thực NTLM sẽ được sử dụng.

Những ứng dụng không thể sử dụng Kerberos có thể được thêm vào ngoại lệ. Điều này sẽ cho phép chúng sử dụng xác thực NTLM, ngay cả khi nó bị vô hiệu hóa ở cấp độ miền. Để làm điều đó, chính sách Network security: Restrict NTLM: Add server exceptions for NTLM authentication in this domain được sử dụng. Thêm tên các máy chủ, nơi xác thực NTLM có thể được sử dụng, vào danh sách ngoại lệ cũng như. Tốt nhất, danh sách ngoại lệ này nên trống. Bạn có thể sử dụng ký tự đại diện *.

Cách hạn chế hoàn toàn NTLM trong miền Active Directory?

Để kiểm tra cách xác thực không có NTLM sẽ hoạt động cho các ứng dụng khác nhau trong miền của bạn, bạn có thể thêm tài khoản người dùng vào nhóm miền “Protected Users” (có sẵn kể từ Windows Server 2012 R2). Thành viên của nhóm bảo mật này chỉ có thể xác thực bằng Kerberos (NTLM, Digest Authentication hoặc CredSSP không được phép). Do đó, bạn có thể kiểm tra xem xác thực Kerberos người dùng có hoạt động chính xác trong các ứng dụng khác nhau hay không.

Sau đó bạn có thể vô hiệu hóa hoàn toàn NTLM trên miền Active Directory bằng chính sách Network Security: Restrict NTLM: NTLM authentication in this domain .

Chính sách có 5 tùy chọn:

  • Disable: chính sách bị vô hiệu hóa (xác thực NTLM được phép trong miền);
  • Deny for domain accounts to domain servers: domain controller từ chối thử xác thực NTLM cho tất cả máy chủ dưới tài khoản miền, và lỗi “NTLM is blocked” xuất hiện;
  • Deny for domain accounts: domain controller ngăn chặn thử xác thực NTLM cho tất cả tài khoản miền, và lỗi “NTLM is blocked” xuất hiện;
  • Deny for domain servers: yêu cầu xác thực NTLM bị cấm cho tất cả máy chủ trừ khi tên máy chủ nằm trong danh sách ngoại lệ trong chính sách “Network security: Restrict NTLM: Add server exceptions for NTLM authentication in this domain”;
  • Deny all: domain controller chặn tất cả yêu cầu NTLM cho tất cả máy chủ và tài khoản miền.

Để cải thiện thêm bảo mật Active Directory, tôi khuyên bạn nên đọc các bài viết này: Giảm thiểu tấn công kiểu Mimikatz, Bảo mật tài khoản quản trị viên đặc quyền, Cách vô hiệu hóa LLMNR và NetBIOS over TCP/IP.