ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

VŨ MINH HUY

NGHIÊN CỨU XÂY DỰNG HỆ THỐNG

GIÁM SÁT SỰ THAY ĐỔI NỘI DUNG WEBSITE

LUẬN VĂN THẠC SĨ

CHUYÊN NGÀNH KHOA HỌC MÁY TÍNH

THÁI NGUYÊN - 2017

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

VŨ MINH HUY

NGHIÊN CỨU XÂY DỰNG HỆ THỐNG GIÁM SÁT SỰ THAY ĐỔI NỘI

DUNG WEBSITE

LUẬN VĂN THẠC SĨ

CHUYÊN NGÀNH KHOA HỌC MÁY TÍNH

THÁI NGUYÊN - 2017

1

LỜI CẢM ƠN

Trước hết tôi xin gửi lời cảm ơn sâu sắc nhất đến thầy hướng dẫn khoa học

TS. Lê Quang Minh về những chỉ dẫn khoa học, định hướng nghiên cứu và tận

tình hướng dẫn tôi trong suốt quá trình làm luận văn.

Tôi cũng xin cảm ơn các Thầy trong Viện Công nghệ thông tin và các Thầy

Cô trong trường Đại học Công nghệ thông tin và Truyền thông – Đại học Thái

Nguyên đã quan tâm chỉ bảo và trực tiếp giảng dạy, giúp đỡ trong suốt quá trình

học tập và nghiên cứu.

Tôi xin chân thành cảm ơn lãnh đạo các phòng ban, đồng nghiệp đơn vị

công tác cũ là Chi nhánh Viettel Thái Nguyên và đơn vị công tác mới là Công ty

cổ phần VETC đã tạo điều kiện cho tôi học tập và nghiên cứu đề tài này.

Cuối cùng tôi xin cảm ơn gia đình và bạn bè, những người đã luôn ủng hộ

và động viên tôi trong suốt quá trình học tập và nghiên cứu luận văn này.

Thái Nguyên, tháng 05 năm 2017

Học viên

Vũ Minh Huy

2

LỜI CAM ĐOAN

Tôi xin cam đoan:

Những kết quả nghiên cứu được trình bày trong luận văn là hoàn toàn trung

thực của tôi, không vi phạm bất cứ điều gì trong luật sở hữu trí tuệ và pháp luật

Việt Nam. Nếu sai, tôi xin chịu hoàn toàn trách nhiệm trước pháp luật.

Thái Nguyên, tháng 05 năm 2017

Học viên

Vũ Minh Huy

3

MỤC LỤC

LỜI CẢM ƠN .......................................................................................................... 1

LỜI CAM ĐOAN .................................................................................................... 2

MỤC LỤC ............................................................................................................... 3

DANH MỤC CÁC KÝ HIỆU ................................................................................. 6

DANH MỤC HÌNH VẼ .......................................................................................... 8

LỜI MỞ ĐẦU.......................................................................................................... 9

CHƯƠNG 1: TỔNG QUAN VỀ WEBSITE VÀ MỘT SỐ VẤN ĐỀ AN NINH

............................................................................................................................... 12

1.1. Một số khái niệm cơ bản về Website ............................................................. 12

1.1.1. Khái niệm Web ........................................................................................... 12

1.1.2. Hoạt động của Web ..................................................................................... 13

1.1.3. Trình duyệt Web ......................................................................................... 13

1.1.4. Địa chỉ URL ................................................................................................ 13

1.1.5. Tên miền...................................................................................................... 14

1.1.6. Giao thức HTTP và HTTPS ........................................................................ 15

1.1.7. Web Server .................................................................................................. 16

1.1.8. Database Server ........................................................................................... 17

1.1.9. Các dịch vụ và ứng dụng trên nền Web ...................................................... 17

1.2. Thực trạng an ninh Web tại Việt Nam và trên thế giới .................................. 18

1.3. Vai trò và mục đích của việc theo dõi sự thay đổi nội dung trang web ......... 19

1.4. Một số lỗ hổng an ninh trên Website.............................................................. 20

1.5. Một số kỹ thuật tấn công Website .................................................................. 21

1.5.1. Tấn công SQL Injection .............................................................................. 21

1.5.2. Tấn công XSS (Cross Site Scripting).......................................................... 30

1.5.3. Tấn công từ chối dịch vụ DOS (Denial of Service) .................................... 34

4

1.6. Kết luận chương 1........................................................................................... 41

CHƯƠNG 2: CÁC THUẬT TOÁN GIÁM SÁT VÀ MỘT SỐ PHƯƠNG

PHÁP ĐẢM BẢO AN NINH WEBSITE .......................................................... 42

2.1. Một số phương pháp đảm bảo an ninh Website ............................................. 42

2.1.1. Đảm bảo an ninh hệ điều hành Webserver ................................................. 42

2.1.2. Đảm bảo an ninh Webserver ....................................................................... 43

2.1.3. Quản trị Webserver ..................................................................................... 47

2.1.3.1. Logging ................................................................................................... 47

2.1.3.2. Thủ tục sao lưu Webserver ..................................................................... 47

2.1.3.3. Phục hồi từ một sự làm hại an ninh ........................................................ 48

2.1.3.4. Kiểm tra bảo mật Webserver .................................................................. 48

2.1.4. Bảo đảm an ninh nội dung Web .................................................................. 49

2.1.5. Sử dụng kỹ thuật xác thực và mã hóa ......................................................... 51

2.1.5.1. Xác định các yêu cầu xác thực và mã hóa ............................................... 51

2.1.5.2. Xác thực dựa trên địa chỉ ......................................................................... 52

2.1.5.3. Xác thực cơ bản........................................................................................ 52

2.1.5.4. Xác thực Digest ........................................................................................ 53

2.1.5.5. SSL/TLS ................................................................................................... 53

2.1.6. Triển khai cơ sở hạ tầng mạng an ninh ....................................................... 55

2.1.6.1. Thành phần và cấu trúc mạng .................................................................. 55

2.1.6.2. Cấu hình phần tử mạng ............................................................................ 55

2.2. Các thuật toán giám sát ................................................................................... 56

2.2.1. Hàm băm mật mã ........................................................................................ 56

2.2.1.1. Giới thiệu hàm băm mật mã ..................................................................... 56

2.2.1.2. Tính một chiều của hàm băm ................................................................... 57

2.2.1.3. Cấu trúc hàm băm .................................................................................... 58

2.2.2. Thuật toán đối sánh chuỗi ........................................................................... 60

5

2.2.3.1. Khái niệm đối sánh chuỗi ....................................................................... 60

2.2.2.2. Phân loại thuật toán đối sánh chuỗi ......................................................... 61

2.2.3. Dấu vân tay tài liệu ..................................................................................... 61

2.2.4. Thuật toán Rabin Fingerprint ...................................................................... 62

2.2.5. Thuật toán Rabin Fingerprint cải tiến ......................................................... 64

2.3 Kết luận chương 2............................................................................................ 66

CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN RABIN FINGERPRINT CẢI

TIẾN XÂY DỰNG HỆ THỐNG GIÁM SÁT SỰ THAY ĐỔI NỘI DUNG

WEBSITE ............................................................................................................. 67

3.1 Giới thiệu ......................................................................................................... 67

3.2. Hệ thống giám sát nội dung Website .............................................................. 68

3.2.1. Hệ thống Builder ......................................................................................... 70

3.2.2. Hoạt động Multi-checker ............................................................................ 70

3.2.3. Hệ thống Recover ........................................................................................ 72

3.2.4. Hệ thống Self-watcher ................................................................................ 73

3.2.5. Hệ thống Admin .......................................................................................... 74

3.3. Hoạt động hệ thống dựa trên các phát hiện thay đổi bất thường. ................... 74

3.3.1. Tổng quan hệ thống ..................................................................................... 74

3.3.2. Kiến trúc hệ thống ....................................................................................... 75

3.4. Phân tích hoạt động của hệ thống ................................................................... 76

3.5 Cài đặt và thử nghiệm chương trình ................................................................ 79

3.5.1. Cài đặt chương trình .................................................................................... 79

3.5.2. Thử nghiệm chương trình ........................................................................... 80

3.5.3. Nhận xét kết quả .......................................................................................... 82

3.6. Kết luận chương 3........................................................................................... 83

KẾT LUẬN ........................................................................................................... 84

TÀI LIỆU THAM KHẢO ................................................................................... 85

6

DANH MỤC CÁC KÝ HIỆU

Tiếng việt Tiếng anh

1 Là một báo nhận Acknowledgment

2 Công nghệ thông tin

3 STT Kí hiệu ACK CNTT CSDL Database

4 CSS Cascading Style Sheet

5 DNS Cơ sở dữ liệu Ngôn ngữ quy định cách trình bày của các thẻ html trên trang web Hệ thống tên miền Domain name System

6 Từ chối dịch vụ Dinal of Services

7 DOS Firewall

8 Hosting

9 HTML

10 HTTP Hypertext Markup Language Hypertext Transfer Protocol

11 HTTPS

Tường lửa Nơi cung cấp dịch vụ và lưu trữ website Ngôn ngữ đánh dấu siêu văn bản Giao thức truyền siêu văn bản Kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS

12 Hyperlink Liên kết siêu văn bản 13 Hypertext Hệ thống siêu văn bản

14 ICMP

15 Giao thức thông điệp vận chuyển Internet Internet Mạng toàn cầu Internet Control Message Protocol

16 IP Địa chỉ IP

17 IPS Hệ thống chống xâm nhập

18 OSI Mô hình hệ thống mở Internet protocol Intrusion Prevention System Open Systems Interconnection

7

19 SQL Structured Query Language

20 SSL Ngôn ngữ truy vấn mang tính cấu trúc Giao thức bảo mật

21 SYN Ký tự đồng bộ hoá

22 TLS Secure Sockets Layer The Synchronous Idle Character Transport Layer Security

thức dữ liệu người 23 UDP User Datagram Protocol

24 URL Uniform Resource Locator Giao thức bảo mật Giao dùng Định vị tài nguyên thống nhất

25 Trình duyệt web Web browser

26 Web server Máy chủ phục vụ web

27 XML Ngôn ngữ Đánh dấu Mở rộng Xtensible Markup Language

28 XSS là

Là một kiểu tấn công cho phép kẻ tấn công chèn những đoạn script độc hại (thông javascript hoặc thường HTML) vào website (Cross Site Scripting)

8

DANH MỤC HÌNH VẼ

Hình 1.1. Một số Webserver thông dụng .............................................................. 17

Hình 1.2. Mô hình tấn công SQL Injection ........................................................... 21

Hình 1.3. Mô hình tấn công XXS (Cross-Site Scripting) ...................................... 33

Hình 1.4. Một mô hình tấn công từ chối dịch vụ DOS .......................................... 37

Hình 1.5. Mô hình tấn công SYNFlood Attack ..................................................... 39

Hình 2.1. SSL/TLS đặt trong Internet Protocol Stack ........................................... 55

Hình 3.1. Sơ đồ Merkel-Damgard ......................................................................... 60

Hình 3.2. Mô tả thuật toán Rabin Fingerprint ....................................................... 65

Hình 3.3. Minh hoạ cải tiến giải thuật ................................................................... 67

Hình 3.4. Sơ đồ kiến trúc hệ thống giám sát website ............................................ 71

Hình 3.5. Các thuộc tính cơ bản của tập tin .......................................................... 73

Hình 3.6. Kiến trúc hệ thống phát hiện thay đổi bất thường ................................. 77

Hình 3.7. Sơ đồ phương pháp phát hiện sự thay đổi nội dung trang web ............. 79

Hình 3.8. Giao diện chính của chương trình giám sát website ............................. 82

Hình 3.9. Chương trình giám sát website theo dõi 4 website đồng thời ............... 84

Hình 3.10. Hoạt động của chức năng Advanced Mode ......................................... 82

9

LỜI MỞ ĐẦU

Cùng với sự phát triển của công nghệ thông tin, công nghệ mạng máy tính

và sự phát triển của mạng Internet ngày càng phát triển đa dạng và phong phú. Các

dịch vụ trên mạng đã thâm nhập vào hầu hết các lĩnh vực trong đời sống xã hội.

Các thông tin trên Internet cũng đa dạng về nội dung và hình thức, trong đó có rất

nhiều thông tin cần được bảo mật cao hơn bởi tính kinh tế, tính chính xác và tính

tin cậy của nó.

Bên cạnh đó, các hình thức phá hoại mạng cũng trở nên tinh vi và phức tạp

hơn. Do đó đối với mỗi hệ thống, nhiệm vụ bảo mật được đặt ra cho người quản

trị mạng là hết sức quan trọng và cần thiết. Xuất phát từ những thực tế đó, đề tài sẽ

tìm hiểu về một số kiểu tấn công phổ biến hiện nay và cách phòng chống các loại

tấn công này.

Thông qua việc nghiên cứu một số phương pháp tấn công và cách bảo mật

các lọai tấn công này, mong muốn góp một phần nhỏ vào việc nghiên cứu và tìm

hiểu về các vấn đề phát hiện tấn công làm thay đổi nội dung các trang web đưa ra

cảnh báo sớm có ý nghĩa giúp cho việc duy trì các trang web trên hệ thống máy

chủ được ổn định.

1. Lý do chọn đề tài

Vớ i sự phát triển rất nhanh củ a các ứ ng du ̣ng trên nền Web, việc bảo mật an ninh an toàn cho các trang Web là một lĩnh vực đặc biệt quan trọng vì nó được truy cập mọi lúc mọi nơi và bất kỳ ai. Tuy vâ ̣y không phải bất kỳ nhà phát triển phần mềm Web nào cũng chú tâm đến viê ̣c bảo mật anh ninh, vì vậy nhiều ứng du ̣ng Web vẫn tồ n ta ̣i với các nguy cơ mất an ninh, an toàn, bảo mật và gây ra nhiều thiê ̣t ha ̣i khi bị tấn công. Tuy nhiên viê ̣c tìm kiếm và phát hiện ra các nguy cơ an ninh thủ công khá khó khăn trong khi đó có nhiều nguy cơ an ninh có thể phát hiện được

10

bằng các công cu ̣ tự đô ̣ng. Bên ca ̣nh đó, các loa ̣i nguy cơ an ninh không ít, và cũng có rất nhiều công cu ̣ tự động phát hiện nguy cơ bảo mật nên người phát triển phần

mềm khi muốn kiểm tra mức độ an ninh an toàn của trang web của mình cũng gặp phải nhiều khó khăn. Chính vì vậy đề tài này nghiên cứ u một số kiểu tấn công đang phổ biến hiện nay và từ đó xây dựng một hệ thống với công cu ̣ phát hiê ̣n các nguy cơ mất an ninh an toàn các trang web đồ ng thời đưa ra các cảnh báo với các nhà quản trị web để có biện pháp xử lý kịp thời.

Ngày nay việc kiểm soát an ninh mạng như tường lửa (Firewall), Mạng

riêng ảo (VPN - Virtual Private Network) là những công cụ quan trọng để giữ cho

các trang web được an toàn hơn, nhưng những công cụ này không đủ để đảm bảo

an toàn an ninh cho các trang web hiện nay. Như chúng ta biết, môi trường web là

môi trường mở, có nguy cơ lúc nào cũng có thể bị tấn công xẩy ra mất an toàn an

ninh cho trang web là rất cao. Chính vì vậy phải xây dựng một hệ thống với công

cụ phát hiện sớm những thay đổi bất thường không như mong muốn đồng thời đưa

ra những cảnh báo cho các nhà quản trị web để họ kịp thời có những giải pháp phù

hợp là rất cần thiết.

2. Mục tiêu

Mục tiêu của luận văn nghiên cứu tìm hiểu tổng quan về website, các mối

đe dọa về vấn đề an toàn thông tin khi chúng ta làm việc trên ứng dụng web hàng

ngày, hiểu rõ hơn về các kỹ thuật tấn công và bảo mật website. Từ đó có sự đánh

giá một cách tổng quan, để áp dụng các chính sách về bảo mật trang web an toàn

dữ liệu cho hệ thống. Đồng thời phát triển xây dựng phần mềm phát hiện sớm các

tấn công làm thay đổi nội dung trang web từ đó đưa ra các cảnh báo giúp cho

người quản trị web biết được có sự thay đổi bất thường và đưa ra các biện pháp

làm cho hệ thống bảo mật được tốt hơn.

11

3. Bố cục luận văn gồm

Chương 1: Tổng quan về Website và một số vấn đề an ninh.

Trong chương 1 luận văn đã nêu một số các khái niệm cơ bản về Website,

đánh giá tổng quan tình hình mất an ninh, an toàn trên nền Web. Nêu lên một số lỗ

hổng an ninh trên Web và các kỹ thuật tấn công Web.

Chương 2: Các thuật toán giám sát và một số phương pháp đảm bảo an ninh

Website.

Trong chương 2 luận văn nghiên cứu các thuật toán giám sát và phân tích

sâu một số phương pháp đảm bảo an ninh Web: đảm bảo an ninh hệ điều hành

Webserver, đảm bảo an ninh Webserver, đảm bảo an ninh nội dung Web, các cơ

chế xác thực và mã hóa, triển khai cơ sở hạ tầng mạng an ninh, quản trị

Webserver.

Chương 3: Ứng dụng thuật toán Rabin fingerprint cải tiến xây dựng hệ

thống giám sát sự thay đổi nội dung Website.

Trong chương này, dựa trên nghiên cứu lý thuyết hàm băm mật mã và thuật

toán đối sánh chuỗi, cũng như phân tích thuật toán Rabin Fingerprint và cải tiến

thuật toán Rabin Fingerprint và xây dựng hệ thống giám sát website dựa trên các

thay đổi bất thường nội dung trang web, đưa ra cảnh báo kịp thời có ý nghĩa.

12

CHƯƠNG 1

TỔNG QUAN VỀ WEBSITE VÀ MỘT SỐ VẤN ĐỀ AN NINH

1.1. Một số khái niệm cơ bản về Website

1.1.1. Khái niệm Web

World Wide Web, gọi tắt là Web hoặc WWW, mạng lưới toàn cầu là một

không gian thông tin toàn cầu mà mọi người có thể truy nhập (đọc và viết) qua các

máy tính nối với mạng Internet. Thuật ngữ này thường được hiểu nhầm là từ đồng

nghĩa với chính thuật ngữ Internet. Nhưng Web thực ra chỉ là một trong các dịch

vụ chạy trên Internet, chẳng hạn như dịch vụ thư điện tử. Web được phát minh và

đưa vào sử dụng vào khoảng năm 1990, 1991 bởi viện sĩ Viện Hàn lâm Anh Tim

Berners-Lee và Robert Cailliau (Bỉ) tại CERN, Geneva, Switzerland.

Các tài liệu trên World Wide Web được lưu trữ trong một hệ thống siêu văn

bản (hypertext), đặt tại các máy tính trong mạng Internet. Người dùng phải sử dụng

một chương trình được gọi là trình duyệt web (web browser) để xem siêu văn bản.

Chương trình này sẽ nhận thông tin (documents) tại ô địa chỉ (address) do người sử

dụng yêu cầu (thông tin trong ô địa chỉ được gọi là tên miền (domain name)), rồi

sau đó chương trình sẽ tự động gửi thông tin đến máy chủ (web server) và hiển thị

trên màn hình máy tính của người xem. Người dùng có thể theo các liên kết siêu

văn bản (hyperlink) trên mỗi trang web để nối với các tài liệu khác hoặc gửi thông

tin phản hồi theo máy chủ trong một quá trình tương tác. Hoạt động truy tìm theo

các siêu liên kết thường được gọi là duyệt Web.

Quá trình này cho phép người dùng có thể lướt các trang web để lấy thông

tin. Tuy nhiên độ chính xác và chứng thực của thông tin không được đảm bảo.

13

1.1.2. Hoạt động của Web

Thông qua trình duyệt, người dùng cuối sẽ kết nối đến máy chủ phục vụ

web bằng địa chỉ URL. Tại đây, máy chủ phục vụ web sẽ xử lý kết nối và gửi yêu

cầu đến ứng dụng web. Tùy theo yêu cầu, ứng dụng web sẽ truy vấn đến cơ sở dữ

liệu và nhận kết quả trả về, sau đó sẽ gửi phản hồi về máy chủ phục vụ web. Cuối

cùng máy chủ phục vụ web sẽ gửi dữ liệu về trình duyệt dưới dạng siêu văn bản

và người dùng cuối sẽ nhận thông tin hiển thị trên trình duyệt.

1.1.3. Trình duyệt Web

Trình duyệt web là một phần mềm ứng dụng cho phép người sử dụng xem

và tương tác với các văn bản, hình ảnh, đoạn phim, nhạc, trò chơi và các thông tin

khác ở trên một trang web của một địa chỉ web trên mạng toàn cầu hoặc mạng nội

bộ. Văn bản và hình ảnh trên một trang web có thể chứa siêu liên kết tới các trang

web khác của cùng một địa chỉ web hoặc địa chỉ web khác. Trình duyệt web cho

phép người sử dụng truy cập các thông tin trên các trang web một cách nhanh

chóng và dễ dàng thông qua các liên kết đó. Trình duyệt web đọc định dạng

HTML, CSS, XML,… để hiển thị, do vậy một trang web có thể hiển thị khác nhau

trên các trình duyệt khác nhau.

Một số trình duyệt web hiện nay cho máy tính cá nhân bao gồm Internet

Explorer, Mozilla Firefox, Safari, Opera, Avant Browser, Konqueror, Lynx,

Google Chrome, Flock, Arachne, Epiphany, K-Meleon và AOL Explorer.

1.1.4. Địa chỉ URL

Địa chỉ URL (Uniform Resource Locator) [21] được dùng để tham chiếu tới

tài nguyên trên Internet. URL mang lại khả năng siêu liên kết cho các trang mạng,

các tài nguyên khác nhau.

14

Một URL gồm các thành phần sau:

 Giao thức (ví dụ: http, ftp) nhưng cũng có thể là một cái tên khác (ví dụ:

news, mailto).

 Tên miền (ví dụ: example.com.vn, abc.vn).

 Cổng (ví dụ: 80, 8080), tuy nhiên thành phần này có thế không bắt buộc.

 Đường dẫn tuyệt đối trên máy phục vụ của tài nguyên (ví dụ:

thumuc/trang).

1.1.5. Tên miền

Mục đích chính của tên miền là để cung cấp một hình thức đại diện, hay nói

cách khác, dùng những tên dễ nhận biết, thay cho những tài nguyên Internet mà đa

số được đánh số bằng địa chỉ IP rất khó nhớ. Việc dịch từ tên miền sang địa chỉ IP

và ngược lại do hệ thống DNS trên toàn cầu thực hiện [21].

Tên miền có chiều dài tối đa 67 ký tự và chỉ bao gồm các ký tự chữ cái thông

thường và các ký tự số.

Tên miền gồm hai dạng là tên miền Quốc gia và tên miền Quốc tế.

 Tên miền Quốc gia quy định theo Quốc gia của bạn, ví dụ: Việt Nam là

.vn; Nhật Bản là .jp; Anh là .uk; Mỹ là .us ….

 Tên miền Quốc tế: được dùng khắp trên thế giới như: .com; .net; .org; .edu.

Ý nghĩa một số tên miền mở rộng thông dụng:

 .com: Dành cho các công ty thương mại.

 .net: Dành cho các công ty về mạng (network) hay cung cấp dịch vụ mạng.

 .org: Dành cho các tổ chức, nhóm.

 .gov: Dành cho các tổ chức chính phủ.

15

 .edu: Dành cho các tổ chức giáo dục, trường học.

 .biz: Dành cho các công ty thương mại trực tuyến.

1.1.6. Giao thức HTTP và HTTPS

- HTTP (Hypertext Transfer Protocol) [21], là giao thức thuộc lớp ứng dụng

trong mô hình tham chiếu OSI. Hoạt động thông thường ở cổng (port) 80 và là

giao thức hướng kết nối.

GET /page/index.php HTTP/1.1

Phương thức: GET

Tên miền: securitydaily.net

Đường dẫn: /page/index.php

Phiên bản: HTTP/1.1

- Các phương thức hoạt động của HTTP:

 GET: Phương thức lấy một đối tượng hoặc tài nguyên nào đó trên máy

chủ (server).

 POST: Phương thức mà máy trạm (Client) sử dụng để gửi thông tin đến

các Server.

 PUT: Phương thức dùng để máy trạm (Client) tải dữ liệu lên (upload)

Server.

 DELETE: Phương thức giúp Client xoá các đối tượng, tài nguyên từ các

máy chủ (server).

 HEAD: Phương thức xác minh rằng một đối tượng có tồn tại hay không.

 TRACE: Phương thức được sử dụng để gọi từ xa một lớp ứng dụng trở lại.

- HTTPS (HTTP over SSL/TLS).

16

Là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS

cho phép trao đổi thông tin một cách bảo mật trên Internet. Các kết nối HTTPS

thường được sử dụng cho các giao dịch thanh toán trên Web và cho các giao dịch

nhạy cảm trong các hệ thống thông tin, khi dữ liệu cần phải được bảo vệ an toàn.

Khi một HTTPS đượ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. Vậy, cứ thông tin nào cần bảo mật trên nền web thì có thể sử

dụng nó. Nhưng đi kèm với quá trình bảo mật có nghĩa là hệ thống phải xử lý

nhiều hơn.

1.1.7. Web Server

Web Server [22] là máy chủ cài đặt các chương trình phục vụ các ứng dụng

web. Web Server có khả năng tiếp nhận yêu cầu từ các trình duyệt web và gửi

phản hồi đến máy khách những trang web thông qua môi trường mạng Internet

qua giao thức HTTP hoặc các giao thức khác.

Một số Web Server thông dụng hiện nay:

Hình 1.1. Một số Web Server thông dụng

17

Web Application là nơi các kịch bản hay mã nguồn phát triển ra ứng dụng

web được thực thi. Lớp này sẽ biên dịch các mã nguồn tương ứng và thực hiện các

truy vấn đến cơ sở dữ liệu dựa vào mã nguồn ứng dụng.

Trong giai đoạn khởi đầu của website, có rất nhiều ngôn ngữ lập trình được

sử dụng như: JSP, ASP, PHP, ASP.NET,… Nhưng hiện tại có hai ngôn ngữ được

dùng phổ biến là PHP và ASP.NET.

1.1.8. Database Server

Cơ sở dữ liệu máy chủ (Database Server) lưu trữ tất cả các dữ liệu liên quan

đến website. Bất kỳ người sử dụng nào trên mạng máy tính, tại các thiết bị đầu

cuối, về nguyên tắc có quyền truy nhập khai thác toàn bộ hay một phần dữ liệu

theo quyền hạn hay tương tác mà không phụ thuộc vào vị trí địa lý [22].

1.1.9. Các dịch vụ và ứng dụng trên nền Web

Với công nghệ hiện nay, website không chỉ đơn giản là một trang tin

cung cấp các tin bài đơn giản. Những ứng dụng viết trên nền web không chỉ

được gọi là một phần của website nữa, giờ đây chúng được gọi là phần mềm

viết trên nền web. Có rất nhiều phần mềm chạy trên nền web như chương trình

xử lý văn bản Google word, chương trình xử lý bảng tính Google spreadsheets,

thư điện tử (Email)…

Một số ưu điểm của phần mềm hay ứng dụng chạy trên nền web:

- Mọi người đều có trình duyệt và bạn chỉ cần trình duyệt để chạy phần mềm.

- Phần mềm luôn luôn được cập nhật vì chúng chạy trên máy chủ (server)

- Luôn sẵn sàng 24/7

- Dễ dàng sao lưu (backup) dữ liệu thường xuyên

18

- Có thể truy cập mọi lúc, mọi nơi, miễn là bạn có mạng

- Chi phí triển khai cực rẻ so với phần mềm chạy trên máy tính bàn

(desktop).

Hãy hình dung bạn có một phần mềm quản lý bán hàng hay quản lý công

việc ở công ty. Không phải lúc nào bạn cũng ở công ty, với phần mềm viết trên

nền web, bạn có thể vào kiểm tra, điều hành ở bất cứ đâu, thậm chí bạn chỉ cần

một chiếc điện thoại chạy được trình duyệt như iPhone mà không cần đến một

chiếc máy tính.

1.2. Thực trạng an ninh Web tại Việt Nam và trên thế giới

Năm 2016 chứng kiến nhiều cuộc tấn công mạng nghiêm trọng trên thế giới

nhằm vào các tổ chức như Sony Pictures, Nhà Trắng, trang web Ashley Madison

và thậm chí cả FBI. Các sự cố an ninh mạng đã tăng 38% so với năm 2015, trong

khi gần một triệu các mối đe dọa từ các phần mềm độc hại mới được phát hành

mỗi ngày. Chi phí cho các cuộc tấn công mạng sử dụng mã độc tốn khoảng 300 tỷ

đến 1 nghìn tỷ đô la mỗi năm, các vụ xâm phạm dữ liệu trung bình mất 154 đô la

Mỹ cho mỗi vụ, trong khi chi phí trung bình cho một vụ xâm phạm dữ liệu mất

gần 4 triệu đô la. Những con số này cho thấy một thực trạng đáng báo động về

việc người dùng máy tính ngày càng gặp khó khăn trong việc đảm bảo an toàn khi

trực tuyến.

Điều này cũng tương tự đối với Việt Nam - thị trường an toàn thông tin

quốc gia trong năm 2016 diễn biến khá phức tạp. Tại Việt Nam, cùng với sự phát

triển mạnh mẽ ứng dụng công nghệ thông tin, các cuộc tấn công, xâm nhập trái

phép vào hệ thống mạng của các cơ quan nhà nước, các tổ chức, doanh nghiệp để

phá hoại hoặc thu thập lấy cắp thông tin ngày càng gia tăng. Theo VNCERT

19

(Trung tâm Ứng cứu khẩn cấp máy tính Việt Nam), theo Trung tâm ứng cứu khẩn

cấp máy tính Việt Nam (VNCERT) trong năm 2016, VNCERT đã ghi nhận tổng

cộng 134.375 sự cố tấn công mạng của cả 3 loại hình Phishing (lừa đảo), Malware

(mã độc) và Deface (thay đổi giao diện), tăng hơn 4,2 lần so với năm 2015. Trong

năm 2016, tại Việt Nam đã có 8935 website bị tấn công, 27937 website bị nhiễm

mã độc, 19189 website bị cài đặt phishing. Đặc biệt ngày 29/07/2016 xảy ra vụ tấn

công mạng vào hệ thống máy chủ của Vietnam Airline thay đổi nội dung và giao

diện trang chủ Vietnam Airline và lấy đi dữ liệu của hơn 400.000 tài khoản của

những hội viên Vietnam Airlines, trong đó có đầy đủ thông tin như: ngày gia

nhập, điểm tích lũy, ngày hết hạn... Trước những con số đáng báo động trên, việc

giám sát an ninh cũng như triển khai các giải pháp bảo mật đang trở nên cấp thiết

hơn bao giờ hết.

1.3. Vai trò và mục đích của việc theo dõi sự thay đổi nội dung trang web

Ngày nay việc kiểm soát an ninh mạng như tường lửa (Firewall), Mạng

riêng ảo (VPN - Virtual Private Network) là những công cụ quan trọng để giữ cho

các trang web được an toàn hơn, nhưng những công cụ này không đủ để đảm bảo

an toàn an ninh cho các trang web hiện nay. Như chúng ta biết, môi trường web là

môi trường mở, nguy cơ lúc nào cũng có thể bị tấn công xẩy ra mất an toàn an

ninh cho trang web là rất cao. Chính vì vậy phải xây dựng một hệ thống với công

cụ phát hiện sớm những thay đổi bất thường không như mong muốn đồng thời đưa

ra những cảnh báo cho các nhà quản trị web để họ kịp thời có những giải pháp phù

hợp là rất cần thiết.

Hầu hết các cuộc tấn công phổ biến gần đây nhất là các cuộc tấn công nhằm

phá huỷ các trang web. Những kẻ tấn công thường sử dụng các loại mã độc (virus,

20

worm, trojan, và các mã độc hại khác…) để xóa, sửa đổi hoặc thay thế các trang

web trên các máy chủ (Web Server) với nhiều mục đích khác nhau như muốn thể

hiện khả năng của bản thân, bôi nhọ huỷ hoại uy tín của cá nhân cũng như các tổ

chức, lấy cắp các thông tin của người sử dụng khi truy cập vào Website giả mạo…

Các lỗ hổng trang web là một mục tiêu mà kẻ tấn công (hacker) thường

nhắm đến. Kẻ tấn công thường sử dụng một số công cụ tìm kiếm rộng và nhanh,

tìm ra các lỗ hổng điểm yếu của trang web (các điểm yếu cụ thể) và nhanh chóng

khai thác những điểm yếu đó.

Các cuộc tấn công vào các trang web chủ yếu là để:

• Thay đổi nội dung của một trang web.

• Thay đổi bất kỳ phần nào của nội dung của một trang web.

• Thay thế hoàn toàn một trang web.

• Thay đổi bề ngoài của một trang web.

• Chuyển hướng một trang web.

• Phá hủy hoặc xóa một trang web.

Mục đích chính của việc theo dõi sự thay đổi nội dung trang web là phát

hiện các cuộc tấn công dựa trên biện pháp đa kiểm tra nội dung trên các trang

web. Hệ thống sẽ kiểm tra giám sát đưa ra các cảnh báo nếu như có bất kì các cuộc

tấn công nào làm thay đổi nội dung bất thường của các trang web.

1.4. Một số lỗ hổng an ninh trên Website

Các lỗ hổng bảo mật trên một hệ thống là các điểm yếu có thể tạo ra sự

ngưng trệ của dịch vụ, thêm quyền đối với người sử dụng hoặc cho phép các truy

nhập không hợp pháp vào hệ thống. Các lỗ hổng cũng có thể nằm ngay các dịch

21

vụ cung cấp như sendmail, web, ftp... Ngoài ra các lỗ hổng còn tồn tại ngay chính

tại hệ điều hành như trong Windows NT, Windows 95, UNIX, hoặc trong các ứng

dụng mà người sử dụng thường xuyên sử dụng như Word processing, các hệ

databases...

Có nhiều tổ chức khác nhau tiến hành phân loại các dạng lỗ hổng đặc biệt.

Theo cách phân loại của Bộ quốc phòng Mỹ, các loại lỗ hổng bảo mật trên một hệ

thống được chia như sau:

- Lỗ hổng loại C: các lỗ hổng loại này cho phép thực hiện các phương thức

tấn công từ chối dịch vụ theo (DoS - Dinal of Services). Mức độ nguy hiểm thấp

chỉ ảnh hưởng tới chất lượng dịch vụ, có thể làm ngưng trệ gián đoạn hệ thống,

không làm phá hỏng dữ liệu hoặc đạt được quyền truy nhập bất hợp pháp.

- Lổ hổng loại B: Các lỗ hổng cho phép người sử dụng có thêm các quyền

trên hệ thống mà không cần thực hiện kiểm tra tính hợp lệ. Mức độ nguy hiểm

trung bình những lỗ hổng này thường có trong các ứng dụng trên hệ thống có thể

dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật.

- Lỗ hổng loại A: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể

truy nhập vào hệ thống bất hợp pháp, có thể làm phá hủy toàn bộ hệ thống.

1.5. Một số kỹ thuật tấn công Website

1.5.1. Tấn công SQL Injection

1.5.1.1. SQL Injection là gì?

SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng

của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của

hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL

bất hợp pháp. SQL injection có thể cho phép những kẻ tấn công thực hiện các thao

22

tác, delete, insert, update,… trên cơ sở dữ liệu của ứng dụng, thậm chí là server

mà ứng dụng đó đang chạy, lỗi này thường xảy ra trên các ứng dụng web có dữ

liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL,

Oracle, DB2, Sysbase...

Hình 1.2. Mô hình tấn công SQL Injection

1.5.1.2. Cách thức tấn công bằng SQL Injection

Có bốn dạng thông thường bao gồm: Vượt qua kiểm tra lúc đăng nhập

(authorization bypass), sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử

dụng các stored-procedures.

+ Dạng tấn công vượt qua kiểm tra đăng nhập (authorization bypass):

Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng

nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng

dụng web.

Một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các

trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu

người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng

23

nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay

không để quyết định cho phép hay từ chối thực hiện tiếp. Trong trường hợp này,

người ta có thể dùng hai trang, một trang HTML để hiển thị form nhập liệu và một

trang ASP dùng để xử lí thông tin nhập từ phía người dùng.

Ví dụ:

CODE

Username:

Password:

CODE

<%

Dim vUsrName, vPassword, objRS, strSQL

vUsrName = Request.Form("fUSRNAME")

vPassword = Request.Form("fPASSWORD")

strSQL = "SELECT * FROM T_USERS " & _

"WHERE USR_NAME=' " & vUsrName & _

" ' and USR_PASSWORD=' " & vPassword & " ' "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

If (objRS.EOF) Then

Response.Write "Invalid login."

24

Else

Response.Write "You are logged in as " & objRS("USR_NAME")

End If Set objRS = Nothing

%>

Thoạt nhìn, đoạn mã dường như không chứa bất cứ một lỗ hổng về an toàn

nào. Người dùng không thể đăng nhập mà không có tên đăng nhập và mật khẩu hợp

lệ. Tuy nhiên, đoạn mã này thực sự không an toàn và là tiền đề cho một lỗi SQL

injection. Đặc biệt, sơ hở nằm ở chỗ dữ liệu nhập vào từ người dùng được dùng để

xây dựng trực tiếp câu lệnh SQL. Chính điều này cho phép những kẻ tấn công có

thể điều khiển câu truy vấn sẽ được thực hiện. Ví dụ, nếu người dùng nhập chuỗi

sau vào trong cả 2 ô nhập liệu username/password của trang login.htm là:

' OR ' ' = ' '. Lúc này, câu truy vấn sẽ được gọi thực hiện là:

SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and

USR_PASSWORD= '' OR ''=''

Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và

đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người

dùng đăng nhập hợp lệ.

+ Dạng tấn công sử dụng câu lệnh SELECT:

Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ

tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ

thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. Xét một ví dụ rất

thường gặp trong các website về tin tức. Thông thường, sẽ có một trang nhận ID

của tin cần hiển thị rồi sau đó truy vấn nội dung của tin có ID này. Mã nguồn cho

chức năng này thường được viết khá đơn giản theo dạng.

25

CODE

<%

Dim vNewsID, objRS, strSQL

vNewsID = Request("ID")

strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" &

vNewsID 3

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

Set objRS = Nothing

%>

Trong các tình huống thông thường, đoạn mã này hiển thị nội dung của tin

có ID trùng với ID đã chỉ định và hầu như không thấy có lỗi. Tuy nhiên, giống

như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection

khác. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị

khác, và từ đó, khởi đầu cho một cuộc tấn công bất hợp pháp, ví dụ như: 0 OR

1=1 Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dữ liệu vì nó sẽ

thực hiện câu lệnh:

SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1

Một trường hợp khác, ví dụ như trang tìm kiếm. Trang này cho phép người

dùng nhập vào các thông tin tìm kiếm như Họ, Tên, … Đoạn mã thường gặp là:

CODE

<%

Dim vAuthorName, objRS, strSQL

26

vAuthorName = Request("fAUTHOR_NAME")

strSQL = "SELECT * FROM T_AUTHORS WHERE

AUTHOR_NAME =' " & _

vAuthorName & " ' "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

Set objRS = Nothing

%>

Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL để

nhập vào trường tên bằng chuỗi giá trị:

' UNION SELECT ALL SELECT OtherField FROM OtherTable

WHERE ' '=' (*)

Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thực

hiện thêm lệnh tiếp theo sau từ khóa UNION nữa. Tất nhiên các ví dụ nói trên,

dường như không có gì nguy hiểm, nhưng kẻ tấn công có thể xóa toàn bộ cơ sở

dữ liệu bằng cách chèn vào các đoạn lệnh nguy hiểm như lệnh DROP TABLE.

Ví dụ như: ' DROP TABLE T_AUTHORS –

Nhập vào chuỗi (*) như trên, nếu hệ thống báo lỗi về cú pháp dạng: Invalid

object name “OtherTable”; ta có thể biết chắc là hệ thống đã thực hiện câu

SELECT sau từ khóa UNION, vì như vậy mới có thể trả về lỗi mà ta đã cố tình tạo

ra trong câu lệnh SELECT. Cũng sẽ có thắc mắc là làm thế nào có thể biết được

tên của các bảng dữ liệu mà thực hiện các thao tác phá hoại khi ứng dụng web bị

27

lỗi SQL injection. Cũng rất đơn giản, bởi vì trong SQL Server, có hai đối tượng là

sysobjects và syscolumns cho phép liệt kê tất cả các tên bảng và cột có trong hệ

thống. Ta chỉ cần chỉnh lại câu lệnh SELECT.

Ví dụ: ' UNION SELECT name FROM sysobjects WHERE xtype = 'U' là

có thể liệt kê được tên tất cả các bảng dữ liệu.

+ Dạng tấn công sử dụng câu lệnh INSERT:

Thông thường các ứng dụng web cho phép người dùng đăng kí một tài

khoản để tham gia. Chức năng không thể thiếu là sau khi đăng kí thành công,

người dùng có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể

được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào. Ví dụ,

một câu lệnh INSERT có thể có cú pháp dạng: INSERT INTO TableName

VALUES('Value One', 'Value Two', 'Value Three'). Nếu đoạn mã xây dựng câu

lệnh SQL có dạng:

CODE

<%

strSQL = "INSERT INTO TableName VALUES(' " & strValueOne

& " ', ' " _

& strValueTwo & " ', ' " & strValueThree & " ') "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

Set objRS = Nothing

%>

28

Thì sẽ bị lỗi SQL injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ

như: ' + (SELECT TOP 1 FieldName FROM TableName) + '. Lúc này câu truy

vấn sẽ là: INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName

FROM TableName) + ' ', 'abc', 'def'). Khi đó, lúc thực hiện lệnh xem thông tin,

xem như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là: SELECT TOP 1

FieldName FROM TableName.

+ Dạng tấn công sử dụng stored-procedures:

Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng

được thực thi với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay đoạn mã tiêm vào

dạng: ' ; EXEC xp_cmdshell „cmd.exe dir C: '. Lúc này hệ thống sẽ thực hiện lệnh

liệt kê thư mục trên ổ đĩa C: \ cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào

câu lệnh đằng sau cmd.exe.

1.5.1.3. Cách phòng chống tấn công SQL

Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của các lập

trình viên phát triển ứng dụng web khi xử lí các dữ liệu nhập vào để xây dựng câu

lệnh SQL. Tác hại từ lỗi SQL injection tùy thuộc vào môi trường và cách cấu hình

hệ thống. Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu cơ sở dữ

liệu - owner) khi thao tác dữ liệu, nó có thể xóa toàn bộ các bảng dữ liệu, tạo các

bảng dữ liệu mới, … Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ thống),

nó có thể điều khiển toàn bộ hệ quản trị cơ sở dữ liệu và với quyền hạn rộng lớn

như vậy nó có thể tạo ra các tài khoản người dùng bất hợp pháp để điều khiển hệ

thống của bạn. Để phòng tránh, ta có thể thực hiện ở hai mức:

- Kiểm soát chặt chẽ dữ liệu nhập vào.

29

Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu lệnh SQL là

bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng

Request (Request, Request.QueryString, Request.Form, Request.Cookies, and

Request.ServerVariables). Ví dụ, có thể giới hạn chiều dài của chuỗi nhập liệu,

hoặc xây dựng hàm EscapeQuotes để thay thế các dấu nháy đơn bằng 2 dấu nháy

đơn như:

CODE

<%

Function EscapeQuotes(sInput)

sInput = replace(sInput, " ' ", " ' ' ")

EscapeQuotes = sInput

End Function

%>

Trong trường hợp dữ liệu nhập vào là số, lỗi xuất phát từ việc thay thế một

giá trị được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp.

Để tránh điều này, đơn giản hãy kiểm tra dữ liệu có đúng kiểu hay không bằng

hàm IsNumeric(). Ngoài ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa

nguy hiểm như: ;, --, select, insert, xp_, … ra khỏi chuỗi dữ liệu nhập từ phía

người dùng để hạn chế các tấn công dạng này:

CODE

<%

Function KillChars(sInput)

dim badChars

30

dim newChars

badChars = array("select", "drop", ";", "--", "insert", "delete",

"xp_")

newChars = strInput

for i = 0 to uBound(badChars)

newChars = replace(newChars, badChars(i), "")

next

KillChars = newChars

End Function

%>

- Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu.

Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài

khoản người dùng mà ứng dụng web đang sử dụng. Các ứng dụng thông thường

nên tránh dùng đến các quyền như dbo hay sa. Quyền càng bị hạn chế, thiệt hại

càng ít. Ngoài ra để tránh các nguy cơ từ tấn công SQL Injection, nên chú ý loại

bỏ bất kì thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người

dùng khi ứng dụng có lỗi. Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ

thuật có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống.

1.5.2. Tấn công XSS (Cross Site Scripting)

1.5.2.1. XSS là gì

Cross-Site Scripting (XSS) là một trong những kĩ thuật tấn công phổ biến

nhất hiên nay, đồng thời nó cũng là một trong những vấn đề bảo mật quan trọng

đối với các nhà phát triển web và cả những người sử dụng web. Bất kì một website

31

nào cho phép người sử dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các

đoạn mã nguy hiểm thì đều có thể tiềm ẩn các lỗi XSS.

Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để

tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấn

công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ...) những thẻ

HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những nạn

nhân sử dụng.

Về cơ bản XSS cũng như SQL Injection hay Source Injection, nó cũng là

các yêu cầu (request) được gửi từ các máy trạm (client) tới máy chủ (server) nhằm

chèn vào đó các thông tin vượt quá tầm kiểm soát của máy chủ.

Code:

http://www.example.com/search.cgi?query=

Và rất có thể trình duyệt của bạn sẽ hiện lên một thông báo "XSS was found !".

Các đoạn mã trong thẻ

1.5.2.3. Phòng chống tấn công bằng XSS

Nếu như các bạn sử dụng các mã nguồn của các chương trình có sẵn, bạn có

thể tham khảo danh sách các lỗ hổng của chương trình bạn trên các trang web

chứa các thông tin về bảo mật như securityfocus.com, securiteam.com,... Tuy

nhiên nếu các website được tự viết mã nguồn thì bạn không thể áp dụng phương

pháp trên. Trong trường hợp này bạn cần đến các chương trình dò tìm kiếm

(scanner) tự động. Nếu như bạn sử dụng trong môi trường Windows bạn có thể

34

dùng N-Stealth hay AppScan, đó là những chương trình quét tìm khá tuyệt, bạn

không chỉ kiểm tra được các lỗi XSS mà nó còn cho phép bạn kiểm tra các lỗi

khác trong website đó, server đó.

Người ta không lường hết được mức độ nguy hiểm của XSS nhưng cũng

không quá khó khăn để ngăn ngừa XSS. Có rất nhiều cách để có thể giải quyết vấn

đề này như:

+ Chỉ chấp nhận những dữ liệu hợp lệ.

+ Từ chối nhận các dữ liệu hỏng.

+ Liên tục kiểm tra và thanh lọc dữ liệu.

Tuy nhiên trên thực tế, một số trường hợp bạn phải chấp nhận mọi loại dữ

liệu hay không có một bộ lọc phù hợp. Chính vì vậy phải có những cách riêng để

giải quyết. Một trong những cách hay sử dụng là bạn mã hoá các kí tự đặc biệt trước

khi in ra website, nhất là những gì có thể gây nguy hiểm cho người sử dụng.

Với phương pháp này cũng có thể áp dụng đối với các ngôn ngữ Web

Application khác (ASP, PHP...). Để kiểm tra việc lọc và mã hoá dữ liệu trước khi

in ra, các bạn có thể dùng một chương trình được viết bằng ngôn nhữ PHP, đặc

biệt nó được thiết kế để phòng chống các lỗi XSS.

1.5.3. Tấn công từ chối dịch vụ DOS (Denial of Service)

1.5.3.1. Khái niệm

- Tấn công DOS là một kiểu tấn công mà một người làm cho một hệ thống

không thể sử dụng, hoặc làm cho hệ thống đó chậm đi một cách đáng kể với người

dùng bình thường, bằng cách làm quá tải tài nguyên của hệ thống.

- Nếu kẻ tấn công không có khả năng thâm nhập được vào hệ thống, thì

chúng cố gắng tìm cách làm cho hệ thống đó sụp đổ và không có khả năng phục

35

vụ người dùng bình thường đó là tấn công từ chối dịch vụ (Denial of Service

- DOS). Mặc dù tấn công DOS không có khả năng truy cập vào dữ liệu thực của

hệ thống nhưng nó có thể làm gián đoạn các dịch vụ mà hệ thống đó cung cấp.

Như định nghĩa trên DOS khi tấn công vào một hệ thống sẽ khai thác những

điểm yếu nhất của hệ thống để tấn công.

1.5.3.2. Mục đích của tấn công DOS

- Mục đích của tấn công DOS cố gắng chiếm băng thông mạng và làm hệ

thống mạng bị ngập (flood), khi đó hệ thống mạng sẽ không có khả năng đáp

ứng những dịch vụ khác cho người dùng bình thường.

- Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập

vào dịch vụ.

- Cố gắng ngăn chặn những người dùng cụ thể vào một dịch vụ nào đó.

- Cố gắng ngăn chặn các dịch vụ không cho người khác có khả năng truy

cập vào. Khi tấn công DOS xảy ra người dùng có cảm giác khi truy cập vào dịch

vụ đó như bị:

+ Tắt mạng (Disable Network )

+ Tổ chức không hoạt động (Disable Organization)

+ Tài chính bị mất (Financial Loss)

Như chúng ta biết tấn công DOS xảy ra khi kẻ tấn công sử dụng hết tài

nguyên của hệ thống và hệ thống không thể đáp ứng cho người dùng bình thường

được, mục đích kẻ tấn công là:

- Tạo ra sự khan hiếm, những giới hạn và không đổi mới tài nguyên.

- Băng thông của hệ thống mạng (Network Bandwidth), bộ nhớ, ổ đĩa, và

36

cấu trúc dữ liệu đều là mục tiêu của tấn công DOS.

- Tấn công vào hệ thống khác phục vụ cho mạng máy tính như: hệ thống điều

hoà, hệ thống điện, hệ thống làm mát và nhiều tài nguyên khác của doanh nghiệp.

- Phá hoại hoặc thay đổi các thông tin cấu hình.

- Phá hoại tầng vật lý hoặc các thiết bị mạng như nguồn điện, điều hoà…

Hình 1.4. Một mô hình tấn công từ chối dịch vụ DOS

1.5.3.3. Tấn công từ chối dịch vụ DOS

Là phương thức xuất hiện đầu tiên, giản đơn nhất trong kiểu tấn công từ chối

dịch vụ. Các kiểu tấn công thuộc phương thức này rất đa dạng:

+ Tấn công chiếm dụng tài nguyên (Resource Depletion):

Bằng cách lạm dụng quá trình giao tiếp của giao thức mạng hoặc những

gói tin dị thường, kẻ tấn công sẽ chiếm dụng nguồn tài nguyên hệ thống như bộ

nhớ (RAM) và bộ vi xử lý (CPU)… khiến cho người dùng chia sẻ không truy

xuất được hệ thống do hệ thống không đủ khả năng xử lý.

+ Tấn công SYN:

37

Được xem là một trong những kiểu tấn công DOS kinh điển nhất. Lợi dụng

sơ hở của thủ tục TCP khi “bắt tay ba chiều”, mỗi khi máy khách (client) muốn

thực hiện kết nối (connection) với máy chủ (server) thì nó thực hiện việc bắt tay

ba lần (three-ways-handshake) thông qua các gói tin (packet).

- Bước 1: Máy trạm sẽ gửi các gói tin (packet chứa SYN=1) đến máy chủ để

yêu cầu kết nối.

- Bước 2: Khi nhận được gói tin này, máy chủ sẽ gửi lại gói tin SYN/ACK

để thông báo cho máy trạm biết là nó đã nhận được yêu cầu kết nối và chuẩn bị

tài nguyên cho việc yêu cầu này. Máy chủ sẽ giành một phần tài nguyên hệ

thống như bộ nhớ đệm (cache) để nhận và truyền dữ liệu. Ngoài ra, các thông tin

khác của máy trạm client như địa chỉ IP và cổng (port) cũng được ghi nhận.

- Bước 3: Cuối cùng, máy trạm hoàn tất việc bắt tay ba lần bằng cách hồi

âm lại gói tin chứa ACK cho máy chủ và tiến hành kết nối.

Do TCP là thủ tục tin cậy trong việc giao nhận (end-to-end) nên trong lần

bắt tay thứ hai, server gửi các gói tin SYN/ACK trả lời lại máy trạm mà không

nhận lại được hồi âm của máy trạm để thực hiện kết nối thì nó vẫn bảo lưu nguồn

tài nguyên chuẩn bị kết nối đó và lập lại việc gửi gói tin SYN/ACK cho máy trạm

đến khi nào nhận được hồi đáp của máy máy trạm.

Điểm mấu chốt là ở đây là làm cho máy trạm không hồi đáp cho máy chủ.

Và có nhiều máy trạm như thế trong khi máy chủ vẫn tiếp tục lặp lại việc gửi gói

tin (packet) đó và giành tài nguyên để chờ phản hồi trong lúc tài nguyên của hệ

thống là có giới hạn. Kẻ tấn công sẽ tìm cách để đạt đến giới hạn đó.

Nếu quá trình đó kéo dài, máy chủ sẽ nhanh chóng trở nên quá tải, dẫn đến

tình trạng treo (crash), nên các yêu cầu hợp lệ sẽ bị từ chối không thể đáp ứng được.

38

Hình 1.5. Mô hình tấn công SYNFlood Attack

Về nguyên tắc, các website đặt trên máy chủ khi chạy sẽ tiêu lượng tài

nguyên máy chủ nhất định, nhất là lượng bộ nhớ (RAM) và bộ vi xử lý (CPU).

Dựa vào việc tiêu hao đó, những kẻ tấn công đơn giản là dùng các phần mềm như

Smurf chẳng hạn để liên tục yêu cầu máy chủ phục vụ trang web đó để chiếm

dụng tài nguyên. Cách tấn công này tuy không làm máy chủ ngừng cung cấp dịch

vụ hoàn toàn nhưng sẽ làm cho tốc độ phục vụ của toàn bộ hệ thống giảm mạnh,

người dùng sẽ cảm nhận rõ ràng việc phải chờ lâu hơn để trang web hiện ra trên

màn hình. Nếu thực hiện tấn công ồ ạt và có sự phối hợp nhịp nhàng, phương

thức tấn công này hoàn toàn có thể làm tê liệt máy chủ trong một thời gian dài.

+ Tấn công chiếm dụng băng thông (Bandwidth Depletion):

Có 2 loại tấn công chính:

- Thứ nhất là làm ngập bằng cách gửi liên tục các gói tin có kích thước

lớn đến hệ thống nạn nhân, làm nghẽn băng thông nạn nhân.

- Thứ hai là sử dụng mạng khuếch đại, kẻ tấn công gửi thông tin đến

một địa chỉ phát quảng bá (broadcast), tất cả hệ thống trong mạng con nạn nhân

(victim) trong phạm vi bởi địa chỉ quảng bá sẽ gửi lại hệ thống nạn nhân một

39

thông điệp phản hồi cho máy nạn nhân chấp nhận trao đổi dữ liệu. Phương pháp

này khuếch đại dòng lưu lượng làm cho hệ thống nạn nhân giảm băng thông

đáng kể.

1.5.3.4. Phòng chống tấn công DOS

Có ba giai đoạn chính trong quá trình phòng chống tấn công DOS:

- Giai đoạn ngăn ngừa: Tối thiểu hóa lượng Agent, tìm và vô hiệu hóa các

Handler.

- Giai đoạn đối đầu với cuộc tấn công: Phát hiện và ngăn chặn cuộc tấn

công, làm suy giảm và dừng cuộc tấn công, chuyển hướng cuộc tấn công.

- Giai đoạn sau khi cuộc tấn công xảy ra: thu thập chứng cứ và rút kinh nghiệm.

Các giai đoạn chi tiết trong phòng chống DOS:

Tối thiểu hóa số lượng Agent:

- Từ phía người dùng (user): một phương pháp rất tốt để năng ngừa tấn

công DOS là từng người dùng mạng sẽ tự đề phòng không để bị lợi dụng tấn

công hệ thống khác. Muốn đạt được điều này thì ý thức và kỹ thuật phòng chống

phải được phổ biến rộng rãi cho các người dùng mạng. Các người dùng mạng

phải liên tục thực hiện các quá trình bảo mật trên máy vi tính của mình. Một số

giải pháp tích hợp sẵn khả năng ngăn ngừa việc cài đặt đoạn mã (code) nguy

hiểm v ào p h ầ n c ứ n g ( hardware) và phần mềm ( software) của từng hệ thống.

Về phía người dùng mạng họ nên cài đặt và cập nhật liên tục các phần mềm

phòng chống virus, các bản sửa lỗi của hệ điều hành.

Tìm và vô hiệu hóa các bộ xử lý (handler):

Một nhân tố vô cùng quan trọng trong t ấ n c ô n g m ạ n g ( attack-

network) là bộ xử lý ( h andler), nếu có thể phát hiện và vô hiệu hóa bộ xử lý thì

khả năng phòng chống tấn công DOS thành công là rất cao.

40

Làm suy giảm hay dừng cuộc tấn công:

Dùng các kỹ thuật sau:

- Thiết lập kiến trúc cân bằng tải trọng điểm cho các máy chủ (Load

balancing): sẽ làm gia tăng thời gian chống chọi của hệ thống với cuộc tấn

công DOS. Tuy nhiên, điều này không có ý nghĩa lắm về mặt thực tiễn vì quy mô

của cuộc tấn công là không có giới hạn.

- Thiết lập cơ chế điều tiết trên bộ định tuyến (Throttling): quy định một

khoảng tải hợp lý mà máy chủ bên trong có thể xử lý được. Phương pháp này

cũng có thể được dùng để ngăn chặn khả năng DOS không cho người dùng truy

cập dịch vụ.

- Thiết lập cơ chế huỷ yêu cầu (drop request): nếu nó vi phạm một số quy

định như: thời gian trễ (delay) kéo dài, tốn nhiều tài nguyên để xử lý, gây ra sự

tắc nghẽn (deadlock). Kỹ thuật này triệt tiêu khả năng làm cạn kiệt năng lực hệ

thống, tuy nhiên nó cũng giới hạn một số hoạt động thông thường của hệ thống,

cần cân nhắc khi sử dụng.

Chuyển hướng của cuộc tấn công:

Honeypots: Một kỹ thuật đang được nghiên cứu là Honeypots. Honeypots

là một hệ thống được thiết kế nhằm đánh lừa kẻ tấn công (attacker) tấn công vào

khi xâm nhập hệ thống mà không chú ý đến hệ thống quan trọng thực sự.

Honeypots rất hiệu quả trong việc phát hiện và xử lý xâm nhập, vì trên

Honeypots đã thiết lập sẵn các cơ chế giám sát và báo động.

Ngoài ra Honeypots còn có giá trị trong việc học hỏi và rút kinh nghiệm từ

kẻ tấn công, do Honeypots ghi nhận khá chi tiết mọi động thái của kẻ tấn

công trên hệ thống. Nếu kẻ tấn công bị đánh lừa và cài đặt Agent hay Handler

lên Honeypots thì khả năng bị triệt tiêu toàn bộ sự tấn công là rất cao.

41

1.6. Kết luận chương 1

Trong chương 1 luận văn đã nêu lên một số các khái niệm cơ bản về web,

các dịch vụ và ứng dụng của Website. Đánh giá tổng quan tình hình mất an ninh,

an toàn trên nền web, nêu vai trò và mục đích của việc theo dõi sự thay đổi nội

dung Website phân tích đánh giá một số kiểu tấn công phổ biến trên website hiện

nay và cách phòng chống các kiểu tấn công này. Trong chương tiếp theo tác giả

tiếp tục tìm hiểu một số phương pháp đảm bảo an ninh Website và các thuật toán

giám sát.

42

CHƯƠNG 2

CÁC THUẬT TOÁN GIÁM SÁT VÀ MỘT SỐ

PHƯƠNG PHÁP ĐẢM BẢO AN NINH WEBSITE

2.1. Một số phương pháp đảm bảo an ninh Website

2.1.1. Đảm bảo an ninh hệ điều hành Webserver

Tất cả các Webserver phổ biến hiện nay đều hoạt động trên một hệ điều

hành (HĐH) có mục đích chung. Nhiều vấn đề bảo mật có thể tránh được nếu các

HĐH của những Webserver đó được cấu hình thích hợp. Bởi vì các nhà sản xuất

không biết hết các nhu cầu an ninh của mỗi cơ quan, nên mỗi quản trị viên

Webserver phải cấu hình các máy chủ mới để phản ánh các yêu cầu an ninh của cơ

quan mình và cấu hình lại chúng theo sự thay đổi những yêu cầu đó.

5 bước cơ bản cần thiết để duy trì an ninh HĐH cơ bản:

 Lập kế hoạch cài đặt và triển khai của HĐH máy chủ và các thành phần

khác cho Webserver đó.

 Vá và cập nhật HĐH máy chủ theo yêu cầu.

 Hardening (cứng hóa) và cấu hình HĐH máy chủ để giải quyết tương

xứng vấn đề an ninh.

 Cài đặt và cấu hình các kiểm soát bảo mật bổ sung (additional security

controls), nếu cần thiết.

 Kiểm tra HĐH máy chủ để đảm bảo rằng bốn bước trước đó giải quyết

đầy đủ tất cả các vấn đề an ninh.

2.1.1.1. Cài đặt và cấu hình hệ điều hành

- Vá và cập nhật HĐH.

43

- Gỡ bỏ (remove) hoặc vô hiệu hóa (disable) các dịch vụ (services) và ứng

dụng (applications) không cần thiết.

- Cấu hình xác thực người dùng HĐH.

- Cấu hình kiểm soát tài nguyên (Resource Controls) thích hợp.

- Cài đặt và cấu hình kiểm soát anh ninh bổ sung (Additional Security

Controls).

2.1.1.2. Kiểm tra an ninh hệ điều hành

Kiểm tra an ninh định kỳ HĐH là cách quan trọng để nhận biết các lỗ hổng và

để đảm bảo rằng các biện pháp phòng ngừa an ninh đang tồn tại là hiệu quả. Các

phương pháp phổ biến để kiểm tra các HĐH bao gồm quét (scanning) lỗ hổng và

thử nghiệm thâm nhập. Quét lỗ hổng thường đòi hỏi sử dụng một máy quét

(scanner) lỗ hổng tự động để quét một host hoặc một nhóm các host trên một

mạng máy tính nhằm phát hiện các lỗ hổng ứng dụng, các lỗ hổng mạng, và các lỗ

hổng hệ điều hành. Thử nghiệm thâm nhập là một quá trình thử nghiệm được thiết

kế nhằm làm tổn thương một mạng (network) sử dụng các công cụ và các phương

pháp học của một kẻ tấn công. Nó can dự một cách lặp đi lặp lại nhận biết và khai

thác những khu vực yếu nhất của mạng này nhằm để đạt được quyền truy cập vào

các phần còn lại của mạng, cuối cùng làm hại an ninh tổng thể của mạng đó.

Việc kiểm tra an ninh HĐH của Webserver nên được thực hiện trên một hệ

thống riêng biệt.

2.1.2. Đảm bảo an ninh Webserver

Một khi HĐH được cài đặt và đảm bảo an ninh thì việc cài đặt phần mềm

webserver (đã được chọn lựa) có thể bắt đầu. Trước khi bắt đầu quá trình này hãy

44

đọc tài liệu webserver của nhà sản xuất một cách cẩn thận và hiểu rõ các tùy chọn

khác nhau sẵn có suốt trong quá trình cài đặt.

Một server được cấu hình và/hoặc được vá lỗi một phần thì không nên để

tiếp xúc trực tiếp với các mạng ngoài (ví dụ: Internet) hoặc người sử dụng bên

ngoài. Ngoài ra, việc truy cập mạng nội bộ nên được giới hạn tối đa có thể cho tới

khi tất cả các phần mềm được cài đặt, vá lỗi, và cấu hình một cách an toàn.

2.1.2.1. Cài đặt Webserver an toàn

Trong quá trình cài đặt webserver, các bước sau đây cần được thực hiện:

 Cài đặt phần mềm webserver hoặc trên HĐH máy chủ chuyên dụng hoặc

HĐH máy khách chuyên dụng nếu ảo hóa đang được sử dụng.

 Áp dụng bất kỳ bản vá lỗi hay nâng cấp nào để sửa chữa các lỗ hổng

đã biết.

 Tạo một đĩa vật lý dành riêng hoặc phân vùng logic (tách biệt khỏi HĐH

và ứng dụng webserver) cho nội dung Web.

 Hủy bỏ hoặc vô hiệu hóa tất cả các dịch vụ được cài đặt bởi ứng dụng

webserver mà không được yêu cầu (ví dụ: gopher, FTP, quản trị từ xa).

 Hủy bỏ hoặc vô hiệu hóa tất cả các tài khoản đăng nhập mặc định không

cần thiết được tạo ra khi cài đặt Webserver.

 Hủy bỏ tất cả tài liệu của nhà sản xuất khỏi máy chủ Web.

 Hủy bỏ tất cả ví dụ hoặc các file thử nghiệm khỏi server đó, bao gồm các

script và mã thực thi.

 Áp dụng mẫu bảo mật thích hợp hoặc script cứng hóa (hardening script)

cho server.

45

 Cấu hình lại biểu ngữ (banner) dịch vụ HTTP (và những thứ khác như

yêu cầu), không thông báo loại và phiên bản của Webserver và HĐH.

2.1.2.2. Cấu hình kiểm soát truy cập (Access Controls)

Hầu hết các HĐH máy chủ Webserver cung cấp khả năng định rõ các quyền

truy cập riêng biệt cho các tập tin, các thiết bị, và các tài nguyên tính toán khác trên

máy chủ đó. Bất kỳ thông tin nào mà Webserver có thể truy cập sử dụng thì những

điều khiển này đều có thể tiềm ẩn nguy cơ được phân phối cho tất cả các người

dùng truy cập Website công khai này. Thiết lập quyền truy cập đúng cho cả HĐH

và ứng dụng Webserver là vô cùng quan trọng; nếu không sẽ xảy ra trường hợp quá

nhiều hoặc quá ít truy cập có thể được cấp cho người dùng. Những nhà quản trị

Webserver nên cân nhắc làm thế nào tốt nhất để cấu hình kiểm soát truy cập nhằm

bảo vệ thông tin được lưu trữ trên các Webserver công khai từ hai quan điểm:

 Hạn chế truy cập các ứng dụng Webserver đến một tập con các tài

nguyên tính toán.

 Hạn chế truy cập của người dùng thông qua các kiểm soát truy cập bổ

sung được thực thi bởi Webserver, nơi mà các mức chi tiết hơn của kiểm soát truy

cập được yêu cầu.

Việc cài đặt phù hợp các kiểm soát truy cập có thể giúp ngăn chặn tiết lộ

thông tin nhạy cảm hoặc thông tin bị hạn chế mà không có ý định phổ biến công

khai. Ngoài ra, kiểm soát truy cập có thể được sử dụng để giới hạn việc sử dụng

tài nguyên trong trường hợp một cuộc tấn công DoS vào Webserver xảy ra. Tương

tự như vậy, kiểm soát điều khiển sẽ thực thi việc không cho các quản trị viên

Webserver sửa đổi log, mà chỉ có duy nhất tiến trình của máy chủ Web được phép

thêm vào các tập tin log.

46

Các tập tin điển hình mà việc truy cập nên được kiểm soát như sau:

 Các tập tin phần mềm ứng dụng và cấu hình.

 Các tập tin liên quan trực tiếp tới cơ chế bảo mật: Tập tin băm password

và các tập tin khác được sử dụng trong xác thực; Tập tin chứa thông tin cho phép

sử dụng trong việc kiểm soát truy cập; Tài liệu key mật mã được sử dụng trong

các dịch vụ bảo mật, toàn vẹn, không từ chối.

 Các tập tin log của server và các tập tin kiểm tra hệ thống.

 Các tập tin phần mềm hệ thống và các tập tin cấu hình.

 Các tập tin nội dung Web.

2.1.2.3. Cấu hình thư mục nội dung Web an toàn

 Dành riêng một ổ cứng hoặc phân vùng logic cho nội dung Web và thiết lập

các thư mục con có liên quan một cách riêng biệt cho các tập tin nội dung Webserver,

bao gổm cả đồ họa nhưng không bao gồm các script và chương trình khác.

 Xác định một thư mục duy nhất dành riêng cho tất cả các script hoặc

chương trình bên ngoài được thực hiện như là một phần của nội dung Webserver

(ví dụ như CGI, ASP).

 Vô hiệu hóa việc thực thi các script mà không riêng biệt dưới sự kiểm

soát của các tài khoản quản trị (admin account).

 Vô hiệu hóa việc sử dụng các link cứng (hard link) hoặc link biểu tượng

(symbolic link) (ví dụ như là các shortcut cho Windows).

 Xác định một ma trận truy cập nội dung web hoàn chỉnh. Định rõ những

thư mục và tập tin nào trong tài liệu webserver nên bị hạn chế và cái nào có thể

truy cập (và bởi ai).

47

 Kiểm tra chính sách password của cơ quan và thiết lập mật khẩu tài

khoản thích hợp (ví dụ: độ dài, độ phức tạp).

 Sử dụng tập tin robots.txt, nếu thích hợp.

 Cấu hình bảo vệ anti-spambot, nếu thích hợp (ví dụ: CAPTCHAs,

nofollow, hoặc lọc từ khóa).

2.1.3. Quản trị Webserver

2.1.3.1. Logging

Nắm bắt được dữ liệu chính xác trong các bản ghi nhật kí (log) và sau đó

theo dõi chặt chẽ những bản ghi đó là điều sống còn. Log mạng (nhật kí mạng) và

log hệ thống (nhật kí hệ thống) rất quan trọng, đặc biệt là log hệ thống trong

trường hợp giao tiếp HTTPS, trong đó giám sát mạng là ít hiệu quả hơn. Phần

mềm Webserver có thể cung cấp dữ liệu log bổ sung liên quan tới các sự kiện Web

cụ thể. Tương tự như vậy, các ứng dụng Web cũng có thể duy trì log riêng về các

hoạt động của chúng.

Log của Webserver cung cấp:

 Cảnh báo các hoạt động đáng ngờ mà yêu cầu điều tra kỹ hơn.

 Theo dõi các hoạt động của kẻ tấn công.

 Hỗ trợ khôi phục hệ thống.

 Hỗ trợ điều tra sau sự kiện.

 Yêu cầu các thông tin cho việc tố tụng pháp lý.

2.1.3.2. Thủ tục sao lưu Webserver

Một trong những chức năng quan trọng nhất của quản trị viên Webserver là

duy trì tính toàn vẹn dữ liệu trên Webserver. Điều này là quan trọng bởi vì

48

Webserver thường là một số trong những server bị phơi bày ra nhất và quan trọng

nhất trong mạng của một tổ chức cơ quan. Có hai thành phần chính để sao chép dữ

liệu trên Webserver: sao chép thường lệ dữ liệu và HĐH trên Webserver, và duy

trì một bản sao có thẩm quyền được bảo vệ tách biệt của nội dung Web cơ quan.

2.1.3.3. Phục hồi từ một sự làm hại an ninh

Hầu hết các tổ chức đều có thể gặp phải một sự làm hại (thỏa hiệp) thành

công của một hay nhiều host trên mạng của họ. Bước đầu tiên trong việc khôi

phục từ một sự thỏa hiệp là tạo ra và ghi thành tài liệu các chính sách và thủ tục

được yêu cầu để ứng phó với sự xâm nhập thành công.

Một quản trị viên Webserver nên theo sát các chính sách và thủ tục của cơ

quan trong việc xử lý sự cố, và đội ứng phó sự cố nên tiếp xúc với sự chỉ đạo

trước khi cơ quan thực hiện bất kì một hành động nào sau một sự làm hại an ninh

bị nghi ngờ hoặc đã xác định.

2.1.3.4. Kiểm tra bảo mật Webserver

Kiểm tra an ninh định kỳ Webserver công cộng là rất quan trọng. Nếu không

có kiểm tra định kỳ, không có đảm bảo rằng các biện pháp bảo vệ hiện tại đang

làm việc hoặc bản vá an ninh được áp dụng bởi quản trị viên Webserver là hoạt

động như đã được báo trước.

Mặc dù đang tồn tại rất nhiều kỹ thuật kiểm tra an ninh, nhưng quét lỗ hổng

là phổ biến nhất. Quét lỗ hổng giúp một quản trị viên Webserver xác định các lỗ

hổng xác minh liệu rằng các biện pháp an ninh hiện có có hiệu quả hay không.

Thử nghiệm thâm nhập cũng được sử dụng, nhưng nó thường ít được sử dụng

thường xuyên hơn và thường chỉ như là một phần của một thử nghiệm thâm nhập

tồng thể của mạng cơ quan.

49

2.1.4. Bảo đảm an ninh nội dung Web

Hai thành phần chính của đảm bảo an ninh Web là đảm bảo an ninh ứng

dụng máy chủ bên dưới và HĐH, và đảm bảo an ninh nội dung thật sự của Web.

Trong số này, bảo đảm an ninh nội dung Web thường bị bỏ qua.

2.1.4.1. Công bố thông tin trên Website công khai

Nhiều tổ chức không có một quy trình hoặc chính sách công khai nội dung

web nhằm xác định loại thông tin nào công bố công khai, thông tin nào công bố

với truy cập bị giới hạn, và thông tin nào nên được bỏ đi từ bất kỳ kho lưu trữ nào

có thể truy cập công khai. Đây là rắc rối bởi vì các website là một trong những nơi

đầu tiên mà các thực thể độc hại tìm kiếm thông tin có giá trị.

Một Website công khai không nên chứa các thông tin sau:

 Các bản ghi phân loại (classified records).

 Các luật và thủ tục cá nhân nội bộ.

 Thông tin nhạy cảm và riêng tư (có sở hữu).

 Thông tin cá nhân về nhân sự hoặc người dùng của một cơ quan tổ

chức.

 Số điện thoại, địa chỉ e-mail, hoặc các danh sách chung của nhân viên

trừ khi cần thiết để hoàn thành yêu cầu cơ quan.

 Và các thông tin riêng của tổ chức và cá nhân.

2.1.4.2. Theo dõi các quy định về thu thập thông tin cá nhân

Nhiều cơ quan chính phủ đã ban hành các luật và quy định về việc thu thập

thông tin về người dùng truy cập vào các Website công khai. Các tổ chức chính

phủ và cơ quan nên nhận thức các luật, các quy định, và các hướng dẫn thích hợp

50

có thể áp dụng này cũng như nắm bắt được sự thay đổi các yêu cầu pháp lý, quy

định, và hợp đồng.

2.1.4.3. Giảm nhẹ các cuộc tấn công gián tiếp trên nội dung

Các tấn công nội dung gián tiếp là không trực tiếp tấn công vào Webserver

hoặc nội dung của nó. Chúng can dự qua các phương tiện trung gian nhằm có

được thông tin người dùng, đó là những người thường hay truy cập vào trang Web

mà được bảo vệ và duy trì trên webserver đó. Các đề tài phổ biến của các tấn công

này là ép buộc người dùng truy cập vào một website độc hại do kẻ tấn công thiết

lập và tiết lộ thông tin cá nhân trong niềm tin rằng họ đã truy cập vào trang web

hợp pháp. Hai loại tấn công gián tiếp phổ biến được mô tả là phishing và

pharming.

+ Phishing:

Kẻ tấn công phishing sử dụng công nghệ kỹ năng xã hội để đánh lừa người

dùng truy cập vào một website giả mạo và tiết lộ thông tin cá nhân. Trong một số

cuộc tấn công phishing, những kẻ tấn công gửi một e-mail trông có vẻ hợp pháp

yêu cần người dùng cập nhật thông tin của mình trên Website công ty, nhưng thực

ra các URL trong e-mail này lại trỏ tới một website giả.

+ Pharming:

Kẻ tấn pharming sử dụng phương tiện kỹ thuật, thay vì kỹ năng xã hội,

nhằm để chuyển hướng người dùng truy cập vào một website giả mạo như là một

trang web hợp pháp và tiết lộ thông tin cá nhân. Pharming thường được hoàn

thành hoặc bằng cách khai thác lỗ hổng trong phần mềm DNS (phân giải tên miền

Internet vào trong địa chỉ IP), hoặc bằng cách thay đổi các tập tin host được lưu

trữ trên máy khách (client) để phân giải tên miền Internet một cách cục bộ.

51

Trong cả hai trường hợp, hệ thống bị tác động phân giải không chính xác

các tên miền hợp pháp hướng đến địa chỉ của website độc hại.

2.1.5. Sử dụng kỹ thuật xác thực và mã hóa

Các Webserver công khai thường hỗ trợ một loạt các kỹ thuật nhận dạng và

xác thực người dùng với các đặc quyền khác nhau cho các thông tin truy cập. Một

số kỹ thuật này dựa trên các hàm mật mã có thể cung cấp một kênh mã hóa giữa

client trình duyệt và webserver.

Không có xác thực người dùng, các tổ chức sẽ không thể hạn chế truy cập

đến các thông tin rõ ràng cho các người dùng đã được phân quyền. Tất cả các

thông tin cư trú trên Webserver công khai sẽ có thể truy cập bởi bất kỳ ai có quyền

truy cập vào server đó. Ngoài ra, không có một số quy trình xác thực server, người

dùng sẽ không thể xác định liệu máy chủ đó là webserver “đích thực” hay là một

phiên bản giả mạo được điều hành bởi đối tượng độc hại.

Mã hóa có thể được sử dụng để bảo vệ thông tin đi qua kết nối giữa client

trình duyệt web và webserver công khai. Không có mã hóa, bất kì ai có quyền truy

cập vào giao thông mạng đều có thể định rõ (và có thể thay đổi) nội dung thông tin

nhạy cảm, ngay cả khi người dùng truy cập vào các thông tin đã được xác thực

một cách cẩn thận. Điều này có thể vi phạm tính bảo mật và tính toàn vẹn của

thông tin quan trọng.

2.1.5.1. Xác định các yêu cầu xác thực và mã hóa

Các cơ quan tổ chức nên định kỳ kiểm tra tất cả các thông tin có thể truy

cập vào Webserver công khai và xác định các yêu cầu an ninh cần thiết. Trong khi

làm vậy, cơ quan nên định rõ các thông tin mà chia sẻ các yêu cầu anh ninh và bảo

52

vệ tương đương. Đối với các thông tin nhạy cảm, cơ quan nên xác định người

dùng và nhóm người dùng có quyền truy cập tới mỗi tập tài nguyên

2.1.5.2. Xác thực dựa trên địa chỉ

Kỹ thuật xác thực đơn giản nhất được hỗ trợ bởi hầu hết các Webserver là

xác thực dựa trên địa chỉ. Kiểm soát truy cập dựa trên địa chỉ IP và/hoặc tên máy

chủ (hostname) của thông tin yêu cầu. Mặc dù dễ dàng triển khai cho một nhóm

nhỏ người dùng, xác thực địa chỉ có thể khó sử dụng cho các webserver mà có

lượng người dùng tiềm năng lớn (tức là, hầu hết webserver công khai). Nó dễ

nhiễm một vài loại tấn công, bao gồm giả mạo IP và đầu độc DNS.

2.1.5.3. Xác thực cơ bản

Kỹ thuật xác thực cơ bản sử dụng cấu trúc thư mục của nội dung webserver.

Tất cả các tập tin trong cùng thư mục được cấu hình với cùng các đặc quyền truy

cập. Một người dùng có yêu cầu sẽ được cung cấp một ID (nhận dạng) và

password đã được chấp nhận để truy cập vào những tập tin trong một thư mục đã

cho. Kiểm soát truy cập hạn chế nhiều hơn có thể được thực thi ở mức một tập tin

đơn trong một thư mục nếu phần mềm webserver cung cấp khả năng này.

Từ góc độ an ninh, nhược điểm chính của kỹ thuật này là tất cả thông tin

password được truyền đi dưới dạng encode (lập mã) chứ không phải dạng encrypt

(mã hóa). Bất kì ai biết nguyên tắc lập mã đã được tiêu chuẩn hóa này đều có thể

giải mã (decode) password sau khi sao chụp nó bằng một chương trình nghe lén

mạng. Hơn nữa, bất cứ nội dung web nào đều được truyền đi như là bản rõ, do đó

nội dung này cũng bị sao chụp, xâm phạm tính bảo mật. Những hạn chế này có thể

được khắc phục bằng cách sử dụng xác thực cơ bản kết hợp với SSL/TLS.

53

2.1.5.4. Xác thực Digest

Do những hạn chế với xác thực cơ bản nên một kỹ thuật cải tiến được biết

đến với tên là xác thực Digest đã được giới thiệu trong phiên bản 1.1 của giao thức

HTTP. Xác thực Digest sử dụng cơ chế “thách thức - phản ứng” để xác thực người

dùng. Theo phương pháp này, một giá trị nonce được gửi tới người dùng (được

nhắc cho một ID và password) như với xác thực cơ bản. Tuy nhiên, trong trường

hợp này, thông tin người dùng nhập vào bị ràng buộc và kết quả băm mật mã được

tạo thành. Mã băm này được kết nối với giá trị nonce và sau đó kết quả được băm

lại như là một giá trị phản ứng được gửi tới server.

Bởi vì password của người dùng không được gửi đi dưới dạng rõ ràng nên

nó không thể bị nghe lén trực tiếp trên mạng. Xác thực Digest cũng dễ bị tấn công

từ điển offline, trong đó kẻ tấn công thử nhiều password khác nhau trong nỗ lực

tái tạo giá trị digest bị sao chụp. Những hạn chế này có thể được khắc phục bằng

cách sử dụng xác thực Digest kết hợp với SSL/TLS.

2.1.5.5. SSL/TLS

Giao thức SSL và TLS cung cấp xác thực và mã hóa server và client trong

các cuộc thông tin liên lạc. SSL được giới thiệu lần đầu tiên bởi Netscape

Communications vào năm 1994 và được sửa đổi hai lần (SSL version 3 là phiên

bản hiện tại). Trong năm 1996, tổ chức IETF (Internet Engineering Task Force)

thành lập nhóm làm việc TLS để nghi thức hóa và thúc đẩy giao thức SSL lên mức

tiểu chuẩn Internet. Giao thức TLS version 1.0 được chính thức quy định trong

IETF RFC 2246 (phát hành năm 1999) và phần lớn dựa trên SSL version 3. SSL

version 3 và TLS version 1 về cơ bản giống hệt nhau.

54

TCP/IP kiểm soát việc vận chuyển và định tuyến dữ liệu qua Internet. Các

giao thức khác như là HTTP, LDAP, và IMAP chạy “trên đầu của” TCP/IP, tất cả

các giao thức đó đều sử dụng TCP/IP hỗ trợ các nhiệm vụ ứng dụng đặc trưng. Vì

vậy, SSL/TLS có thể hỗ trợ nhiều hơn các giao tiếp Web an toàn. Hình 2.1 cho

thấy SSL/TLS phù hợp giữa các ứng dụng và tầng network/transport của bộ giao

thức Internet như thế nào.

Hình 2.1. SSL/TLS đặt trong Internet Protocol Stack

SSL/TLS cung cấp những khả năng sau cho HTTP và các giao thức tầng

ứng dụng khác:

 Xác thực máy chủ (server): SSL/TSL cho phép Web client (người dùng)

xác nhận tính đặc trưng của Webserver.

 Xác thực máy khách (client): SSL/TLS cho phép Webserver xác nhận đặc

tính của người dùng sử dụng cùng kỹ thuật như trong xác thực server bằng cách

đảo ngược vai trò.

55

 Mã hóa giao tiếp: SSL/TLS có thể mã hóa hầu hết các thông tin được trao

đổi giữa trình duyệt Web (client) và Webserver hoặc thậm chí giữa hai Webserver

với nhau.

2.1.6. Triển khai cơ sở hạ tầng mạng an ninh

Cơ sở hạ tầng mạng (hỗ trợ Webserver) đóng một vai trò quan trọng trong

vấn đề đảm bảo an ninh Webserver. Trong hầu hết các cấu hình, cơ sở hạ tầng

mạng là tuyến phòng vệ đầu tiên giữa Internet và một Webserver công cộng.

2.1.6.1. Thành phần và cấu trúc mạng

Các firewall và router là những thiết bị hay hệ thống kiểm soát luồng giao

thông (traffic) mạng giữa các mạng với nhau. Chúng có thể bảo vệ Webserver từ

các lỗ hổng cố hữu trong bộ giao thức TCP/IP và giúp giảm vấn đề an ninh liên

quan tới sự mất an toàn của các ứng dụng và các HĐH.

Thành phần và cấu trúc mạng là khía cạnh đầu tiên trong nhiều khía cạnh có

quyết định quan trọng nhất tác động tới vấn đề đảm bào an ninh Webserver bởi vì

chúng xác định những yếu tố hạ tầng mạng nào bảo vệ Webserver. Ví dụ, nếu

Webserver đặt trước firewall chính của cơ quan, thì sau đó firewall không thể

được sử dụng để điều khiển traffic đến và đi khỏi Webserver. Thành phần và cấu

trúc mạng cũng định rõ các phần khác nào của mạng là dễ bị tổn thương nếu

Webserver bị thỏa hiệp.

2.1.6.2. Cấu hình phần tử mạng

Một khi Webserver đã được đặt vào mạng thì các phần tử cơ sở hạ tầng

mạng nên được cấu hình để hỗ trợ và bảo vệ nó. Các phần tử chính của một cơ sở

hạ tầng mạng mà có ảnh hưởng tới việc đảm bảo an ninh Webserver là firewall,

router, IDS, IPS, switch, load-balancer, và proxy ngược. Mỗi một phần tử cá một

56

vai trò quan trọng và là then chốt trong chiến lược tổng quan bảo vệ Webserver

theo phòng vệ chiều sâu. Một mình firewall hoặc IPS đơn lẻ không thể bảo vệ đầy

đủ một Webserver từ các mối đe dọa hoặc các cuộc tấn công.

2.2. Các thuật toán giám sát

2.2.1. Hàm băm mật mã

2.2.1.1. Giới thiệu hàm băm mật mã

Một hàm băm mật mã nhận đầu vào là một thông điệp có độ dài tùy ý và tạo

ra một tóm tắt thông điệp (message digest) hay cũng được gọi là giá trị băm (hash

value) có độ dài cố định, đại diện cho thông điệp ban đầu.

Nhận thấy rằng hàm băm h không phải là một song ánh. Do đó, với thông

điệp m bất kỳ, tồn tại thông điệp m’ ≠ m sao cho h(m) = h(m’). Lúc này, ta nói

rằng “có sự đụng độ xảy ra”.

Một hàm băm h được gọi là an toàn (hay “ít bị đụng độ”) khi không thể xác

định được (bằng cách tính toán) cặp thông điệp m và m’ thỏa mãn m ≠ m’ và h(m)

= h(m’). Trên thực tế, các thuật toán băm là hàm một chiều, do đó, rất khó để xây

dựng lại thông điệp ban đầu từ thông điệp rút gọn.

Hàm băm giúp xác định được tính toàn vẹn dữ liệu của thông tin: mọi thay

đổi, dù là rất nhỏ, trên thông điệp cho trước, ví dụ như đổi giá trị 1 bit, đều làm

thay đổi thông điệp rút gọn tương ứng. Tính chất này hữu ích trong việc phát sinh,

kiểm tra chữ ký điện tử, các đoạn mã chứng nhận thông điệp, phát sinh số ngẫu

nhiên, tạo ra khóa cho quá trình mã hóa…

Hàm băm là nền tảng cho nhiều ứng dụng mã hóa. Có nhiều thuật toán để

thực hiện hàm băm, trong số đó, phương pháp SHA-1 và MD5 thường được sử

dụng khá phổ biến từ thập niên 1990 đến nay.

57

Hàm băm mật mã ứng dụng nhiều trong an ninh thông tin, điển hình là kiểm

tra tính toàn vẹn của dữ liệu, mã hóa mật khẩu, xác minh tệp tin, chứng thực thông

điệp, chữ ký kỹ thuật số, và các dạng ứng dụng hệ quả khác mà chứa hàm băm

mật mã bên trong. Hàm băm mật mã còn được sử dụng như hàm băm thường,

phục vụ cho bảng băm như chúng ta đã biết. Vì mã băm của một đối tượng là duy

nhất, nó có thể được dùng như dấu vân tay để nhận dạng đối tượng. Ví dụ để chỉ

ra một người sử dụng, cách tốt nhất là sử dụng dấu vân tay là mã băm mật mã

dành cho người đó, trong khi mã nhận dạng kiểu khác có thể không rõ ràng và bị

trùng lặp.

2.2.1.2. Tính một chiều của hàm băm

Hàm băm được xem là hàm một chiều khi cho trước giá trị băm, không thể

tái tạo lại thông điệp ban đầu, hay còn gọi là “tiền ảnh” (“pre-image”). Như vậy,

trong trường hợp lý tưởng, cần phải thực hiện hàm băm cho khoảng 2n thông điệp

để tìm ra được “tiền ảnh” tương ứng với một giá trị băm.

Nếu tìm ra được một phương pháp tấn công cho phép xác định được “tiền

ảnh” tương ứng với một giá trị băm cho trước thì thuật toán băm sẽ không còn an

toàn nữa.

Cách tấn công nhằm tạo ra một thông điệp khác với thông điệp ban đầu

nhưng có cùng giá trị băm gọi là tấn công “tiền ảnh thứ hai” (second pre-image

attack).

Hàm băm mật mã phải có khả năng chống cự các loại tấn công mật mã, tối

thiểu phải đảm bảo có 3 tính chất sau:

 Kháng tiền ảnh (Pre-image resistance): Với một mã băm h bất kỳ, khó tìm

được một thông điệp m nào mà h = hash(m). Điều này làm chúng ta liên tưởng tới

58

tính một chiều của hàm số. Trong góc độ hàm số toán học, mã băm là ảnh còn

thông điệp là tạo ảnh của mã băm, hay gọi là tiền ảnh. Sức kháng cự tấn công từ

ảnh ngược về tiền ảnh gọi là kháng tiền ảnh. Một hàm băm có kháng tiền ảnh yếu

là lỗ hổng cho các cuộc tấn công tiền ảnh.

 Kháng tiền ảnh thứ hai (Second pre-image resistance): Với một thông

điệp m1 bất kỳ, khó tìm được một thông điệp thứ hai m2 sao cho m1 ≠

m2 và hash(m1) = hash(m2). Xác suất xảy ra biến cố có thông điệp m2 như thế

tương tự biến cố “Cùng ngày sinh”. Một hàm băm có kháng tiền ảnh thứ hai yếu là

lỗ hổng cho các cuộc tấn công tiền ảnh thứ hai.

 Kháng xung đột (Collision resistance): Khó tìm được một cặp thông

điệp m1 và m2 sao cho m1 ≠ m2 và hash(m1) = hash(m2). Cặp như thế được gọi là xung

đột băm mật mã. Tính chất này đôi khi còn được gọi là kháng xung đột mạnh. Nó yêu

cầu chiều dài băm ít nhất phải dài hơn hai lần so với yêu cầu của kháng tiền ảnh, nếu

không xung đột có thể xảy ra bởi một cuộc tấn công “Ngày sinh”.

2.2.1.3. Cấu trúc hàm băm

Hầu hết các hàm băm mật mã đều có cấu trúc giải thuật như sau:

 Cho trước một thông điệp M có độ dài bất kỳ. Tùy theo thuật toán được sử

dụng, chúng ta có thể cần bổ sung một số bit vào thông điệp này để nhận được

thông điệp có độ dài là bội số của một hằng số cho trước. Chia nhỏ thông điệp

thành từng khối có kích thước bằng nhau: M1, M2, …Ms

 Gọi H là trạng thái có kích thước n bit, f là “hàm nén” thực hiện thao tác

trộn khối dữ liệu với trạng thái hiện hành

 Khởi gán H0 bằng một vector khởi tạo nào đó

 Hi = f(Hi-1 ,Mi) với i = 1, 2, 3, …,s

59

 Hs chính là thông điệp rút gọn của thông điệp M ban đầu

Hình 3.1. Sơ đồ Merkel-Damgard

Quá trình băm thực hiện trên từng khúc dữ liệu, mỗi khúc được băm một số

vòng (số vòng lặp đang sử dụng hiện nay là 64 vòng hoặc 80 vòng). Thuật toán duy

trì các biến tương ứng với các từ của mã băm, mỗi từ 32 bits hoặc 64 bits, và mỗi

vòng thực hiện tính toán các biến trên cơ sở khúc dữ liệu và các thao tác khác. Khúc

dữ liệu, tùy theo loại hàm băm có thể được sơ chế hoặc không, được chia thành các

mảnh nhỏ cỡ 32 bits hoặc 64 bits và được “trộn” dần vào các vòng băm. Trong mỗi

vòng băm, “gia vị” được bổ sung là hằng số, đối với đa số hàm băm hằng số được

lấy từ một hay hai mảng cho trước, trong đó có mảng các giá trị của một hàm phi

tuyến hoặc mảng của các số nguyên tố đầu tiên. Dữ liệu được “băm” sử dụng kết

hợp các phép toán trên bit. Cuối một vòng, thuật toán thực hiện “trộn” dữ liệu bằng

cách gán một số biến đầu ra bằng với một số biến đầu vào nhưng hoán vị. Các biến

với giá trị mới lại trở thành biến đầu vào cho vòng tiếp theo. Chúng ta thấy rằng dữ

liệu được băm là dữ liệu hỗn hợp, nhưng mô tả rõ hơn thì, thuật toán thực hiện băm

các biến trong khi thả mảnh dữ liệu và gia vị vào, rồi trộn các biến, tính toán, khởi

60

tạo các biến cho vòng sau, rồi lại băm tiếp. Khi kết thúc tất cả các vòng băm của

một khúc, khúc dữ liệu coi như được nén vào các biến.

Việc tính toán được bắt đầu với một giá trị hash khởi tạo, coi như mã băm

hiện hành của khúc dữ liệu đầu tiên. Ở đầu chu kỳ của một khúc, các biến được

gán với các từ tương ứng của mã băm hiện hành. Sau khi đi qua hết các vòng

băm, các biến kết quả được cộng tương ứng vào các từ của mã băm hiện hành để

tạo ra mã băm mới. Quá trình băm thực hiện băm đi băm lại trên từng khúc dữ

liệu, mã băm mới của chu kỳ này được dùng làm mã băm hiện hành của chu kỳ

tiếp theo, cho tới khúc cuối cùng. Giá trị nối các từ của mã băm sau cùng là mã

kết quả của hàm băm.

2.2.2. Thuật toán đối sánh chuỗi

2.2.3.1. Khái niệm đối sánh chuỗi

Đối sánh chuỗi là việc so sánh một hoặc vài chuỗi (thường được gọi là

mẫu hoặc pattern) với văn bản để tìm nơi và số lần xuất hiện của chuỗi đó trong

văn bản.

Đối sánh chuỗi là một chủ đề rất quan trọng trong lĩnh vực rộng hơn của

xử lý văn bản. Các thuật toán đối sánh chuỗi là những thành phần cơ bản được

sử dụng trong việc triển khai các phần mềm thực tiễn tồn tại trong hầu hết các

hệ điều hành. Hơn nữa, chúng làm nổi bật các phương pháp lập trình phục vụ

như là các mẫu trong các lĩnh vực khác của khoa học máy tính (thiết kế hệ

thống và phần mềm). Cuối cùng, các thuật toán đối sánh chuỗi cũng đóng một

vai trò quan trọng trong khoa học máy tính lý thuyết bằng cách cung cấp những

bài toán thách thức.

61

2.2.2.2. Phân loại thuật toán đối sánh chuỗi

- Theo thứ tự đối sánh: Thuật toán đối sánh chuỗi có thể được thực hiện

theo các thứ tự sau:

 Từ trái sang phải

 Từ phải sang trái

 Đối sánh tại vị trí cụ thể

 Không theo thứ tự nhất định

- Theo số lượng pattern:

 Đối sánh chuỗi đơn pattern

 Đối sánh đa chuỗi pattern

- Theo độ sai khác đối sánh:

 Đối sánh chuỗi chính xác

 Đối sánh chuỗi gần đúng

- Theo sự thay đổi của pattern và văn bản

 Pattern thay đổi, văn bản cố định

 Pattern cố định, văn bản thay đổi

 Pattern thay đổi, văn bản thay đổi

2.2.3. Dấu vân tay tài liệu

Trong khoa học máy tính, dấu vân tay nhận dạng duy nhất dữ liệu gốc cho

tất cả các mục đích thực tiễn giống như là việc nhận dạng duy nhất dấu vân tay

người trong thực tế. Dấu vân tay tài liệu là một tập hợp các số nguyên đại diện cho

một số khóa nội dung của tài liệu đó. Mỗi số nguyên được gọi là một giá trị băm.

62

Thông thường, một dấu vân tay tài liệu được tạo ra bằng cách chọn chuỗi

con từ văn bản đó và áp dụng một hàm toán học cho mỗi chuỗi con đã chọn. Hàm

này, giống như một hàm băm, tạo ra một giá trị băm. Giá trị băm này sau đó được

lưu trữ trong một chỉ mục (index) để truy cập nhanh khi truy vấn . Khi một tài liệu

truy vấn (query document) sẽ được so sánh với tập hợp các số nguyên đã được lưu

trữ đó, dấu vân tài liệu cho các truy vấn đó sẽ được tạo ra. Đối với mỗi giá trị băm

trong dấu vân tay tài liệu, chỉ mục của truy vấn và một danh sách các dấu vân tay

đối sánh được lấy ra. Số lượng giá trị băm chung giữa dấu vân tay truy vấn và mỗi

dấu vân tay trong tập hợp đã lưu trữ xác định tài liệu tương ứng đó.

Có một vài phương pháp để lấy dấu vân tay tài liệu dựa trên 4 sự biến đổi

của các thông số thiết kết sau:

- Chiến lược lựa chọn (được sử dụng để chọn các chuỗi con từ tài liệu đã cho).

- Kích thước của các chuỗi con (được trích ra từ tài liệu).

- Số lượng giá trị băm (được sử dụng để xây dựng một tài liệu dấu vân tay).

- Hàm Fingerprint (được sử dụng để tạo ra một giá trị băm từ chuỗi con

trong tài liệu, như là các checksum, hàm băm, hàm băm mật mã, và chữ kí số).

2.2.4. Thuật toán Rabin Fingerprint

Thuật toán Rabin Fingerprint là một trong nhiều thuật toán Fingerprint thực

hiện khóa công khai sử dụng các đa thức trên một trường giới hạn.

Thuật toán Rabin Fingerprint điển hình tạo ra một giá trị băm từ chuỗi con

trong các trang web (web pages), bởi vì đây là một thuật toán nhanh và dễ để

thực thi, và nó cũng đi kèm với một phân tích chính xác toán học của xác suất

đụng độ (hai tập tin có dấu vân tay giống nhau).

Thuật toán được sử dụng trong hệ thống như sau:

63

Đầu vào: Tài liệu (trang web công khai)

Đầu ra: Dấu vân tay tài liệu (các giá trị băm của tài liệu đó)

Bước 1: Bắt đầu.

Bước 2: Xử lý văn bản, xoá hết tất cả khoảng trắng và các kí tự đặc biệt (như: <,

>, %, !, …) từ mã HTML (mã trang web) để thu được một khối văn bản thuần túy

(pure text block).

Bước 3: Chia khối văn bản đã xử lý đó thành các chuỗi con có độ dài K.

// Số lượng chuỗi con có độ dài K và số lượng giá trị băm (mã băm) bằng (m-

K+1), với m là kích thước của tài liệu.

Bước 4: Tính toán giá trị băm đối với mỗi chuỗi con bằng cách tính H(P) như sau:

// H(P) là một tuyến tính trong n (n là độ dài của P)

Khởi tạo:

Count=K

Tr = T[r..r+n-1]

H(S) = S(n) + 2*S(n-1) + 4*S(n-2) + … + 2n-1*S(1)

Do while Count > 0

Sử dụng Hp(P) = H(P) mod p như là một giá trị băm (fingerprint) của

P

Hp(Tr) = [2*Hp(Tr-1) - (2n mod p) * T(r-1) + T(r+n-1)] mod p

//Tính giá trị băm cho các chuỗi con tiếp theo.

Until Count = 1

Bước 5: Lưu lại tất cả các giá trị băm của văn bản.

Bước 6: Kết thúc.

64

Hình 3.2. Mô tả thuật toán Rabin Fingerprint

Đánh giá độ phức tạp của thuật toán Rabin fingerprinting: tính mã băm cho

các chuỗi con của một tập tin có độ dài bất kỳ. Một tập tin M có kích thước m,

kích thước chuỗi con có độ dài n =>Độ phức tạp để tính mã băm cho các chuỗi

con của văn bản M có độ dài n là:O((m-n+1)n). Không gian lưu trữ giá trị mã

băm: m-n+1 giá trị.

Ví dụ: Cho một tập tin M có kích thước m = 1000 ký tự, chiều dài chuỗi con

có kích thước n =100 => số chuỗi con K=m-n+1 =1000-100+1=901= giá trị mã

băm cần lưu trữ.

2.2.5. Thuật toán Rabin Fingerprint cải tiến

Thuật toán cải tiến được đề xuất trong hệ thống như sau:

Đầu vào: Tài liệu (trang web công khai)

Đầu ra: Dấu vân tay tài liệu (các giá trị băm của tài liệu đó)

65

Bước 1: Bắt đầu.

Bước 2: Xử lý văn bản, xoá hết tất cả khoảng trắng và các kí tự đặc biệt (như:

<, >, %, !, …) từ mã HTML (mã trang web) để thu được một khối

văn bản thuần túy (pure text block).

Bước 3: Chia văn bản M thành K khối, mỗi khối con có kích thước là n.

K=m/n với m là kích thước của văn bản M, n là số nguyên dương

cho trước là kích thước của mỗi chuỗi con.

Bước 4: Tính mã băm H(P) cho các chuỗi con như sau:

Khởi tạo:

Tr = T[r..r+n-1];

K=0;

H(S) = S(n) + 2*S(n-1) + 4*S(n-2) + … + 2n-1*S(1);

While (K

{

for (r=K*n; r<=K*n+n; r++)

{

Hp(Tr)= (Hp(Tr) + T(r)) mod p //Tính giá trị băm cho các

chuỗi con, p là số nguyên tố lớn.

}

K++;

}

Bước 5: Lưu lại tất cả các giá trị băm của văn bản.

Bước 6: Kết thúc.

66

Hình 3.3. Minh hoạ cải tiến giải thuật

Đánh giá độ phức tạp của giải thuật cải tiến của Rabin fingerprinting: tính

mã băm cho các chuỗi con của một tập tin M có độ dài bất kỳ. Một tập tin có kích

thước m được chia thành K chuỗi con, số chuỗi con K = m/n, (n là số nguyên

dương kích thước của chuỗi con K) => độ phức tạp để tính mã băm cho mỗi chuỗi

con là O(n), cả tập tin M là O(m). Không gian lưu trữ giá trị mã băm: m/n giá trị.

Ví dụ: Cho một tập tin có kích thước m = 1000 ký tự, chiều dài chuỗi con

có kích thước n =100 => số chuỗi con K=m/n =1000/100=10= giá trị mã băm cần

lưu trữ.

2.3 Kết luận chương 2

Trong chương 2 luận văn đã phân tích và đưa ra các phương pháp đảm bảo an

ninh Website. Nghiên cứu một số thuật toán giám sát, tiếp cận cách sử dụng Dấu

vân tay tài liệu (Document Fingerprint) trong việc theo dõi sự thay đổi nội dung

trang Web. Trong chương tiếp theo, tác giả đề xuất xây dựng hệ thống phát hiện

thay đổi nội dung trang web dựa trên cải tiến thuật giải của Rabin Fingerprint.

67

CHƯƠNG 3

ỨNG DỤNG THUẬT TOÁN RABIN FINGERPRINT CẢI TIẾN XÂY

DỰNG HỆ THỐNG GIÁM SÁT SỰ THAY ĐỔI NỘI DUNG WEBSITE

3.1 Giới thiệu

Một trong những kiểu tấn công được biết rộng rãi nhất là tấn công thay đổi

website. Nó thường là các mã độc (virus, worm, trojan, và các loại mã độc khác),

được thiết kế để xóa bỏ, sửa đổi, hoặc thay thế các trang web trên host

(webserver).

Lỗ hổng website là mục tiêu tiềm tàng của việc tấn công (hack) vì các mục

đích khác nhau. Các hacker có vài công cụ để tìm kiếm các lỗ hổng website một

cách sâu rộng và nhanh chóng, tiếp theo là chúng sẽ di chuyển một cách nhanh

chóng và lén lún tới việc khai thác những điểm yếu đó.

Những cuộc tấn công thay đổi website đã được thực hiện để xâm phạm tính

toàn vẹn của web bằng một trong những hình thức sau:

Thay đổi nội dung của trang web.

Thay đổi bất kỳ phần nào của nội dung trang web.

Thay thế toàn bộ trang web.

Sử dụng lại trang web cũ.

Thay đổi bề ngoài của trang web.

Chuyển hướng trang web.

Phá hủy hoặc xóa bỏ trang web.

Kiểm soát an ninh mạng như Firewall, VPN, PKI (Public Key

Infrastructure),… là những công cụ quan trọng để giữ cho web được an toàn hơn,

68

nhưng chúng không đủ để đảm bảo an ninh website, bởi vì các các tấn cuộc tấn

công như vậy không thể được ngăn chặn ở các lớp (layer) mạng cao hơn, do đó

những cơ chế an ninh tốt hơn cần được cung cấp.

Luận văn đã đề xuất xây dựng hệ thống giám sát website nhằm phát hiện

kịp thời các cuộc tấn công (như đã nêu) bằng hệ thống đa kiểm tra dựa trên thuật

toán dấu vân tay nhanh (fast fingerprint algorithm) để đảm bảo tính toàn vẹn của

trang web đồng thời tạo ra thông điệp cảnh báo có ý nghĩa và phục hồi lại các

trang web đã bị tấn công.

3.2. Hệ thống giám sát nội dung Website

Mục đích chính của hệ thống giám sát nội dung website (Anti Website

Defacement System – AWDS) là để phát hiện bất kỳ các cuộc tấn công thay đổi

web nào và phục hồi các tập tin của web đã bị tấn công. Để đạt được nhiệm vụ này,

hệ thống giám sát nội dung website được thiết kế và triển khai trên 2 máy chủ

(Web-server và AWDS-server) với 5 hệ thống con (subsystem) được tích hợp và cơ

sở dữ liệu tập trung. Các hệ thống con này và chức năng chính của chúng như sau:

Thứ tự Tên hệ thống con Chức năng

I

Hệ thống cung cấp trang web (Builder)

Công bố trang web đã cho và duy trì danh mục kiểm tra bao gồm các tên tập tin website với các thuộc tính của chúng và giá trị băm.

II

Hệ thống đa kiểm tra (Multi-Checker) Theo dõi tính toàn vẹn những trang web đã được công bố.

69

III

Hệ thống khôi phục (Recover) Phục hồi các trang web về trạng thái trước khi trang web đó đã bị tấn công.

IV

Hệ thống tự theo dõi (Self-Watcher) Thẩm tra trạng thái của hệ thống đa kiểm tra.

V

Hệ thống quản trị (Admin) Điều khiển toàn bộ hệ thống giám sát Website

Hệ thống lưu trữ CSDL (Check-List Database)

Là một CSDL chứa các tập tin cùng với giá trị băm, các thuộc tính, và các khoảng thời gian (interval times).

Các bản sao mới nhất của các trang web được lưu trữ trong một khu vực bên

ngoài máy chủ web (Web-server), trên một máy chủ khác đặt tại một vùng mạng

khác. Các thành phần đó và mối quan hệ giữ chúng được thể hiện trong sơ đồ sau:

Hình 3.4. Sơ đồ kiến trúc hệ thống giám sát website

70

3.2.1. Hệ thống Builder

Hệ thống Builder hoạt động tại AWDS-server khi hệ thống Admin them

vào, chỉnh sửa, hoặc loại bỏ các trang web.

Hệ thống Builder hoạt động như sau:

- Tính toán giá trị băm và các thuộc tính (tên, kích thước của tập tin, loại,

ngày chỉnh sửa) của các trang web đã cho (trang web mới được thêm vào hoặc

trang web được chỉnh sửa).

- Lưu những thông tin tính toán vào trong danh sách lưu trữ CSDL, và hệ

thống cung cấp trang web (hệ thống Builder) có nhiệm vụ duy trì bảo quản danh

sách này.

- Lưu lại các trang web này trong thư mục phục hồi tại máy chủ AWDS

(AWDS-server) để phục hồi lại trang web như ban đầu nếu phát hiện có sự tấn

công làm thay đổi về nội dung.

- Công bố các trang web đã cho ở thư mục Intpub tại máy chủ web (Web-

server).

3.2.2. Hoạt động Multi-checker

Hệ thống con Multi-checker (đa kiểm tra) là trái tim của hệ thống giám sát

website, nó chứa vài kiểm tra làm việc bên cạnh thư mục Intpub tại Web-server.

Hệ thống sẽ thường xuyên kiểm tra định kỳ tính toàn vẹn của các trang web

được công bố, và các trang web quan trọng như trang chủ (index.htm, index.html,

default.asp, default.aspx, start.php, home.php, default.asp). Do đó có một khoảng

thời gian liên quan tới mỗi tập tin để kiểm tra lại tính toàn vẹn.

Hệ thống hoạt động phụ thuộc vào một trong hai chế độ sau:

71

- Chế độ kiểm tra cơ bản (basic mode): Khi hệ thống đa kiểm tra bắt đầu

hoạt động, hệ thống sẽ kiểm tra các thuộc tính (tên, kích thước của tập tin, loại, và

ngày chỉnh sửa) cho trang we hiện tại (trang web được lưu trong Intpub) và so

sánh nó với trang web đã được lưu trữ trước của chính nó trong CSDL.

Hình 3.5. Các thuộc tính cơ bản của tập tin

- Chế độ kiểm tra nâng cao (advanced mode): Khi hệ thống Multi-checker

bắt đầu hoạt động, hệ thống sẽ tính toán tìm giá trị băm (sử dụng thuật toán cải

tiến Rabin Fingerprint) cho các trang web được công bố (được lưu trữ trên thư

mục Intpub) và so sánh nó với trang web đã được lưu trữ trước của chính nó

trong CSDL.

Hệ thống Multi-checker đã triển khai bao gồm hai checker hoạt động tại chế

độ “”basic mode” (checkerB01 và checkerB02) và hai checker hoạt động tại chế

độ “advanced mode” (checkerA01 và checkerA02).

Các trạng thái kiểm tra của hệ thống như sau:

• Nếu trang web hiện không được liệt kê trong danh sách được lưu trữ trong

CSDL, có nghĩa là các trang web này là một tập tin không hợp pháp có thể là tập

tin mã độc hoặc virus... Hệ thống kiểm tra đưa ra cảnh báo “Không tồn tại trang

web này trong CSDL hoặc có thể là tập tin độc hại”, người quản trị trang web

72

kiểm tra lại và đưa ra xử lý kịp thời. Nếu là trang web mới thì sẽ tính giá trị băm

và các thuộc tính lưu vào CSDL. Nếu là tập tin mã độc hoặc virus thì loại nó ra

khỏi hệ thống và tiếp tục kiểm tra các trang web tiếp theo.

• Nếu như giá trị băm (trong chế độ kiểm tra nâng cao) hoặc bất kỳ thuộc

tính nào (trong chế độ kiểm tra cơ bản) của trang web hiện tại khác so với bản gốc

được lưu trữ ở CSDL, điều này có nghĩa là các trang web hiện tại đã bị sửa đổi về

nội dung. Hệ thống kiểm tra đưa ra cảnh báo “Trang web đã bị sửa đổi về nội

dung”, sau đó thông báo cho hệ thống phục hồi thực hiện khôi phục lại hệ thống

như trạng thái ban đầu, và tiếp tục kiểm tra các trang web tiếp theo.

• Nếu tên trang web đã tồn tại trong CSDL và không tồn tại trong thư mục

Intpub, có nghĩa là các trang web bị xóa khỏi thư mục Intpub công bố, và hệ thống

kiểm tra đưa ra cảnh báo “Trang web đã bị xoá”, sau đó thông báo cho hệ thống

khôi phục (Recover), và tiếp tục kiểm tra các trang web tiếp theo.

• Nếu thực hiện các kiểm tra không có vấn đề gì, hệ thống kiểm tra đưa

ra cảnh báo “Không phát hiện sự thay đổi”, và tiếp tục kiểm tra các trang web

tiếp theo.

3.2.3. Hệ thống Recover

Hệ thống khôi phục được kích hoạt bởi hệ thống Multi-checker sau khi phát

hiện có sự tấn công làm thay đổi nội dung trang web. Hệ thống con này sẽ phục

hồi lại các trang web đã bị tấn công làm thay đổi nội dung về lại trạng thái như

ban đầu. Hoạt động của hệ thống Recover như sau:

- Xoá trang web hiện tại khỏi thư mục Intpub nếu như tên trang web này

không tồn tại trong CSDL.

73

- Phục hồi lại trang web về trạng thái ban đầu, nếu như các thuộc tính và giá

trị băm của trang web hiện khác so với các thuộc tính và giá trị băm của trang web

đã được lưu trữ trong CSDL.

- Phục hồi lại trang web về trạng thái ban đầu, nếu như tập tin được liệt kê

không xuất hiện.

Và hệ thống Recover thông báo đến cho quản trị viên bằng cách gửi một

thông điệp cảnh báo phù hợp (ví dụ như là: malicious-alarm, defaced-alarm, hoặc

delete-alarm).

3.2.4. Hệ thống Self-watcher

Một lỗ hổng nghiêm trọng đối với hệ thống giám sát website (AWDS) chính

là hệ thống con Multi-checker. Hệ thống tự theo dõi (Self-watcher) theo dõi từng

checker của hệ thống đa kiểm tra (Multi-checker) để đảm bảo rằng các checker

đang ở trạng thái hoạt động. Hệ thống Self-watcher làm việc để thẩm tra các trạng

thái của các checker. Hệ thống Multi-checker là trái tim của AWDS, do đó nếu bất

kì một checker nào không đúng chức năng với bất cứ lý do gì (như là bị tấn công)

thì hệ thống giám sát website sẽ có giá trị an ninh cục bộ hoặc không còn giá trị về

mặt an ninh nữa.

Hệ thống Self-watcher làm việc để đảm bảo rằng các checker đang hoạt

động và đúng chức năng bằng thủ tục “Call-Back tự động” nhằm xác minh các

trạng thái của các checker. Trong mỗi khoảng thời gian đã cho, hệ thống Self-

watcher quay số gọi tới một checker bằng cách gửi một số ngẫu nhiên, checker đó

ngắt liên lạc. Và checker này gọi lại cho Self-watcher.

Nếu như hệ thống Self-watcher không nhận được cuộc gọi trong khoảng

thời gian timeout đã cho thì nó sẽ gọi lại theo như cách cũ. Nếu không có trả lời

trong thời gian timeout lớn nhất đã cho, (điều đó có nghĩa là checker đó bị hỏng

74

hoặc kết nối giữa hai server bị đứt liên kết), hệ thống Self-watcher se gửi một cảnh

báo “failed-alarm” tới hệ thống quản trị (Admin).

3.2.5. Hệ thống Admin

Quản trị viên của hệ thống giám sát website có thể điều khiển các thành

phần khác nhau của các hệ thống phụ này. Ví dụ, thêm một trang web mới, chỉnh

sửa một trang web đang tồn tại, hoặc xóa bỏ trang web khỏi CSDL và tập tin khôi

phục. Bằng cách sử dụng hệ thống Admin, người quản trị có thể thiết lập khoảng

thời gian kiểm tra cho mỗi trang web và khởi tạo các thông điệp cảnh báo và

thông báo.

3.3. Hoạt động hệ thống dựa trên các phát hiện thay đổi bất thường.

3.3.1. Tổng quan hệ thống

Cho một tài nguyên web hoặc dữ liệu có ý nghĩa được xác định bởi một

URL, một tài liệu HTML, một tập tin hình ảnh [14] …

Một giám sát M có thể giám sát nhiều tài nguyên web khác nhau cùng một

lúc. Bộ giám sát sẽ giám sát tập hợp các URL xác định. Thông thường, nhưng

không nhất thiết bộ giám sát sẽ bao gồm nhiều tài nguyên từ nhiều nguồn khác

nhau. Để dễ trình bày nhưng không mất tính tổng quát, chúng ta giả định rằng bộ

giám sát chỉ giám sát một nguồn R. Biểu thị ri sẽ đọc tài nguyên R.

Trong giai đoạn đầu tiên, mà chúng ta gọi là giai đoạn học (learning phase),

xây dựng tập hồ sơ (profile) của R là Pr . M={ ri }. Giám sát M có thể bắt đầu theo

dõi, trong đó nó thực hiện các chu kỳ sau một cách vô tận:

1. Thiết lập khoảng thời gian giám sát m.

2. Đọc r thuộc R

3. Phân tích r

4. Nếu r là bất thường đưa ra cảnh báo.

75

Giai đoạn đầu là giai đoạn học và phân tích (bước 3 ở trên), các bước khác

của giai đoạn giám sát có thể được hiểu một cách dễ dàng, đặc biệt là việc thực

hiện thực tế của bước 4 (làm thế nào để gửi một cảnh báo cho người theo dõi các

trang web, làm thế nào để xử lý các cảnh báo).

3.3.2. Kiến trúc hệ thống

Tài nguyên R sẽ được phân tích thành các lớp tham số P(ri). Mỗi tham số

đặc trưng cho một hoặc nhiều tính năng của R, ví dụ như kích thước (byte) hay số

liên kết, số hình ảnh, số thẻ nội dung...

- Trong chế độ học (learning mode), hệ thống sẽ lưu trữ tất cả các tham số

Pi, các ngưỡng cho phép ti.

- Trong chế độ phát hiện (detection mode), Hệ thống sẽ đọc giá trị ri thuộc

R phân tích và trả về một giá trị luận lý (Boolean) S(ri). S(ri) trả về giá trị là đúng

nếu như X(ri) > ti, trong trường hợp này hệ thống sẽ đánh dấu là một trường hợp

bất thường.

Hình 3.6. Kiến trúc hệ thống phát hiện thay đổi bất thường

76

Trong giai đoạn giám sát, các cờ S(ri) có giá trị luận lý (Boolean) được tổng

hợp với nhau tạo thành một giá trị luận lý mới sẽ đại diện cho việc phân loại tổng

các giá trị đọc r, kí hiệu là A(r). Nếu A(r) > t có giá trị luận lý trả về là đúng (true)

thì hệ thống giám sát sẽ đưa ra cảnh báo (alert), với t là ngưỡng cho phép của hệ

thống (do quản trị hệ thống quy định).

3.4. Phân tích hoạt động của hệ thống

- Hoạt động của hệ thống con đa kiểm tra. Hệ thống con này gồm hai chế độ

kiểm tra:

Một là chế độ kiểm tra cơ bản là chế độ kiểm tra nhanh. Thuật toán ở chế độ

này đơn giản chỉ là các phép toán so sánh các thuộc tính của trang web cần kiểm

tra như tên tập tin (file name), kiểu tập tin (style), kích thước tập tin (size), ngày

khởi tạo tập tin, ngày cập nhật (update) với các thuộc tính của trang gốc lưu trữ

trong CSDL.

Hai là chế độ kiểm tra chi tiết của hệ thống phát hiện thay đổi nội dung

trang web dựa trên thuật toán kiểm tra định kỳ mã băm cho mỗi trang web [19].

Tương ứng với mỗi trang web ta có các giá trị mã băm. Đầu tiên các trang

web sẽ được được tính toán mã băm. Nếu trang này là trang mới sẽ được lưu vào

cơ sở dữ liệu.

Định kỳ sẽ kiểm tra đối với bất kỳ trang web nào và mỗi trang web kiểm

tra sẽ được tính mã băm mới. Nó sẽ được so sánh với mã băm đã được lưu, nếu

kết quả kiểm tra trả về giá trị đúng (giá trị băm bằng nhau) thì trang web đó chưa

bị thay đổi về nội dung, ngược lại nếu kết quả kiểm tra trả về giá trị sai thì trang

web đó đã bị thay đổi về nội dung. Phương pháp được đề xuất có thể được tóm tắt

trong sơ đồ sau đây [19]:

77

Hình 3.7. Sơ đồ phương pháp phát hiện sự thay đổi nội dung trang web

Bước 1: Trên cơ sở các trang web thích hợp chọn một trang web để kiểm tra

sự thay đổi về nội dung.

Bước 2: Tính mã băm mới cho các trang web được chọn trong bước 1, sử

dụng giải thuật cải tiến của Rabin Fingerprinting.

Bước 3: So sánh các mã băm mới của trang web với mã băm được lưu trữ

trong cơ sở dữ liệu.

Nếu kết quả của việc so sánh là đúng, thì trang web đó chưa có sự thay đổi

về nội dung và quá trình sẽ dừng lại.

Nếu kết quả của việc so sánh là sai, thì trang web đó đã có sự thay đổi về

nội dung , đưa ra thông điệp cảnh báo.

78

Hoạt động của hệ thống theo dõi giám sát phát hiện thay đổi bất thường nội

dung trang web. Hiệu quả của hệ thống này chính việc hệ thống đưa ra những

cảnh báo thay đổi bất thường có ý nghĩa (trang web đã bị tấn công thay đổi về nội

dung) dựa trên sự so sánh các tham số đầu vào P(ri) với ngưỡng cho phép ti. Phân

tích một số trường hợp cụ thể như sau:

Trường hợp 1: Nếu hệ thống kiểm tra giám sát thuộc một trong các trường

hợp này thì hệ thống sẽ đưa ra cảnh báo có sự thay đổi bất thường:

- Số kí tự của trang web thay đổi bất thường (số kí tự nhỏ hơn rất nhiều

hoặc lớn hơn rất nhiều so với số kí tự ban đầu của trang web).

- Nội dung chỉ chứa một hình ảnh hoặc không có hình ảnh nào.

- Không có bất kỳ thẻ nội dung nào.

- Không thấy được nội dung văn bản.

- Số liên kết của trang thay đổi bất thường.

Trường hợp 2: Trong trường hợp này hệ thống tổng kết tất cả kết quả so

sánh của các tham số X(ri) với ngưỡng ti và đưa ra cảnh báo nếu như phát hiện có

thay đổi bất thường A(r) > t.

- Đánh giá chung:

Đối với hệ thống phát hiện thay đổi nội dung web dựa trên hệ thống con đa

kiểm tra thì hệ thống này rất hiệu quả với việc kiểm tra tính toàn vẹn cho các trang

web tĩnh có nội dung cố định ít thay đổi, hệ thống dựa trên thuật toán cải tiến

Rabin Fingerprint tìm các số nguyên (giá trị băm) xác định vị trí của nội dung đã

bị sửa đổi. Ngược lại, thì không phù hợp với việc kiểm tra các trang web có nội

dung thay đổi thường xuyên như các trang web động. Hệ thống theo dõi giám sát

79

phát hiện thay đổi bất thường sẽ hiệu quả hơn việc kiểm tra giám sát các trang web

có nội dung động thay đổi thường xuyên. Hệ thống sẽ đưa ra cảnh báo sớm có ý

nghĩa nếu phát hiện có sự thay đổi bất thường về nội dung.

3.5 Cài đặt và thử nghiệm chương trình

3.5.1. Cài đặt chương trình

 Chương trình thử nghiệm được phát triển bằng ngôn ngữ C# và hệ quản

trị CSDL Microsoft SQL Server 2012. Với cấu hình máy sử dụng là:

- Bộ xử lý: Intel(R) Core(TM)2 Duo CPU T6670 @ 2.20GHz

- Bộ nhớ Ram: 4.00 GB.

- Loại hệ thống: hệ điều hành 64-bit.

- Hệ điều hành: Windows 7 Professional SP1.

 Web-server được cài đặt trên hệ thống máy ảo Xampp và những website

đã được công bố trên mạng Internet như 24h.com.vn, viettel.com.vn,…

Giao diện chính của chương trình sau khi cài đặt:

Hình 3.8. Giao diện chính của chương trình giám sát website

80

Chức năng một số nút lệnh:

- Nút File: Mở một tập tin đã được lưu trữ.

- Nút Hash: Tính giá trị băm.

- Nút Add CSDL: Lưu các thuộc tính và giá trị băm vào cơ sở dữ liệu.

- Nút Del CSDL: Xoá các thuộc tính và giá trị băm khỏi CSDL.

- Nút Multi Checker Basic mode: Kiểm tra các trang web dựa trên các

thuộc tính.

- Nút Multi Checker Advance mode: Kiểm tra các trang web dựa trên giá

trị băm.

- ListWeb: Lưu danh sách các trang web cần giám sát theo dõi.

- Trang web được chọn: Cho biết những trang web nào đang được giám sát.

- Nút Multi Thread: Bắt đầu chế độ giám sát đa luồng (nhiều website

cùng lúc).

- Nút Start: Bắt đầu giám sát một website.

- Nút Stop: Dừng giám sát.

- Web 1, Web2, Web3, Web4: Cho biết thông tin khi xử lý đa tiến trình.

3.5.2. Thử nghiệm chương trình

 Chương trình được thử nghiệm kiểm tra về thời gian xử lý của thuật toán

Rabin Fingerprint và thuật toán cải tiến Rabin Fingerprint với dữ liệu vào là 4

website (sử dụng hàm stopwatch() trong C# để đo thời gian xử lý của thuật toán).

- Kết quả thử nghiệm của chương trình với 4 trang web về thời gian tính toán

của thuật toán Rabin Fingerprint và cải tiến thuật toán Rabin Fingerprint như bảng

biểu sau:

81

Website Rabin fingerprint (Thời gian) Cải tiến Rabin fingerprint (Thời gian) Kích thước (kí tự)

24h.com.vn 00:07:52.2659048 00:00:00.0179612 197342

bongda.com.vn 00:10:56.6508695 00:00:00.0237493 260318

viettel.com.vn 00:00:29.7748576 00:00:00.0053756 34798

tmasolutions.com 00:00:07.4765326 00:00:00.0032503 96819

 Chương trình được thử nghiệm kiểm tra về thời gian xử lý của hệ

thống kiểm tra cơ bản và kiểm tra chi tiết với dữ liệu vào là 5 trang web.

- Kết quả thử nghiệm của hệ thống kiểm tra cơ bản và kiểm tra nâng cao

như bảng sau:

Website Basic mode (Thời gian) Advanced mode (Thời gian) Kích thước (kí tự)

24h.com.vn 00:00:00.0013731 00:00:00.0038273 197342

bongda.com.vn 00:00:00.0021435 00:00:00.0042867 260318

viettel.com.vn 00:00:00.0058100 00:00:00.0026037 34798

tmasolutions.com 00:00:00.0010857 00:00:00.0026319 96819

vnexpress.net 00:00:00.0017357 00:00:00.0047003 272277

 Chương trình được thử nghiệm theo dõi giám sát đa luồng, cùng một lúc

theo dõi 4 website. Chức năng Multi-thread đã hoạt động tốt, đưa ra được cảnh

báo khi có sự thay đổi nội dung trang web.

82

Hình 3.9. Chương trình giám sát website theo dõi 4 website đồng thời

 Chương trình được thử nghiệm kiểm tra ở chế độ nâng cao, đã chỉ ra

được vị trí thay đổi của nội dung trang web.

Hình 3.10. Hoạt động của chức năng Advanced Mode

3.5.3. Nhận xét kết quả

- Thời gian xử lý của thuật toán cải tiến Rabin Fingerprint là nhanh hơn rất

nhiều so với thuật toán Rabin Fingerprint (đặc biệt khi kích thước trang web lớn).

83

- Thời gian xử lý của hệ thống Multi-checker ở hai chế độ kiểm tra cơ bản

(basic mode) và kiểm tra nâng cao (advanced mode) là tương đương nhau vì cùng

độ phức tạp thuật toán.

- Chương trình đã giám sát được sự thay đổi bất thường của website khi

theo dõi đơn tiến trình (một website) cũng như đa tiến trình (nhiều website đồng

thời), và đã đưa ra được cảnh báo hợp lý.

- Ở chế độ Advaced Mode đã chỉ ra được vị trí thay đổi của nội dung

trang web.

3.6. Kết luận chương 3

Trong chương này luận văn đề xuất xây dựng hệ thống phát hiện thay đổi nội

dung trang web dựa trên cải tiến thuật toán của Rabin Fingerprint và xây dựng hệ

thống theo dõi giám sát dựa trên các thay đổi bất thường nội dung trang web, đưa

ra cảnh báo kịp thời có ý nghĩa. Xây dựng chương trình phát hiện thay đổi nội

dung trang web, thử nghiệm phân tích đánh giá kết quả đạt được.

84

KẾT LUẬN

1. Kết quả đạt được

Luận văn đã giới thiệu tổng quan về Webserver và Website, đồng thời phân

tích các lỗ hổng an ninh trên Web dẫn tới những kiểu tấn công Web phổ biến trên

thế giới, và cũng trình bày các kỹ thuật phòng chống các kiểu tấn công đó.

Luận văn đã phân tích sâu một số phương pháp đảm bảo an ninh Web: Đảm

bảo an ninh HĐH webserver, đảm bảo an ninh webserver, đảm bảo an ninh nội

dung web, sử dụng kỹ thuật xác thực và mã hóa, triển khai cơ sở hạ tầng mạng an

ninh, quản trị webserver.

Luận văn đã xây dựng được hệ thống giám sát website có thể theo dõi đa

luồng (nhiều website đồng thời) và có thể giám sát được những trang web động,

đưa ra cảnh báo kịp thời có ý nghĩa.

2. Hướng phát triển

Do điều kiện nghiên cứu còn nhiều hạn chế nên kết quả nghiên cứu chưa

thực sự như mong muốn. Tác giả tiếp tục nghiên cứu để tiếp tục phát triển hoàn

thiện chương trình được tốt hơn như:

- Cải tiến thuật toán xử lý văn bản để tăng tốc độ xử lý nhanh hơn.

- Xây dựng hệ thống con tự theo dõi (Self-watcher) nhằm tăng năng lực

giám sát cho hệ thống.

- Hoàn thiện hệ thống khôi phục Website.

85

TÀI LIỆU THAM KHẢO

Tiếng Việt

[1]. Lê Đình Duy, 2003 “Tấn Công Kiểu SQL Injection – Tác Hại Và Cách

Phòng Tránh” Đại học Khoa Học Tự Nhiên TPHCM..

[2]. Nguyễn Thanh Nghị, HVA-2008 “Tấn công từ chối dịch vụ Dos, Ddos,

DRDos”.

[3]. Dương Anh Đức và Trần Minh Triết, 2005 “Mã hóa và Ứng dụng”, Đại

học Khoa Học Tự Nhiên TPHCM.

Tiếng Anh

[4]. Charles P. Pfleeger and Shari Lawrence, Prentice Hall, 2003 “Security in

Computing”, 3rd Edition.

[5]. William Stalling, Prentice Hall, 1999 “Cryptography and Network

Security”.

[6]. Amanda Andress and Mandy Andress, Sams,2004 “Surviving security:

how to integrate people”, process, and technology, 2nd Edition.

[7]. E.L.Cashin, 2000 “Integerit file Verification System”.

[8]. Rocksoft, 2003 “Veracity- nothing can change without you knowing:

Data integrity assurance”.

[9]. R.Lehti, 2005 “Advanced Intrusion Detection Environment”.

[10]. RSA Laboratories, 1992 “The MD2 Message Digest Algorithm”.

[11]. Gene Kim, Tripwire,Inc, 2001 “Advanced Applications of Tripwire for

Servers”.

[12]. Dr.Mazin S. Al-Hakeem “ANTI WEB SITE DEFACEMENT SYSTEM

(AWDS)”.

86

[13]. Andrew S. Tanenbaum, Maarten Van Steen “DISTRIBUTED SYSTEMS

principles and paradigms”. Second Edition.

[14]. Selvitri F, 2004 “High Performance Issues in Web Search Engines”,

[15]. Giorgio Davanzo, 2010 “Machine Learning in Engineering Applications”