Đồ án môn xây dựng các ứng dụng phân tán cơ chế đăng nhập một lần
Trang 11
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN MÔN HỌC XÂY DỰNG CÁC ỨNG DỤNG PHÂN TÁN
CƠ CHẾ ĐĂNG NHẬP MỘT LẦN - SINGLE SIGN ON
Sinh viên thực hiện : Phùng Vũ Nhật Duy
Lớp Truyền Thông Mạng – K53
Giáo viên hướng dẫn : PSG.TS Nguyễn Linh Giang
HÀ NỘI 11 - 2012
Trang 22
MỤC LỤC
I Cơ sở lý thuyết 3
1 Cơ chế đăng nhập một lần - Single Sign On 3
1.1 Khái niệm 3
1.2 Lợi ích 4
1.3 Các mô hình Single Sign On 4
2 Xác thực Kerberos 5
2.1 Khái niệm 5
2.2 Cách hoạt động 7
II Xây dựng thử nghiệm Kerberos 12
1 Môi trường Windows 12
2 Môi trường Unix/Linux 16
III Kết luận 25
TÀI LIỆU THAM KHẢO 26
Trang 3V ụ:
Người ng s ụng nhiều ịch vụ như: Đăng k m n học hê thống x m điểm ng với m i ịch
vụ ch ng t có một tài khoản riêng Trước đ y khi chư s ụng SSO th khi với m i ịch vụ ch ng t đều phải nhập th ng tin để xác thực hi một t ch c đ thống nhất s ụng SSO cho tất cả các ịch vụ c họ
th người ng chỉ cần đăng nhập một lần uy nhất trên ất k ịch vụ nào trong t ch c th khi truy xuất
nh ng ịch vụ khác người dùng kh ng cần phải đăng nhập lại
Trang 44
1.2 Lợi ích
Với sự tiện dụng c cơ chế đặng nhập một lần SSO m ng đến các lợi ích sau:
Tránh việc nhớ nhiều th ng tin đăng nhập us rn m p sswor khi ng nhiều dịch vụ
Tiết kiệm thời gi n khi tái lập lại mật kh u cho một người ng i ntity us r đồng thời giảm chi phí
ảo mật tất cả các cấp độ c việc thoát h y truy xuất vào hệ thống
Người phát triển ng ụng kh ng cần phải hiểu và thực hiện nhận ạng ảo mật trong ng ụng c
b Mô hình SAML
SAML (Security Assertion Markup Language) là giải pháp dựa trên ngôn ng XML (eXtensible Markup Language) cho việc tr o đ i thông tin xác thực gi a nhà cung cấp dịch vụ và doanh nghiệp Khi người dùng gọi một dịch vụ hoặc tài nguyên, nhà cung cấp xác thực sẽ cấp ch ng thực cho người dùng Sau
đó nhà cung cấp dịch vụ sẽ dựa vào thông tin ch ng thực này để cung cấp quyền truy cập dịch vụ hay tài nguyên cho người dùng
Trang 55
d Kerberos
Kerberos là một giao th c ch ng thực mạng được phát triển trong dự án Athena c a học viện công nghệ Massachusetts (MIT) Tên c a giao th c r ros được lấy từ tên c con chó đầu Cerberus canh gác c ng địa ngục trong thần thoại Hy Lạp
Nó đảm bảo tính toàn vẹn và tính mật cho thông tin truyền đi s dụng mã hoá bí mật như DES tripl DES
Mô hình này hiện n y đ có phiên ản th 5 và có thể triển kh i trên m i trường Windows cũng như
Unix/Linux S u đ y là phần lý thuyết chi tiết về mô hình này
2 Xác thực Kerberos
2.1 Khái niệm
Kerberos là một giao th c mật m 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 n toàn được công khai từ năm 1989 Đ y là một cơ chế ch ng thực mạnh cho các ng dụng cli nt/s rv r trên m i trường mạng phân tán; nó cho phép các thực thể truyền thông trong mạng ch ng thực lẫn nhau mà vẫn đảm bảo an toàn Mục tiêu khi thiết kế giao th c này là nhằm vào mô hình
client/s rv r và đảm bảo ch ng thực cho cả 2 chiều
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 r ros làm phương pháp mặc định để xác thực Hệ điều hành M c OS X cũng s dụng Kerberos trong các phiên bản Clients và Server c a mình
Trang 66
Một số thuật ngữ chính:
a Service Server (SS): Máy chủ dịch vụ (Mail server, File server, Application server, …)
b Realm, Principal, Instance
Principal: bất ki người dùng, máy tính hay dịch vụ được cung cấp dịch vụ bởi S rv r được gọi là Kerberos
principal
Instance: (thực thể) được s dụng bởi các principal có quyền quản trị
Realm: tên miền ch ng thực
Cấu trúc chung c a một principal c a Kerberos là username/instance@Realm
VD: Duy/admin@TTMK53.COM là một principal c r ros trong đó Duy là us rn m min là
instance và TTMK53.COM là realm
c Key Distribution Center (KDC)
Kerberos không xây dựng các giao th c ch ng thực ph c tạp cho m i máy ch mà hoạt động dựa trên
một máy ch ch ng thực tập trung KDC (Key Distribution Center) Đ y là trung t m ph n phối khóa, cung
cấp khóa (vé) cho việc ch ng thực người dùng và bảo mật truyền thông bởi khoá phiên trong vé KDC gồm 3 phần:
Máy ch ch ng thực AS (Authentication Server) biết khoá mật c a tất cả người ng được lưu gi trên một cơ sở d liệu tập trung
Máy ch cấp khoá TGS (Ticket Granting Server) cung cấp vé dịch vụ cho phép người dùng truy nhập vào các máy ch trên mạng
Cơ sở d liệu (Database) c các princip l và các khó đ m hó c a nó
d Authentication Server (AS)
Khi 1 user (client) muốn tham gia vào một realm c a Kerberos thì thay vì user phải xác thực
với AS Khi nhận yêu cầu tham gia hệ thống Kerberos c a user, 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/client" được mật mã hóa với khóa bí mật c a người s dụng
Gói tin B: Ticket-Granting-Ticket (TGT)
e Ticket-Granting-Ticket (TGT): được cấp bởi AS, bao gồm ID máy client, địa chỉ mạng c a client, thời
hạn c vé và " hó phiên TGS/máy khách" được mã hóa với khóa bí mật c a TGS
Trang 77
f Ticket Granting Server (TGS)
TGS là bộ phận nhận vé chấp thuận TGT từ user.TGS có nhiệm vụ kiểm tra các vé TGT có giá trị không bằng cách kiểm tr x m nó có được mã hóa bởi key với key c a TGT server Kerberos không.Nếu
đ ng th g i cho user vé dịch vụ mà user muốn s dụng
Các trường chính mà mọi vé c r ros đều có là:
Yêu cầu tên c a principal
h Session Key (SK): khóa phiên, được sử dụng cho 1 phiên giao dịch giữa client và server
i Ticket Cache: Còn được gọi là Credential Cache, chứa tất cả các khóa (vé) của Kerberos
2.2 Cách hoạt động
Giao thức Kerberos hoạt động khá phức tạp, về cơ bản được thực hiện qua ba giai đoạn Trong
ví dụ dưới đây, người dùng U đăng nhập vào máy trạm Client và yêu cầu truy nhập tới máy chủ S
Trang 88
Giai đoạn1: Người dùng U kết nối với AS để lấy vé xin truy nhập TGS (Ticket Grant Server)
Truyền thông với AS thường là gi i đoạn khởi đầu c phiên đăng nhập, nhằm lấy về d liệu ch ng thực TGT cho TGS để s u đó lấy về ch ng thực cho các máy ch khác mà không phải nhập lại khoá bí mật c a client Khoá bí mật c cli nt được s dụng cho cả việc mã hoá và giải mã
1 Người dùng U đăng nhập vào hệ thống, username và password vào máy client Bằng thuật toán hàm ăm máy client sẽ chuyển đ i mật kh u thành khoá mật (secret key) c a người dùng U S u đó Client g i yêu cầu xin cấp TGT tới AS
2 AS sẽ truy lục trong cơ sở d liệu, lấy khoá bí mật c a U, giải mã phần d liệu tiền ch ng thực, kiểm tra
có hợp lệ không Nếu có, AS g i lại 2 th ng gói tin cho người dùng U:
Gói tin A: “Khóa phiên TGS/client” Client/TGS Session Key) được mã hóa với khóa mật c a người s dụng
Gói tin B: Ticket-Granting-Ticket (TGT): ID c cli nt địa chỉ mạng c a client, thời hạn c a
vé và “Khóa phiên TGS/client” được mã hóa với khóa bí mật c a TGS
3 Khi máy client nhận được hai gói tin A và B, nó sẽ giải mã gói tin A với khóa mật đ được ăm từ password c người dùng Nếu password c người dùng nhập vào client không trùng với password trong
AS, mã mật c người dùng sẽ khác và o đó sẽ không thể giải m gói tin A Ngược lại, nếu password trùng khớp người dùng sẽ dùng khóa mật (secret key) c m nh để giải m gói tin A thu được “ hó phiên TGS/cli nt” (máy client sẽ không thể giải m được gói tin o nó được mã hóa bởi khóa mật c a TGS)
Trang 99
Giai đoạn 2: Truyền thông với máy chủ cấp vé dịch vụ TGS, lấy về service ticket truy nhập máy chủ S
4 Khi yêu cầu dịch vụ, máy client sẽ g i 2 gói tin tới Ticket Grant Server
Gói tin C: Ch a Ticket-Granting-Ticket (từ gói tin B) và ID c a dịch vụ yêu cầu
Gói tin D: Authenticator (Bộ d liệu ch ng thực) được mã hoá bằng Khóa phiên TGS/client, gồm
ID người dùng và tem thời gian Authenticator chỉ s dụng một lần và có hiệu lực trong một thời gian ngắn
5 Sau khi lấy gói tin B từ C, TGS sẽ dùng khóa mật c m nh để giải mã gói tin B, lấy ra “ hó phiên TGS/cli nt” để giải mã gói tin D( Authenticator), kiểm tra tính hợp lệ Nếu hợp lệ TGS được đảm bảo chắc chắn rằng người g i chiếc vé chính là ch nhân thực sự c a nó hi đó TGS sẽ g i 2 gói tin tới máy client:
Gói tin E: Vé Client/Server (Client-to-S rv r Tick t mà đ được mã hóa bởi khóa mật c a dịch vụ,
vé này bao gồm ID máy cli nt địa chỉ mạng c a client, thời hạn vé và “ hó phiên cli nt/s rv r” (client/server session key)
Gói tin F: “ hó phiên cli nt/s rv r” đ được mã hóa với “ hó phiên TGS/cli nt”
Trang 1010
Giai đoạn 3: Truyền thông giữa người dùng U và máy chủ S, trao đổi dữ liệu
6 Khi nhận được gói tin E và F từ TGS, máy client sẽ kết nối đến máy ch dịch vụ S (service server) và g i
2 gói tin:
Gói tin E: “Vé Cli nt/S rv r” mà được mã hóa bởi khóa mật c a dịch vụ
Gói tin G: Authenticator (Bộ ch ng thực ) mới, bao gồm ID máy client, nhãn thời gian Gói tin này được mã hóa bởi “ hó phiên Cli nt/S rv r”
7 Máy ch S sẽ dùng mã mật c a nó, giải mã E, lấy r “ hó phiên Client/Server ” ng khó này để giải
mã Authenticator và g i cho client gói tin H
Gói tin H: nhãn thời gian trong Authenticator c a client cộng với 1 Gói tin này được mã hóa với
“ hó phiên Cli nt/S rv r”
8 Máy client giải mã gói tin H bằng “ hoá phiên Cli nt/S rv r”, xác minh nhãn thời gian trong đ được cập nhật chư Nếu đ được cập nhật đ cộng 1), kết nối truyền thông sẽ được thực hiện và kể từ đ y máy ch
S sẽ bắt đầu phục vụ các yêu cầu dịch vụ từ người dùng/client
Như vậy, cả hai bên Client và Server đều được ch ng thực lẫn nhau, không xảy r trường hợp giả mạo một trong hai bên tham gia truyền thông
Trang 11thống cũng như kh ng cần phải nhớ quá nhiều mật kh u cho các dịch vụ trong hệ thống Tất cả chỉ là một tài khoản cho hết thảy các dịch vụ trong hệ thống
Hỗ trợ các nhà phát triển hệ thống: SSO cung cấp một framework ch ng thực chung cho các nhà phát triển Vì thế họ không cần phải qu n t m đến ch ng thực khi xây dựng hệ thống n coi như là các yêu cầu g i đến hệ thống đ được ch ng thực Điều này sẽ làm cho các nhà phát triển hoàn toàn yên tâm về an ninh c a hệ thống được xây dựng mà tránh được công việc nặng nhọc là xây dựng an toàn bảo mật cho hệ thống mới
Làm đơn giản hoá công tác quản trị: Theo truyền thống, m i ng dụng có cơ sở d liệu người dùng
riêng phục vụ cho cơ chế ch ng thực độc lập c a nó, nên khi các hệ thống tham gia vào mạng, số lượng người dùng sẽ tăng lên rất nhanh làm quá tải công vétác quản trị Với SSO, mọi hệ thống s dụng c ng cơ sở d liệu người dùng tập trung vì thế công tác quản trị đ được tập trung hoá, số lượng người dùng giảm đi rất nhiều
trên mạng Giảm thiểu số lần nhập mật kh u cũng có nghĩ là tăng độ an toàn cho hệ thống vì với số lượng mật kh u nhiều người ng thường ghi mật kh u ra xung quanh, dễ để lộ
Trang 1212
Tấn công ở desktop: Cũng o t nh năng SSO có khả năng kẻ địch giành được quyền truy nhập tới các tài nguyên khi người dùng c máy đó rời khỏi máy s u khi đăng nhập mà quên không khoá máy lại Hệ thống SSO chỉ bảo mật trên đường truyền mà không bảo mật cho d liệu trước khi được truyền nên mật kh u c người dùng rất có khả năng ị các chương tr nh như troj n đánh cắp, giành quyền truy nhập hệ thống
Điểm yếu trong mạng: Với đăng nhập một lần, dịch vụ ch ng thực sẽ được s dụng bởi tất cả các
ng dụng trong mạng Vì thế, dịch vụ này rất dễ bị tấn công DoS, làm tê liệt cả hệ thống
II Xây dựng thử nghiệm Kerberos
1 Môi trường Windows
Thử nghiệm chứng thực người dùng trong Active Directory của Window server 2008
Thêm role Active Directory Domain Service vào Window Server 2008
Trang 1313
Sau khi cài đặt dịch vụ xong, sẽ hiện ra thông báo nâng cấp lên domain bằng dcpromo.exe
Sau đó, tạo một domain mới trong một forest mới Chọn next để tiếp tục
Điền tên domain: TTMK53.bk.vn Chọn next để tiếp tục
Trang 1414
Tiếp theo, lựa chọn function Window Server 2008 cho forest Chọn next để tiếp tục cài đặt DNS, sau đó là thông báo đường dẫn đến các thư mục của hệ thống, tóm tắt thông tin cài đặt Sau khi cài đặt xong, sẽ hiện ra thông báo cài đặt hoàn thành
Để Window Server có khả năng chứng thực, cần download và cài đặt Windows Server 2003
Resource Kit Tools tại địa chỉ: http://www.microsoft.com/en-us/download/details.aspx?id=17657 Trong
bộ công cụ này, có sẵn 2 phần mềm dùng để chứng thực Kerberos là kerbtray và klist
Sử dụng phần mềm để chứng thực user admin: vào chế độ dòng lệnh CMD, gõ lệnh “klist tickets”
và “klist tgt” để xem thông tin ticket
Trang 1515
Xem thông tin ticket (vé) cho principal Administrator@TTMK53.BK.VN qua giao diện, thông tin gồm tên dịch vụ, thời gian tồn tại của vé, các cờ báo hiệu và loại mã hóa
Trang 1616
2 Môi trường Unix/Linux
Mô hình gồm 2 máy ảo Ubuntu trong cùng mạng LAN 192.168.1.0/24
UTino : Địa chỉ 192.168.1.11, đóng vai trò KDC, cấp phát chứng thực cho client
Ubuntu1: Địa chỉ 192.168.1.12, đóng vai trò client
2.1 Cấu hình KDC
a Cấu hình apache2 để tạo realm (tên miền)
- Cài đặt apache2: #sudo apt-get install apache2
- Các file cấu h nh và thư mục chính c Ap ch 2 được đặt tại /etc/apache2 bao gồm:
apache2.conf: tệp cấu h nh cơ ản
port.conf: tệp cấu hình port
sites- v il l : các sit đ cài đặt
sites- n l : các sit đ được kích hoạt
- Vào thư mục /etc/apache2/sites-available, trong thư mục sites-available thực hiện copy fil f ult đến file
site1, copy file default-ssl đến file site1-ssl, nhằm tạo một site riêng
#cd /etc/apache2/sites-available
#sudo cp –f default site1
#sudo cp –f default-ssl site1-ssl
- Vào thư mục /etc/apache2/sites-available, sau khi vào file site1 bằng lệnh
#sudo nano site1
cấu hình tệp sit 1 như s u: cấu hình tên miền EXAMPLE COM và thư mục ch a localhost mặc định là /var/www, ở đ y đ th y đ i thành /etc/opt/site1
Trang 1717
Từ bây giờ file localhost mặc định nằm tại đ y và có thể th y đ i thư mục in x html trong fil sit 1 như sau:
- Kích hoạt site1 vừa tạo : #sudo a2ensite site1
- Cấu hình SSL cho site1: #sudo nano site1-ssl, tại đ y đ i tên miền và thư mục ch a localhost giống file
site1
Trang 1818
- Khởi động lại server: #sudo /etc/init.d/apache2 restart
- Vào chỉnh s a file host, gõ lệnh : #sudo nano /etc/hosts
- S u đó mở trình duyệt vào địa chỉ www.example.com , nếu hiện ra nội ung như trong fil
/ tc/opt/sit 1/in x html th s rv r p ch đ cấu hình thành công cho tên miền EXAMPLE.COM
b Cấu hình bind9 để tạo dịch vụ DNS
- Cài đặt bind9 : #sudo apt-get install bind9 dnsutils
- Các file cấu hình trong /etc/bind/
n m conf: fil điều khiển
named.conf.options: file tùy chỉnh
named.conf.default-zon s: fil đăng k các zon mặc định
n m conf loc l: fil đăng k các zon khác
- Các ước cấu hình DNS
Đăng kí tên miền quản l điền 2 file dành cho zone thuận và zone nghịch
Mô tả nội dung tại file zone thuận
Mô tả nội dung tại fil zon ngược
- Đăng k tên miền quản l điền 2 file dành cho zone thuận và zon ngược: với tên miền x mpl com được đặt tại địa chỉ 192.168.1.11, vào file named.conf.local
#cd /etc/bind
#sudo nano named.conf.local