B o m t trong wcf
Download
1 / 78

BẢO MẬT TRONG WCF - PowerPoint PPT Presentation


  • 242 Views
  • Uploaded on

BẢO MẬT TRONG WCF. Nhóm 2: Lê Xuân Mạnh Nguyễn Xuân Kỳ Trạc Minh Thắng Trần Minh Hùng. Nội dung chính. Tổng quan về WCF Security Một số lỗi bảo mật Khắc phục lỗ hổng bảo mật trong WCF Các đặc trưng cơ bản của Sercurity WCF Các bước thực hiện trong lập trình Cấu hình một số ví dụ

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' BẢO MẬT TRONG WCF ' - bian


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
B o m t trong wcf

BẢO MẬT TRONG WCF

Nhóm 2:

Lê Xuân Mạnh

Nguyễn Xuân Kỳ

Trạc Minh Thắng

Trần Minh Hùng


N i dung ch nh
Nội dung chính

  • Tổng quan về WCF Security

    • Một số lỗi bảo mật

    • Khắc phục lỗ hổng bảo mật trong WCF

    • Các đặc trưng cơ bản của Sercurity WCF

  • Các bước thực hiện trong lập trình

  • Cấu hình một số ví dụ

    • Cấu hình Audit &Loging, Tracing

    • Cấu hình netTCPBinding in Messenge security mode

    • Cài đặt và sử dụng Certificate in Security Messege mode


1 m t s l i b o m t th ng g p
1.Một số lỗi bảo mật thường gặp

Phần I. TỔNG QUAN VỀ WCF SECCURITY

  • Quan sát các bản tin trên mạng để lấy ra các thông tin nhạy cảm. Ví dụ ở máy client thực hiện login vào một hệ thống sử dụng chế độ gửi tên tài khoản và mật khẩu dạng text không mã hoá. Hacker hoàn toàn có thể bắt được bản tin đó và trích ra thông tin về tài khoảncùng với mật khẩu.

  • Đóng giả một dịch vụ mà client không hề biết. Việc này cũng tương tự như web phishing, nghĩa là làm giả một trang web giống như trang web mà người dùng quen thuộc (như trang web yahoo hay trang web ngân hàng). Người dùng sẽ nhập thông tin về tài khoản cùng với mật khẩu đề đăng nhập vào trang giả đó. Khi đó hacker sẽ có được các thông tin này.

  • Thay đổi nội dung bản tin. Hacker hoàn toàn có thể thay đổi nội dung của một bản tin mà client lẫn dịch vụ không biết.


2 kh c ph c trong wcf
2. Khắc phục trong WCF

Việc đảm bảo bảo mật cho các bản tin trao đổi giữa client với dịch vụ WCF cần phải chú trọng ở những điểm sau:

  • Xác thực điểm cuối dịch vụ

  • Xác thực client

  • Tính nhất quán của bản tin

  • Tính bảo mật của bản tin

  • Phát hiện replay (hiện tượng lặp lại yêu cầu của client hoặc dịch vụ mà thực chất client/dịch vụ không đưa ra)


3 wcf t ch h p c c h nh th c b o m t c s n
3.WCF tích hợp các hình thức bảo mật có sẵn

  • WCF hoàn toàn có thể làm việc với các giải pháp bảo mật có sẵn như Secure Sockets Layer (SSL) ,giao thức Kerbeos.

  • Ngoài ra nó cũng có thể làm việc với kiến trúc bảo mật đang sử dụng như domain trên Windows sử dụng Active Directory.

  • WCF còn tích hợp với các mô hình bảo mật sẵn có ở tầng vận chuyển và có thể chuyển hạ tầng sẵn có sang các mô hình mới hơn dựa trên bảo mật các bản tin SOAP.


4 t ch h p c c m h nh x c th c c s n
4.Tích hợp các mô hình xác thực có sẵn

Bất kỳ mô hình bảo mật nào cũng phải xác thực các thực thể trong quá trình trao đổi dữ liệu. Các thực thể trong quá trình này sử dụng các “định danh điện tử”, hay còn gọi là credentials.

Các phương pháp để xác thực chúng với đối tượng đang trao đổi như:

  • Username client credential

  • Certificate client credential

  • Windows (Kerberos và NT LanMan – NTML)


5 kh n ng l m vi c li n m i tr ng
5. Khả năng làm việc liên môi trường

Bảo mật cũng cần phải làm việc liên môi trường

để thực hiện các hệ thống bảo mật.

Các công ty sử dụng dịch vụ Web với một loạt các chuẩn khác nhau như:

WS-Security, SOAP Message Security, WS-Trust, WS-SecureConversation, và WS-SecurityPolicy.

Với các dịch vụ WCF ta có thể sử dụng WSHttpBinding để hỗ trợ WS-Security 1.1 và WS-SecureConversation.


6 c c l nh v c b o m t trong wcf
6. Các lĩnh vực bảo mật trong WCF

Bảo mật trong WCF chia ra thành ba vùng chức năng:

  • Transfer security (bảo mật truyền thông)

  • Access control (điều khiển truy nhập)

  • Auditing (ghi vết).


Tranfer security
Tranfer Security

Bảo mật truyền thông bao gồm ba chức năng chính: sự nhất quán, sự bảo mật, và sự xác thực.

  • Sự nhất quán là khả năng phát hiện liệu bản tin có bị thay đổi hay không.

  • Sự bảo mật là khả năng giữ cho bản tin không đọc được bởi những người không đủ thẩm quyềnnhờ vào cryptography (mã mật – mật mã).

  • Sự xác thực là khả năng xác minh được một định danh có thực đúng hay không.

  • Kết hợp ba chức năng này cho ta đảm bảo rằng các bản tin được gửi đi một cách an toàn, đến đúng nơi cần đến.


Tranfer security1
Tranfer Security

Có hai phương pháp chính dùng để thực hiện bảo mật truyền thông trong WCF là chế độ bảo mật ở tầng vận chuyển (transport security mode) và chế độ bảo mật ở bản tin (message security mode)


Transport security mode sử dụng các giao thức ở tầng vận chuyển như HTTPS để đảm bảo bảo mật. Chế độ này có ưu điểm là được sử dụng rất nhiều ở các nền tảng khác nhauvà độ phức tạp tính toán ít hơn.

Tuy vậy nhược điểm là chỉ đảm bảo bảo mật các bản tin từ điểm-tới-điểm và chậm hơn so với chế Message security mode sử dụng chuẩn WS-Security, không phụ thuộc vào giao thức vận chuyển, dễ mở rộng, đảm bảo bảo mật từ đầu cuối-tới-đầu cuối (thay vì điểm-tới-điểm).


  • Messenger Security: WSHttpBinding,WS2007HttpBinding, WSDualHttpBinding, WSFederationBinding và WS2007FederationBinding.Transport Security:

  • NetTcpBinding, NetNamedPipesBinding, NetMsmqBinding, NePeerBinding và MsmqIntegrationBinding.


I u khi n truy c p authorization
Điều khiển truy cập(Authorization)

Authorization cho phép những người dùng khác nhau có các quyền khác nhau để xem dữ liệu.

Trong WCF, các tính năng điều khiển truy nhập được cung cấp dựa vào sự tích hợp với CLR (common language runtime) thông qua lớp thuộc tính PrincipalPermissionAttribute và qua một loạt các hàm API.


L u v t auditing
Lưu vết(Auditing)

  • Auditing là quá trình ghi lại các sự kiện bảo mật vào hệ thống log của hệ điều hành Windows (Windows event log) như các sự kiện có liên quan tới bảo mật, xác thực lỗi hay thành công


Authentication v authorization
Authentication và Authorization

  • Authorization trước tiên cần phải Authentication. Để làm điều đó, bạn phải có khả năng xác định client.

  • Client có thể xác định bằng cách cung cấp bằng chứng như là một tài khoản Windows, tên người dùng+ mật khẩu hoặc giấy chứng nhận.

  • Client cũng phải biết rằng họ đang kêu gọi các service mà họ dự định sẽ gọi. Service có thể xác định mình bằng cách cung cấp một giấy chứng nhận.


Authentication v authorization1
Authentication và Authorization

Authenticate cho phép bạn xác định client và service bằng cách gởi các thông tin. WCF hỗ trợ các loại ủy nhiệm sau khi bạn đang sử dụng transport Security mode:    * Windows. Client sử dụng một mã thông báo Windows đại diện danh tính của người dùng Windows. Services sử dụng các thông tin quan trọng hoặc giấy chứng nhận một SSL được ủy quyền.     * Basic. Clientsử dụng tên người dùng và mật khẩu. Services sử dụng một giấy chứng nhận SSL. Tùy chọn này chỉ có sẵn với các giao thức HTTP.    * Certificate:Client sử dụng giấy chứng nhận X.509 và services sử dụng chứng chỉ hoặc giấy chứng nhận SSL.    * NTLM: Dịch vụ này sử dụng một giấy chứng nhận SSL. Tùy chọn này chỉ có sẵn với các giao thức HTTP.    * None. Các dịch vụ không xác thực Client.


  • WCF hỗ trợ các loại ủy nhiệm sau khi bạn đang sử dụng mức độ bảo mật tin nhắn:    * Windows. Client sử dụng một mã thông báo đại diện người dùng Windows. Services sử dụng các thông tin quan trọng của quá trình nhận dạng hoặc giấy chứng nhận một SSL.     * UserName: Clientchuyển tên người dùng và mật khẩu tới services.    * Certificate:Client sử dụng một giấy chứng nhận X.509 và dịch vụ sử dụng một trong hai chứng chỉ hoặc giấy chứng nhận một SSL.    * IssueToken: Client và Service sử dụng dịch vụ Secure Token.     * None: Các dịch vụ không xác thực của khách hàng.


  • WCF hỗ trợ ba phương pháp tiếp cận cơ bản để ủy quyền:    * Role-based: Truy cập vào dịch vụ và hoạt động của dịch vụ dựa trên vai trò của người dùng.     * Identity based: Truy cập dựa trên yêu cầu thực hiện trong vòng các thông tin của người dùng. Cách tiếp cận này thường sẽ được sử dụng với vấn đề xác thực token.    * Resource based: Tài nguyên, chẳng hạn như các dịch vụ WCF, được đảm bảo bằng cách sử dụng Windows Access Control Lists (ACL).



Đặt chế độ bảo mật để ủy quyền:

Bước 1: Chọn một trong các binding phù hợp với các yêu cầu của ứng dụng.

Bước 2: Chọn một trong các chế độ bảo mật cho binding đã chọn

Bước 3: Cấu hình cho host một chứng nhận SSL và cho phép SSL hoạt động ở một cổng nào đó


V d c u h nh b o m t trong wcf
Ví dụ: cấu hình bảo mật trong WCF để ủy quyền:

Đặt chế độ bảo mật


Thi t l p c c gi tr credentials cho service
Thiết lập các giá trị credentials cho Service để ủy quyền:

  • Sau khi đã chọn kiểu xác thực client, bạn cần phải thiết lập giá trị credential thực cho dịch vụ.

  • Ở phía dịch vụ, các credential được thiết lập sử dụng lớp ServiceCredentials và được trả về từ thuộc tính Credentials của lớp ServiceHostBase.


NetTcpBinding b = new NetTcpBinding(); để ủy quyền:

b.Security.Mode = SecurityMode.Message;

Uri baseUri = new Uri("net.tcp://MachineName/tcpBase");

Uri[] baseAddresses = new Uri[] { baseUri };

ServiceHost sh = new ServiceHost(typeof(Calculator), baseAddresses);

Type c = typeof(ICalculator);

sh.AddServiceEndpoint(c, b, "MyEndpoint");

sh.Credentials.ServiceCertificate.SetCertificate(

StoreLocation.LocalMachine, StoreName.My,

X509FindType.FindBySubjectName, "client.com");

sh.Open();


Thi t l p c c gi tr credentials cho client
Thiết lập các giá trị credentials cho client để ủy quyền:

Ở phía client, các giá trị credentials được thiết lập thông quá lớp ClientCredentials và được trả về qua thuộc tính ClientCredentials của lớp ClientBase.


NetTcpBinding b = new NetTcpBinding(); để ủy quyền:

b.Security.Mode = SecurityMode.Message;

b.Security.Message.ClientCredentialType = MessageCredentialType.Windows;

Type c = typeof(ICalculator);

Uri tcpBaseAddress =

new Uri("net.tcp://machineName.Domain.Contoso.com:8036/serviceName");

Uri[] baseAddresses = new Uri[] { tcpBaseAddress };

ServiceHost sh = new ServiceHost(typeof(CalculatorClient), baseAddresses);

sh.AddServiceEndpoint(c, b, "");

sh.Open();


Ph n iii c u h nh
Phần III: Cấu hình để ủy quyền:


V d 1 k thu t audit and log security s ki n
Ví dụ 1: Kỹ thuật Audit and Log Security sự kiện

Mục đích:

  • Giới thiệu cách kiểm soát việc đăng nhập bảo mật các sự kiện.

  • Cách cấu hình một dịch vụ WCF với  Auditing, Message Logging, and Tracing.

  • Cách sử dụng công cụ SvcTraceViewer để xem các tập tin đăng nhập.


1. Trong MS Visual studio 2008, click File ‐> New Web Site. Chọn WCF Service, Location thiết lập là Http và đường dẫn ảo giống như http://localhost/WCFTestService). 


2. Thiết lập trong Configuration Editor như sau: click File ‐> New Web Site.  Chọn "ServiceBehavior“ node.Trong ServiceBehavior section, click Add.  Chọn serviceSecurityAudit/Add.


Trong serviceSecurityAudit option. Thiết lập  giá trị: AudtiLogLocation bằng Application, MessageAuthenticationAuditLevel bằng SuccessOrFailure vàServiceAuthorizationAuditLevel attribute to SuccessOrFailure


K t qu
Kết quả trị: AudtiLogLocation bằng Application, MessageAuthenticationAuditLevel bằng SuccessOrFailure và


B t ch c n ng logging and tracing for cho wcf service
Bật chức năng  Logging and Tracing for cho WCF Service

Bước 1: Cấu hình Logging:Trong Configuration Editor


Chọn the Diagnostics node. click Enable MessageLogging. Nó sẽ tạo một  ServiceModelMessageLoggingListener và System.ServiceModel.MessageLogging  nodes dưới Listeners and Sources folders.


Ch n messagelogging d i diagnostics node thi t l p logmessagesatservicelevel true
Chọn MessageLogging dưới Diagnostics node.  sẽ tạo một  ServiceModelMessageLoggingListener và System.ServiceModel.MessageLogging  nodes dưới Listeners and Sources Thiết lập LogMessagesAtServiceLevel = True


Chọn ServiceModelMessageLoggingListener dưới Listeners node.Chú ý giá trị mặc định của InitData  là c:\inetpub\wwwroot\WCFService\web_messages.svclog,  nơi các message sẽ được  logged.


B c 2 c u h nh tracing
Bước 2: Cấu hình Tracing  Listeners node.Chú ý giá trị mặc định của InitData  là c:\inetpub\wwwroot\WCFService\web_messages.svclog,  nơi các message sẽ được  logged.

Trong  Configuration Editor, chọn the Diagnostics node. 


Ở panel bên phải, click Enable Tracing. Nó sẽ tạo một  ServiceModelTraceListener và System.ServiceModel nodes dưới Listeners và Sources folders.


Chọn ServiceMode TraceListener  dưới  Listeners node.   Giá trị mặc định của  InitData sẽ lưu các messenger sẽ được tracingTrong c:\inetpub\wwwroot\WCFService\web_tracelog.svclog


K t qu1
Kết quả  dưới  Listeners node.   


Bước 4   dưới  Listeners node.   

– Tạo một Windows Forms Test Client Application

Step 5

 – Tham chiếu dịch vụ WCF Service Reference tới Client 

Đặt URL tới WCF service của bạn (ví dụ như: 

http://localhost/WCFTestService/Service.svc) và click Go.

Trong Web reference name, thay đổi ServiceReference1 thành WCFTestService.  

Bước 6 – Kiểm tra Client and WCF Service                   


Bước 7: Xác minh các sự kiện dịch vụ  dưới  Listeners node.   

Start / Run.Trongcommand line,  gõ eventvwr để mở Event Viewer window. 


Ch n application node ch servicemodel audit 3 0 0 0
Chọn Application node, chú ý ServiceModel Audit 3.0.0.0.  


Mở event với ServiceAuthorization.Bạn sẽ thấy thông tin message nếu service có authorizes một client như sau:


Bước 8: Tìm các File Log Sử dụng SvcTraceViewer thấy thông tin message nếu service có authorizes một client như sau:Vào: C:\Program Files\MicrosoftSDKs\Windows\v6.0\Bin.   Mở SvcTraceViewe.exe tool. click File, click Open, và browse tới location của message log file.  


V d 2 c u h nh nettcpbinding v i windows authentication v message security mode
Ví dụ 2. Cấu hình netTcpBinding với Windows Authentication và Message Security mode

Mục đích:

Giới thiệu cách sử dụng netTcpBinding với Windows Authentication ở chế độ bảo mật Message.

NetTcpBinding được sử dụng để giao tiếp với client trong mạng nội bộ. Mạng nội bộ mặc định là sử dụng chế độ bảo mật transport với các chứng thực windows. Điều nàycho bạn thấy là làm thế nào để cấu hình các dịch vụ sử dụng message thay vì transport.


Trong visual studio tr n file menu click new sau click project ch n windows service v g t n d n
Trong Visual Studio, trên File menu, click New , sau đó click Project. - Chọn Windows Service, và gõ tên dự án.


- Trong chế độ designer view of ProjectInstaller.cs, right-click serviceProcessInstaller1 chọn click Properties. - Thiết lập thuộc tính Account= NetworkService.


Th m wcf service thi t l p name l myservice cs
Thêm WCF Service. Thiết lập Name là myService.cs right-click serviceProcessInstaller1 chọn click Properties.


C u h nh l i dowork
Cấu hình lại Dowork() right-click serviceProcessInstaller1 chọn click Properties.


Và các hàm Onstart(), OnStop() right-click serviceProcessInstaller1 chọn click Properties.

using System.ServiceModel;

internal static ServiceHost myServiceHost = null;

protected override void OnStart(string[] args)

{

if (myServiceHost != null)

{

myServiceHost.Close();

}

myServiceHost = new ServiceHost(typeof(MyService));

myServiceHost.Open();

}

protected override void OnStop()

{

if (myServiceHost != null)

{

myServiceHost.Close();

myServiceHost = null;

}

}


Cấu hình WCF Service sử dụng netTcpBinding với chế độ Message Security Trong Host node, thiết lập lại Base address thành: net.tcp://localhost:8523/WCFTestService.


Endpoint1 thi t l p binding nettcpbinding enpoint 2 thi t l p binding mextcpbinding
Endpoint1 thiết lập Binding=netTCPBinding chế độ Message Security Enpoint 2 thiết lập Binding=mexTCPBinding


Chọn Bindings node và click NewBinding Configuration. Trong New Binding dialog box, select netTcpBinding và click OK. Click Security tab, thiết lập Mode =Message. MessageClientCredentials =Windows.




Chọn Advanced node sau đó chọn Service Behaviors node. Trong WCFHostService.MyServiceBehavior node chọn serviceMetadata node.Thiết lập HttpGetEnabled=False.


Step 6 – Install the Windows Service Rebuild solution và mở Visual Studio command prompt. Tìm đến directory của project nơi WCFServiceHost.exe được chứa. Trong command line, gõ Installutil WCFServiceHost.exeNếu không thành công gõ gõ Installutil /u WCFServiceHost.exe





Ch y ng d ng
Chạy ứng dụng Application


V d 3 t o v c i t certificates trong ch message security
Ví dụ 3. ApplicationTạo và cài đặt Certificatestrong chế độMessage Security

Giúp bạn tạo và cài đặt Certificatestạm thời sẽ được sử dụng trong quá trình phát triển và thử nghiệm các dịch vụ WCFthực hiện bảo mật tin nhắn

Mở Visual Studio command prompt và browse tới location nơi bạn muốn lưu certificate files. Gõ: 

makecert ‐n "CN=RootCATest" ‐r ‐sv RootCATest.pvk RootCATest.cer 




B c 2 t o m t t p tin thu h i danh s ch certificate crl t root certificate
Bước 2 - Tạo một tập tin Thu hồi danh sách Certificate(CRL) từ Root Certificate

Mở Visual Studio command prompt và browse tới location nơi bạn muốn lưu CRL file cho the root certificate. 

Run the following command to create the CRL file. 

makecert ‐crl ‐n "CN=RootCATest" ‐r ‐sv RootCATest.pvk RootCATest.crl 


B c 3 install root certificate authority certificate tr n server and client
Bước 3:  Install Root Certificate Authority Certificate trên Server and Client 

Lặp lại các bước sau trên cả client và server: 

Copy the RootCATest.cer file tới client and server 

Click Start and then click Run.   

Trong command line, gõ MMC và click OK. 


Vào File click Add/Remove Snap‐in.    Install Root Certificate Authority Certificate Khi Add Remove Snap dialog box mở ra, click Add.Trong Add Stanadalone Snap- in chọn Certificate 


Ch n ch computer account certificate c n t o v i t t c ng i d ng next v click ok
Chọn chế độ Computer Account để certificate cần tạo với tất cả người dùng./ Next và click OK


Dưới Trusted Root Certification Authorities, right‐click Dưới Trusted Root Certification Authorities, right‐click 

Certificates subfolder, chọn All Tasks, và sau đó chọn Import. 


Xuất hiện Certificate Import Wizard welcome screen, click Next. Trên File to Import screen, click Browse tới location chứa signed Root Certificate Authority RootCATest.cer và click Open.


Sau click next
Sau đó click Next.  hiện Certificate Import Wizard welcome screen, click Next. 


C i t certificate revocation list file tr n server and client machines
 Cài đặt Certificate Revocation List File hiện Certificate Import Wizard welcome screen, click Next.  trên Server and Client Machines 

Copy file RootCATest.crl file các máy client và server

Click Start and then click Run. 

Trong command line gõ mmc/ok

Các bước cài đặt như đối với Certificate Authority Certificate ở các bước trước. 


T o v c i t temporary service certificate
 Tạo và cài đặt Temporary Service Certificate  hiện Certificate Import Wizard welcome screen, click Next. 

Mở Visual Studio command prompt và browse tới location nơi lưu root CA certificate và private key file created. Gõ:

makecert ‐sk MyKeyName ‐iv RootCATest.pvk ‐n "CN=tempCert" ‐ic RootCATest.cer ‐sr localmachine ‐ss my ‐sky exchange ‐pe

Gõ lại mật khẩu đã đặt 


Nh n d ng temporary certificate s private key
Nhận dạng Temporary Certificate’s Private Key hiện Certificate Import Wizard welcome screen, click Next. 

Mở Visual Studio command prompt. Chạy lệnh sau:   

FindPrivateKey.exe My LocalMachine ‐n "CN=tempCert" 


Chú ý nếu FindPrivateKey không có trên máy, download FindPrivateKey tool tạihttp://www.microsoft.com/downloads/details.aspx?FamilyId=2611A6FF‐FD2D‐4F5B‐A672‐C002F1C09CCD&displaylang=en 


FindPrivateKey trả lại private key của certificate, như 

 "C:\Documents and Settings\All Users\Application 

Data\Microsoft\Crypto\RSA\Machinekeys\4d657b73466481beba7b0e1b5781db81_c225a308‐d2ad‐4e58‐91a8‐6e87f354b030".

Chạy lệnh sau để gán quyền truy cập vào WCF service.

cacls.exe "C:\Documents and Settings\All Users\Application 

Data\Microsoft\Crypto\RSA\Machinekeys\4d657b73466481beba7b0e1b5781db81_c225a308‐

d2ad‐4e58‐91a8‐6e87f354b030" /E /G "NT AUTHORITY\NETWORK SERVICE":R  

Chạy các lệnh sau đây để xác minh quyền của khóa này

cacls.exe "C:\Documents and Settings\All Users\ApplicationData\Microsoft\Crypto\RSA\Machinekeys\4d657b73466481beba7b0e1b5781db81_c225a308‐d2ad‐4e58‐91a8‐6e87f354b030"  


Th ng tin certificate trong iis
Thông tin certificate trong IIS lại private key của certificate, như 


Q&A lại private key của certificate, như 


ad