Professional Documents
Culture Documents
111522858-Kerberos-pdf-đã chuyển đổi
111522858-Kerberos-pdf-đã chuyển đổi
Đề tài:
INFORMATION SECURITY
GIAO THỨC XÁC THỰC KERBEROS
Kerberos
I. Tổng quan
VII. Kerberos 5
VIII. Securiry
X. Trust Relationship
2|GiaothứcxácthựcKerberos
PTIT_D06THA1
I. Tổng quan:
Kerberos là một giao thức mật mã dùng để xác thực trong các mạng máy tính
hoạt động trên những đường truyền không an toàn được công khai từ năm
1989. Giao thức Kerberos có khả năng chống lại việc nghe lén hay gửi lại các
gói tin cũ và đảm bảo tính toàn vẹn của dữ liệu. Mục tiêu khi thiết kế giao thức
này là nhằm vào mô hình client - server và đảm bảo nhận thực cho cả 2 chiều.
Tên của giao thức Kerberos được lấy từ tên của con chó ba đầu Cerberus canh
gác cổng địa ngục trong thần thoại Hy Lạp
Các hệ điều hành Windows 2000, Windows XP và Windows Server 2003 và
sau này sử dụng một phiên bản Kerberos làm phương pháp mặc định để xác
thực.
Hệ điều hành Mac OS X cũng sử dụng Kerberos trong các phiên bản Clients
và Server của mình.
II. Lịch sử phát triển:
Mỗi principal bắt đầu với một tên người dùng hoặc tên dịch vụ. Tên người
dùng hoặc tên dịch vụ này phụ thuộc tùy vào các instance khác nhau. Instance
được sử dụng trong hai tình huống: dịch vụ cho principal , và để tạo principal
đặc biệt cho việc sử dụng quản trị. Ví dụ, các quản trị viên có thể có hai lãnh
3|GiaothứcxácthựcKerberos
PTIT_D06THA1
đạo: một là sử dụng hằng ngày, và một người (một admin "chính") để sử dụng
chỉ khi có các nhu cầu đặc quyền quản trị cao.
Ví dụ tên người dùng và các tùy chọn, kết hợp với nhau, tạo thành một thực
thể duy nhất trong một realm nhất định. Mỗi trình ứng dụng Kerberos định
nghĩa một realm quản trị để kiểm soát, điều đó để phân biệt với tất cả các trình
ứng dụng Kerberos khác. Kerberos định nghĩa nó như là tên của realm. Theo
quy ước, các realm của Kerberos có một DNS domain là 1 domain được
chuyển đổi sang chữ hoa.Ví dụ ptit.org trở thành PTIT.ORG
Ví dụ:
Duy Cường là 1 sinh viên của lớp IT của trường PTIT có domain name là
ptit.org thì principal mà Kerberos gán cho Cườnglà: cuong@IT.PTIT.ORG
Trong đó IT.PTIT.ORG la Realm, không có instance.
Trong 1 realm của Kerberos phải có ít nhất một KDC. Khi nhu cầu đòi hỏi
chạy 1 KDC trên 1 máy bình thường, người ta khuyên rằng nên dùng 1 KDC
4|GiaothứcxácthựcKerberos
PTIT_D06THA1
riêng biệt. Vì nếu hệ thống mạng có nhiều KDC kết nối nhau thì tất cả các dữ
liệu quan trọng, bao gồm các key của các principal trong realm của bạn, đều
có trên mỗi KDC trong mạng,điều đó có nghĩa là có nhiều nguy cơ bị tấn công
hơn.Ngoài ra, để cho người dùng xác thực thành công đến Kerberos-kích hoạt
dịch vụ, ít nhất một KDC phải được hoạt động mọi lúc.
Mỗi Key Distribution Center chứa 1 database của tất cả các principal có trong
realm này, cũng như các bí mật liên quan của nó. Phần mềm KDC chứa hầu
hết các thong tin bổ sung của các principal trong database này, chẳng hạn như
thời gian sống của mật khẩu, mật khẩu thay đổi lần cuối cùng là gì, và nhiều
thứ khác nữa. Windows 2000 và 2003 giữ cơ sở dữ liệu này trong Active
Directory(chứa trong LDAP).
Trong một realm có thể chứa nhiều Kerberos KDC , database trên mỗi KDC
phải được đồng bộ hóa để đảm bảo thống nhất xác thực. Nếu một máy chủ có
dữ liệu để lâu thì sẽ rất dễ thất bại khi tìm cách hợp pháp để xác thực với máy
chủ đó, vì nó không update bản sao của các cơ sở dữ liệu của Kerberos. Không
có phương pháp tiêu chuẩn đồng bộ hóa được xác định bằng giao thức
Kerberos, do đó các nhà cung cấp đã tạo ra các giao thức bản sao riêng của họ
SS – Service Server: Máy chủ dịch vụ - mail server, File server,
application server.
Bất kỳ một Server cung cấp dịch vụ nào đều có thể là Service Server
AS-Authentication Server:Máy chủ xác thực
Khi 1 user muốn tham gia vào 1 realm của Kerberos thì thay vì user phải xác
thực với KDC thì phải xác thực với AS
Khi nhận yêu cầu tham gia hệ thống Kerberos của 1 client, AS kiểm tra nhân
dạnh của người yêu cầu có nằm trong cơ sở dữ liệu của mình không. Nếu có
thì AS gửi 2 gói tin sau tới người sử dụng:
Gói tin A: "Khóa phiên TGS/máy khách" được mật mã hóa với khóa bí mật
của người sử dụng.
Gói tin B: "Vé chấp thuận" (bao gồm chỉ danh người sử dụng (ID), địa chỉ
mạng của người sử dụng, thời hạn của vé và "Khóa phiên TGS/máy khách")
được mật mã hóa với khóa bí mật của TGS.
5|GiaothứcxácthựcKerberos
PTIT_D06THA1
6|GiaothứcxácthựcKerberos
PTIT_D06THA1
7|GiaothứcxácthựcKerberos
PTIT_D06THA1
8|GiaothứcxácthựcKerberos
PTIT_D06THA1
9|GiaothứcxácthựcKerberos
PTIT_D06THA1
10 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
Hộp thoại Name the Forest RootDomain: Nhập tên cuong.net > Next
11 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
Hộp thoại Set Forest Functional Level: chӑn Windows Server 2008 => Next
Next
12 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
Hộp thọa Location for Database Log Files, and SYSVOL: Next
13 | G i a o t h ứ c xácthựcKerberos
PTIT_D06THA1
Finish:
14 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
nhiều chức năng trong lãnh địa ker của bạn.
15 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
Kerberos có thể sử dụng giao thức DNS là một địa điểm dịch vụ, bằng cách
sử dụng bản ghi DNS SRV như được định nghĩa trong RFC 2052. Ngoài ra,
Kerberos có thể sử dụng một bản ghi TXT để định vị lĩnh vực thích hợp cho một
máy chủ cho hay tên miền. Với những bản ghi DNS, Kerberos client có thể tìm
thấy KDCs thích hợp mà không cần sử dụng một tập tin cấu hình. Windows sẽ
thiết lập các bản ghi SRV cần thiết tự động khi một miền Active Directory được
tạo ra. Những người sử dụng Unix cho KDCs của họ có thể tạo các mục nhập
DNS bằng tay trong khu tập của họ như là một sự thuận tiện cho khách hàng.
VII. Kerberos 5 :
Qua chương V chúng ta đã biết về cơ chế hoạt động của Kerberos,ở
phần này chúng tôi xin giới thiệu thêm những chức năng bổ sung mà Kerberos
5 có và những lựa chọn có thể khi chúng ta sử dụng Kerberos 5 :
Chức năng AS và TGS là vẫn giữ nguyên trong Kerberos 5 nhưng tên của
TGS thay đổi một chút.Ngoài sự thay đổi đó, Kerberos 5 còn loại trừ sự mã
hóa đôi mà xuất hiện trong AS và TGS của KDC khi trả lời(so với Kerberos
4).Sự thay đổi này không làm giảm đi tính an toàn mà ngược lại còn cải thiện
hiệu quả và hiệu suất.
*Ticket: mỗi ticket chỉ được phát hành và mã hóa từ 1 server dịch vụ nào đó,
và được giãi mã bằng key của server.Vì vậy ticket có thể được mã hóa bằng
phương pháp mã hóa an toàn nhất mà server hỗ trợ.
*Reply: là 1 message mà KDC gửi cho client và client phải giải mã nó bằng
khóa của mình.Vì vậy ticket phải được mã hóa bằng các phương pháp mà
16 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
client hỗ trợ
17 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
*Session key: session key được chia sẻ giữa client và sever ứng dụng, nên
session key phải được mã hóa bằng phương pháp mà cả client và server đều hỗ
trợ.
Hệ thống Kerberos (user , server ứng dụng và KDC) phải hỗ trợ ít nhất 1
phương pháp mã hóa giống nhau để có thể giao tiếp được .
Khi 1 principal được tạo trên KDC thì nó tự lưu cho mình 1 bản copy của
tất cả các key mã hóa từ các phương thức mã hóa mà nó hỗ trợ.Vì vậy KDC có
thể đáp ứng nhanh được.
4. Ticket option:
Kerberos 5 bao gồm những đặc tính tiên tiến mà cho phép user có nhiều quyền
điều khiển hơn thông qua Kerberos vé của họ :
*Forwardable tickets: (thường là TGT ,được dùng khá phổ biến) khi cờ
TKT_FLG_FORWARDABLE được bật lên ở 1 ticket dưới sự cho phép của
admin thì user có thể dùng ticket này để yêu cầu 1 ticket mới nhưng phải khác
địa chỉ IP. Nói cách khác, user có thể dùng giấy ủy nhiệm của mình để tạo 1
giấy ủy nhiệm có giá trị cho máy khác.
Ngay sau khi user chứng thực xong với AS,user có thể yêu cầu 1 TGT mới
trước khi sử dụng phần mềm Kerberos.
Được sử dụng nhiều trong chương trình remote login như telnet , rlogin , rsh
*Renewable tickets: trong Kerberos thì lifetime của 1 ticket thường la ngắn
để hạn chế việc đánh cắp vé của hacker,nhưng như vậy là khá bất tiện với user
dùng dài lầu.Từ thực tế đó Kerberos 5 đã hỗ trợ Renewable tickets.
Renewable tickets cũng có hạn dùng như vé thường nhưng user có thể gia hạn
lâu hơn vé thường .
Khi user đang sở hữu 1 ticket còn hạn thì có thể gửi 1 yêu cầu đến KDC để xin
1 Renewable tickets với 1 hạn sử dụng mới.Nếu mọi thỏa hiệp đều ổn thì KDC
sẽ xác nhận vé và trả về 1 vé mới.Quá trình xảy ra như thế cho đến lúc vé hết
hạn
Lợi ích :- khó lấy cắp vé vì hacker khi cầm 1 vé đã hết hạn cũng chẳng làm
được gì.
Sau khi user dùng xong vé renew thì user có thể thông báo cho KDC biết mình
không cần dùng nữa,KDC sẽ từ chối mọi yêu cầu renew vé.
*Postdated tickets: Khi chúng ta có 1 kế hoạch cho tương lai và cần dùng
đến hệ thống chứng thực của Kerberos thì chúng ta sẽ sử dụng 1 lựa chọn mới
của Kerberos 5 là Postdated tickets.
Postdated tickets chỉ có giá trị tại bắt đầu từ 1 thời điểm trong tương lai.Nếu
user dùng nó trước đó sẽ bị KDC từ chối.Nó không được dùng phổ biến lắm.
Để cung cấp khả năng tương thích với dịch vụ của Kerberos 4, Kerberos 5
phát hành dịch vụ Kerberos 5-to-4 translation(krb524). Dịch vụ này cung cấp
một cách thức để client của Kerberos 5 có thể giao tiếp với các dịch vụ của
Kerberos 4. Nó không cung cấp một cách để client của Kerberos 4 giao tiếp
với dịch vụ hoặc KDC của Kerberos 5 .
18 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
Khi một client của Kerberos 5 muốn dùng dịch vụ mà nó chỉ hiểu vé của
Kerberos 4 thì thư viện của Kerberos lien lạc với thiết bị chạy krb524 daemon
để cung cấp giấy ủy nhiệm phù hợp với Kerberos 4.Khi krb524 daemon nhận
được yêu cầu của client ,nó sẽ giải mã service ticket với service key, sau đó
giải nén session key bên trong và tạo 1 service ticket mới của Kerberos 4 với
session key vừa có được.
Chú ý: session key trong Kerberos 5 nhất thiết được mã hóa bởi single
DES.Bởi vì krb524 daemon chỉ sao chép key đó và đóng gói lại, và Kerberos 4
chỉ hiểu được single DES
Máy chạy krb524 daemon không nhất thiết phải nằm trên KDC.Ví dụ
trong windown domain controller không hỗ trợ krb524 daemon nên muốn sử
dụng nó ta phải cài đặt 1 máy chạy krb524 daemon riêng.
6. Pre-Authentication:
Để làm khó khăn thêm khả năng tấn công bằng offline dictionary và bruce-
force Kerberos 5 đã cài đặt Pre-Authentication. Pre-Authentication yêu cầu
những người yêu cầu chứng minh danh tính của họ trước khi KDC cấp ticket
cho 1 principal riêng biệt. Có nhiều cách để thực hiện Pre-Authentication
nhưng mã hóa timestamp lá cách phổ biến nhất.
Tùy theo chính sách của KDC mà hệ thống có chạy Pre-Authentication
hay không. KDC yêu cầu Pre-Authentication ,nếu client muốn có ticket mà
không thông qua Pre-Authentication thì KDC sẽ gửi thông báo lỗi
KRB_ERROR thay vì gửi AS_REP đến client.Client sẽ tạo ra dữ liệu cần thiết
cho quá trinh Pre-Authentication của mình, sau đó gửi lai AS_REQ đính kèm
với phần dữ liệu vừa được tạo ra đó .Nếu KDC chấp nhận thì KDC gửi lại
AS_REP kèm theo ticket.Nếu không , KDC gửi lại KRB_ERROR và client
không nhận được ticket.
7. String-to-Key Transformation:
Chức năng là để chuyển đổi chuỗi ký tự password dạng plaintext thành
cyphertext.Điều khác so với Kerberos 4 là Kerberos 5 hỗ trợ bất kỳ thuật toán
nào với kích thước key là bất kỳ.Ngoài ra trước khi mã hóa , Kerberos 5 còn
thêm vào 1 thành phần gọi là salt vào password của user,làm cho nó tăng thêm
sức đề kháng với bruce-force.Salt thì tùy theo KDC chọn nhưng thường la tên
của principal.
8. Password Changing:
Trước đây ở phiên bản 4 thì người ta dùng administrative protocol cho
việc thay đổi password nhưng nó lại gây ra phiền toái khi giữa các thiết bị xài
administrative protocol khác nhau. Một tiêu chuẩn cho các giao thức Kerberos
5 thay đổi mật khẩu đã được đề xuất như là một dự thảo Internet trong năm
1998, được giao thức thay đổi mật khẩu Horowitz. Các phiên bản mới của
MIT (1,2 trở lên) và Heimdal Kerberos, cũng như Windows 2000 và năm
2003(dựa Active Directory) đều hỗ trợ giao thức thay đổi mật khẩu Horowitz .
Sau này 1 dự thảo mới đã thay thế giao thức thay đổi mật khẩu
Horowitz.Đó là Kerberos Set/Change Password Version 2.Protocol này cung
cấp khả năng cho các quản trị viên để đặt lại mật khẩu người dùng khác, cũng
như cho phép người dùng thay đổi mật khẩu của chính họ.Thêm vào đó, nó
cho phép gửi lại nhưng thông tin chi tiết hơn cho client khi 1 mật khẩu bị từ
chối.
19 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
VIII. Securiry
Điều quan trọng là nhận ra rằng Kerberos thực hiện trên mạng của bạn
không đảm bảo an ninh hoàn hảo. Trong khi Kerberos là rất an toàn trong một
ý thức lý thuyết, có rất nhiều vấn đề an ninh thực tế để được xem xét. Ngoài
ra, điều quan trọng là hãy nhớ rằng Kerberos chỉ cung cấp một dịch vụ chứng
thực; nó không ngăn cản thỏa hiệp gây ra do lỗi phần mềm máy chủ, quản trị
viên cấp giấy phép cho người sử dụng trái phép, hoặc các mật khẩu kém chọn.
Có nhiều đánh giá Kerberos là an toàn nhất có thể, tuy nhiên, vẫn còn những
vấn đề an ninh cần chú ý.
1. Kerberos Attacks
Thật không thể dễ dàng để hacker có thể tấn công hệ thống Kerberos
KDC. Nhưng, có một số cuộc tấn công điện tử có thể thỏa hiệp sự bảo mật
của hệ thống Kerberos của bạn. Liệt kê dưới đây là kịch bản thỏa hiệp tiềm
năng, và hiệu quả về tính an toàn của hệ thống Kerberos.
Root compromise of a Kerberos KDC machine. Một thỏa hiệp gốc của 1
máy chủ KDC cho phép kẻ tấn công toàn quyền kiểm soát toàn bộ hệ
thống xác thực Kerberos. Mặc dù các cơ sở dữ liệu kerberos được mã hóa
trên ổ cứng với khóa kerberos master, khóa master được giữ trên ổ cứng
KDC vì thế không có bất kì sự can thiệp bằng tay nào được yêu cầu (nhập
password master) khi server KDC bắt đầu.
Compromise of a Kerberos administrator's credentials: Nếu 1 hacker lấy
được mật khẩu của người quản trị, hacker có thể hoàn thành tấn công trên
toàn bộ database kerberos.
Root compromise of a server machine: Để giao thức Kerberos làm việc, 1
dịch vụ phải có truy cập đến 1 dịch vụ chính. Các dich vụ chính nằm trên
hệ thống tập tin của máy chủ, hoặc nằm trên 1 keytab được thực thi bởi
Unix, hoặc LSA bí mật trong những sự thi hành Microsoft. Nếu một kẻ tấn
công lấy được quyền truy cập vào một máy chủ, tất cả các dịch vụ
Kerberized đang chạy trên máy bị tổn hại.
Root compromise of a client machine. Một thỏa hiệp gốc của một máy
client sẽ cung cấp cho kẻ tấn công với tất cả các vé đã được lưu trên máy
đó. Khi các vé có giới hạn thởi gian, nó không phải là một thỏa hiệp quan
trọng như một kẻ tấn công lấy mật khẩu của người dùng. Tuy nhiên, với sự
truy cập gốc đến máy client, những kẻ tấn công bí mật có thể cài đặt một
sniffer để nắm bắt một mật khẩu người dùng khi đăng nhập vào máy tính
của họ.
Compromise of user credentials. Có 2 khả năng trong kịch bản này: hoặc
bộ nhớ lưu vé người dùng đã bị lộ, hoặc mật khẩu của người dùng bị thỏa
hiệp. Nếu hacker lấy được bộ nhớ các vé chưa được mã hóa, các vé chứa
trong bộ nhớ cache mà chỉ có hiệu lực trong khoảng thời gian quy định
trong vé. Mặt khác, nếu kẻ tấn công sử dụng lại mật khẩu của người dùng,
những kẻ tấn công có thể mạo danh người dùng đó cho đến khi người dùng
thay đổi mật khẩu của mình.
Từ danh sách trên, thực tế là một trong những nền tảng rằng tất cả những kịch
bản có tầm quan trọng trong việc giữ tất cả các máy trong mạng của bạn an
toàn. Cài đặt Kerberos trên mạng của bạn không làm giảm tầm quan trọng của
việc giữ tất cả các máy móc, máy tính người dùng an toàn từ tấn công bên
20 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
ngoài. Những thỏa hiệp của bất kì 1 máy nào trong mạng sẽ có một số hiệu
ứng bất lợi về bảo mật của hệ thống xác thực Kerberos của bạn.
2. Other Attacks:
Denial of service
The "insider"
Social engineering and password exposure
Security holes in the Kerberos software itself
3.Vấn đề giao thức bảo mật
Dictionary and Brute-Force Attacks
Trong giao thức Kerberos 4 bản gốc, các KDC tạo một TGT được mã
hóa cho khách hàng nào có yêu cầu nó. TGT được mã hóa với khóa bí mật
của người dùng. An ninh của toàn bộ hệ thống phụ thuộc vào việc không
thể giải mã thông điệp này, vì nếu một kẻ tấn công có thể lấy chìa khóa
được sử dụng để mã hóa các tin nhắn, giờ đây anh đã mật khẩu của người
dùng và có thể mạo danh người dùng đó theo ý thích. Do đó, nếu một kẻ
tấn công muốn có được mật khẩu của người dùng, nó có thể yêu cầu các
KDC cho một TGT hợp lệ với tên người dùng nạn nhân. Trong khi không
có cách để phá vỡ những phương pháp mã hóa được sử dụng trong
Kerberos vé trực tiếp, những kẻ tấn công sau đó có thể tiếp tục brute-force
giải mã của TGT bằng cách tung ra một cuộc tấn công từ điển ngoại tuyến.
Trong một cuộc tấn công từ điển, kẻ tấn công có một nguồn cấp dữ liệu là
danh sách các mật khẩu thường được sử dụng, hoặc một từ điển, với một
chương trình bẻ. Đối với mỗi mục trong từ điển, một chương trình cố gắng
giải mã thông điệp bằng cách sử dụng mật khẩu. Nếu đạt được thực hiện,
chương trình báo cáo lại cho kẻ tấn công của người sử dụng mật
khẩu.
Khi chuyển đổi từ mật khẩu của người dùng sang khóa mật mã được
biết đến, nó là tầm thường cho một kẻ tấn công để xây dựng một chương
trình mà có thể dịch các mật khẩu thường thành những khoá mật mã
Kerberos. Sau đó, kẻ tấn công thu thập một số lượng lớn TGTs hợp lệ từ
các KDC và tiếp tục công việc bẻ các TGTs off-line; với từng cố gắng giải
mã, anh ta không có liên hệ với các KDC. Thay vào đó, một khi các TGTs
được yêu cầu từ các KDC, không giao tiếp hơn nữa là cần thiết để tấn công
các mật khẩu.
Các mã hóa được sử dụng trong Kerberos v4, cũng như loại mã hóa
phổ biến nhất trong Kerberos v5, là DES. Single DES, thiết kế vào cuối
những năm 1970, có chiều dài 56-bit. Khi Kerberos được thiết kế (trong
cuối những năm 1980), brute-forcing một khóa 56-bit đã không thực hiện
được bởi tốc độ của các bộ vi xử lý có sẵn. Theo tiêu chuẩn hiện nay, với 56-
bit, không gian chính của DES được xem là tương đối không an toàn. Năm
1998, Electronic Frontier Foundation đã chứng minh rằng với vốn đầu tư $
200.000, một kẻ tấn công có thể xác dựng một " DES cracker" mà có thể
brute-force khoá mật mã từ một tin nhắn DES trong vòng một 1 ngày. Với
bộ xử lí hiện nay (năm 2002), thời gian để giải mã một thông điệp được mã
hóa bằng cách sử dụng DES trong phạm vi một vài giờ.
Rất may, trong Kerberos v5, một số tính năng giao thức mới được giới
thiệu để giảm thiểu nguy cơ này. Đầu tiên là hỗ trợ loại mã hóa mở rộng,
cho phép đối với việc bổ sung các kỹ thuật mã hóa mạnh hơn. Ngoài ra,
giai đoạn tiền xác thực đã được bổ sung, các client phải chứng thực danh
tính trước khi KDC cung cấp vé cho client. Tiền xác thực hạn chế được
21 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
các vấn đề của tấn công offline brute-force, hay tấn công từ điển. Thay vào
đó, 1 hacker từ xa phải liên lạc với KDC mỗi khi hacker cố gắng tìm 1 mật
khẩu mới.
Tuy nhiên, các phương pháp mã hóa mới trong Ker v5 và đặc tính tiền
xác thực không hoàn toàn chống lại được tấn công từ điển hay brute-force.
Các phương pháp mã hóa mới chắc chắn sẽ khiến cho các tấn công brute-
force ít khả thi bằng cách gia tăng sự khó khăn của brute-forcing tin nhắn
mã hóa. Tuy nhiên, tất cả các máy chủ, client, và KDCs trên mạng phải hỗ
trợ loại mã hóa mới. Nếu, ví dụ, bạn có nhiều client và triển khai máy chủ
Kerberos khác nhau được cài đặt trên mạng của bạn (ví dụ, một bộ máy
chủ của MIT Kerberos cùng với một số client của Windows), bạn chỉ có
thể sử dụng một loại mã hóa thông thường được hỗ trợ bởi tất cả các máy
trong mạng của bạn . MIT hỗ trợ triple DES, nhưng Windows không, để
truyền thông giữa Windows và MIT Kerberos sẽ bị giới hạn lại DES. Việc
phát hành phiên bản 1,3 sắp tới của MIT Kerberos 5 sẽ hỗ trợ các thuật
toán mã hóa RC4 được sử dụng bởi Windows, và do đó tăng cường mã
hóa được sử dụng cho truyền thông giữa hai thực thi.
Với giao thức tiền xác thực, hacker đã không còn nhiều khả năng. vé
được mã hóa theo yêu cầu từ các KDC. Tuy nhiên, kẻ tấn công có thể sử
dụng một mạng lưới "sniffer" để có được KDC responses khi chúng được
gởi đến client. Những responses sẽ bao gồm vé được mã hóa với khóa
người dùng. Trong khi các cuộc tấn công trở nên khó khăn hơn do việc
tăng cường độ bảo mật, thì đó là 1 vấn đề tiềm năng. Ngoài ra, hầu hết sự
thực thi Kerberos đều không bắt buộc sử dụng tiền xác thực là mặc định,
phủ định khả năng bảo mật của tiến xác thực.
Replay Attacks
Vì tất cả các giao thức trao đổi là các tin nhắn được gởi qua một mạng
máy tính, kẻ tấn công có thể lắng nghe các tin nhắn một mạng lưới trao đổi
xác thực thành công, tạo một bản sao của tin nhắn, và phát lại chúng ở lần
sau. Những kẻ tấn công không cần phải đoán mật khẩu của người dùng
hoặc giải mã thông điệp nào trong tấn công này. Kể từ khi cuộc tấn công
replay yêu cầu truy cập để nghe tất cả các tin nhắn trong mạng cũng như
khả năng gửi tin nhắn giả, một cuộc tấn công replay là một cuộc tấn công
chủ động.
Chúng tôi thấy rằng Alice thành công lấy được vé để xác thực tới máy
chủ thư của cô. Bob, kẻ tấn công, bí mật nghe tất cả lưu lượng mạng giữa
Alice, máy chủ thư, và KDC Kerberos. Bob không thể trực tiếp sử dụng
TGT mà Alice yêu cầu ở bước trước, TGT phải được giải mã với mật khẩu
của Alice, Bob không biết mật khẩu đó. Tuy nhiên, khi Alice gửi vé được
mã hóa của mình và nhận thực, Bob có thể chặn thư đó và phát lại nó để
mạo danh Alice đến máy chủ thư.
Vé này được mã hóa với khóa máy chủ thư, và nhận thực được mã hóa
với khóa phiên chia sẻ giữa Alice và máy chủ thư. Khi máy chủ thư nhận
vé và nhận thực, nó giải mã vé bằng khóa của mình, lấy khóa từ phiên giao
vé, và sử dụng khóa phiên để giải mã nhận thực. Nếu tất cả việc giải mã
thành công, thì xác thực thành công.
Kerberos được thiết lập bảo vệ chống lại tấn công replay attacks. Là
quản trị, bạn không phải lo lắng về sự kích hoạt những sự bảo vệ này;
chúng được thiết lập trong sự thực thi Kerberos mà bạn đang sử dụng.
Những sự bảo vệ đó là:
22 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
23 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
lẫn nhau, bởi xác thực không chỉ để xác minh người dùng mà còn xác
minh máy chủ, man in the middle bị cản trở.
Để chống lại tấn công này, một số cơ chế để xác nhận khoá mật mã của
máy chủ phải tồn tại. Những giao thức khác sử dụng sự xác minh bằng tay,
hoặc xác thực chữ kí. Kerberos sử dụng một bản sao của tất cả các khóa
cho cả dịch vụ và người dùng được lưu trên các KDC để đảm bảo bảo vệ
chống lại MITM attack. Khóa phiên tạo ra bởi các KDC và sau đó được
gửi đến dịch vụ được mã hóa với khóa của dịch vụ, kẻ tấn công không thể
phục hồi phiên làm việc mà không có khóa bí mật của dịch vụ.
Một máy client sau đó có thể phát hiện xem máy chủ anh ta nói đến là
hợp pháp bằng cách yêu cầu xác thực lẫn nhau, nơi mà các máy chủ phải
chứng minh danh tính của mình bằng cách khôi phục các khóa phiên, mã
hóa một responses, và gửi nó trở lại cho client. Nếu máy chủ không phải là
hợp lệ, và không có một bản sao của chính dịch vụ, và máy chủ không thể
gửi lại tin nhắn hợp lệ được mã hóa, và client ngắt kết nối.
Trong khi Kerberos cung cấp khả năng thực hiện sự chứng thực lẫn
nhau, những ứng dụng phải có mã để cho phép sự bảo vệ đó. Ngoài ra,
nhiều ứng dụng, chẳng hạn như các mô đun PAM có sẵn để xác thực với
mật khẩu Kerberos, không sử dụng quá trình xác thực dựa trên nền vé.
Thay vào đó, chúng giữ 1 mật khẩu trên mạng (hy vọng được mật mã) và
xác minh nó ở bên máy chủ bằng cách yêu cầu các KDC cho một TGT và
sau đó giải mã các TGT. Đây là nơi tấn công MITM có thể được gắn kết
với Kerberos.
Trong trường hợp này, kẻ tấn công muốn đặt mình ở giữa máy chủ và
KDC, vì vậy mà hacker có thể làm giả máy chủ ứng dụng. Các KDC
requests and responses là các tin nhắn UDP đơn giản, thật là dễ dàng để
một hacker đưa ra những thông báo giả mạo mà ngụ ý đến từ địa chỉ IP
thực sự của KDC. Như vậy, tấn công được thực hiện thông qua các thủ tục
sau đây:
- Những kẻ tấn công tạo một mật khẩu để sử dụng cho tài khoản mà
chúng mong muốn được truy cập vào.
- Những kẻ tấn công sau đó thiết lập một chương trình để lắng nghe
các yêu cầu trên mạng, để xem khi nào client yêu cầu một TGT cho
người sử dụng A. Khi nhận được 1 TGT, chương trình sẽ gởi TGT-
responses trả lại cho yêu cầu và được mã hóa với password đã
chọn.
- Sau đó, kẻ tấn công truy nhập vào server, tạo username A và pass đã
chọn. Vào thời điểm đó, chương trình sẽ gửi tới máy chủ TGT được
mã hóa với mật khẩu mà những kẻ tấn công đã chọn thay vì mật
khẩu thực.
- Nếu máy chủ nhận được responses giả trước, nó sẽ giải mã thành
công TGT từ mật khẩu phù hợp.
Để ngăn chặn cuộc tấn công này, máy chủ phải lấy khóa dịch vụ
máy chủ của mình từ keytab, sau đó yêu cầu 1 khóa dịch vụ từ KDC
dùng TGT đang tồn tại đại diện cho người sử dụng. Chỉ máy chủ và
KDC biết khóa dịch vụ máy chủ, một kẻ tấn công từ bên ngoài
không thể tạo một thông điệp giả mạo và tài khoản bị từ chối truy
cập
4. Firewall, NAT và Kerberos
24 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
Vì Kerberos dựa chủ yếu vào các hoạt động đúng đắn của DNS và các giao
thức bao gồm địa chỉ IP, tường lửa và NAT.
Phổ biến nhất là thiết lập mà các máy client được đặt ở bên ngoài của một
bức tường lửa công ty, và các KDCs và máy chủ ứng dụng nằm bên trong
tường lửa.
Để các client bên ngoài có được vé cho các lĩnh vực Kerberos, một số
cổng cần phải được mở thông qua các bức tường lửa đến KDCs của bạn.
Kerberos Network Ports
Remote
Local port
Machine port Description
(server)
(client)
88/udp Above
All KDCs Kerberos 5 ticket service
88/tcp 1024
Above Kerberos 5 administration
All KDCs 749/tcp service (MIT and Heimdal)
1024
Kerberos 5 password
Master/Administrative Above
464/udp changing service (older
KDC 1024 password-changing protocol)
Thật ra thì chỉ duy nhất 1 port cần mở để hệ thống Ker hoạt động là port 88.
Các port khác có thể được mở để cung cấp các dịch vụ khác đến client bên
ngoài tường lửa
Kerberos and NAT
KDC và máy chủ ứng dụng phía sau tường lửa, với các client sử dụng NAT
23 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
Network Address Translation, hoặc NAT, cho phép nhiều máy tính chia sẻ
một địa chỉ IP duy nhất. Trong một thiết lập NAT, các máy client bên trong
dịch vụ NAT có sự riêng tư, không định tuyến địa chỉ IP. NAT cung cấp 1 vấn
đề cho Kerberos vì các vé yêu cầu đều chứa địa chỉ IP của người yêu cầu. Vì
các client yêu cầu vé trong trường hợp sử dụng NAT, nên các địa chỉ IP client
cung cấp đến KDC sẽ không trong bảng định tuyến. Vì các địa chỉ riêng tư của
client không phụ hợp với địa chỉ public của NAT nên các dịch vụ Kerberized
sẽ không cấp bất kì vé nào cho khách hàng.
Ví dụ: ở hình trên
Thiết bị NAT có public IP: 132.68.153.28
Mạng nội bộ có giá trị IP trong RFC 1918 là 192.168.1.0 to 192.168.1.255
Một client (sử dụng dịch vụ NAT) có địa chỉ IP là 192.168.1.2 yêu cầu 1 TGT
đến KDC bên trong hệ thống tường lửa. 1 vé TGT có giá trị cho địa chỉ IP
client 192.168.1.2 không phù hợp với địa chỉ 132.168.153.28 của NAT, nên
yêu cầu của client không được thực hiện.
Việc sử dụng các vé không có trường địa chỉ (để hỗ trợ cho các thiết bị NAT)
sẽ làm giảm đi tính bảo mật. Kẻ tấn công có thể tạo một bản sao lưu bộ nhớ
caches ticket và việc tấn công replay attack có thể dễ dàng hơn.
Auditing
Windows domain controllers
Mặc dù có 1 chắc chắn rằng máy tính của bạn đã được an toàn tấn công từ
bên ngoài, bạn cũng cần phải giám sát định kì hoạt động của KDC. Tùy thuộc
vào nhà cung cấp KDC, số lượng truy cập theo măc định có thể khác nhau từ
không (cấu hình mặc định của window 2000) đến rất nhiều (MIT và Hiemdal)
Việc đăng nhập được thiết lập trong sự thực thi KDC không chỉ với mục
đích giám sát, mà nó còn đòng vai trò gỡ rối trong suốt quá trình hoạt động
của hệ thống Kerberos.
Sự đăng nhập của một user vào máy chủ Windown Domain Controller
trong Window server 2008:
Domain: CUONG.NET
Client name: admin
Sử dụng phần mềm Kerbtray và Klist
24 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
25 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
X. Trust Relationship
Trust relationship là một liên kết luận lý được thiết lập giữa các hệ thống
domain, giúp cho cơ chế chứng thực giữa các hệ thống domain có thể được
thừa hưởng lẫn nhau. Trust relationship giải quyết bài toán “single sign-on” -
logon chứng thực một lần duy nhất cho tất cả mọi hoạt động trên các domain,
dịch vụ triển khai trên 1 domain có thể được truy cập từ user thuộc domain
khác.
Trong một trust relationship cần phải có 2 domain. Domain được tin tưởng gọi
là trusted domain, còn domain tin tưởng domain kia gọi là trusting domain. Cơ
chế trust relationship giúp đảm bảo các đối tượng (user, ứng dụng hay chương
trình) được tạo ra trên một trusted domain có thể được chứng thực đăng nhập
hay truy cập tài nguyên, dịch vụ trên trusting domain. Tuy nhiên, trên hệ thống
Windows hỗ trợ đến 6 loại trust relationship với các đặc tính và ứng dụng khác
nhau. Bài này sẽ giúp các bạn hiểu hơn về đặc tính cũng như ứng dụng từng
loại để triển khai trên hệ thống cho hợp lí.
26 | G i a o t h ứ c x á c t h ự c K e r b e r o s
PTIT_D06THA1
27 | G i a o t h ứ c x á c t h ự c K e r b e r o s