Tải bản đầy đủ (.pdf) (26 trang)

Đồ á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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.43 MB, 26 trang )

1

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
ng dn : PSG.TS Nguyễn Linh Giang


HÀ NI 11 - 2012
2


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

3

I. Cơ sở lý thuyết
1. Cơ chế đăng nhập một lần - Single Sign On
1.1. Khái niệm
 p mt ln (Single Sign On - SSO)  kim soát truy cp, i
dùng mun truy cp vào nhiu dch v, thay vì php vi s  dch v, ngi
dùng s ch cp mt ln duy nht.


 vi


 ch
i dùng 



4

1.2. Lợi ích
Vi s tin dng c ng nhp mt ln các li ích sau:
 Tránh vi nhiu dch v.
 Tit king thi gim chi

phí.
 
 

1.3. Các mô hình Single Sign On
a. Mã đăng nhập một lần
p mt ln (One-time password token  OTP token) là mng thc mà
i mi li dùng s c cp mt password mi. Np
truyn thi dùng ch có mt password c nh và rt d tr thành nn nhân ca tn công nghe lén,
thì v có giá tr mt ln và s không tn ti lâu.
m duy nht c password rt phc tp và có th gây phin phc khi
i dùng thc hip.

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i thông tin xác thc gia nhà cung cp dch v và doanh nghip. Khi
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i dùng. Sau
p dch v s da vào thông tin chng th cung cp quyn truy cp dch v hay tài
i dùng.

c. Smart card
Mô hình Smart card (Th thông minh) s dng các thông tin chng thc cha trong th  xác thc
 s dng các loi th này cn phi có các thit b chuyên dng.

Th bo him y t ti Pháp
5

d. Kerberos
Kerberos là mt giao thc chng thc m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 ly t tên cu Cerberus canh

gác c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 dng mã hoá bí m
Mô hình này hin th 5 và có th tring Windows 
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 xác thc trong các mng máy tính hong trên nhng
ng truyc công khai t  chng thc mnh cho các ng
d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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/m bo chng thc cho c 2 chiu.
Các h u hành Windows 2000, Windows XP và Windows Server 2003 và sau này s dng mt
phiên b xác thc. H  dng Kerberos
trong các phiên bn Clients và Server ca mình.


6

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i dùng, máy tính hay dch v c cung cp dch v b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/ là mt principal c

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ng da trên
mt máy ch chng thc tp trung KDC (Key Distribution Center). i khóa, cung
cp khóa (vé) cho vic chng th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 
trên ms d liu tp trung.
 Máy ch cp khoá TGS (Ticket Granting Server) cung cp vé dch v i dùng truy
nhp vào các máy ch trên mng.
  d liu (Database) 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 n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c mã hóa vi khóa bí mt ca TGS.

7


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c mã hóa bi key vi key ca TGT server Kerberos không.Nu

i cho user vé dch v mà user mun s dng.

g. Ticket
c cp bi TGS và máy ch ng dng, cung cp s chng thc cho máy ch ng dng hoc tài
nguyên. Mt vé Kerberos là mt cu trúc d lic mã hóa do KDC t share mt khóa 
ca 1 phiên duy nht. Vé to ra có 2 mn danh tính ci tham gia và khi to mt khóa
ngn h 2 bên có th giao tip an toàn (gi là khóa phiên).
ng chính mà mi vé cu có là:
 Yêu cu tên ca principal
 Tên dch v ca principal
 Khi nào thì vé có hiu lc, khi nào vé ht hiu lc (Timestamp, Lifetime)
 Danh sách IP mà vé có th c dùng t 
Mt c to b m bo rng nhi không có khóa không m
 chnh sa nó lên honh danh ca client principal . Bi vì
Kerberos ch xác thc 1 lp thì bt k ai ngu có th
tham gia vào h thng Kerberos. Vì vy, vé trong Kerberos có thi gian tn ti ngn, khong t 10-24h .
u này thun tip 1 ln trong ngày làm vic ca user, hn ch vic tn công ly mt d
liu quan trng.

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.


8

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n khu cp, nhm ly v d liu chng
th 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c s dng cho c vic mã hoá và gii mã.

1. i dùng U p vào h thng, username và password vào máy client. Bng thu
máy client s chuyi mt khu thành khoá mt (secret key) ca i dùng U. Client gi yêu
cu xin cp TGT ti AS

2. AS s truy l 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 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
ni s dng.
 Gói tin B: Ticket-Granting-Ticket (TGT): ID c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c hai gói tin A và B, nó s gii mã gói tin A vi khóa m
password ci dùng. Nu password ci dùng nhp vào client không trùng vi password trong
AS, mã mt ci dùng s  không th gic li, nu password trùng
kh i dùng s dùng khóa mt (secret key) c   gi        
. (máy client s không th gic mã hóa bi khóa mt ca TGS).
9



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 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 gii mã gói tin B, ly ra 
  gii mã gói tin D( Authenticator), kim tra tính hp l. Nu hp lm bo chc
chn ri gi chic vé chính là ch nhân thc s ca nó  gi 2 gói tin ti máy client:
 Gói tin E: Vé Client/Server (Client-to-c mã hóa bi khóa mt ca dch v,
vé này bao ga ch mng ca client, thi h
(client/server session key).
 Gói tin F: c mã hóa v
10





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c gói tin E và F t TGS, máy client s kt nn máy ch dch v S (service server) và gi
2 gói tin:
 Gói tin E: 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

7. Máy ch S s dùng mã mt ca nó, gii mã E, l Client/Server  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c mã hóa vi


8. Máy client gii mã gói tin H bng hoá phiên , xác minh nhãn thi gian trong c cp
nh. Nc cp nhng 1), kt ni truyn thông s c thc hin và k t 
S s bu phc v các yêu cu dch v t i dùng/client.
y, c hai bên Client và Server c chng thc ln nhau, không xy ng hp gi mo

mt trong hai bên tham gia truyn thông.

11


2.3. Đánh giá ƣu nhƣợc điểm
a. Ƣu điểm
Theo c m: ci dùng, ca nhà qun tr, nhà phát trin h thng, kh a
Kerberos là:
 Tăng sự tiện dụng cho người dùng: i dùng không cn php nhiu ln khi s dng h
th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n chng thc khi xây dng h thng n
các yêu cu gn h thc chng th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c xây d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 d lii dùng
riêng phc v  chng thc lp ca nó, nên khi các h thng tham gia vào mng, s
i dùng s 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 d lii dùng tp trung vì th công tác qun tr c tp trung hoá, s ng
i dùng git nhiu.

 Tăng cường bảo mật: H th chng tho mt truyn thông
trên mng. Gim thiu s ln nhp mt kh an toàn cho h thng vì vi s
ng mt khu nhing ghi mt khu ra xung quanh, d  l.

b. Nhƣợc điểm

Bt k h thng bo m chng li tt c các kiu tn công ca hacker, Kerberos
m nh

 Khó tích hợp với các hệ thống cũ: ng thì các h thng sn có trong m chng
th d lii dùng riêng. Vì th, vic tích hp h th
h SSO không tránh khi phi sa l th s
d lii dùng.

12

 Tấn công ở desktop:   c quyn truy nhp ti
i dùng ci khp mà quên không khoá máy
li. H thng SSO ch bo mng truyn mà không bo mt cho d lic khi c
truyn nên mt khu ci dùng rt có kh  p, giành
quyn truy nhp h thng.

 Điểm yếu trong mạng: V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



13


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


14

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ỉ: . 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

15

Xem thông tin ticket (vé) cho principal 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




16

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)
- t apache2: #sudo apt-get install apache2
- Các file cc chính ct ti /etc/apache2 bao gm:
 apache2.conf: tp cn
 port.conf: tp cu hình port
 sites-t
 sites-c kích hot
 
- c /etc/apache2/sites-available, tc sites-available thc hin file
site1, copy file default-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
- c /etc/apache2/sites-available, sau khi vào file site1 bng lnh
#sudo nano site1
cu hình tu hình tên mic cha localhost mnh là
/var/www,  i thành /etc/opt/site1.
17


T bây gi file localhost mnh nm t 

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 tên mic cha localhost ging file
site1

18

- Kh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

-  trình duya ch www.example.com , nu hin ra n
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
- t bind9 : #sudo apt-get install bind9 dnsutils
- Các file cu hình trong /etc/bind/
 u khin
 named.conf.options: file tùy chnh
 named.conf.default-nh
 
 
- c cu hình DNS
 kí tên min qu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c
- n qun 2 file dành cho zone thuc: vi tên mic
t ta ch 192.168.1.11, vào file named.conf.local

#cd /etc/bind
#sudo nano named.conf.local
19

Trong cu hình này, zone thun s cha trong file /etc/bind/zones/TTM-c cha trong file
/etc/bind/zones/rev.TTM-info.db


- Mô t ni dung ti file zone thun: to file zone thun ti /etc/bind/zones/TTM-info.db, c
#sudo nano /etc/bind/zones/TTM-info.db


- Mô t ni dung ti file zone c: tc ti /etc/bind/zones/rev.TTM-info.db, c
20

#sudo nano /etc/bind/zones/rev.TTM-info.db



c. Cấu hình cần thiết cho server Kerberos
- t gói krb5-kdc và krb5-admin-server
#sudo apt-get install krb5-kdc krb5-admin-server
t xong, s có thông báo hi tên Realm mnh

- To Reaml mi bng lnh: #sudo krb5_newrealm ,  có yêu cu nhp master key cho database
21


- File cu hình ca KDC nm ti /etc/krb5kdc/kdc.conf . Ta thông tin v các realm, thông tin v
ticket i gian có giá tri, lo i nu cn.




- c qun tr bi ti p ch  i dùng root trên KDC, gõ
lnh: #sudo kadmin.local , tt s lnh chsau:
i dùng: kadmin: addprinc [username]
i dùng: kadmin: delprinc [username]
Xem danh sách các principal: kadmin: listprincs

22


- n có cu hình nh, nu không h thng s không nhc KDC
trong quá trình ly vé chng thc.

- Sau khi to principal mi, có th kim tra bng câu lnh: #kinit [username]/[instance], h thng s yêu
cu nhp password ca principal. Sau khi nhp password, thông tin v TGT s c thu th
trong cache. Lnh kinit có nhiu tham s -l tùy chnh v thi hn ca vé. Ví d khi user
xin vé vi thi hn 30 phút, gõ lnh: kinit –l 30m

23

- Vi lnh klist ta s c thông tin v Ticket-Granting-Ticket (TGT) cho user



- Tin ích kdestroy  xóa khóa xác thc trong cache ca h thng b 0 vào cache, sau
 cache
Cu trúc : kdestroy [-q] [-c cache_name] [-4] [-5]
 -q : chy lnh mà không phát ting báo hiu

-c <cache_name>: xóa cache vng dnh
-4: ch xóa vé (khóa) Kerberos phiên bn 4
-5: ch xóa vé (khóa) Kerberos phiên bn 5
Hình sau minh ha vic xóa khóa xác thc cho user qua vic xóa b nh cache


- Ngoài ra, còn có tin ích kpasswd  a cho vii
password ca user



24


2.2. Cấu hình Client
- t các gói cn thi chng thc vi Kerberos Realm bng câu lnh
#sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config
- C 

-  trên client, có th xin vé chng thc vi kinit và xem thông tin vé vi klist



c chng thdatabase. N
user trong database, khi user VuNhat xin chng thc s nh
trong database.

25

III. Kết luận

 p mt li li ích to ln trong v bo mt vi
i dùng. Do hn ch s i dùng có th c các cuc tn công
nghe lén trên mng. Hin nay, có nhiu mô hình trin khai c xác thc Kerberos
ca hc vi chng thc mnh cho các ng d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m bo an toàn,
chng nghe lén hay tng (replay attack). Kerberos có th trin khai trên c môi
  án này, tuy phn trin khai th nghim vn c s
ng rng s hoàn thi na phn thc nghim trong thi gian ti.
c cy Nguyễn Linh Giang, thi ý và có nhng dn c
th  án này.



Hà nội, tháng 11 năm 2012

×