Tải bản đầy đủ (.docx) (64 trang)

Nghiên cứu và thực hành triển khai dịch vụ web server

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 (347.16 KB, 64 trang )

NGHIÊN CỨU VÀ THỰC HÀNH TRIỂN KHAI DỊCH VỤ WEB SERVER
1

Lý thuyết

1.1 Khái niệm ứng dụng web
Web Application là một ứng dụng, thường bao gồm một tập hợp các script cư trú ở
Web server và tương tác với database hay các nguồn nội dung động khác
(dynamic content). Ứng dụng này nhanh chóng được sử dụng rộng rãi vì nó cho phép nhà
cung cấp dịch vụ và khách hàng chia sẻ và vận dụng thông tin theo các độc lập nền thơng
qua cơ sở hạ tầng của Internet. Một vài ví dụ về web application như: công cụ search,
Webmail, shopping cart và portal system.
1.1.1 Kiến trúc cơ bản
Hình 1 minh họa kiến trúc của ứng dụng Web. Kiến trúc ứng dụng Web được tạo
bởi các thành phần sau :


-

Web client


-

Web server


-

Web application server



-

Database server

1.1.2 Hoạt động của ứng dụng web
Quá trình hoạt động bắt đầu với yêu cầu được tạo ra từ người dùng trên trình
duyệt, gửi qua Internet tới web server. Nếu chỉ yêu cầu nội dung tĩnh, web server sẽ tìm
kiếm và trả về ngay cho người dùng. Nếu cần nội dung động, application server truy cập
máy chủ chứa cơ sở dữ liệu để thực hiện nhiệm vụ được yêu cầu: cập nhật, truy vấn thông
tin đang nằm trong cơ sở dữ liệu. Sau đó ứng dụng Web gửi thơng tin lại cho người dùng
qua trình duyệt.

Hình 1. Kiến trúc của ứng dụng web.
1.1.3 Các vấn đề liên quan đến ứng dụng web
Các ứng dụng Web được phát triển từ nhiều nguồn khác nhau, nên các lỗ hổng, các
lỗi bảo mật cũng rất đa dạng. Tuy vậy, các ứng dụng Web chủ yếu được phát triển từ các
nguồn chính sau đây:
Sử dụng ứng dụng Web từ mã nguồn mở (thường gọi là open source nhưng không
theo dõi và cập nhật các bản vá lỗi bảo mật).


Ứng dụng web được phát triển từ những người lập trình, mà họ khơng quan tâm
nhiều hoặc thiếu kinh nghiệm trong việc bảo mật cho ứng dụng của mình. Họ khơng có
một đội ngũ chun về kiểm tra lỗi bảo mật nên trang web thường có nhiều lỗ hổng.
Phát triển ứng dụng Web từ một ứng dụng mở khác nhưng người phát triển thường
không kiểm tra lỗi bảo mật ứng dụng cũ trước khi phát triển tiếp, nên vẫn tồn tại các lỗi
bảo mật.
Ngày nay do sự phát triển bùng nổ của Internet, nên ứng dụng web được sử dụng
rất rộng rãi trong nhiều lĩnh vực như báo điện tử, các trang giao dịch trực tuyến, các trang

quảng cáo điện tử, các web thông tin của các doanh nghiệp hay chính phủ... Chính vì sự
phát triển rộng rãi này nên ứng dụng web ln bị người ta tìm cách khai thác những lỗ
hổng với những mục đích khác nhau.
1.1.4 Các thuật ngữ thường dùng


a) HTTP header

HTTP header là phần đầu (header) của thông tin mà trình khách và trình chủ gửi
cho nhau. Những thơng tin trình khách gửi cho trình chủ được gọi là HTTP requests (u
cầu) cịn trình chủ gửi cho trình khách là HTTP responses (trả lời). Thông thường, một
HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị. Một số tham số có
thể được dùng trong cả header yêu cầu và header trả lời, còn số khác thì chỉ được dùng
riêng trong từng loại.


b) Session

Session là phiên làm việc. Ở trên web, khi ta duyệt từ trang này sang trang khác,
một vấn đề đặt ra là làm sao để có thể mang thơng tin từ trang này sang trang khác được
(Ví dụ khi ta login với user A, thì khi ta sang trang x, y , z...ta vẫn còn là A). Session ra
đời để giải quyết vấn đề trên.
Lần đầu khi ta ghé thăm 1 website, website sẽ tạo cho ta 1 session với ID riêng, và
cứ thế duyệt website đó cho tới khi session hết hạn. Website có thể dùng session để lưu
một số thông tin giúp chúng ta thuận tiện hơn khi duyệt website (như ví dụ trước là lưu
trữ thơng tin người dùng hiện tại đang login vào website là ai).Việc tạo session và quyết
định khi nào session hết hạn là hoàn toàn do server quản lý.


c) Cookie


Cookies là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa server Web và
browser của người dùng. Cookie cung cấp cho server thông tin để nhận biết người dùng,
cũng như sở thích, thói quen của họ. Cookies sử dụng các biểu mẫu yêu cầu người dùng
điền vào khi họ đến thăm một Web site có hỗ trợ chúng. Khơng phải mọi browser đều có
thể hỗ trợ cookie.

Cookie là những file dữ liệu nhỏ, dưới 4K byte. Chúng được các site World Wide
Web tạo ra để truy tìm những người đã ghé thăm site và những vùng mà họ đã đi qua
trong site này. Cookie được browser của người dùng chấp nhận cho lưu trên đĩa cứng của
máy mình (máy khách). Trong những phiên truy cập sau, server Web truy cập những
thơng tin của cookie, trong đó có tên đăng nhập và password, nên người dùng khơng phải
làm thủ tục đăng nhập mỗi khi họ thăm Web site. Nhưng vấn đề là ở chỗ Web site này có
thể dùng thơng tin cá nhân của bạn để phục vụ cho mục đích quảng cáo.
Netscape Communications Corp. là hãng đầu tiên sử dụng cookie trong browser và
ngay sau đó, Microsoft cũng chấp nhận kỹ thuật này. Nhưng không phải browser nào
cũng hỗ trợ cookie, đặc biệt là những phiên bản cũ.
Nhưng rõ ràng là cookie chứa đựng trong nó những nguy cơ về bảo mật. Ví dụ,
một tay hacker ở ngân hàng có thể để một cookie trên hệ thống của hắn và sửa sao cho nó
tái tạo dữ liệu trên máy của người khác. Sau đó, anh ta có thể sử dụng dữ liệu này để truy
cập account của người kia.
Những trình duyệt mới hơn cho phép người dùng khóa các cookie hoặc xin phép
họ trước khi lưu lại cookie trên hệ thống. Một số phần mềm của các hãng thứ ba cũng
giúp quản lý cookie. Nhưng đối với người dùng, thật khó biết tại sao cookie lại có mặt
trên hệ thống của họ cũng như những cookie này chứa đựng thơng tin gì.


d) Proxy

Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặt biệt hoặc

một tập những nghi thức thực thi trên dual_homed host hoặc basion host. Những chương
trình client của người sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự
mà người sử dụng cần giao tiếp.

Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay không
đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật thay cho client
và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng như trả lời của server đến
client. Vì vậy proxy server giống cầu nối trung gian giữa server và client.


e) Firewall

Một giải pháp dùng để bảo vệ một hệ thống mạng thường được sử dụng là bức
tường lửa - Firewall (hoạt động dựa trên gói IP do đó kiểm sốt việc truy nhập của máy
người sử dụng). Nó có vai trị như là lớp rào chắn bên ngồi một hệ thống mạng. Firewall
có thể là một thiết bị định hướng (Router, một thiết bị kết nối giữa hai hay nhiều mạng và
chuyển các thông tin giữa các mạng này) hay trên một máy chủ (Server). Công việc của
chúng là ngăn chặn những người dùng không mong muốn truy cập vào mạng và cho phép
người dùng hợp lệ thực hiện việc truy xuất. Ngồi ra, nó cũng có khả năng ngăn chặn
người bên trong công ty, ngân hàng ... giao tiếp với kẻ xấu bên ngoài; chẳng hạn việc
nhân viên giao dịch với đối thủ cạnh tranh.
Firewall có thể là một phần mềm hoặc phần cứng nằm giữa 2 mạng để bảo vệ hoặc
kiểm soát liên kết giữa hai mạng đó.
1.2 Tổng quan về web server
1.2.1.1 Định nghĩa về web server
Web server là gì? Có thể hiểu theo 2 mặt phần cứng và phần mềm:
Về mặt phần cứng, một web server là một máy tính lưu trữ các file thành phần tạo
nên một website( ví dụ như HTML, images, css, và file javacript) và truyền chúng tới
người dùng cuối. Nó được kết nối đến internet và truy cập thông qua một domain giống
như mozilla.org.

Về mặt phần mềm: Chiếc máy tính cần được cài đặt những chương trình giúp điều
khiển việc truy cập các files kể trên, tối hiểu ở đây là HTTP web server. Hai phần mềm
web server phổ biến hiện nay là Apache và Nginx, ngồi ra cịn có nhiều phần mềm hỗ trợ
khác như Unicorn, IIS, Node.js... Về tổng quan, các phần mềm này phục vụ việc trao đổi
các nội dung, files của trang web thông qua giao thức HTTP. Những nội dung đó có thể
sẵn có (static) hoặc được sinh ra sau (dynamic). Tùy theo nội dung static hay dynamic mà
chúng ta cũng có phân loại static và dynamic website.


Phần lớn các Web server sử dụng cổng 80, nhưng cũng có thể thay đổi để
Webserver có thể cài đặt trên cổng không tiêu chuẩn nếu muốn "dấu" Web server như là
một Web server đa host trên một máy tính bằng việc ánh xạ mỗi server cho một cổng khác
nhau.
1.2.2 Nguyên lý hoạt động của Web Server
Khi ta gõ địa chỉ trang web “ vào trình duyệt web và nhấn
Enter, trang web hiển thị ngay trên màn hình. Các bước cơ bản trong tiến trình truyền tải
trang web đến màn hình người dùng bằng cơ chế hoạt động của Web server. Trình duyệt
web thực hiện một kết nối tới máy chủ web, 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:
Trình duyệt web tách địa chỉ website làm 3 phần:


-

Phần giao thức: (“http”)


-

Máy chủ tên miền: (www.abc.com)



-

Tên tệp: (“index.htm”)
Trình duyệt liên hệ với máy chủ tên miền để chuyển đổi tên miền "www.abc.com" ra

địa chỉ IP (Internet Protcol).
Sau đó, trình duyệt sẽ gửi tiếp một kết nối tới máy chủ có địa chỉ IP tương ứng 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
" (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 đoạn text dạng HTML đến trình duyệt web máy đã gởi yêu
cầu (cookies cũng được gửi kèm theo từ máy chủ tới trình duyệt web, cookies được ghi
trên đầu trang của mỗi trang web).
Trình duyệt web đọc các thẻ HTML, định dạng trang web và kết xuất ra màn hình.
1.2.3 Web client
WebClient là giao diện phía người dùng đầu cuối (Client), dùng để tạo ra giao diện
tương tác của người dùng đối với ứng dụng Web (User Interface).
Các cơng nghệ/ ngơn ngữ lập trình hỗ trợ cho WebClient


-

Công nghệ: PhotoShop, Flash, Silver Light (Microsoft)v.v…


-


Ngôn ngữ: html, css, javascript v.v…
Để đọc được các trang Web của ứng dụng Web trên máy người dùng phải cài các

trình duyệt (Browser), ví dụ : FireFox, IE, Chrome, Coccoc (VN) v.v….
1.3 Các giao thức sử dụng trên web server
1.3.1 Giao thức HTTP
HTTP là chữ viết tắt từ HyperText Transfer Protocol (giao thức truyền tải siêu văn
bản). Nó là giao thức cơ bản mà World Wide Web sử dụng. HTTP xác định cách các
thông điệp (các file văn bản, hình ảnh đồ hoạ, âm thanh, video, và các file multimedia
khác) được định dạng và truyền tải ra sao, và những hành động nào mà các Web server
(máy chủ Web) và các trình duyệt Web (browser) phải làm để đáp ứng các lệnh rất đa
dạng. Chẳng hạn, khi gõ một địa chỉ Web URL vào trình duyệt Web, một lệnh HTTP sẽ
được gửi tới Web server để ra lệnh và hướng dẫn nó tìm đúng trang Web được u cầu và
kéo về mở trên trình duyệt Web. Nói cách khác, HTTP là giao thức truyền tải các file từ
một Web server vào một trình duyệt Web để người dùng có thể xem một trang Web đang
hiện diện trên Internet.HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP (các
giao thức nền tảng cho Internet).

Có một tiêu chuẩn chính khác cũng điều khiển cách thức World Wide Web làm việc là
HTML (HyperText Markup Language, ngôn ngữ đánh dấu siêu văn bản), có chức năng
quản lý cách thức mà các trang Web được định dạng và hiển thị.
Người ta gọi HTTP là một giao thức “phi trạng thái” (stateless) bởi vì mỗi lệnh
đều được thực thi một cách độc lập, lệnh sau khơng biết bất cứ điều gì về các lệnh đã đến
trước mình. Đây chính là một hạn chế, khiếm khuyết của HTTP. Nó là ngun nhân chính
của tình trạng rất khó thực thi các trang Web có khả năng phản ứng thông minh đối với
lệnh mà người dùng nạp vào. Và sự hạn chế này đang được các nhà phát triển khắc phục
trong các công nghệ mới như ActiveX, Java, JavaScript và cookies.



1.3.2 Giao thức FTP
FTP là viết tắt từ File Transfer Protocol (giao thức truyền tải file) là một giao thức
dùng để tải lên (upload) các file từ một trạm làm việc (workstation) hay máy tính cá nhân
tới một FTP server hoặc tải xuống (download) các file từ một máy chủ FTP về một trạm
làm việc (hay máy tính cá nhân). Đây là cách thức đơn giản nhất để truyền tải các file
giữa các máy tính trên Internet.
FTP hiện được dùng phổ biến để upload các trang Web từ nhà thiết kế Web lên một
máy chủ host trên Internet, truyền tải các file dữ liệu qua lại giữa các máy tính trên
Internet, cũng như để tải các chương trình, các file từ các máy chủ khác về máy tính cá
nhân. Dùng giao thức FTP, bạn có thể cập nhật (xóa, đổi tên, di chuyển, copy,) các file tại
một máy chủ. Nếu dùng chức năng FTP của một ứng dụng quản lý file (như Total
Commander), bạn có thể tiến hành các tác vụ xử lý file trên máy chủ giống như ngay trên
máy tính của mình.
1.4 Các giao thức bảo mật trên web server
1.4.1 Giao thức SSL


a. Lịch sử phát triển

Hai giao thức bảo mật quan trọng lớp vận chuyển (Layer Transport) có tầm quan
trọng cao nhất đối với sự bảo mật của các trình ứng dụng trên Web: đó là hai giao thức
SSL và TLS.

Có một số khả năng để bảo vệ bằng mật mã lưu lượng dữ liệu HTTP.
Vào những năm 1990, tập đoàn CommerceNet đã đề xuất S-HTTP mà về cơ bản là
một cải tiến bảo mật của HTTP. Một phần thực thi của S-HTTP đã làm cho có sẵn cơng
cộng trong một phiên bản được chỉnh sửa của trình duyệt Mosaic NCSA mà những người
dùng phải mua (trái với trình duyệt Mo NCSA "chuẩn" có sẵn cơng cộng và miễn phí trên
Internet). Tuy nhiên, cùng thời điểm Netscape Communication đã giới thiệu SSL và một
giao thức tương ứng với phiên bản đầu tiên của Netscape Navigator. Trái với tập đoàn

CommerceNet, Netscape Communications đã khơng tính phí các khách hàng của nó về
việc thực thi giao thức bảo mật của nó. Kết quả, SSL trở thành giao thức nổi bật để cung
cấp các dịch vụ bảo mật cho lưu lượng dữ liệu HTTP 1994 và S-HTTP lặng lẽ biến mất.
Cho đến bây giờ, có ba phiên bản của SSL:
SSL 1.0: được sử dụng nội bộ chỉ bởi Netscape Communications. Nó chứa một số
khiếm khuyết nghiêm trọng và không bao giờ được tung ra bên ngoài.
SSL 2.0: được kết nhập vào Netscape Communications 1.0 đến 2.x. Nó có một số
điểm yếu liên quan đến sự hiện thân cụ thể của cuộc tấn công của đối tượng trung gian.
Trong một nỗ lực nhằm dùng sự không chắc chắn của công chúng về bảo mật của SSL,
Microsoft cũng đã giới thiệu giao thức PCT (Private Communication Technology) cạnh
tranh trong lần tung ra Internet Explorer đầu tiên của nó vào năm 1996.
Netscape Communications đã phản ứng lại sự thách thức PCT của Microsoft bằng
cách giới thiệu SSL 3.0 vốn giải quyết các vấn đề trong SSL 2.0 và thêm một số tính năng
mới. Vào thời điểm này, Microsoft nhượng bộ và đồng ý hỗ trợ SSL trong tất cả các phiên


bản phần mềm dựa vào TCP/IP của nó (mặc dù phiên bản riêng của nó vẫn hỗ trợ PCT
cho sự tương thích ngược).
Thơng số kỹ thuật mới nhất của SSL 3.0 đã được tung ra chính thức vào tháng 3
năm 1996. Nó được thực thi trong tất cả các trình duyệt chính bao gồm ví dụ Microsoft
Internet Explorer 3.0 (và các phiên bản cao hơn), Netscape Navigator 3.0 (và các phiên
bản cao hơn), và Open. SSL 3.0 đã được điều chỉnh bởi IETF TLS WG. Thực tế, thông số
kỹ thuật giao thức TLS 1.0 dẫn xuất từ SSL 3.0.


b. SSL/TLS là gì ?

SSL/TLS là một lớp (bảo mật) trung gian giữa lớp vận chuyển (Transport Layer)
và lớp ứng dụng (Application Layer), sử dụng kỹ thuật mã hóa truyền tin trên internet
bằng việc mã hóa dữ liệu truyền tin giữa máy khách và máy chủ để có thể phịng tránh

bên thứ ba nghe trộm hoặc giả mạo dữ liệu.


c. Cơ chế kỹ thuật của SSL/TLS

Khi người dùng gửi yêu cầu kết nối đến server đối tượng, server gửi SSL server
certificate có chứa [puplic key] . Ở trình duyệt của người dùng sử dụng root certificate
được cài đặt sẵn trong trình duyệt để kiểm chứng SSL server certificate. Nếu khơng có
vấn đề gì thì mã hóa khóa chung của chính nó bằng [puplic key] được gửi từ server rồi
gửi đến server. Phía server thì bằng cách giải mã bằng [secret key], lấy được khóa chung
và thực hiện truyền tin bằng cách sử dụng khóa chung này (Hình 2).
Trong đó, chú ý đến phần kiểm chứng certificate. Chứng chỉ không được các tổ
chức đáng tin cậy chứng nhận thì khơng thể xác minh bằng root certificate. Nhiều người
sử dụng Internet khi truy cập vào trang web với một trình duyệt cơ bản thì có hiển thị một
cảnh báo rằng nó khơng thể được xác thực, nên rất khó cho người dùng có thể hiển thị
màn hình kế tiếp. Do đó, máy chủ phải sử dụng SSL server certificate được xác thực bởi
một bên thứ ba đáng tin cậy.


Hình 2. Cơ chế hoạt động của giao thức SSL/TLS.


d. SSL/TLS liên quan gì tới HTTPS?

Khi thiết lập chứng chỉ SSL, chúng ta cần cấu hình nó truyền dữ liệu qua HTTPS.
2 công nghệ này đi đôi với nhau mà không thể chỉ dùng 1 trong 2.
URLs sử dụng 1 trong 2 giao thức là HTTP (Hypertext Transfer Protocol) hay
HTTPS (Hypertext Transfer Protocol Secure). Giao thức này sẽ quyết định lượng dữ liệu
được truyền đi và ghi nhận như thế nào. Có nghĩa là hễ truy cập URL, nếu truy cập từ
HTTPS thì có nghĩa là kết nối HTTP đó đang được bảo vệ bởi chứng chỉ SSL (Hình 3).


Hình 3. HTTP và HTTPS
1.4.2 Giao thức SHTTP
SHTTP là một giao thức bảo mật sử dụng để mã hoá và host các thơng tin nhạy
cảm trên web. Nó là một phần rất quan trọng trong việc bảo mật các dữ liệu như tài chính,
các thơng tin tối quan trọng. Secure HTTP được phát triển bởi Enterprise Integration
Technoloy (EIT) đưa ra năm 1995 và được tổ chức CommerceNet Project tại Silicon
Valley public ra ngoài.
SHTTP là một giao thức mở rộng từ giao thức HTTP hỗ trợ bảo mật dữ liệu trong
quá trình truyền qua World Wide Web. Khơng phải tất cả các Web Brower và các server
đều hỗ trợ S-HTTP. Một công nghệ khác cũng đảm bảo bảo mật trong quá trình truyền
qua WWW là Secure Socket Layer (SSL) được sử dụng nhiều hơn. Tuy nhiên SSL và S-


HTTP có thể rất khó thiết kế và sử dụng kết hợp chúng với nhau. Khi một SSL được thiết
lập nó sẽ giúp bảo mật thơng tin truyền giữa hai máy tính, S-HTTP được thiết lập để gửi
những đoạn messages một cách bảo mật. Cả hai giao thức đều được tổ chức Internet
Engineering Task Force (IETF) coi là chuẩn chung.
Cung cấp cho hệ thống một giải pháp bảo mật tối ưu dựa trên môi trường Web, với
HTTP, SHTTP cho phép client và server thương lượng độc lập với nhau trong: Phương
thức mã hoá, phương thức xác thực, và sử dụng chữ ký điện tử, và tích hợp nhiều phương
pháp với nhau. Nó hỗ trợ nhiều khả năng mã hố dữ liệu như: triple DES và nhiều
phương pháp khác. Sử dụng SHTTP bắt đầu bằng việc chuyển các messages với những
thông tin quan trọng cần được mã hoá, hash (băm - theo thuật tốn nào đó như DES chẳng
hạn), và các thuật tốn signature. Và nó có thể thực hiện trên các header và các nội dung
trong quá trình truyền.
SHTTP cung cấp khả dụng tồn bộ cả ba tính năng: Bảo đảm thông tin không bị lộ
(tối mật - confidentiality), xác thực (authentication), tính tồn vẹn thơng tin (Integrity)
cho một file cơ bản nào đó. Web site với tính năng bảo mật được áp dụng để truyền các
thơng tin cần tính bảo mật cao như Credit card, các thông tin các nhân, mật khẩu, tài

khoản người dùng, bảo mật các thông tin truyền trên mạng Internet cho một tổ chức.
Có hai tổ chức đưa ra là: Secure Socket Layer (SSL) từ Netcape và Secure HTTP
(S-HTTP) từ Enterprise Integration Technology. Được áp dụng trong thương mại cung
cấp tính năng bảo mật cực cao ví như Secure Electrolic Transactions (SET), cho q trình
truyền các thơng tin như MasterCard và Vista.
Sự khác biệt chính giữa SSL và SHTTP là lớp mà chúng hoạt động. SSL hoạt động
ở tầng giao vận, trong khi S-HTTP hoạt động ở tầng ứng dụng. Việc mã hóa ở tầng giao
vận cho phép SSL độc lập với ứng dụng, trong khi S-HTTP bị giới hạn ở phần mềm cụ
thể triển khai nó. Các giao thức cũng áp dụng các triết lý khác nhau đối với mã hóa, với
SSL mã hóa tồn bộ kênh truyền thơng và S-HTTP mã hóa từng tin nhắn một cách độc


×