ĐẠ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
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 và 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”