Mật khẩu đúng, tài khoản nằm trong nhóm VPN, vậy mà kết nối vẫn bị từ chối với một thông báo không hề nhắc tới chính sách nào. Khi điều đó xảy ra trên máy chủ truy cập từ xa Windows, nơi đầu tiên tôi xem không phải quy tắc NPS mà là một thuộc tính Active Directory không ai mở: msNPAllowDialin, tức giá trị nằm sau thẻ Dial-in. Nó có ba trạng thái, và trạng thái thứ ba lặng lẽ giao quyết định cho một nơi khác. Phần lớn thời gian không ai cố ý đổi nó: tài khoản được nhân bản từ một mẫu, hoặc do một script tạo ra từ nhiều năm trước khi đã ghi một lệnh từ chối rõ ràng và chưa bao giờ được rà soát lại.

Việc từ chối có thể xảy ra trước khi chính sách được đọc

Windows kiểm tra quyền quay số của tài khoản trong lúc dựng quyết định cấp phép, nên một lệnh từ chối rõ ràng kết thúc cuộc trao đổi sớm. Điều bạn thấy trên máy khách là lỗi xác thực chung, đôi khi sau khi trao đổi chứng chỉ đã xong, và đó là lý do người ta mất cả buổi chiều để thử những thông tin đăng nhập chưa bao giờ là vấn đề.

Trường hợp ngược lại cũng mơ hồ không kém. Một tài khoản chưa từng được đặt cờ có thể kết nối thành công vì chính sách cho phép, rồi chính tài khoản đó ngừng kết nối khi ai đó sửa quy tắc NPS vì một lý do không liên quan. Không sự kiện nào trong hai sự kiện đó trông giống một thay đổi quyền quay số khi nhìn từ bên ngoài.

Ba trạng thái, và trạng thái thứ ba là vô hình

TRUE cho phép quay số, FALSE từ chối, và một NULL nghĩa là tài khoản thừa hưởng câu trả lời từ chính sách truy cập từ xa hoặc từ cấp phép của NPS. Giao diện hiển thị trạng thái thứ ba đó là "Control access through NPS Network Policy", và nó đọc như một ô chưa đánh dấu hơn là một quyết định.

Vì thế đếm người dùng được phép từ bảng điều khiển gần như không cho biết gì. Một tài khoản thừa hưởng có thể được cho phép hôm nay và bị từ chối ngày mai mà không ai chạm vào tài khoản, và một FALSE vẫn có thể kết nối trên máy chủ có chính sách được đặt để bỏ qua các thuộc tính quay số của người dùng. Hãy đọc thuộc tính và chính sách cùng nhau, nếu không bạn chỉ kiểm toán một nửa quyết định.

Xuất các cờ mà không làm mất các tài khoản thừa hưởng

Chạy lệnh xuất từ bộ điều khiển miền, hoặc từ một máy trạm có mô-đun Active Directory, và giữ tệp thô làm bằng chứng thay vì gõ lại bản tóm tắt:

Get-ADUser -Filter * -Properties msNPAllowDialin, LastLogonDate |
  Select-Object SamAccountName, Enabled, msNPAllowDialin, LastLogonDate |
  Sort-Object SamAccountName |
  Export-Csv -NoTypeInformation .\dialin.csv

Một bộ lọc LDAP duy nhất dễ dán vào bản ghi thay đổi hơn. Bộ lọc này chỉ trả về các cấp phép rõ ràng:

dsquery * -Filter "(&(objectCategory=person)(objectClass=user)(msNPAllowDialin=TRUE))" -Attr sAMAccountName

Sau đó truy vấn lại mà không có điều khoản quay số và tìm những tài khoản không có giá trị. Đó là các tài khoản thừa hưởng, thường là nhóm lớn nhất trong miền, và bỏ qua chúng biến một cuộc kiểm toán thành danh sách vài người mà ai đó nhớ ra phải cấu hình bằng tay.

Tách cờ khỏi quyền truy cập nhóm và tình trạng tài khoản

Thuộc tính trả lời một câu hỏi: tài khoản này có được quay số không. Nó không nói gì về việc người đó còn làm việc ở đây hay không, tài khoản có được bật hay không, hoặc có một mật khẩu dùng chung nằm trong ghi chú của bộ phận hỗ trợ hay không. Hãy ghép bản xuất với trạng thái bật, ngày đăng nhập cuối và tư cách thành viên nhóm cấp quyền truy cập máy chủ.

Bạn hành động dựa trên các tổ hợp. Một tài khoản bị vô hiệu hóa với TRUE chỉ là nhiễu. Một tài khoản được bật với TRUE mà cả năm không đăng nhập là ứng viên để gỡ bỏ. Còn một tài khoản thừa hưởng trong nhóm VPN mà không ai giải thích được chính là phát hiện thực sự quan trọng, vì không có một thiết lập nào ghi lại lý do nó được cấp.

Hãy đọc nó từ bộ điều khiển miền mà máy chủ VPN thực sự xác thực. Độ trễ sao chép có thể hiển thị một giá trị mà máy chủ đã thay thế, và một cuộc kiểm toán trích dẫn giá trị DC cũ sẽ bị phản bác ngay khi ai đó kiểm tra lại.

Đổi một tài khoản và chứng minh thay đổi đã đến nơi

Để thu hồi quyền truy cập, đặt thuộc tính thành FALSE thay vì xóa nó. Việc xóa trả tài khoản về thừa hưởng chính sách, có thể lại cho phép nó ở lần kết nối sau, và thay đổi trông như một bản sửa lỗi trong khi thực chất là một quyết định khác:

dsmod user "CN=Jane Doe,OU=Staff,DC=corp,DC=example" -allowDialin no
Set-ADUser -Identity jdoe -Clear msNPAllowDialin

Dòng thứ hai là việc đặt lại thừa hưởng, được cố ý tách riêng để không ai nhầm lẫn hai thao tác. Sau đó xác nhận từ phiên thứ hai, đọc lại thuộc tính, và kiểm tra các sự kiện kế toán của NPS cho lần từ chối thay vì tin vào việc làm mới bảng điều khiển.

Cuối cùng, ghi lại cơ chế nào sở hữu quyết định cho từng dịch vụ truy cập từ xa. Nếu chính sách bỏ qua thuộc tính quay số của người dùng thì điều kiện nhóm là cơ sở có thẩm quyền và thuộc tính chỉ mang tính tư vấn cho dịch vụ đó. Hai dịch vụ trong cùng một miền có thể trả lời khác nhau một cách hợp lệ, và biên bản rà soát nên nói điều đó trong một dòng cho mỗi dịch vụ.

Kết quả sống sót qua một cuộc kiểm toán thì ngắn gọn: ai được kết nối, theo cơ chế nào, được rà soát khi nào, bởi ai. Cờ quay số cung cấp hai câu trả lời đầu tiên; phần còn lại chỉ có việc rà soát chính sách mới cung cấp được.

Bài viết liên quan