1 / 78

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. 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ụ

bian
Download Presentation

BẢO MẬT TRONG WCF

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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.

  4. 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)

  5. 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.

  6. 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)

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

  8. 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).

  9. 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.

  10. 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)

  11. Tranfer Security 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).

  12. Tranfer Security • Messenger Security: WSHttpBinding,WS2007HttpBinding, WSDualHttpBinding, WSFederationBinding và WS2007FederationBinding.Transport Security: • NetTcpBinding, NetNamedPipesBinding, NetMsmqBinding, NePeerBinding và MsmqIntegrationBinding.

  13. Đ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.

  14. 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

  15. 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.

  16. 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.

  17. 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.

  18. 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).

  19. Phần II: Lập trình bảo mật trong WCF

  20. Đặt chế độ bảo mật 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 đó

  21. Ví dụ: cấu hình bảo mật trong WCF Đặt chế độ bảo mật

  22. Thiết lập các giá trị credentials cho Service • 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.

  23. NetTcpBinding b = new NetTcpBinding(); 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();

  24. Thiết lập các giá trị credentials cho client Ở 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.

  25. NetTcpBinding b = new NetTcpBinding(); 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();

  26. Phần III: Cấu hình

  27. 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.

  28. 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). 

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

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

  31. Kết quả

  32. Bật chức năng  Logging and Tracing for cho WCF Service Bước 1: Cấu hình Logging:Trong Configuration Editor

  33. 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.

  34. Chọn MessageLogging dưới Diagnostics node. Thiết lập LogMessagesAtServiceLevel = True

  35. 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.

  36. Bước 2: Cấu hình Tracing  Trong  Configuration Editor, chọn the Diagnostics node. 

  37. Ở 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.

  38. 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

  39. Kết quả

  40. Bước 4  – 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                   

  41. Bước 7: Xác minh các sự kiện dịch vụ Start / Run.Trongcommand line,  gõ eventvwr để mở Event Viewer window. 

  42. Chọn Application node, chú ý ServiceModel Audit 3.0.0.0.  

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

  44. Bước 8: Tìm các File Log Sử dụng SvcTraceViewerVà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.  

  45. 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.

  46. Trong Visual Studio, trên File menu, click New , sau đó click Project. - Chọn Windows Service, và gõ tên dự án.

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

  48. Thêm WCF Service. Thiết lập Name là myService.cs

  49. Cấu hình lại Dowork()

  50. Và các hàm Onstart(), OnStop() 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; } }

More Related