PDA

View Full Version : Web- tấn công và phòng chống!!!



lamvantu
06-09-2011, 07:22 PM
Sinh viên thực tập: HOÀNG MINH TUẤN
Chương 1: Nguyên lý hoạt động cơ bản của web

Một số thông tin về web.

Theo thống kê báo cáo vào năm 2000 của Censoreware Project, hệ thống web toàn cầu co khoảng:


2 700 000 000 trang
50 700 000 000 000 bytes text
608 000 000 hình ảnh
10 100 000 000 000 bytes ảnh
Và cứ mỗi 24 giờ, hệ thống web lại có thêm
5 490 000 trang mới
103 000 000 000 bytes text mới
1 240 000 ảnh mới
20 600 000 000 bytes ảnh mới

Dựa vào các số liệu trên, có thể dễ dàng nhận thấy web phát triển lên từng ngày vì những lợi ích và tiện dụng của nó.
Vậy web hoạt động dựa trên nguyên tắc nào?


Nguyên tắc hoạt động của máy chủ web

Giả sử có một người quen nói với bạn: “Tôi vừa đọc một bài viết rất hay! Bạn hãy đánh vào địa chỉ sau và xem thử nhé, địa chỉ trang web này là http://computer.howstuffworks.com/web-server.htm. Khi bạn gõ dòng địa chỉ đó vào trình duyệt web và ấn Enter, trang web sẽ hiển thị trên màn hình của bạn.
Làm thế nào mà trang web có thể hiển thị được như vậy? Cơ chế hoạt động của máy chủ web là gì?
Các bước cơ bản trong tiến trình truyền tải trang web đến màn hình của bạn được thể hiện theo mô hình sau:
http://img685.imageshack.us/img685/3188/image002d.gif (http://img685.imageshack.us/i/image002d.gif/)
Hình 1.1 Các tiến trình cơ bản của hoạt động web

Theo mô hình trên, trình duyệt web (bên trái) thực hiện một kết nối tới máy chủ web (bên phải), yêu cầu một trang web và nhận lại nó. Sau đây, là thứ tự từng bước cơ bản xảy đến đằng sau màn hình của bạn:
Trình duyệt web tách địa chỉ website làm 3 phần:

Tên giao thức: “http”
Tên miền của máy chủ web: “www.howstuffworks.com”
Tên tệp HTML: “web-server.htm”

Trình duyệt liên hệ với máy chủ tên miền (DNS Server) để chuyển đổi tên miền “www.howstuffworks.com” ra địa chỉ tương ứng. Sau đó, trình duyệt sẽ gửi tiếp một kết nối tới máy chủ của website có địa chỉ IP này qua cổng 80. Dựa trên giao thức HTTP, trình duyệt gửi yêu cầu GET đến máy chủ, yêu cầu tệp HTML “web-server.htm”. (Chú ý: một cookies cũng sẽ được gửi kèm theo từ trình duyệt web đến máy chủ).
Tiếp đến, máy chủ sẽ gửi một file văn bản có các thẻ HTML đến trình duyệt web của bạn (một cookies khác cũng được gửi kèm theo từ máy chủ tới trình duyệt web, cookies này được ghi trên đầu trang của mỗi trang web).
Trình duyệt web đọc các thẻ HTML để xác lập định dạng (hình thức trình bày) trang web và kết xuất nội dung trang ra màn hình của bạn.
Trong giao thức HTTP nguyên bản, bạn cần cung cấp đầy đủ đường dẫn của tên tệp, ví dụ như “/” hoặc “/tên tệp.htm”. Sau đó, giao thức sẽ tự điều chỉnh để có thể đưa ra một địa chỉ URL đầy đủ. Điều này cho phép các công ty kinh doanh dịch vụ lưu trữ có thể lưu trữ nhiều tên miền ảo (virtual domains), có nghĩa nhiều tên miền cùng tồn tại trên một máy chủ và sử dụng cùng một địa chỉ IP duy nhất. Ví dụ, trên máy chủ của HowStuffWorks, địa chỉ IP là 209.116.69.66, nhưng nó có hàng trăm tên miền khác nhau cùng tồn tại.
Nếu phân tích kĩ hơn về từng lớp, có thể hình dung theo hình sau:
http://img508.imageshack.us/img508/5844/image005acl.jpg (http://img508.imageshack.us/i/image005acl.jpg/)
Hình 1.2. Giao tiếp phân lớp trong một hệ thống

Các hệ thống để giao tiếp được với nhau trên môi trường Internet sử dụng các phương thức chung. Mỗi phương thức vận hành tại lớp của nó trong mô hình. Hình 2 cho thấy bốn lớp được sử dụng trong một trao đổi HTTP. HTTP chính là ứng dụng.


http://img204.imageshack.us/img204/6/image006j.png (http://img204.imageshack.us/i/image006j.png/)

Hình 1.3. Hai hệ thống tiến hành trao đổi với nhau

Khi hai hệ thống giao tiếp với nhau, các protocol interface trên và dưới nhau trong từng hệ thống sẽ giao tiếp trực tiếp với nhau, và thông qua network technology để trao đổi với nhau. Đó là xét về mặt vật lý. Nếu xét về mặt logic, thì các protocol sẽ giao tiếp ngang hàng với nhau như hình 3.
Khi ứng dụng HTTP có một message để gửi, nó chuyển dần xuống các protocol layer thấp hơn cho tới khi message “ra” khỏi hệ thống. Tại mỗi layer thấp hơn, HTTP message sẽ được đóng gói thêm để truyền đi. Hình 4 miêu tả hoạt động này.


http://img190.imageshack.us/img190/4499/image007p.png (http://img190.imageshack.us/i/image007p.png/)
Hình 1.4. HTTP message được truyền xuống các lớp dưới và ra khỏi hệ thống

Bên phía đầu nhận, khi HTTP message tới, sẽ tiến hành công đoạn bóc tách ra ở từng layer để nhận được dữ liệu.( hình 5)



http://img51.imageshack.us/img51/7216/image008i.png (http://img51.imageshack.us/i/image008i.png/)
Hình 1.5. Bên phía đầu nhận, thông tin sẽ được bóc tách từ từ thông qua các lớp cho tới khi chỉ còn là HTTP message.
Về phần phân giải một URI( Uniform Resource Identifier), có thể được phân tích như ví dụ ở hình 6


http://img828.imageshack.us/img828/8696/image009w.png (http://img828.imageshack.us/i/image009w.png/)
Hình 1.6. Ví dụ về phân tích một URI
Rất nhiều máy chủ web đưa thêm các chế độ bảo mật trong nhiều tiến trình xử lý. Ví dụ, khi truy cập vào một trang web và trình duyệt đưa ra một hộp hội thoại yêu cầu, bạn đưa vào tên truy cập và mật khẩu, lúc này trang web mà bạn truy cập đã được bảo vệ bằng mật khẩu. Máy chủ web hỗ trợ người quản lý trang web duy trì một danh sách tên và mật khẩu cho phép những người được phép truy cập vào trang web. Đối với những máy chủ chuyên nghiệp, yêu cầu mức độ bảo mật lớn hơn, chỉ cho phép những kết nối đã được mã hóa giữa máy chủ và trình duyệt, do đó những thông tin nhạy cảm như mã số thẻ tín dụng… có thể được truyền tải lên Internet.
Đó là tất cả những vấn đề cơ bản mà máy chủ Web họat động để truyền tải các trang web chuẩn hay còn gọi là trang web tĩnh. Các trang web tĩnh là những trang web không thay đổi, trừ khi người tạo ra trang web đó thay đổi lại.
1.3 Trang web động là gì?Máy tìm kiếm (Search engine), thí dụ Google, cho phép gõ vào các từ khóa trong một ô điền (form) HTML, sau đó máy tự động trả lại các trang web có chứa những từ khóa đó. Cơ sở dữ liệu của máy cho phép bạn đưa vào tên miền trong form HTML và nội dung những trang web được gửi trả lại sẽ thay đổi tùy thuộc vào tên miền mà bạn gõ vào.
Trong tất các trường hợp trên, máy chủ web không chỉ đơn giản là “tìm kiếm một tệp”. Nó thực sự là một quá trình xử lý thông tin rồi kết xuất ra trang web dựa trên các kết quả truy vấn. Trong hầu hết các trường hợp trên, máy chủ web thường sử dụng các đoạn chương trình ASP, JSP, PHP và các đoạn mã CGI scripts để giải quyết bài toán
1.4 Dịch vụ webDịch vụ web (WS: Web Service) là một phương thức tích hợp các ứng dụng trên nền web. Mỗi ứng dụng trên nền web có thể sử dụng các thành phần khác nhau để tạo thành một dịch vụ web.
Dòng tiến trình của một dịch vụ web bao gồm các bước sau:
http://img714.imageshack.us/img714/5112/image010jdx.jpg (http://img714.imageshack.us/i/image010jdx.jpg/)

Hình 1.7. Dòng tiến trình của một dịch vụ web
1. Phát hiện - Tìm kiếm các dịch vụ web thích hợp trên một Web Site UDDI.
2. Mô tả - Web Site UDDI trả lời bằng một tệp WSDL mô tả về dịch vụ web thích hợp cho ứng dụng client.
3. Tạo Proxy - Tạo ra một Proxy cục bộ cho dịch vụ từ xa. Hiện nay không có chuẩn cho việc này.
Proxy chuyển một phương tiện khởi động phương thức (method invocation) của đối tượng thành một thông báo XML và ngược lại.
4. Tạo thông báo SOAP - Tạo ra một thông báo SOAP/XML và gửi đến địa chỉ URL được xác định trong tệp WSDL.
5. Nhận cuộc gọi và diễn dịch - SOAP Listener là một bộ phận chương trình chạy trên máy chủ để thu nhận cuộc gọi và diễn dịch nó cho dịch vụ web.
6. Thực hiện - Dịch vụ Web thực hiện các chức năng của mình và trả kết quả về cho client, thông qua listener và proxy.

http://img545.imageshack.us/img545/6356/image011o.png (http://img545.imageshack.us/i/image011o.png/)
Hình 1.8. Cấu trúc công nghệ của dịch vụ web

Dịch vụ web là một thuật ngữ dễ gây nhầm lẫn và bản thân nó cần được giải thích bằng một số khái niệm của công nghệ thông tin như các chuẩn SOAP/XML, UDDI và WSDL:
UDDI là một chuẩn qui định loại Web Site đặc biệt chuyên cung cấp thông tin về vị trí của các dịch vụ web có trên mạng.
WSDL là một ngôn ngữ chuẩn cho phép mô tả tính năng của các dịch vụ web.
SOAP (Simple Object Access Protocol) là một giao thức chuẩn trao đổi thông tin giữa các dịch vụ web.
XML là chuẩn ngôn ngữ đánh dấu siêu văn bản có thể mở rộng với những sơ đồ mô tả tài liệu (DTD Schema).
Chính việc trao đổi thông tin giữa các dịch vụ web đòi hỏi sử dụng nhiều công nghệ phải làm việc trơn tru với nhau.
Dịch vụ web là một phương thức chuẩn để tích hợp các ứng dụng trên nền web (Web-based Applications). Các ứng dụng có thể sử dụng các thành phần khác nhau để tạo thành một dịch vụ, ví dụ như máy chủ chạy một trang web thương mại điện tử kết nối với cổng thanh toán điện tử qua một giao diện lập trình ứng dụng (API). Nếu tạo một ứng dụng web bởi công nghệ .NET của Microsoft thì thành phần trên máy chủ chính là hệ thống cung cấp trang HTML (IIS: Internet Information System), còn các thành phần thanh toán và các thành phần .NET được coi là các cấu kiện bên ngoài (component). Các thành phần này được gọi bởi phương thức SOAP (khác phương thức POST, GET thường dùng với HTML) nên không bị gặp phải tường lửa (firewall) khi truy cập các thành phần bên ngoài máy chủ. Và toàn bộ các thành phần đó gọi là một dịch vụ web.
Dịch vụ web cho phép các tổ chức thực hiện truyền thông dữ liệu mà không cần phải có kiến thức về hệ thống tin học bị che giấu ở phía sau tường lửa. Một số dịch vụ web
hiện nay có sẵn hoặc thậm chí miễn phí và càng ngày càng hướng dần vào phục vụ các cơ quan và doanh nghiệp.
Một ví dụ về các dịch vụ web sẵn có là dịch vụ được cung cấp bởi công ty PayPal cho phép những người có tài khoản tín dụng tiền điện tử thì có thể thanh toán trên mạng hoặc trả một phần hoặc thực hiện các giao dịch tìm kiếm, và lấy lại các thông tin của từng giao dịch cụ thể.
Để bảo mật trên web, người ta sử dụng và kết hợp các phương pháp như: xác thực (authentication), mã hóa (cryptography), sử dụng SSL, TSL,…
Qua các thông tin trên, có thể thấy được rằng web có vẻ rất an toàn và bảo mật, thế nhưng vẫn còn tồn tại những lỗ hổng bảo mật cực kì nguy hiểm. Vậy hiện nay, các lỗ hổng bảo mật phổ biến là gì? Và mức độ nguy hiểm, cách thức hoạt động của chúng ra sao?

hoctrongheo
07-09-2011, 10:29 AM
Chủ đề này hay nè, up đều đều tí nha bạn.

kira12a8
23-09-2011, 09:59 PM
mình cũng đang tìm hiểu về security nên rất quan tâm đến chủ đề này. Mong là bác lamvantu post bài thường xuyên hihi...