

Kerberos là một trong những giao thức xác thực phổ biến trong hệ thống mạng doanh nghiệp, đặc biệt ở các môi trường sử dụng Windows Server và Active Directory. Vậy Kerberos là gì, KDC, TGT và TGS đóng vai trò như thế nào? Nội dung dưới đây sẽ giải thích từng thành phần và toàn bộ quá trình xác thực Kerberos.
Kerberos là một giao thức xác thực mạng (network authentication protocol) cho phép người dùng, máy tính hoặc dịch vụ chứng minh danh tính với nhau trên một mạng không nhất thiết phải được coi là an toàn.
Kerberos hoạt động dựa trên một bên thứ ba đáng tin cậy gọi là Key Distribution Center (KDC) và sử dụng mật mã khóa bí mật để hỗ trợ quá trình xác thực. Phiên bản Kerberos V5 được đặc tả trong RFC 4120.
Điểm đặc biệt của Kerberos nằm ở cơ chế ticket-based authentication. Sau khi xác thực ban đầu, người dùng nhận được ticket và có thể sử dụng ticket đó để yêu cầu quyền truy cập các dịch vụ khác mà không cần liên tục gửi lại thông tin đăng nhập.

Để hiểu Kerberos hoạt động như thế nào, trước tiên cần nắm một số thành phần quan trọng.
Thành phần | Vai trò |
| Client | Người dùng, máy tính hoặc ứng dụng yêu cầu xác thực |
| KDC | Trung tâm phân phối khóa và ticket |
| Authentication Service (AS) | Xác thực ban đầu và cấp TGT |
| Ticket Granting Service (TGS) | Cấp ticket cho từng dịch vụ |
| TGT | Ticket dùng để yêu cầu các Service Ticket |
| Service Ticket | Ticket dùng để truy cập một dịch vụ cụ thể |
| Principal | Danh tính trong hệ thống Kerberos |
| Realm | Phạm vi quản lý các principal của Kerberos |
| Service Server | Máy chủ cung cấp tài nguyên mà client muốn truy cập |
Key Distribution Center (KDC) là thành phần trung tâm trong kiến trúc Kerberos.
Có thể hình dung KDC giống như một đơn vị phát hành giấy chứng nhận truy cập. Client không tự tuyên bố rằng mình là ai mà phải nhận ticket được KDC cấp và sử dụng ticket đó để chứng minh danh tính.
Về logic, KDC cung cấp hai dịch vụ quan trọng là Authentication Service (AS) và Ticket Granting Service (TGS). AS chịu trách nhiệm cấp Ticket Granting Ticket, còn TGS sử dụng TGT để cấp các ticket dành cho từng dịch vụ cụ thể.
Trong Windows Active Directory, KDC hoạt động dưới dạng một dịch vụ trên Domain Controller.
Ticket Granting Ticket (TGT) là ticket được cấp sau khi người dùng hoàn tất quá trình xác thực ban đầu.
TGT không được sử dụng trực tiếp để truy cập file server, web server hoặc database. Thay vào đó, client sử dụng TGT để chứng minh với Ticket Granting Service rằng mình đã được xác thực và muốn lấy ticket cho một dịch vụ khác.
TGT có thời hạn sử dụng và có thể được lưu trong credential cache trên client. Thời hạn cụ thể phụ thuộc vào cấu hình của từng hệ thống.
Ticket Granting Service (TGS) là thành phần thuộc KDC chịu trách nhiệm phát hành Service Ticket.
Khi client muốn sử dụng một dịch vụ, chẳng hạn file server, client gửi yêu cầu tới TGS cùng TGT đã có.
TGS kiểm tra thông tin cần thiết và nếu hợp lệ sẽ cấp một Service Ticket dành cho dịch vụ tương ứng.
Điều này giúp client không phải nhập lại mật khẩu mỗi lần muốn sử dụng một tài nguyên mới.
Service Ticket là ticket được thiết kế để client truy cập một dịch vụ cụ thể.
Ví dụ người dùng muốn truy cập một file server. Client sử dụng TGT để xin ticket dành cho file server đó. Sau khi nhận được Service Ticket, client gửi ticket tới file server để xác thực.
Nếu sau đó người dùng muốn sử dụng một dịch vụ khác, client có thể tiếp tục dùng TGT để xin một Service Ticket khác.
Trong Kerberos, principal là danh tính đại diện cho người dùng, máy tính hoặc dịch vụ.
Một principal có thể có dạng tương tự:
user@example.com
hoặc trong cách biểu diễn Kerberos thường gặp:
user@EXAMPLE.COM
Phần phía sau ký tự @ là realm. Realm đại diện cho phạm vi quản lý xác thực của hệ thống Kerberos và thường được viết bằng chữ in hoa.
Kerberos sử dụng mật mã khóa đối xứng (symmetric key cryptography) và một Trung tâm Phân phối Khóa (Key Distribution Center - KDC) để xác thực và xác minh danh tính người dùng. KDC bao gồm ba thành phần:
Trong quá trình xác thực, Kerberos sẽ lưu trữ một vé (ticket) cụ thể cho từng phiên làm việc trên thiết bị của người dùng cuối. Thay vì yêu cầu mật khẩu, một dịch vụ hỗ trợ Kerberos sẽ kiểm tra tấm vé này. Quá trình xác thực Kerberos diễn ra trong một Kerberos realm (vùng Kerberos) — môi trường mà tại đó KDC được ủy quyền để xác thực một dịch vụ, máy chủ hoặc người dùng.
Xác thực Kerberos là một quy trình gồm nhiều bước bao gồm các thành phần sau:

Thời gian là một yếu tố quan trọng trong cơ chế bảo mật của Kerberos.
Các thông điệp và authenticator của Kerberos sử dụng thông tin thời gian để hỗ trợ kiểm soát tính hợp lệ và hạn chế việc một thông điệp xác thực cũ bị sử dụng lại.
Vì vậy, nếu đồng hồ trên client, KDC và application server chênh lệch quá nhiều, quá trình xác thực có thể thất bại.
Các triển khai Kerberos thường cho phép một khoảng sai lệch thời gian nhất định. Chẳng hạn, cấu hình mặc định của MIT Kerberos cho clockskew là 300 giây, tương đương 5 phút, nhưng giá trị này có thể được cấu hình lại.
Trong môi trường doanh nghiệp, việc duy trì đồng bộ thời gian giữa Domain Controller, server và endpoint vì thế rất quan trọng.

Kerberos và NTLM đều có thể xuất hiện trong môi trường Windows nhưng sử dụng cơ chế xác thực khác nhau.
Tiêu chí | Kerberos | NTLM |
| Cơ chế chính | Ticket-based | Challenge-response |
| Thành phần trung tâm | KDC | Thường cần tương tác với hệ thống xác thực Windows |
| Mutual authentication | Hỗ trợ | Không cung cấp khả năng tương đương để client xác minh server |
| Single Sign-On | Hỗ trợ tốt trong domain | Có thể tham gia Windows SSO nhưng cơ chế khác |
| Môi trường phù hợp | Active Directory Domain, hệ thống Kerberos | Hệ thống cũ, trường hợp Kerberos không khả dụng |
| Service Ticket | Có | Không sử dụng cơ chế ticket tương tự |
| Khả năng delegation | Kerberos hỗ trợ cơ chế delegation | Hạn chế hơn đối với các kịch bản phân tán |
| Xu hướng sử dụng | Được ưu tiên trong Windows Domain hiện đại | Chủ yếu phục vụ tương thích và một số trường hợp fallback |
Một khác biệt đáng chú ý là mutual authentication. Kerberos cho phép hai đầu của kết nối xác minh danh tính của nhau, trong khi NTLM không cung cấp cho client khả năng xác minh danh tính server theo cùng cơ chế.
NTLM do đó vẫn có thể xuất hiện trong một số hệ thống legacy hoặc trường hợp Kerberos không thể được sử dụng, nhưng trong môi trường Active Directory phù hợp, Kerberos thường là lựa chọn ưu tiên.
Dịch vụ Kerberos được đăng ký với port 88 cho cả TCP và UDP.
Trong hệ thống thực tế, Kerberos còn phụ thuộc vào các thành phần hạ tầng khác như DNS, đồng bộ thời gian và trong môi trường Active Directory có thể liên quan tới nhiều dịch vụ của Domain Controller.
Vì vậy, khi xử lý lỗi Kerberos, quản trị viên không nên chỉ kiểm tra port 88 mà còn cần đánh giá DNS, đồng bộ thời gian, SPN, trạng thái Domain Controller và khả năng kết nối giữa các hệ thống.
Kerberos cũng như bất kỳ mô hình bảo mật nào khác, không thể đảm bảo an toàn 100%. Do Kerberos là giao thức xác thực được sử dụng rộng rãi, kẻ tấn công đã phát triển nhiều phương thức nhằm vượt qua hoặc lợi dụng cơ chế xác thực này.
Các hình thức tấn công Kerberos phổ biến gồm:
Với phương thức này, kẻ tấn công sử dụng ticket hoặc thông tin xác thực Kerberos bị đánh cắp/giả mạo để truy cập tài nguyên mà không cần biết mật khẩu của người dùng.
Một số kỹ thuật liên quan có thể sử dụng Golden Ticket hoặc Silver Ticket nhằm giành quyền truy cập domain hoặc một dịch vụ cụ thể.
Kẻ tấn công thực hiện các lần thử tự động và liên tục nhằm đoán mật khẩu của người dùng.
Các cuộc tấn công này có thể nhắm vào quá trình xác thực ban đầu và dịch vụ cấp ticket của Kerberos để tìm kiếm thông tin xác thực hợp lệ.
Kẻ tấn công có thể tìm cách làm suy yếu hoặc vượt qua cơ chế bảo vệ xác thực. Nội dung nguồn đề cập đến Skeleton Key malware, một loại mã độc có thể can thiệp vào quá trình xác thực khi attacker đã có quyền quản trị trên hệ thống.
Cuộc tấn công này xảy ra khi kẻ tấn công đã có đủ đặc quyền để đăng ký hoặc giả lập một Domain Controller (DC) trong môi trường Active Directory.
DC giả mạo sau đó có thể được lợi dụng để đưa các thay đổi trái phép vào hệ thống và phục vụ cho những bước xâm nhập tiếp theo.
Không.
Kerberos là giao thức xác thực, không phải một giao thức chỉ dùng để mã hóa dữ liệu.
Kerberos sử dụng các kỹ thuật mật mã và khóa bí mật để bảo vệ thông tin xác thực, ticket và các thành phần của quá trình trao đổi. RFC 4120 mô tả Kerberos như một dịch vụ xác thực bên thứ ba đáng tin cậy sử dụng mật mã khóa bí mật.
Sau khi xác thực hoàn tất, việc mã hóa toàn bộ dữ liệu của ứng dụng còn phụ thuộc vào giao thức và cách hệ thống được triển khai.
Trong quy trình Kerberos dựa trên mật khẩu thông thường, mật khẩu không cần được gửi trực tiếp tới từng server mà người dùng muốn truy cập.
Client sử dụng thông tin mật mã liên quan đến credentials để thực hiện quá trình xác thực với KDC. Sau đó, việc truy cập các dịch vụ dựa chủ yếu vào ticket và session key.
Cách tiếp cận này giúp giảm việc phân phối mật khẩu người dùng tới nhiều dịch vụ khác nhau.
Không. Đây là hai công nghệ giải quyết các bài toán khác nhau.
Kerberos chủ yếu đảm nhiệm xác thực danh tính.
LDAP – Lightweight Directory Access Protocol là giao thức dùng để truy cập và quản lý thông tin trong dịch vụ thư mục.
Trong hệ thống Active Directory, cả hai có thể cùng xuất hiện. Kerberos có thể được sử dụng để xác thực người dùng, trong khi LDAP được sử dụng để truy vấn các thông tin như user, group, computer hoặc các object khác trong directory.
Vì vậy, Kerberos và LDAP thường bổ trợ cho nhau thay vì thay thế nhau.
Kerberos là giao thức xác thực mạng dựa trên cơ chế ticket, sử dụng KDC làm bên thứ ba đáng tin cậy để xác minh danh tính người dùng, máy tính và dịch vụ.
Quá trình cốt lõi có thể hiểu đơn giản là client xác thực để nhận TGT, sử dụng TGT xin Service Ticket rồi đưa Service Ticket cho server cần truy cập.
Với khả năng Single Sign-On, mutual authentication và tích hợp sâu với Active Directory, Kerberos vẫn là một thành phần quan trọng trong nhiều hệ thống xác thực doanh nghiệp hiện nay. Để vận hành Kerberos ổn định, tổ chức đồng thời cần quản lý tốt Domain Controller/KDC, DNS, SPN, tài khoản dịch vụ và đồng bộ thời gian.
