NTLM (NT LAN Manager) đã được sử dụng làm giao thức xác thực cơ bản của Microsoft trong một thời gian khá dài:kể từ Windows NT. Mặc dù Microsoft đã giới thiệu một giao thức xác thực Kerberos an toàn hơn trong Windows 2000, nhưng NTLM (nói chung là NTLMv2) vẫn được sử dụng rộng rãi để xác thực trên các mạng miền Windows. Trong bài viết này, chúng tôi sẽ xem xét cách tắt các giao thức NTLMv1 và NTLMv2 và bắt đầu sử dụng Kerberos trong miền Active Directory của bạn.
NTLMv1 chính vấn đề:
- mã hóa yếu;
- lưu trữ hàm băm mật khẩu trong bộ nhớ của 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 đó hàm băm có thể được sử dụng cho các cuộc tấn công tiếp theo;
- việc không có xác thực lẫn nhau giữa máy chủ và máy khách dẫn đến các cuộc tấn công đánh 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ể thu thập 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 bảo mật khác.
Một số trong số chúng đã được sửa trong phiên bản tiếp theo NTLMv2 sử dụng các 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. Giao thức xác thực NTLMv1 và LM bị tắt theo mặc định bắt đầu từ Windows 7 / Windows Server 2008 R2.
Định cấu hình GPO để buộc 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 công hơn của nó - NTLMv1 . Mạng của bạn có thể có một số thiết bị hoặc dịch vụ kế thừa vẫn đang sử dụng xác thực NTLMv1 thay vì NTLMv2 (hoặc Kerberos). Vì vậy, trước khi tắt 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ỏ, các mẫu máy quét mạng cũ khác nhau (lưu bản quét vào thư mục mạng chia sẻ), 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 sự cố xác thực khi tắt NTLMv1.Trước hết, quản trị viên miền cần đảm bảo rằng các 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 các yêu cầu đặc biệt để nhận phản hồi cho một yêu cầu NTLM / LM.
Bạn có thể đặt loại xác thực ưu tiên bằng cách sử dụng chính sách miền (hoặc cục bộ). Mở Trình chỉnh sửa quản lý chính sách nhóm (gpmc.msc) và chỉnh sửa Chính sách miền mặc định. Đi tới phần GPO Cấu hình máy tính -> Chính sách -> Cài đặt Windows -> Cài đặt bảo mật -> Chính sách cục bộ -> Tùy chọn bảo mật và tìm chính sách Bảo mật mạng:Mức xác thực Trình quản lý mạng LAN .
Có 6 tùy chọn trong cài đặt chính sách:
- Gửi phản hồi LM &NTLM;
- Gửi phản hồi LM &NTLM - sử dụng bảo mật phiên NTLMv2 nếu được thương lượng;
- Chỉ gửi phản hồi NTLM;
- Chỉ gửi phản hồi NTLMv2;
- Chỉ gửi phản hồi NTLMv2. Từ chối LM;
- Chỉ gửi phản hồi NTLMv2. Từ chối 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 của chúng. Theo mặc định, Windows 7 và các hệ điều hành mới hơn sử dụng tùy chọn Chỉ gửi phản hồi NTLMv2 . Nếu tùy chọn này được bật, máy khách sử dụng xác thực NTLMv2, nhưng bộ điều khiển miền 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, đối với một số hoạt động (ví dụ:khi quản lý các nhóm và tài khoản cục bộ trên máy tính tham gia miền) hoặc trong các nhóm làm việc.Bạn có thể thay đổi giá trị chính sách thành tùy chọn 6 an toàn nhất:“ Chỉ gửi phản hồi NTLMv2. Từ chối LM &NTLM ”. Nếu bạn định cấu hình cài đặt này trên bộ điều khiển miền, chúng sẽ từ chối tất cả các yêu cầu LM và NTLMv1.
Bạn cũng có thể vô hiệu hóa NTLMv1 thông qua sổ đăng ký. Để thực hiện, hãy tạo một tham số DWORD với tên LmCompatibilityLevel và giá trị 0-5 trong khóa đăng ký HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa . Giá trị 5 tương ứng với tùy chọn chính sách “Chỉ gửi phản hồi NTLMv2. Từ chối LM NTLM ”.
Đảm bảo rằng Bảo mật mạng:Không lưu trữ giá trị băm của Trình quản lý mạng LAN vào lần thay đổi mật khẩu tiếp theo chính sách được bật trong cùng một phần GPO. Nó được kích hoạt theo mặc định bắt đầu với Windows Vista / Windows Server 2008 và ngăn việc tạo băm LM.
Đừng quên áp dụng chính sách này cho bộ điều khiển miền của bạn.
Nếu bạn đã chắc chắn rằng bạn không sử dụng NTLMv1, bạn có thể tiếp tục và cố gắng tắt NTLMv2. NTLMv2 là một giao thức xác thực an toàn hơn, nhưng nó thua Kerberos nhiều về mặt bảo mật (mặc dù có ít lỗ hổng trong NTLMv2 hơn trong NTLMv1, nhưng vẫn có cơ hội thu thập và sử dụng lại dữ liệu, cũng như nó không hỗ trợ xác thực lẫn nhau).
Rủi ro chính của việc vô hiệu hóa NTLM là khả năng sử dụng các ứng dụng cũ hoặc được định cấu hình không chính xác 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 định cấu hình chúng theo cách đặc biệt để chuyển sang Kerberos.
Làm cách nào để bật tính năng ghi nhật ký kiểm tra xác thực NTLM?
Trước khi bạn có thể tắt 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 các 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ả các máy tính sử dụng GPO. Trong phần Cấu hình máy tính -> Cài đặt Windows -> Cài đặt bảo mật -> Chính sách cục bộ -> Tùy chọn bảo mật, tìm và bật mục Bảo mật mạng:Hạn chế NTLM:Kiểm tra xác thực NTLM trong miền này và đặt giá trị của nó thành Bật tất cả.
Theo cách tương tự, hãy bật chính sách Bảo mật mạng:Hạn chế NTLM:Kiểm tra lưu lượng truy cập NTLM đến và đặt giá trị của nó thành Cho phép kiểm tra tài khoản miền.
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 sẽ xuất hiện trong Nhật ký ứng dụng và dịch vụ-> Microsoft -> Windows -> NTLM của Trình xem sự kiện.
Bạn có thể phân tích các 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 trung tâm của Windows.
Bạn cần tìm kiếm các sự kiện từ nguồn Microsoft-Windows-Security-Auditing với ID Sự kiện 4624 - “ Một tài khoản đã được đăng nhập thành công “. Vui lòng lưu ý thông tin trong phần “ Thông tin xác thực chi tiết " tiết diện. Nếu có NTLM trong Gói xác thực giá trị, hơn là giao thức NTLM đã được sử dụng để xác thực người dùng này.
Xem giá trị của Tên gói (chỉ NTLM) . Dòng này hiển thị, 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ả các máy chủ / ứng dụng đang sử dụng giao thức cũ.
Ví dụ:để tìm kiếm tất cả các sự kiện xác thực NTLMv1 trên tất cả các bộ điều khiển miền, bạn có thể sử dụng tập lệnh 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 họ sang sử dụng Kerberos (có thể sử dụng SPN). Một số ứng dụng yêu cầu phải được cấu hình lại một chút để sử dụng xác thực Kerberos (xem bài viết Xác thực Kerberos trong IIS, Cách định cấu hình các trình duyệt khác nhau để xác thực Kerberos?). Từ kinh nghiệm của bản thân, 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ả chỉ nhằm 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 phù hợp để 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ủ của mình 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 các trường hợp ngoại lệ. Điều này sẽ cho phép họ 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 đó, Bảo mật mạng:Hạn chế NTLM:Thêm ngoại lệ máy chủ để xác thực NTLM trong miền này chính sách được sử dụng. Thêm tên của các máy chủ có thể sử dụng xác thực NTLM vào danh sách các trường hợp ngoại lệ. 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 * .
Làm cách nào để hạn chế hoàn toàn NTLM trong miền Active Directory?
Để kiểm tra cách xác thực mà không có NTLM sẽ hoạt động như thế nào đối với 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 “Người dùng được bảo vệ” (nó có sẵn kể từ Windows Server 2012 R2). Các thành viên của nhóm bảo mật này chỉ có thể xác thực bằng cách sử dụng Kerberos (không cho phép NTLM, Digest Authentication hoặc CredSSP). Do đó, bạn có thể xác minh xem xác thực người dùng Kerberos 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ể tắt hoàn toàn NTLM trên miền Active Directory bằng cách sử dụng Bảo mật mạng:Hạn chế xác thực NTLM:NTLM trong miền này chính sách.
Chính sách có 5 lựa chọn:
- Tắt: chính sách bị vô hiệu hóa (xác thực NTLM được phép trong miền);
- Từ chối tài khoản miền với máy chủ miền: bộ điều khiển miền từ chối các nỗ lực xác thực NTLM cho tất cả các máy chủ trong tài khoản miền và lỗi “NTLM bị chặn” xuất hiện;
- Từ chối tài khoản miền: bộ điều khiển miền ngăn nỗ lực xác thực NTLM cho tất cả các tài khoản miền và lỗi “NTLM bị chặn” xuất hiện;
- Từ chối đối với máy chủ miền: Yêu cầu xác thực NTLM bị cấm đối với tất cả cá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 “Bảo mật mạng:Hạn chế NTLM:Thêm ngoại lệ máy chủ để xác thực NTLM trong miền này”;
- Từ chối tất cả: bộ điều khiển miền chặn tất cả các yêu cầu NTLM cho tất cả các máy chủ và tài khoản miền.
Để cải thiện hơn nữa tính bảo mật của Active Directory, tôi khuyên bạn nên đọc các bài viết sau:Giảm thiểu các cuộc tấn công kiểu Mimikatz, Bảo mật tài khoản quản trị viên có đặc quyền, Cách tắt LLMNR và NetBIOS qua TCP / IP.