1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng giải pháp bảo mật cho hệ thống điện toán đám mây tại trường đại học phạm văn đồng

78 50 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 4,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

B ố cục của luận văn Luận văn được trình bày bao gồm 3 chương chính như sau : Chương 1: Trình bày những vấn đề tổng quan về ảo hóa, các công nghệ ảo hóa làm nền tảng, giới thiệu về máy

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA

Đà Nẵng, năm 2018

Trang 2

TRƯỜNG ĐẠI HỌC BÁCH KHOA

Chuyên ngành: KHOA H ỌC MÁY TÍNH

Trang 3

L ỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác

Tác gi ả luận văn

Nguy ễn Hồng Anh

Trang 4

M ỤC LỤC

LỜI CAM ĐOAN i

MỤC LỤC ii

TÓM TẮT LUẬN VĂN iv

DANH MỤC TỪ VIẾT TẮT v

DANH MỤC CÁC BẢNG vi

DANH MỤC CÁC HÌNH vi

MỞ ĐẦU 1

1 Tính cấp thiết và lý do chọn đề tài 1

2 Mục tiêu và nội dung nghiên cứu 2

3 Đối tượng và phạm vi nghiên cứu 2

4 Phương pháp nghiên cứu 2

5 Ý nghĩa khoa học và thực tiễn 2

6 Bố cục của luận văn 3

CHƯƠNG 1 TỔNG QUAN VỀ MÁY CHỦ ẢO VÀ ĐÁM MÂY 4

1.1 Tổng quan về ảo hóa 4

1.1.1 Giới thiệu 4

1.1.2 Công nghệ ảo hóa 6

1.1.3 Máy chủ ảo 7

1.2 Tổng quan về điện toán đám mây 8

1.2.1 Đặc điểm và lợi ích của điện toán đám mây 10

1.2.2 Các loại hình dịch vụ 11

1.2.3 Các mô hình triển khai 13

1.2.4 Hướng tiếp cận điện toán đám mây sử dụng công cụ mã nguồn mở 15

KẾT CHƯƠNG 1 18

CHƯƠNG 2 AN TOÀN VÀ BẢO MẬT TRÊN ĐIỆN TOÁN ĐÁM MÂY 19

2.1 An toàn và bảo mật trên điện toán đám mây 19

2.2 Máy chủ Web và các thành phần chính 19

2.2.1 Apache 20

2.2.2 Dịch vụ IIS 21

2.2.3 Giao thức HTTP trong ứng dụng web 22

2.2.4 Phát hiện tấn công dựa vào log file 22

2.3 Kỹ thuật tấn công trên web 23

2.3.1 Tấn công chèn câu truy vấn SQL (SQL Injection) 23

2.3.2 Tấn công XSS (Cross-Site Scripting) 25

Trang 5

2.3.3 Chiếm hữu phiên làm việc (Session Management) 27

2.3.4 Tấn công từ chối dịch vụ (DoS) 27

2.3.5 Một số kỹ thuật tấn công khác 28

2.4 Phát hiện tấn công SQL Injection và XSS bằng biểu thức chính quy 29

2.4.1 Giới thiệu về biểu thức chính quy 29

2.4.2 Biểu thức chính quy trong PHP 29

2.4.4 Phát hiện tấn công XSS bằng biểu thức chính quy 32

KẾT CHƯƠNG 2 33

CHƯƠNG 3 THIẾT KẾ XÂY DỰNG MÔ HÌNH TRIỂN KHAI 34

3.1 Đặt vấn đề 34

3.1.1 Bài toán 34

3.1.2 Mô tả hoạt động hệ thống 34

3.2 Phân tích và thiết kế 36

3.2.1 Cơ sở dữ liệu 36

3.2.2 Phân tích và thiết kế 36

3.3 Kết quả triển khai 40

3.3.1 Cài đặt môi trường hệ thống 40

3.3.2 Nhập dữ liệu vào cơ sở dữ liệu 41

3.3.3 Các chức năng thống kê, phân tích và tìm kiếm 41

KẾT CHƯƠNG 3 47

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 48 TÀI LIỆU THAM KHẢO

PHỤ LỤC

Trang 6

TÓM T ẮT LUẬN VĂN

XÂY D ỰNG GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG ĐIỆN TOÁN

ĐÁM MÂY TẠI TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG

Học viên: Nguyễn Hồng Anh Chuyên ngành: Khoa học máy tính

Mã số: 60480101 Khóa: K33 Trường Đại học Bách khoa – Đại học Đà Nẵng

Tóm t ắt – Điện toán đám mây và các dịch vụ trên nền điện toán đám mây ngày càng

phát triển mạnh mẽ, giúp tiết kiệm chi phí về con người, bảo trì, thuận tiện trong quản lý, điều khiển hệ thống Tuy nhiên, bảo mật trên điện toán đám mây sao cho hiệu quả là điều khiến các nhà quản trị mạng phải luôn quan tâm nghiên cứu Trong luận văn này, tôi tiến hành nghiên cứu cơ sở lý thuyết về ảo hóa, các công nghệ ảo hóa, lý thuyết về điện toán đám mây,

xu hướng sử dụng mã nguồn mở trên điện toán đám mây, lựa chọn OpenStack làm môi trường triển khai Trên cơ sở này, luận văn tiếp tục nghiên cứu giải pháp an toàn và bảo mật thông tin trên điện toán đám mây, chọn giải pháp phân tích tập tin nhật ký máy chủ nhằm phát

hiện các tấn công SQL Injection và XSS để xây dựng mô hình, triển khai thực nghiệm, xây

dựng biểu đồ thống kê kết quả Kết quả của luận văn được sử dụng như một đề xuất để thực

hiện tại trường Đại học Phạm Văn Đồng trong thời gian tới

Từ khóa – Điện toán đám mây, tập tin nhật ký máy chủ, SQL Jnjection, XSS, biểu

th ức chính quy

Abstract – Cloud computing and cloud computing-based services are increasingly

evolving, helping to save on human costs, maintenance, and convenience in management and control of the system However, efficiency in the security of cloud computing is what administrators always have to focus on researching In this thesis, I have reseached about vitualization’s theory, vitualization technologies, cloud computing’s theory, open-source trend

in cloud computing, chosen OpenStack to be a development enviroment Based on this, the thesis is continued to research about information security and confidentiality solutions in cloud computing, selected the server log file analysis was the solution for detection of SQL Injection and XSS attack to built model, experiment, and statistical charts The result of this thesis will be used as a proposal for practical implementation at Pham Van Dong University

in the next time

Key words – Cloud computing, log file server, SQL Injection, XSS, regular expression

Trang 7

DANH M ỤC TỪ VIẾT TẮT

CNTT Công nghệ thông tin

IaaS Infrastructure as a Service Dịch vụ hạ tầng

HTTP Hypertext Transfer Protocol

NIST National Institute of Standards

and Technology

Viện tiêu chuẩn và Kỹ thuật

Quốc gia Hoa Kỳ PaaS Platform as a Service Dịch vụ nền tảng

SaaS Software as a Service Dịch vụ phần mềm

VMM Virtual Machine Monitor

VPS Virtual Private Server

Trang 8

3.4 Use-Case import tập tin nhật ký vào cơ sở dữ liệu 38 3.5 User-Case thống kê top IP có nhiều request nhất 38 3.6 Use-Case thống kê IP mà request có mã trạng thái 302 38 3.7 Use-Case thống kê IP mà request có mã trạng thái 403 38 3.8 Use-Case thống kê IP mà request có mã trạng thái 200 38 3.9 Use-Case thống kê IP mà request có mã trạng thái 500 39

3.11 Thống kê theo thời gian 5 ngày gần nhất 39 3.12 Thống kê 5 ngày có nhiều request nhất 39 3.13 Use-Case phát hiện tấn công SQL injection 39

Trang 9

3.6 Import tập tin nhật ký vào cơ sở dữ liệu 41

3.9 Thống kê theo thời gian có nhiều request nhất 43

3.11 Thống kê top 5 IP có nhiều request trả về mã 200 44 3.12 Thống kê Top 5 IP có nhiều request trả về mã 500 44 3.13 Thống kê Top IP có nhiều request trả về mã 302 45 3.14 Thống kê Top IP có nhiều request trả về mã 403 45 3.15 Thống kê Top IP có dấu hiệu tấn công SQL Injection 46 3.16 Thống kê Top IP có dấu hiệu tấm công XSS 47

Trang 10

M Ở ĐẦU

1 Tính c ấp thiết và lý do chọn đề tài

Công nghệ thông tin trên toàn thế giới đang phát triển với một tốc độ nhanh chóng Các công nghệ cũ đang dần dần bộc lộ nhiều hạn chế và không còn khả năng đáp ứng được nhu cầu hiện tại của các doanh nghiệp, tổ chức Với tình hình phát triển hiện nay, các đơn vị cần một hoặc nhiều máy chủ để chạy các ứng dụng cho toàn đơn

vị mà máy tính thông thường không làm được Những máy chủ có chức năng riêng và những yêu cầu đặc biệt không chạy trên cùng một hệ điều hành, hoặc việc chạy trên nhiều server nhưng không tận dụng được tối đa tài nguyên, kéo theo chi phí lớn khi đầu tư máy chủ vật lý

Cũng trên cơ sở đó, việc quản lý tốt và hiệu quả dữ liệu của riêng công ty, doanh nghiệp, đơn vị sự nghiệp cũng như dữ liệu khách hàng, đối tác, nhân viên là một trong

những bài toán được ưu tiên hàng đầu và còn nhiều khó khăn Để có thể quản lý được nguồn dữ liệu đó, thông thường các đơn vị phải cân nhắc đầu tư, tính toán rất nhiều

loại chi phí: phần cứng, phần mềm, mạng, quản trị viên, bảo trì, sửa chữa, mở rộng, nâng cấp thiết bị, kiểm soát việc bảo mật, tính sẵn sàng cao và sự khổng lồ của dữ

liệu… Từ một bài toán điển hình như vậy, thuật ngữ “điện toán đám mây” ra đời với ý tưởng đưa tất cả mọi thứ như: dữ liệu, phần mềm, tính toán, … lên trên mạng Internet Các máy chủ ảo sẽ cung cấp các dịch vụ giúp cho đơn vị có thể quản lý dữ liệu dễ dàng hơn, họ sẽ chỉ trả chi phí cho lượng sử dụng dịch vụ của họ, mà không cần phải đầu tư nhiều vào cơ sở hạ tầng cũng như quan tâm nhiều đến công nghệ Điều duy nhất khiến các tổ chức, đơn vị e dè khi muốn chuyển đổi sang môi trường đám mây là độ tin cậy, tính bảo mật, khả năng sẵn sàng của dịch vụ, hiệu suất hoạt động Trong đó,

bảo mật trên đám mây là điều mà nhiều người quan tâm nhất

Ứng dụng điện toán đám mây vào giáo dục, đặc biệt là ở các cơ sở giáo dục đại

học nói chung, và Đại học Phạm Văn Đồng nói riêng, là một xu hướng mới đang được quan tâm Nhiều hãng dịch vụ lớn liên quan đã và đang tích cực đưa các ứng dụng liên quan đến điện toán đám mây vào nhà trường nhằm tạo sự quen thuộc cho sinh viên, cán bộ giảng viên, nhằm phát triển số lượng người dùng về sau Tuy nhiên những ứng

dụng này thường giới hạn về số người sử dụng, dung lượng sử dụng, hoặc tốn phí cao cho việc bảo mật, chưa thật sự đáp ứng hết các nhu cầu của đơn vị

Từ những lý do trên, tôi lựa chọn thực hiện luận văn “Xây dựng giải pháp bảo

m ật cho hệ thống điện toán đám mây tại Trường đại học Phạm Văn Đồng” để tìm

hiểu rõ về quản lý máy chủ ảo, đám mây và giải quyết những vấn đề còn tồn tại trên

Trang 11

2 M ục tiêu và nội dung nghiên cứu

2.1 M ục tiêu

Xây dựng giải pháp bảo mật trên Đám mây một cách tự động hóa bằng việc phân tích nhật ký tập tin máy chủ (log server), đề xuất phương án để áp dụng cho Trường Đại học Phạm Văn Đồng

2.2 N ội dung nghiên cứu

- Tìm hiểu lý thuyết về ảo hóa và cấp phát tài nguyên

- Tìm hiểu lý thuyết về đám mây và một số giải pháp bảo mật

- Giải pháp tạo máy chủ ảo, giải pháp bảo mật trên đám mây một cách tự động hóa

- Xây dựng các công cụ hỗ trợ quản lý và bảo mật máy chủ ảo

3 Đối tượng và phạm vi nghiên cứu

3.1 Đối tượng nghiên cứu

- OpenStack

- Các giải pháp bảo mật trên đám mây

- Tập tin nhật ký máy chủ

3.2 Ph ạm vi nghiên cứu

- Giải pháp nguồn mở OpenStack trong việc xây dựng điện toán đám mây

- Quản lý máy chủ chủ ảo và bảo mật trên đám mây một cách tự động hóa

4 Phương pháp nghiên cứu

4.1 Phương pháp lý thuyết

- Cơ sở lý thuyết về về ảo hóa và cấp phát tài nguyên

- Cơ sở lý thuyết về đám mây và bảo mật đám mây trên OpenStack

- Cơ sở lý thyết về Openstack và các giải pháp mã nguồn mở trong Openstack

- Các thuật toán tạo máy chủ ảo

4.2 Phương pháp thực nghiệm

- Xây dựng giải pháp tạo máy chủ ảo và các giải pháp bảo mật trên đám mây (phân tích tập tin nhật ký máy chủ) một cách tự động hóa

- Xây dựng chương trình thử nghiệm

5 Ý nghĩa khoa học và thực tiễn

5 1 Ý nghĩa khoa học

- Áp dụng lý thuyết ảo hóa và phân bổ tài nguyên

- Áp dụng các lý thuyết bảo mật trên đám mây

5 2 Ý nghĩa thực tiễn

- Phân tích đánh giá giải pháp tạo máy chủ ảo và đề xuất giải pháp xây dựng máy

chủ ảo trong nền Openstack

- Đề xuất được hướng bảo mật hiệu quả trên đám mây

Trang 12

6 B ố cục của luận văn

Luận văn được trình bày bao gồm 3 chương chính như sau :

Chương 1: Trình bày những vấn đề tổng quan về ảo hóa, các công nghệ ảo hóa

làm nền tảng, giới thiệu về máy chủ ảo, đồng thời trình bày về khái niệm đám mây, các loại hình dịch vụ, mô hình triển khai, giới thiệu hướng tiếp cận mã nguồn mở trên

điện toán đám mây dựa trên OpenStack

Chương 2: Trình bày về an toàn và bảo mật trên điện toán đám mây, các kỹ

thuật tấn công web, phát hiện và phòng chống tấn công SQL Injection, XSS, giải pháp phân tích tập tin nhật ký áp dụng xây dựng bảo mật trên đám mây

Chương 3: Tiến hành thiết kế, xây dựng, triển khai và đánh giá giải pháp ứng

dụng

Kết luận và hướng phát triển đề tài: Đánh giá kết quả đạt được, xác định

những ưu nhược điểm và hướng phát triển trong tương lai

Trang 13

CHƯƠNG 1

Chương 1 trình bày những vấn đề tổng quan về ảo hóa, các công nghệ ảo hóa làm n ền tảng, giới thiệu về máy chủ ảo, đồng thời trình bày về khái niệm đám mây, 3

lo ại hình dịch vụ, 4 mô hình triển khai cũng như giới thiệu hướng tiếp cận mã nguồn

m ở trên điện toán đám mây qua OpenStack

1.1 T ổng quan về ảo hóa

1.1.1 Gi ới thiệu

a Một số khái niệm

 Virtual Machine: là một máy chạy bởi chính nó, nó được “lừa” rằng đang chạy

trên phần cứng thật, trong khi thật sự máy này chỉ đang chạy trên phần mềm hoặc hệ điều hành nằm trên một lớp trừu tượng giữa máy ảo và phần cứng

 Virtual Machine Monitor: là lớp trừu tượng nằm giữa VM và phần cứng Tất

cả các loại ảo hóa được quản lý bởi Virtual Machine Monitor (VMM) VMM về bản chất cũng được chia làm 2 loại là:

- VMM đóng vai trò như một phần mềm trung gian chạy trên HĐH để chia sẻ tài nguyên với HĐH Ví dụ: VMware workstation, Virtual PC, KVM

- VMM đóng vai trò là một hypervisor chạy trên phần cứng Ví dụ: VMware ESXi, Hyper-V, Xen

 Hypervisor

Hypervisor tương tự như VMM, là một phần mềm nằm ngay trên phần phần cứng hoặc bên dưới hệ điều hành nhằm mục đích cung cấp các môi trường tách biệt gọi là các phân vùng (partition) Mỗi phân vùng ứng với mỗi VM có thể chạy các hệ điều hành độc lập Hiện nay có 2 hướng tiếp cận hypervisor khác nhau (loại 2 – hypervisor VMM): Monolithic và Micro hypervisor

- Monolithic hypervisor: hypervisor có driver riêng biệt để truy cập tài nguyên phần cứng bên dưới Các VMs truy cập tài nguyên hệ thống thông qua drivers của hypervisor Điều này mang lại hiệu suất cao, tuy nhiên khi driver trên hypervisor bị sự

cố thì cả hệ thống ngưng hoạt động, hoặc phải đối mặt với vấn đề an ninh khi drivers

có thể bị giả dạng bởi malware, một rủi ro trong môi trường ảo hóa

- Micro-kernelized hypervisor: loại hypervisor này không có driver bên trong hypervisor mà chạy trực tiếp trên mỗi partition Một VM sẽ đóng vai trò partition cha quản lý và khởi tạo các partition con (VM con) VM cha cũng bao gồm nhiều tính năng khác như quản lý memory, lưu trữ drivers, … Điều này mang lại sự an toàn và tin cậy Tuy nhiên nó cũng gặp phải vấn đề về độ sẵn sàng (availability) khi partition cha

Trang 14

gặp sự cố, hệ thống cũng bị ngưng trệ

 Kernel mode và User mode

Thông thường một hệ điều hành khi được cài đặt sẽ có 2 modes hoạt động chính:

- Kernel mode: là không gian được bảo vệ nơi mà “lõi” của HĐH xử lý và tương tác trực tiếp với phần cứng Ví dụ điển hình cho Kernel mode là các drivers của thiết

bị Khi có sự cố thì hệ thống ngưng hoạt động và thông báo lỗi như ở windows sẽ hiển thị màn hình xanh khi có lỗi giao tiếp phần cứng

- User mode: là không gian cho phép chạy các ứng dụng, ví dụ như Office, MySQL, Exchangeserver Khi có sự cố ở các ứng dụng thì chỉ có các ứng dụng ngưng hoạt động mà không ảnh hưởng gì đến server

Khi một ứng dụng cần truy cập vào tài nguyên phần cứng, ứng dụng này cần giao tiếp với driver thích hợp chạy trong kernel mode Sự chuyển đổi qua lại giữa User mode và Kernel mode cũng là những tiến trình và cũng chiếm dụng tài nguyên hệ thống (CPU, RAM, …)

b Ảo hóa

Ảo hoá là một kỹ thuật phần mềm đã được phát triển gần nửa thế kỷ nay, cho phép tạo ra một hoặc nhiều máy ảo tồn tại bên trong một máy tính Nó được phát triển lần đầu tiên để sử dụng tốt hơn các phần cứng có sẵn Ảo hóa là công nghệ nổi bật, phát triển nhất trong một loạt cuộc cách mạng công nghệ nhằm giúp hiệu suất làm việc của máy tính tăng lên một cách đáng kể chưa từng có trước đó

Ảo hóa hệ thống tức là tiến hành phân chia một máy chủ thành nhiều máy chủ ảo hoặc kết hợp nhiều máy chủ vật lý thành một máy chủ logic Người dùng nhận biết và

sử dụng các máy chủ ảo giống như một máy vật lý độc lập Hệ thống máy chủ ảo này

có đủ tài nguyên cần thiết (CPU, bộ nhớ, mạng ) được gán từ máy chủ vật lý, hoạt động giống hệt một máy chủ độc lập, trong khi thực tế máy chủ ảo không hề có những tài nguyên này

Công nghệ ảo hóa là công nghệ quan trọng nhất ứng dụng trong điện toán đám mây Đây là công nghệ cho phép tạo ra các thực thể ảo có tính năng tương đương các thực thể vật lý, ví dụ như thiết bị lưu trữ, bộ vi xử lý… Ảo hóa phần cứng (hardware vitualization) tham chiếu tới việc tạo ra các máy ảo (virtual machine) mà hoạt động với hệ điều hành được cài đặt như một máy tính vật lý thực Ví dụ một máy ảo chạy hệ điều hành Ubuntu có thể được tạo ra trên một máy tính thực cài hệ điều hành Windows

Ảo hóa phần cứng cho phép chia nhỏ tài nguyên vật lý để tối ưu hóa hiệu năng sử dụng Điều này được thể hiện qua việc có thể khởi tạo nhiều máy ảo với năng lực tính toán và năng lực lưu trữ bé hơn trên duy nhất một máy chủ vật lý Máy chủ vật lý được gọi là host machine, còn máy ảo được gọi là máy khách – guest machine Khái niệm

Trang 15

host và guest được sử dụng để phân biệt phần mềm chạy trên máy tính vật lý hay phần mềm chạy trên máy ảo Phầm mềm firmware tạo máy ảo được gọi là hypervisor hay virtual machine manager

Thông thường, các đơn vị phải đầu tư một trung tâm công nghệ thông tin để giải quyết các nhu cầu công việc của cơ quan mình, điều này rất tốn kém Chi phí mua các máy chủ cấu hình mạnh và các phần mềm bản quyền là rất đắt Các đơn vị, đặc biệt là doanh nghiệp luôn muốn hạn chế tối đa các chi phí không cần thiết trong khi vẫn đáp ứng được năng suất và tính ổn định của hệ thống Do đó, việc ứng dụng ảo hóa trở thành nhu cầu cần thiết của bất kỳ doanh nghiệp nào dù lớn hay nhỏ Thay vì mua 10 máy chủ cho 10 ứng dụng thì chỉ cần mua hoặc thuê 1 hoặc 2 máy chủ có hỗ trợ ảo hóa cũng vẫn có thể chạy tốt 10 ứng dụng này Bên cạnh đó, việc ứng dụng ảo hóa còn giúp các đơn vị giảm thiểu các chi phí, nhân công liên quan đến việc quản lý, bảo dưỡng, triển khai hệ thống, phục hồi hệ thống…

1.1.2 Công ngh ệ ảo hóa

Ảo hóa đã được đề cập đến trong một khoảng một thời gian khá dài, nhưng sự phổ biến của nó chỉ mới được với những cải tiến sâu rộng đã xuất hiện trong vài năm gần đây Trong những ngày đầu ảo hóa, người dùng phải mua phần cứng đắt tiền; bây

giờ, do khả năng sử dụng máy chủ PC để ảo hóa, người dùng có thể tải xuống phần mềm ảo hóa miễn phí để sử dụng Hiện nay có nhiều công nghệ ảo hóa khác nhau: Ảo hóa toàn phần, Ảo hóa cục bộ, Ảo hóa hệ điều hành Tùy thuộc vào tình huống, nhu cầu sử dụng, người dùng có thể tận dụng một hoặc nhiều loại ảo hóa Mỗi loại có các thuộc tính riêng, mang lại những lợi ích cụ thể, cũng như những ưu khuyết điểm riêng

a Ảo hóa toàn phần

Đây là công nghệ ảo hóa cho phép hệ điều hành và các kernel của nó chạy trên

VM mà không bị biến đổi gì Công nghệ này cung cấp một loại hình máy ảo dưới dạng

mô phỏng của một máy chủ thật với đầy đủ tất cả các tính năng, bao gồm input/output operations, interrupts, memory access,… Mỗi trình điều khiển thiết bị và quá trình trong hệ điều hành khách tin rằng nó đang chạy trên phần cứng thực tế, mặc dù phần cứng cơ bản thực sự là một chương trình phần mềm

Một trong những ưu điểm công nghệ ảo hóa này là có thể chạy bất kỳ hệ điều hành nào trên đó, không phụ thuộc vào việc hiểu được phần cứng máy chủ cơ bản hay không Do đó, các hệ điều hành cũ và hệ điều hành đặc biệt có thể chạy trong môi trường này, tạo nên tính linh hoạt của hệ thống Tuy nhiên, mô hình ảo hóa này không

thể khai thác tốt hiệu năng khi phải thông qua một trình quản lý máy ảo (VMM hay Hypervisor) để tương tác đến hệ thống (mode switching), do đó nó sẽ bị hạn chế bớt

một số tính năng khi cần thực hiện trực tiếp từ CPU Xen, VMWare workstation, Virtual Box, Qemu/KVM, và Microsoft Virtual Server hỗ trợ loại ảo hóa này [10,11]

Trang 16

b Ảo hóa cục bộ

Ảo hóa cục bộ hay còn gọi là ảo hóa “một phần”, là kỹ thuật ảo hóa được hỗ trợ

và điều khiển bởi 1 hypervisor nhưng các hệ điều hành của guest thực thi các lệnh không phải thông qua hypervisor (hay bất kỳ 1 trình quản lý máy ảo nào) nên không bị hạn chế về quyền hạn Tuy nhiên nhược điểm của loại ảo hóa này là các hệ điều hành biết đang chạy trên một nền tảng phần cứng ảo và khó cấu hình cài đặt Ảo hóa cục bộ được hỗ trợ bởi Xen, VMware, Hyper-V, và UML [10,11]

c Ảo hóa hệ điều hành

Ảo hóa hệ điều hành là phương pháp ảo hóa mới cho phép nhân của hệ điều hành hỗ trợ nhiều instances được cách ly dựa trên một hệ điều hành có sẵn cho nhiều users khác nhau, hay nói cách khác là tạo và chạy được nhiều máy ảo cách ly và an toàn (secure) dùng chung 1 hệ điều hành Ưu điểm của ảo hóa này là bảo trì nhanh chóng nên được ứng dụng rộng rãi trong các lĩnh vực hosting OpenVZ, Virtuozzo, Linux-VServer, Solaris Zones, và FreeBSD Jails hỗ trợ loại ảo hóa này [10] Một lưu ý

là loại ảo hóa này chỉ tồn tại trên HĐH Linux

Ảo hóa là công nghệ nền tảng của điện toán đám mây Việc triển khai điện toán đám mây trong thực tế dựa vào 2 giải pháp cơ bản sau: sử dụng các sản phẩm thương mại cho điện toán đám mây như của VMware, Microsoft (Hyper-V), hoặc các sản phẩm nguồn mở như Eucalyptus và OpenStack [11]

1.1.3 Máy ch ủ ảo

Virtual Private Server (VPS) là dạng máy chủ ảo được tạo ra bằng phương pháp phân chia một máy chủ vật lý thành nhiều máy chủ khác nhau có tính năng tương tự như máy chủ riêng (dedicated server), chạy dưới dạng chia sẻ tài nguyên từ máy chủ

vật lý ban đầu Mỗi VPS là một hệ thống hoàn toàn riêng biệt, có một phần CPU riêng, dung lượng RAM riêng, dung lượng HDD riêng, địa chỉ IP riêng và hệ điều hành riêng, người dùng có toàn quyền quản lý root và có thể restart lại hệ thống bất cứ lúc nào

 Ưu điểm của VPS:

- Dễ dàng tùy biến nguồn tài nguyên, miễn là trong mức giới hạn của máy chủ vật lý cho phép

- Từ 1 máy chủ vật lý, có thể tạo ra nhiều VPS, tiết kiệm được tiền đầu tư phần cứng, tiền điện vận hành máy chủ, không gian lắp đặt…

- Do nhiều VPS có thể nằm tập trung trên 1 hệ thống máy chủ Việc kiểm tra vận hành sẽ dễ dàng hơn

 Nhược điểm của VPS:

- Hoạt động của VPS bị ảnh hưởng bởi hoạt động và độ ổn định của máy chủ vật

lý tạo ra VPS

Trang 17

- Việc sử dụng chung máy chủ vật lý khiến VPS bị phụ thuộc

- Tốn thời gian và chi phí để nâng cấp tài nguyên và cũng không thể mở rộng nhiều

- Cách thức vận hành và năng suất hoạt động của VPS không đạt được hiệu quả như mong muốn

Cloud server đem lại nhiều lợi ích hơn VPS nhờ vào số lượng server sử dụng trong một cụm Những ưu điểm vượt trội của cloud server nếu so sánh với VPS:

VPS được khởi tạo và chạy trên một server vật lý, vì thế khi server vật lý bị lỗi hoặc vào những giờ cao điểm server vật lý thường bị treo dẫn đến VPS sẽ tạm ngưng hoạt động Trong khi đó, ở đám mây, server tất cả các thành phần đều được thiết lập

dự phòng, và tự động thay thế khi bị hư hỏng đảm bảo hoạt động bình thường nên hệ thống thông tin của người dùng luôn an toàn và sẵn sàng

Với VPS, người dùng không được đảm bảo lượng tài nguyên phần cứng phải trả tiền, vì những người khác trong cùng một VPS có thể sử dụng qua tài nguyên này Điều này không hề xảy ra với cloud server, người dùng có được nguồn tài nguyên đảm bảo và luôn sẵn sàng khi cần

Ở VPS khi cần mở rộng hay thu hẹp tài nguyên, phải tiến hành nâng cấp máy chủ vật lý tạo ra VPS, rất mất thời gian và chỉ mở rộng một lượng nhất định Với cloud server, người dùng còn có thể thoải mái điều chỉnh cấu hình của cloud server bất kỳ lúc nào

VPS ảo hóa từ một máy chủ vật lý nên cách thức vận hành và năng suất không đạt được như mong muốn của người dùng Cloud server hình thành từ một hạ tầng ảo hóa được xây dựng từ các công nghệ hàng đầu của Cisco, Netapp, Vmware… đảm bảo

về cách thức vận hành, tốc độ xử lý nhanh và cho năng suất tối đa

Do đó, bước đầu có thể thấy ảo hóa và điện toán đám mây có liên hệ mật thiết,

chặt chẽ với nhau, mang lại một cuộc cách mạng công nghệ mới với hiệu suất vượt

trội, cải tiến mạnh mẽ tất cả các công việc của nhiều đơn vị, doanh nghiệp

1.2 T ổng quan về điện toán đám mây

Vào những năm 1950, khi máy chủ tính toán quy mô lớn (large-scale mainframe computers) được triển khai tại một số cơ sở giáo dục và tập đoàn lớn, khái niệm điện toán đám mây ra đời Khái niệm “chia sẻ thời gian” (time-sharing) đồng thời cũng xuất

hiện, cho phép người dùng đồng thời chia sẻ một tài nguyên tính toán chung

Trong giai đoạn 1960-1990, xu hướng tổ chức các máy tính hay tài nguyên công nghệ thông tin thành hạ tầng dịch vụ công cộng xuất hiện Điện toán đám mây cung

cấp tài nguyên dưới dạng dịch vụ Người dùng có thể không cần quan tâm tài nguyên đến từ đâu, xử lý, phân phối như thế nào, hay việc quản lý, bảo trì hệ thống, họ chỉ

việc sử dụng dịch vụ và trả tiền cho nhà cung cấp theo nhu cầu sử dụng của mình Khi

Trang 18

người sử dụng cần năng lực xử lý lớn hơn họ có thể thuê thêm tài nguyên để sử dụng ngay, sau khi hoàn thành họ quay lại sử dụng tài nguyên ở mức thấp hơn và chỉ cần

phải trả tiền thêm cho khoảng thời gian sử dụng thêm tài nguyên

Tính đến hiện tại, có rất nhiều sản phẩm điện toán đám mây nổi tiếng được đưa vào sử dụng và tạo ra một cuộc cách mạng trong ngành công nghiệp máy tính, thay đổi

cơ bản cách thức sử dụng các nguồn tài nguyên, cơ cấu vận hành cũng như việc lưu

trữ, phân phối và xử lý thông tin Điển hình như Amazon, Eucalyptus, Google App Engine, Microsoft Azure, Numbus… Đa số chúng ta đều đã và đang sử dụng một hoặc nhiều các dịch vụ ứng dụng công nghệ điện toán đám mây trong đời sống hàng ngày cũng như trong quản lý doanh nghiệp

Hiện nay có nhiều cách định nghĩa về điện toán đám mây khác nhau, dưới đây là

một số định nghĩa về điện toán đám mây của những công ty, tổ chức uy tín:

Theo Wikipedia: "Điện toán đám mây là mô hình điện toán sử dụng các công nghệ máy tính và phát triển dựa vào mạng Internet Mọi khả năng liên quan đến công nghệ thông tin đều được cung cấp dưới dạng các "dịch vụ", cho phép người sử dụng truy cập các dịch vụ công nghệ từ một nhà cung cấp nào đó "trong đám mây" mà không cần phải có các kiến thức, kinh nghiệm về công nghệ đó, cũng như không cần quan tâm đến các cơ sở hạ tầng phục vụ công nghệ đó." [20]

NIST đưa ra định nghĩa như sau: “Điện toán đám mây là một mô hình cho phép ở

một vị trí thuận tiện, khách hàng có thể truy cập mạng theo yêu cầu và được chia sẻ tài nguyên máy tính (mạng, máy chủ, lưu trữ, ứng dụng và dịch vụ) nhanh chóng từ nhà cung cấp Trong trường hợp xấu nhất thì cũng phải cung cấp dịch vụ hoạt động ở mức tương tác” [12]

Hình 1.1 T ổng quan về điện toán đám mây

Trang 19

Như vậy, có thể thấy điện toán đám mây, còn gọi là điện toán máy chủ ảo, là một

mô hình điện toán sử dụng các công nghệ máy tính và hoạt động phát triển dựa vào

mạng Internet, giải phóng người sử dụng khỏi việc phải đầu tư nhân lực, công nghệ và

hạ tầng để triển khai hệ thống Trong mô hình này tất cả tài nguyên như máy tính, kho lưu trữ, phần mềm được đưa lên máy chủ và cung cấp dưới dạng dịch vụ cho người dùng, thường là dưới hình thức cơ sở hạ tầng như một dịch vụ (IaaS), nền tảng như

một dịch vụ (PaaS), hoặc phần mềm như một dịch vụ (SaaS) Từ đó, điện toán đám mây giúp giảm tối đa chi phí và thời gian triển khai, tạo điều kiện cho người dùng nền

tảng điện toán đám mây tập trung được tối đa nguồn lực vào công việc chuyên môn Như vậy điện toán đám mây là một mô hình cung cấp các dịch vụ cho người dùng theo yêu cầu thông qua mạng internet Nó khả năng mở rộng, thay đổi linh hoạt

gần như tức thời theo yêu cầu và người dùng chỉ cần trả tiền cho những gì mình sử

dụng mà không cần tốn chi phí để đầu tư, vận hành hệ thống

1.2.1 Đặc điểm và lợi ích của điện toán đám mây

Điện toán đám mây có 5 đặc điểm và lợi ích chính [5]:

- Tự phục vụ theo yêu cầu (On-demand self-service): Khách hàng có thể tự tăng cường năng lực tính toán (ví dụ như thời gian server, thời gian CPU, không gian lưu

trữ trên mạng, sử dụng phần mềm…) một cách hoàn toàn tự động dựa theo nhu cầu mà không cần phải thương lượng với nhà cung cấp dịch vụ Khách hàng có thể tự đăng ký,

cấu hình và triển khai dịch vụ đám mây dựa theo những chuẩn do nhà cung cấp đưa ra Đặc tính này thường được biết đến với tên gọi Pay-as-you-go

- Khả năng truy cập mạng diện rộng (Broad network access): Những tài nguyên tính toán được cung cấp thông qua mạng và được truy cập thông qua một cơ cấu chuẩn, được các ứng dụng client khác nhau sử dụng với những nền tảng không đồng

nhất (như máy tính, điện thoại, máy trạm )

- Quản lý tài nguyên tập trung (Pooling resource management): Tài nguyên tính toán của nhà cung cấp sẽ được tập trung để phục vụ cho nhiều khách hàng khác nhau theo mô hình đa người dùng Những tài nguyên vật lý và tài nguyên ảo này sẽ được

cấp phát, thu hồi động tùy theo những yêu cầu khác nhau của khách hàng Động lực

của việc xaayd ựng một mô hình tập trung tài nguyên tính toán nằm trong hai yếu tố quan trọng: tính quy mô và tính chuyên biệt Kết quả của mô hình tập trung này là

những tài nguyên vật lý trở nên trong suốt với người sử dụng, người sử dụng không

biết được vị trí lưu trữ cơ sở dữ liệu của họ trong đám mây Tài nguyên bao gồm không gian lưu trữ, bộ nhớ, băng thông mạng, các máy ảo

- Tính mềm dẻo (Rapid Elasticity): Đám mây có khả năng cấp phát mềm dẻo, trong một số trường hợp có thể tự động mở rộng hoặc thu hẹp nhanh đáp ứng gần như

tức thời yêu cầu Nhìn từ phía khách hàng, khả năng cung cấp dịch vụ có thể xem là vô

Trang 20

hạn và có thể cho phép thuê với số lượng bất kỳ tại bất cứ thời điểm nào

- Khả năng đo lường (Measured Service): Mặc dù tài nguyên được tập trung và

có thể chia sẻ cho nhiều người sử dụng, nhưng hệ thống đám mây có thể tự động quản

lý và tối ưu tài nguyên sử dụng bằng khả năng đo đếm, tính toán trên một số tiêu chí khác nhau tương ứng với từng loại hình dịch vụ như: dung lượng lưu trữ, khả năng xử

lý, băng thông, số người dùng Lượng tài nguyên sử dụng sẽ được giám sát, quản lý, báo cáo đảm bảo sự minh bạch cho cả người cung cấp dịch vụ và khách hàng

1.2.2 Các lo ại hình dịch vụ

Điện toán đám mây có ba mô hình cung cấp dịch vụ, tùy theo đối tượng khách hàng: Infrastucture as a Service (IssA), Platform as a Service (PaaS) và Software as a Service (SaaS) [4]

Dịch vụ hạ tầng (IaaS)

IaaS là tầng dịch vụ thấp nhất cung cấp tài nguyên phần cứng tới người dùng trong điện toán đám mây, dịch vụ này cung cấp tài nguyên hạ tầng ảo (máy chủ, máy tính, mạng, trung tâm dữ liệu ), bao gồm cả hệ điều hành và công nghệ ảo hóa để

quản lý các tài nguyên này

Khách hàng thuê IaaS có thể triển khai và chạy phần mềm tùy ý, không quản lý

hoặc kiểm soát về mặt vật lý của các tài nguyên này, nhưng có kiểm soát đối với các

hệ điều hành, lưu trữ, ứng dụng triển khai và kiểm soát có hạn chế các thành phần

mạng được cung cấp Các tài nguyên này có khả năng mở rộng linh hoạt và chi phí được tính dựa trên lượng tài nguyên sử dụng

 Những đặc trưng tiêu biểu của IaaS:

- Cung cấp tài nguyên như là dịch vụ: bao gồm cả máy chủ, thiết bị mạng, bộ

nhớ, CPU, không gian đĩa cứng, trang thiết bị trung tâm dữ liệu

- Khả năng mở rộng linh hoạt

- Chi phí thay đổi tùy theo thực tế

- Nhiều người thuê có thể cùng dùng chung trên một tài nguyên

- Cấp độ doanh nghiệp: đem lại lợi ích cho công ty bởi một nguồn tài nguyên tính toán tổng hợp

 Lợi ích của IaaS:

Các tổ chức, cá nhân tiết kiệm được vốn đầu tư vào hệ thống là rất lớn, vì các doanh nghiệp sẽ không cần phải đầu tư thêm các máy chủ, thường chỉ chạy 70% công

suất hai hoặc ba lần trong năm, thời gian còn lại chỉ chạy 7-10% tải

Một trong những dịch vụ IaaS phổ biến hiện nay là Amazon's Elastic Compute Đám mây hay còn gọi là Amazon EC2 Amazon EC2 cung cấp các máy ảo và cho phép người sử dụng có thể mở rộng thông qua giao diện Web với chi phí tính theo tài nguyên sử dụng theo giờ EC2 hiện hỗ trợ 3 hệ điều hành Linux, Windows và Solaris

Trang 21

khả năng mở rộng động

 Những đặc trưng tiêu biểu của PaaS:

- Phục vụ cho việc phát triển, triển khai và vận hành ứng dụng giống như là môi trường phát triển tích hợp

- Các công cụ khởi tạo với giao diện trên nền web

- Kiến trúc đồng nhất

- Tích hợp dịch vụ web và cơ sở dữ liệu

- Hỗ trợ cộng tác nhóm phát triển

- Công cụ hỗ trợ tiện tích

 Những lợi ích của PaaS:

- Dịch vụ nền tảng đang ở thời kì đầu và được ưa chuộng ở những tính năng vốn được ưa thích bởi dịch vụ phần mềm, bên cạnh đó có tích hợp các yếu tố về nền tảng

hệ thống

- Ưu điểm trong những dự án tập hợp những công việc nhóm có sự phân tán về địa lý

- Khả năng tích hợp nhiều nguồn của dich vụ web

- Giảm chi phí ngoài lề khi tích hợp các dịch vụ về bảo mật, khả năng mở rộng,

kiểm soát lỗi…

- Giảm chi phí khi trừu tượng hóa công việc lập trình ở mức cao để tạo dịch vụ, giao diện người dùng và các yếu tố ứng dụng khác

- Tạo điều kiện dễ dàng hơn cho việc phát triển ứng dụng đa người dùng cho

những người không chỉ trong nhóm lập trình mà có thể kết hợp nhiều nhóm cùng làm

việc

 Những hạn chế của PaaS:

- Ràng buộc bởi nhà cung cấp: một khách hàng phụ thuộc vào một nhà cung cấp

và không thể sử dụng nhà cung cấp khác mà không phải chịu chi phí chuyển đổi đáng

kể

- Giới hạn phát triển: độ phức tạp khiến nó không phù hợp với yêu cầu phát triển

Trang 22

nhanh vì những tính năng phức tạp khi hiện thực trên nền tảng web

Một số nhà cung cấp PaaS phổ biến hiện nay có thể kể như: Google App Engine, AppJet, Force.com

b Dịch vụ phần mềm (SaaS)

SaaS cho phép khách hàng sử dụng các dịch vụ phần mềm của nhà cung cấp ứng

dụng được triển khai trên hạ tầng điện toán đám mây Các ứng dụng có thể truy cập từ các thiết bị khác nhau, người sử dụng chỉ tương tác với phần mềm thông qua giao diện web hoặc giao diện ứng dụng mà hoàn toàn không cần biết về đến phần cứng, hệ điều hành, bảo mật, cơ sở dữ liệu Khách hàng không quản lý, kiểm soát cơ sở hạ tầng điện toán đám mây nằm bên dưới, với ngoại lệ có thể thiết lập cấu hình ứng dụng hạn

chế người sử dụng cụ thể Những nhà cung cấp SaaS có thể lưu trữ ứng dụng trên máy

chủ của họ hoặc tải ứng dụng xuống thiết bị khách hàng, vô hiệu hóa nó sau khi kết thúc thời hạn

 Những đặc trưng tiêu biểu của SaaS:

- Phần mềm sẵn có đòi hỏi việc truy xuất, quản lý qua mạng

- Quản lý các hoạt động từ một vị trí tập trung hơn là tại mỗi nơi của khách hàng, cho phép khác hàng truy xuất từ xa thông qua web

- Cung cấp ứng dụng thông thường gần gũi với mô hình ánh xạ từ một đến nhiều hơn là mô hình ánh xạ từ một đến một bao gồm cả các đặc trưng kiến trúc, giá cả và

quản lý

- Những tính năng tập trung nâng cấp, giải phóng người dùng khỏi việc tải các

bản vá lỗi và cập nhật

- Thường xuyên tích hợp những phần mềm giao tiếp trên mạng diện rộng

 Những ưu điểm của SaaS là:

- Không phụ thuộc vị trí, phần mềm luôn sẵn sàng hoạt động thông qua mạng Internet giúp người dùng có thể sử dụng ở bất kỳ đâu

- Phần mềm luôn được cập nhất mới nhất giúp giảm thiểu lỗi và các vấn đề bảo

mật

- Không cần tốn chi phí để mua phần cứng hoặc các trung tâm dữ liệu, chi phí người dùng phải bỏ ra thấp hơn so với việc tự vận hành, bảo trì một hệ thống tương tự

- Tùy theo nhu cầu mà người sử dụng có thể thuê dịch vụ phần mềm phù hợp và

có khả năng mở rộng thêm khi cần

Dịch vụ SaaS nổi tiếng nhất phải kể đến Salesforce.com với các ứng dụng cho doanh nghiệp mà nổi bật nhất là CRM Các ứng dụng SaaS cho người dùng cuối phổ

biến là các ứng dụng office Online của Microsoft hay Google Docs của Google

1.2.3 Các mô hình tri ển khai

a Mô hì nh đám mây công cộng (Public Cloud)

Trang 23

Đây là mô hình mà hạ tầng điện toán đám mây được một tổ chức sở hữu, quản lý

và cung cấp các dịch vụ hoàn toàn công khai, rộng rãi cho mọi người sử dụng qua internet hoặc các mạng công cộng diện rộng Các ứng dụng khác nhau chia sẻ chung tài nguyên tính toán, mạng và lưu trữ Do vậy, hạ tầng điện toán đám mây được thiết

kế để đảm bảo cô lập về dữ liệu giữa các khách hàng và tách biệt về truy cập

Một số đám mây công cộng phổ biến như: Amazon EC2, IBM Smart Cloud, Microsoft Windows Azure, Google App Engine

b Mô hình đám mây riêng (Private Cloud)

Đám mây riêng là đám mây độc quyền được xây dựng với mục đích phục vụ một

tổ chức cụ thể Tài nguyên đám mây có thể được đặt nội bộ trong tổ chức hoặc bên ngoài, sở hữu và quản lý bởi chính tổ chức đó hoặc bên thứ ba

Một tổ chức có thể áp dụng mô hình đám mây này trên cơ sở phần cứng đã có giúp tiết kiệm chi phí và cải thiện hiệu năng sử dụng nguồn tài nguyên cũng như tự động hóa việc quản lý nguồn tài nguyên đó Ngoài ra một tổ chức cũng có thể mở rộng

khả năng về công nghệ thông tin hiện tại của mình bằng cách sử dụng một đám mây riêng có khả năng truy cập từ xa do một bên thứ ba cung cấp

Các đám mây riêng có nhiều lợi thế hơn so với đám mây chung Việc kiểm soát chi tiết các tài nguyên khác nhau trên đám mây giúp công ty có các lựa chọn cấu hình phù hợp Các đám mây riêng sẽ rất lý tưởng khi công việc đang được thực hiện không

cần đến một đám mây chung và sẽ không lo ngại tới vấn đề an ninh, quản lý

Một số ví dụ về đám mây riêng như: Eucalyptus, Ubuntu Enterprise Cloud, OpenStack, Amazone VPC, Microsoft ECI data center

c Mô hình đám mây lai (Hybrid Cloud)

Đám mây lai là sự kết hợp của các đám mây công cộng và đám mây riêng Là mô hình khi có nhiều hơn một mô hình cơ sở hạ tầng đám mây được triển khai trong một tình huống cụ thể Tuy vẫn giữ nguyên những đặc tính riêng nhưng có sự liên kết với nhau giúp khai thác được những ưu điểm riêng của mỗi mô hình

Các đám mây lai hầu hết thường được sử dụng:

- Là nơi các ứng dụng lưu trú trong đám mây và các ứng dụng quan trọng vẫn còn trên trang web

- Là nơi thí nghiệm, nơi đám mây được sử dụng với vùng làm việc tạm thời

- Khả năng bổ sung hay bùng nổ dịch vụ nơi đám mây được sử dụng cho các đột biến bất ngờ

Hạn chế chính với đám mây lai là khó khăn trong việc tạo ra và quản lý chúng

Giải pháp đặt ra là tiếp nhận và cung cấp các dịch vụ từ các nguồn khác nhau như thể chúng có nguồn gốc từ một nơi và có thể tương tác giữa các đám mây riêng và chung

Một số dịch vụ đám mây lai: Microsoft Windows Azure, VmWarevĐám mây

Trang 24

d Mô hình đám mây cộng đồng (Community Cloud)

Đám mây cộng đồng chia sẻ hạ tầng cơ sở giữa một nhóm tổ chức trong cùng

một cộng đồng có những mối quan tâm chung như: chung mục đích, yêu cầu an ninh, chính sách Chi phí được phân chia cho những thành viên sử dụng, mô hình này gần

giống mô hình lưới do những tổ chức nghiên cứu, giáo dục hợp tác tạo ra phục vụ nghiên cứu khoa học quy mô lớn

Mục đích của đám mây cộng đồng là vừa sở hữu những tính năng của đám mây công cộng như: nhiều người sử dụng (tuy nhiên số lượng người sử dụng ít hơn đám mây công cộng), trả tiền cho những gì sử dụng, vừa có thể áp dụng những điều khoản chính sách về sự riêng tư, bảo mật, như mô hình đám mây riêng

Mô hình điện toán đám mây cộng đồng tốn kém hơn những mô hình điện toán khác như: đám mây công cộng, đám mây riêng, đám mây lai, nhưng nó có thể đápứng

về sự riêng tư, an ninh hoặc tuân thủ các chính sách tốt hơn

1.2.4 Hướng tiếp cận điện toán đám mây sử dụng công cụ mã nguồn mở

a Xu hướng sử dụng công cụ mã nguồn mở

Với nhiều lợi ích đáng kể như: tăng sự linh hoạt của hệ thống, sử dụng tài nguyên theo yêu cầu, tăng khả năng sẵn sàng của hệ thống, tiết kiệm phần cứng, cung cấp các dịch vụ với độ sẵn sàng gần như 100%, trả phí theo nhu cầu sử dụng thực tế (Paying-as-you- go IT), mô hình điện toán đám mây đã khắc phục được hai yếu điểm quan trọng của mô hình truyền thống về “khả năng mở rộng” (scalability) và “độ linh hoạt” (flexibility) Các tổ chức cũng như công ty có thể triển khai ứng dụng dịch vụ nhanh chóng, giảm chi phí, và ít rủi ro Tuy nhiên, có rất nhiều công nghệ cho điện toán đám mây với những chi phí và giải pháp khác nhau tùy vào mục đích sử dụng và ưu điểm của mỗi công nghệ như dễ dàng triển khai, khả năng mở rộng cao, giá rẻ, … Sử dụng công cụ mã nguồn mở để triển khai điện toán đám mây là một xu hướng đang được quan tâm nhiều vì đạt được những ưu điểm sau:

- Sự phụ thuộc vào các phần mềm đóng kín và bản quyền (Avoiding vendor lock- in): các giải pháp thương mại thường là 1 bộ giải pháp với các tiêu chuẩn của nhà sản xuất, chẳng hạn các APIs đặc trưng, các kiểu định dạng image và lưu trữ riêng,… sẽ làm cho đám mây không tương thích, hoặc không tận dụng được những cơ

sở hạ tầng sẵn có, hoặc các “cloud vendor lock- in” trong tương lai sẽ đối mặt với vấn

đề di chuyển một số dịch vụ sang những hệ thống đám mây khác, sự khó khăn này là một hạn chế

- Công nghệ tốt nhất: các dự án về “open source cloud computing” luôn luôn được hỗ trợ và giúp đỡ bởi cộng đồng toàn thế giới với hàng ngàn người tham gia phát triển các chức năng mới và sửa lỗi (fix bugs) Lợi thế này của open source sẽ không thể có được ở bất kỳ một công ty đơn lẻ nào

Trang 25

- Khả năng mở rộng không hạn chế: chi phí là vấn đề nổi trội trong vấn đề mở rộng đám mây với giải pháp phần mềm bản quyền Tuy nhiên với open source clouds, chẳng hạn mạng đám mây sử dụng Ubuntu, hệ điều hành Ubuntu hỗ trợ điện toán đám mây hoàn toàn miễn phí nên việc mở rộng rất dễ dàng

- Điều chỉnh đám mây theo nhu cầu thương mại cụ thể: khi giải pháp thương mại thiếu một chức năng gì đó, sẽ rất khó để tìm ra phương thức thay thế trừ khi chờ một phiên bản mới hơn hỗ trợ Nhưng với kỹ thuật open source có thể thay đổi code để thêm các chức năng phù hợp cho mục đích kinh doanh của hệ thống

b Gi ải pháp mã nguồn mở OpenStack

Hiện nay, có một số giải pháp mã nguồn mở cho điện toán đám mây nổi tiếng như Eucalyptus, OpenNebula, Nimbus, Xen Cloud Platform (XCP), OpenStack… được triển khai Trong đó, nổi bật nhất là Openstack

Cung cấp giao diện dựa trên web để tương tác với các dịch

vụ OpenStack cơ bản, chẳng hạn như khởi chạy một máy

ảo, gán địa chỉ IP và cấu hình kiểm soát truy cập

Compute Nova Quản lý phiên làm việc của máy ảo trong môi trường

Openstack, gồm tạo máy ảo, cấp tài nguyên, hay gỡ bỏ các

Trang 26

Identity service Keystone

Cung cấp dịch vụ xác thực và ủy quyền cho các dịch vụ OpenStack khác Cung cấp một danh mục các thiết bị đầu cuối cho tất cả các dịch vụ OpenStack

Block Storage Cinder Cung cấp khối lưu trữ liên tục để chạy các máy ảo

Object Storage Swift

Lưu trữ và truy xuất các đối tượng dữ liệu phi cấu trúc tùy

ý thông qua API RESTful, dựa trên HTTP Trong trường hợp này, nó ghi các đối tượng và các tệp vào nhiều ổ đĩa, đảm bảo dữ liệu được nhân rộng trên một cụm máy chủ Image service Glance Lưu trữ và truy xuất ảnh đĩa máy ảo OpenStack Compute

sử dụng lưu trữ này trong quá trình thực hiện

Telemetry Ceilometer Theo dõi và tính toán đám mây OpenStack cho các mục

đích tính toán, lập biểu chuẩn, xác xuất và thống kê

Orchestration Heat

Quản lý nhiều ứng dụng đám mây phức hợp bằng cách sử dụng mẫu định dạng HOT hoặc định dạng mẫu AWS Cloud Formation, thông qua cả API REST gốc của OpenStack và API truy vấn tương thích Cloud Formation Database

service Trove

Cung cấp khả năng mở rộng và đáng tin cậy Cloud Database-as-a-Service cho cả cơ sở dữ liệu quan hệ và không quan hệ

OpenStack là 1 dự án mở cộng đồng cho việc phát triển điện toán đám mây phù hợp với các nhà cung cấp cũng như người dùng được phát triển bởi Rackspace hosting

và Nasa Ba dự án chính trong OpenStack: OpenStack Compute (để triển khai việc quản lý và chỉ định tài nguyên cho các máy ảo), OpenStack Object Storage (thực thi việc lưu trữ, backup), và OpenStack Image Service (đảm nhận việc phát hiện, đăng ký, truyền tải dịch vụ cho các images đĩa ảo)

Trang 27

Hình 1.3 M ối quan hệ giữa các dịch vụ trong OpenStack

tiếp

Trang 28

CHƯƠNG 2

Chương 2 trình bày về an toàn và bảo mật trên điện toán đám mây, các kỹ thuật tấn công trên web, kỹ thuật tấn công SQL Injection, XSS và phương pháp dùng biểu thức chính quy để phát hiện tấn công

2.1 An toàn và b ảo mật trên điện toán đám mây

Trong lĩnh vực công nghệ thông tin, công nghệ chủ chốt hiện nay hướng đến việc cho phép sử dụng phần mềm như một dịch vụ (SaaS) trong điện toán đám mây đó là Web 2.0 Các ứng dụng dựa trên web gia tăng nhanh chóng nhờ được sử dụng rộng rãi khắp nơi, nhưng đồng thời nó cũng trở thành mục tiêu tấn công phổ biến của tin tặc với các hình thức tấn công ngày càng tinh vi và phức tạp, các lỗ hổng được phát hiện

và tiết lộ với tốc độ báo động Các hệ thống điện toán đám mây hiện luôn phải đối mặt với việc các trang web có đảm bảo an ninh hay không

Dự án mở về an ninh ứng dụng web OWASP đã phân loại 10 lỗ hổng ứng dụng web phổ biến và nguy hiểm nhất hiện nay [13]: nhúng mã (Injection); xác thực hay quản lý phiên thiếu chính xác; thực thi mã Script xấu (XSS); đối tượng tham chiếu không an toàn; sai sót trong cấu hình an ninh; lộ dữ liệu nhạy cảm; điều khiển truy cập mức chức năng không an toàn; tấn công giả mạo (CSRF); sử dụng thành phần chứa lỗ hổng đã công khai; chuyển hướng và chuyển tiếp không an toàn Trong các cuộc tấn công đó, lỗ hổng bị khai thác nhiều nhất là tiêm nhiễm SQL (SQL Injection, chiếm 15% các cuộc tấn công lỗ hổng an ninh web) và Cross-site scripting (XSS, chiếm 18%) Với các lỗ hổng này, tin tặc có thể dễ dàng tấn công, chiếm quyền điều khiển, truy cập vào các nguồn thông tin nhạy cảm, gồm cả thông tin cá nhân người dùng Trong phần này, luận văn trình bày hướng nghiên cứu phân tích nhật ký máy chủ

để phát hiện các tấn công SQL Injection và XSS, từ đó xây dựng hệ thống phát hiện tấn công Website

2.2 Máy ch ủ Web và các thành phần chính

Web server (máy chủ web) dùng để chỉ phần mềm máy chủ, hoặc phần cứng phục vụ riêng cho việc chạy các phần mềm này Tập tin nhật ký máy chủ (log file server) là một tập tin được tạo ra tự động bởi một máy chủ web có chứa tất cả thông tin về các hoạt động trên máy chủ đó, như thông tin người truy cập, thời gian khách viếng thăm, địa chỉ IP… Log file server có rất nhiều tác dụng đối với người quản trị, như phân tích xem người dùng truy cập vào những phần nào trên trang web nhiều nhất

và chuyển sang xem mục nào trên trang web Dựa vào việc phân tích log file của website, quản trị có thể phát hiện được các nguy cơ, dấu hiện tấn công tới website của

Trang 29

mình, từ đó có biện pháp phòng chống và điều tra tội phạm mạng

2.2.1 Apache

Apache – hay chương trình máy chủ HTTP là một chương trình dành cho máy

chủ sử dụng giao thức HTTP để đối thoại Apache chạy trên các hệ điều hành tương tự

như Unix, Microsoft Windows, Novell Netware và các hệ điều hành khác Apache

đóng một vai trò quan trọng trong quá trình phát triển của mạng web thế giới

C ấu trúc tập tin nhật ký dạng combined

Cấu trúc tập tin nhật ký bao gồm:

- Địa Chỉ IP: Địa Chỉ IP Client

- Auth:

- Ident:

- Thời gian: Thời gian client gửi yêu cầu lên

- Phương thức: Phương thức lấy dữ liệu của client

- Mã trả về: Mã trạng thái server trả về cho client

- Kích thước dữ liệu: Kích thước gói dữ liệu client nhận được

- Referer: Cho biết địa chỉ của trang web tham chiếu tới

- User-Agent: Trình duyệt hoặc Client đang yêu cầu

Minh họa nội dung 1 dòng có trong tập tin nhật ký:

192.168.133.163 - - [28/Dec/2013:07:23:03 +0700] "GET

/index.php/sample-sites HTTP/1.1" 200 12774 http://192.168.133.152/index.php/using-joomla "Mozilla/5.0 (Windows

NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)

Chrome/31.0.1650.63 Safari/537.36"

Bảng 2.1 Cấu trúc và thông tin tập tin nhật ký APACHE dạng combined

1 192.168.133.163 Địa chỉ Ip client

4 [28/Dec/2013:07:23:03 +0700] Ngày giờ truy client request tới server

5 "GET Phương thức client lấy dữ liệu

Trang 30

Tương tự tập tin nhật ký của APACHE Tập tin nhật ký của IIS chứa toàn bộ

thông tin liên quan tới client trong 1 request

Một dòng trong tập tin nhật ký IIS:

192.168.114.201, -, 03/20/01, 7:55:20, W3SVC2, SERVER, 172.21.13.45, 4502, 163, 3223, 200, 0, GET, /DeptLogo.gif, -

Bảng 2.2 Cấu trúc và thông tin tập tin nhật ký IIS

1 Địa chỉ IP client 192.168.114.201 Địa chỉ của IP client

2 User name - User là vô danh

3 Ngày 3/20/01 Ngày tập tin nhật ký ghi được ngày 20

tháng 3 năm 2001

4 Thời gian 7:55:20 Giờ là 7:55:20 sáng

5 D ịch vụ và số dịch vụ W3SVC2

6 Tên máy ch ủ Server Tên c ủa máy chủ

7 Địa chỉ IP server 172.21.13.45 Địa chỉ IP của server

8 Thời gian thực hiện 4502 Tổng thời gian thực hiện request là

server gửi về cho client

3232 Số byte dữ liệu mà server gửi cho client

11 Mã trạng thái dịch vụ 200 Mã trạng thái là 200 nghĩa là request tới

server thực hiện thành công

12 Mã trạng thái window 0 Request tới server thực hiện thành công

13 Phương thức GET Sử dụng phương thức GET

Trang 31

2.2.3 Giao th ức HTTP trong ứng dụng web

HTTP (HyperText Transfer Protocol) là một trong năm giao thức chuẩn về mạng Internet, được dùng để liên hệ thông tin giữa máy chủ web và máy client, dùng trong Word Wide Web HTTP làm việc dựa trên giao thức yêu cầu – phản hồi giữa máy client và server Việc hồi đáp bao gồm thông tin trạng thái về yêu cầu và có thể gồm cả

nội dung đã yêu cầu

Các phương thức yêu cầu của HTTP và mã trạng thái:

Quan tâm đến các phương thức request và mã trạng thái trả về cho các request có

thể giúp quản trị viên đánh giá, phát hiện ra một số kiểu tấn công, cũng như lỗ hổng hệ

thống nếu có

Các phương thức request được mô tả như sau:

- GET: được dùng để lấy lại thông tin từ Server đã cung cấp bởi sử dụng một URI đã cung cấp Các yêu cầu GET chỉ nhận dữ liệu, không làm ảnh hưởng gì tới dữ liệu Phương thức này truy xuất các tập tin như HTML, CSS, Javascript, hình ảnh…

- HEAD: tương tự như phương thức GET, nhưng HEAD dùng để lấy thông tin về các header, Server chỉ trả về thông tin của header

- POST: phương thức này được sử dụng để gửi dữ liệu tới server, thường dưới dạng form

- PUT: Thay đổi tất cả các đại diện hiện tại của nguồn mục tiêu với nội dung được tải lên

- DELETE: Gỡ bỏ tất cả các đại diện hiện tại của nguồn mục tiêu bởi URI

- CONNECT: Thiết lập một tunnel tới server được xác định bởi URI đã cung cấp

- OPTIONS: Miêu tả các chức năng giao tiếp cho nguồn mục tiêu

- TRACE: Trình bày một vòng lặp kiểm tra thông báo song song với path tới nguồn mục tiêu

Khi nhận được request, Server phản hồi lại kèm một mã trạng thái HTTP thể hiện

kết quả xử lý request của server Mã trạng thái gồm số nguyên 3 kí tự, trong đó kí tự đầu tiên của mã định nghĩa loại phản hồi

Trong phạm vi luận văn này, hệ thống chú trọng đến một số mã trả về cơ bản, thường gặp nhất trong phát hiện dấu hiệu tấn công khi phân tích tập tin nhật ký máy

chủ: 500, 200, 403, 302

2.2.4 Phát hi ện tấn công dựa vào log file

Dựa vào tập tin nhật ký, quản trị có thể phát hiện ra những tín hiệu, biểu hiện trước khi thiệt hại xảy ra như tấn công từ chối dịch vụ hay mất dữ liệu và có thể ngăn

chặn thông qua các kĩ thuật khác nhau Một số trường cần theo dõi và thống kê trong

tập tin nhật ký:

Trang 32

- Địa chỉ IP: thông qua số request mà một IP gửi tới, người quản trị thống kê và

từ đó có thể phát hiện các dấu hiệu tấn công

- Thời gian: thống kê theo thời gian thông qua số request hàng ngày sẽ giúp phát hiện tấn công, chẳng hạn khoảng thời gian có số request nhiều nhất

- Phương thức HTTP: thống kê các phương thức HTTP giúp phát hiện tấn công nhanh chóng Đặc biệt là phương thức POST, tin tặc thường tấn công vào ứng dụng web POST from là SQL injection và XSS

- Mã trả về: Thống kê mã trả về nhiều nhất và địa chỉ IP có mã tương ứng

- URL request: Phát hiện URL mà tin tặc đang cố tấn công

2.3 K ỹ thuật tấn công trên web

2.3.1 T ấn công chèn câu truy vấn SQL (SQL Injection)

a Tấn công SQL Injection

SQL Injection là kỹ thuật khai thác lỗ hổng trong việc kiểm tra dữ liệu đầu vào của 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ề để tiêm các mã SQL, qua đó thực thi câu lệnh bất hợp pháp, đăng nhập mà không cần tên tài khoản và mật khẩu, thực hiện truy cập từ xa, xóa dữ liệu, lấy quyền quản trị của máy

chủ… Đa số ứng dụng web sử dụng hệ quản trị CSDL MySQL, SQL Server, Oracle, DB2, Sysbase đều có khả năng dính lỗ hổng này

Có 4 dạng tấn công thông thường:

 Vượt qua kiểm tra lúc đăng nhập (authorization bypass)

 Tấn công sử dụng câu lệnh SELECT: 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

Ví dụ về tấn công SQL injection với kỹ thuật khai thác UNION SELECT trên cơ

sở dữ liệu MySQL:

Bước 1 Kiểm tra xem website có bị lỗi SQL injection hay không bằng cách thêm

dấu nháy vào sau ID:

http://www.site.com/news.php?id=5’

Nếu có lỗi Website sẽ hiện lỗi:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' and online = 'Y'' at line 1

Bước 2 Xác định số cột trong bảng biện tại: sử dụng câu lệnh ORDER BY

http://www.site.com/news.php?id=5 order by 3/* < no error

http://www.site.com/news.php?id=5 order by 4/* < error 1054 - Unknown column '4' in 'order clause'

Như vậy, có 3 cột (hay 3 trường) trong cơ sở dữ liệu

Bước 3 Xác định vị trí cột lỗi bằng câu lệnh UNION SELECT

Trang 33

Khi dùng UNION SELECT ở cuối thì các trường tương ứng sẽ được in ra sẽ là

các trường được truy vấn ở UNION SELECT Như vậy, UNION SELECT có thể liệt

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

http://site.com/news.php?id=5 union all select 1,2,3—

Những con số trả về chính là vị trí cột lỗi Nếu trang phản hồi không trả về

những con số, quản trị có thể thực hiện: view page source xem có số trong đó không;

xem file ảnh bị lỗi để thấy số; thay id bằng null; thay các column bằng null; bypass

filter; khai thác Error Base hoặc Blind SQLi Ở đây, giả sử vị trí cột lỗi là 2

Bước 4 Kiểm tra version của SQL bằng cách thay @@version hoặc verison()

vào số 2 (cột bị lỗi) trong câu truy vấn:

http://site.com/news.php?id=5 union all select 1 @@version,3

-Kết quả sẽ thấy 4.1.33-log, hoặc 5.0.45, hoặc tương tự Nếu Version SQL < 5 thì

đoán tên bảng và tên trường quan trọng; các trường thông dụng là user, usr,

user_name, password, pass, passwd Nếu Version SQL >5 thì truy vấn đến bảng trong

bước 5

Bước 5 Lấy tên bảng và tên trường trong bảng bằng cách thay thế

Group_concat(table_name) vào số cột bị lỗi (cột 2) và thêm from information_

schema.tables where table_schema=database() để tìm ra các bảng có trong CSDL

http://site.com/news.php?id=5 union all select 1,group_concat(table_name),3 from information_schema.tables where

table_schema=database() Giả sử các bảng có trong CSDL taikhoan,sanpham, dichvu hiện lên, ta chỉ cần

quan tâm đến bảng taikhoan

Bước 6 : Thực hiện truy vấn vào bảng taikhoan để tìm ID và pass của Admin

Để tìm các cột trong bảng taikhoan, cần phải encode tên bảng sang mã Hex và

thêm "0x" phía trước để hệ thống biết đó là mã Hex, như: 0x7461696b686f616e Thay

mã Hex này với Database()

- Sử dụng UNION SELECT để lấy thông tin có trong bảng taikhoan:

http://site.com/news.php?id=NULL SELECT 1,group_concat(column_name

3, from information_schema.tables where table_schema=database()

Kết quả sẽ hiện lên gồm ID, name, pass, từ đó tin tặc lấy được thông tin Admin

từ các trường này

- Thực hiện câu truy vấn:

http://site.com/news.php?id=5 null union all select 1,group_concat(id,0x207c20,name,0x207c20,pass,0x207c20),3 from information_schema.tables where table_schema=database()- -

Trang 34

Hex 0x207c20 là mã Hex Của " | " Kết quả sẽ là: 1 | admin | abc123!@#

 Sử dụng câu lệnh INSERT

Các ứng dụng web thường cho phép người dùng đăng kí một tài khoản để tham gia hệ thống 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 lúc này - khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào

Nếu tin tặc 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 thì 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 sử dụng quyền sa (quyền quản trị hệ thống) thì có thể điều khiển toàn bộ

hệ quản trị cơ sở dữ liệu, 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 Để phòng tránh, có thể thực hiện ở hai mức:

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

Bảo vệ các câu lệnh SQL bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhận được từ đối tượng Request (Request, Request.QueryString, Request.Form, Request.Cookies) là một trong các cách để phòng tránh tấn công SQL Injection

- Giới hạn chiều dài của chuỗi nhập liệu

- Nếu dữ liệu nhập vào là số, chuyển các giá trị numeric sang integer trước khi thực hiện câu truy vấn SQL hoặc dùng ISNUMERIC để chắc chắn nó là một số

integer

- Thay thế hoặc xây dựng hàm loại bỏ các kí tự meta như ‘,’’,/,\,;, các kí tự extend như NULL, CR, LF…, các từ khóa nguy hiểm như select, insert, xp_ ra khỏi chuỗi dữ liệu nhập nhận được từ người dùng, các tham số URL, các giá trị từ cookies

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

- 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 Quyền càng bị hạn chế, thiệt hại càng ít, do đó các ứng dụng thông thường nên tránh dùng đến các quyền như dbo hay sa

- 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

2.3.2 T ấn công XSS (Cross-Site Scripting)

Trang 35

a Tấn công XSS

XSS là một kiểu tấn công cho phép tin tặc chèn những đoạn script độc hại (thường là javascript hoặc HTML) vào website và thực thi trong trình duyệt của người dùng, nhằm đánh cắp những thông tin quan trọng như cookie, mật khẩu XSS không tấn công vào máy chủ của hệ thống mà chủ yếu tấn công trên máy client của người dùng Đây là một trong những kỹ thuật tấn công phổ biến nhất của các ứng dụng web

và ngày càng nguy hiểm Bất kì một website 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

Những phương pháp tin tặc có thể khai thác qua lỗi XSS:

- Đánh cắp cookie: tin tặc có thể lấy được cookie của người dùng và sử dụng thông tin đánh cắp để giả mạo phiên truy cập hoặc lấy những thông tin nhạy cảm khác được lưu trong cookie Cookie là phần thông tin mà ứng dụng có thể lưu trên đĩa cứng của người sử dụng, nhưng chỉ các ứng dụng thiết lập ra cookie thì mới có thể đọc nó,

do đó chỉ khi người dùng đang trong phiên làm việc của ứng dụng thì hacker mới có

cơ hội đánh cắp cookie Công việc đầu tiên của hacker là tìm trang đích để lừa người dùng đăng nhập sau khi đã tìm ra lỗ hổng trên ứng dụng đó

Bước 1: Tin tặc biết được người dùng đang chạy một ứng dụng web có lỗ hổng

XSS

Quá trình phát hiện lỗ hổng XSS gồm 03 giai đoạn:

- Xác định vị trí trên website cho phép nhập giá trị đầu vào;

- Chèn các đoạn mã script độc hại vào vị trí nhập giá trị đầu vào;

- Kiểm tra nếu script được thực thi hoặc xuất hiện script trong websource thì website đó có lỗ hổng XSS

Bước 2: Người dùng nhận và xem một liên kết thông qua email hay trên chính

trang web

Bước 3: Chuyển nội dung thông tin đánh cắp về máy chủ đã chuẩn bị trước của

tin tặc

Bước 4: Tin tặc đã tạo một đoạn mã hay chương trình hoặc một trang web để ghi

nhận những thông tin đã đánh cắp vào một tập tin

Bước 5: Sau khi nhận được thông tin cần thiết, tin tặc có thể sử dụng để xâm

nhập vào tài khoản của người dùng

- Keylogging: tin tặc có thể ghi lại những thao tác gõ phím của người dùng bằng cách sử dụng sự kiện addEventListener trong Javascript nhằm đánh cắp các thông tin nhạy cảm, lấy mật khẩu truy cập website hoặc mã số thẻ tín dụng…

- Phishing: tin tặc có thể tạo ra những website giả lừa người dùng đăng nhập để đánh cắp mật khẩu

Trang 36

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

Để phòng chống tin tặc khai thác lỗ hổng XSS, lập trình viên phải thực hiện lọc

và kiểm tra dữ liệu đầu vào từ phía người dùng hoặc kiểm tra, mã hóa giá trị xuất cho người dùng

- Lọc các kí tự đặc biệt, dấu nháy đơn kép, ký tự Null,… được định nghĩa trong đặc tả của HTML, sử dụng hàm encode để chuyển các kí tự < > thành &lt; %gt Mỗi trường nhập liệu bao gồm cả tham số liên kết sẽ được kiểm tra để phát hiện các thẻ script

- Thực hiện mã hóa phía máy chủ web, tất cả nội dung phát sinh động sẽ đi qua một hàm mã hóa nơi mà các thẻ script không mong muốn Việc mã hóa được khuyến khích sử dụng vì nó không yêu cầu phải đưa ra quyết định những kí tự nào là hợp lệ hoặc không hợp lệ Tuy nhiên việc mã hóa tất cả dữ liệu không đáng tin cậy có thể tốn tài nguyên và ảnh hưởng đến khả năng thực thi của máy chủ

2.3.3 Chi ếm hữu phiên làm việc (Session Management)

Trạng thái làm việc giữa trình duyệt và trình chủ được lưu trữ trong session Session ID có thể được lưu trữ trong cookie, nhúng vào địa chỉ URL hay trong biến ẩn của form, trong đó cookie vẫn là phương pháp an toàn nhất

Session ID có thể được xem như một mật khẩu tĩnh tạm thời sau khi người dùng

đã được xác thực tên/ mật khẩu, nhằm phục vụ cho những lần yêu cầu tiếp theo Do

đó, nó là mục tiêu lớn cho tin tặc để đột nhập vào phiên làm việc của họ Tấn công vào một phiên làm việc thường được thực hiện theo 2 kiểu chính: ấn định phiên làm việc

và đánh cắp phiên làm việc

XSS cũng là một cách tấn công có thể chiếm được session ID lưu trữ trong cookie Cách tấn công này gọi là “session hijacking”

2.3.4 T ấn công từ chối dịch vụ (DoS)

Tấn công từ chối dịch vụ DoS là các cuộc tấn công trên hệ thống mạng nhằm ngăn cản những truy xuất tới một dịch vụ Kiểu tấn công này làm cho các dịch vụ mạng bị tê liệt, không thể đáp ứng được yêu cầu bằng cách làm tăng đột biến số lượng kết nối, server hoặc chương trình chạy trên server bị quá tải, ngăn chặn người dùng hợp lệ truy nhập tới dịch vụ mạng

 Tấn công từ chối dịch vụ phân tán DDoS (Distributed Denial of Service):

Kiểu tấn công này mạnh hơn rất nhều lần so với tấn công DoS cổ điển, hầu hết nhằm vào việc chiếm dụng băng thông gây nghẽn hệ thống, dẫn đến ngưng hoạt động

hệ thống Tin tặc sẽ tìm cách chiếm dụng và điều khiển nhiều máy tính/mạng máy tính trung gian từ nhiều nơi để đồng loạt gửi các gói tin với số lượng rất lớn nhằm chiếm dụng tài nguyên và làm tràn ngập đường truyền của một mục tiêu tấn công

 Các bước tấn công DDoS

Trang 37

Bước 1: Chuẩn bị

- Tin tặc chuẩn bị phần mềm tấn công (tự viết hoặc tải miễn phí trên mạng)

- Dùng các kỹ thuật tấn công khác để nắm trọn quyền một số host trên mạng, cài đặt các software cần thiết trên các host này, cấu hình và thử nghiệm toàn bộ mạng lưới các máy đã bị lợi dụng cùng với các software đã được thiết lập trên đó để tấn công

Bước 2: Giai đoạn xác định mục tiêu và thời điểm

Sau khi xác định mục tiêu và thời điểm xong, tin tặc sẽ có hoạt động điều chỉnh mạng lưới tấn công chuyển hướng tấn công về phía mục tiêu

Bước 3: Phát động tấn công và xóa dấu vết

- Đúng thời điểm đã định, tin tặc phát động tấn công từ máy của mình Toàn mạng lưới tấn công sẽ làm cạn kiệt tài nguyên của server mục tiêu liên tục, ngăn chặn không cho nó hoạt động như thiết kế

- Sau một khoảng thời gian tấn công thích hợp, tin tặc xóa mọi dấu vết có thể truy ngược đến mình

 Các kỹ thuật tấn công

- Tấn công vào tài nguyên hệ thống: tin tặc sẽ lạm dụng quyền truy cập hợp lệ để yêu cầu thêm tài nguyên hệ thống so với cho phép, có thể thay đổi dữ liệu và tự sao chép dữ liệu mà nạn nhân cần lên nhiều lần, làm CPU bị quá tải và các quá trình xử lý

dữ liệu bị đình trệ, không còn tiến trình để thực thi nữa

- Tấn công kiểu Smurf Attack: Dựa vào mạng khuyếch đại, tin tặc dùng địa chỉ của máy tính cần tấn công bằng cách gửi gói tin ICMP echo cho toàn bộ mạng (broadcast) Các máy tính trong mạng sẽ đồng loạt gửi gói tin ICMP reply cho máy tính mà hacker muốn tấn công Kết quả là máy tính này sẽ không thể xử lý kịp thời một lượng lớn thông tin và bị treo máy

- Tấn công kiểu Tear Drop: Trong mạng chuyển mạch gói, dữ liệu được chia thành nhiều gói tin nhỏ, có thể truyền đi theo nhiều con đường khác nhau để tới đích,

và tại đích, nhờ vào giá trị offset của từng gói tin mà dữ liệu lại được kết hợp lại như ban đầu Lợi dụng điều này, tin tặc có thể tạo ra nhiều gói tin có giá trị offset trùng lặp nhau gửi đến mục tiêu muốn tấn công Kết quả là máy tính đích không thể sắp xếp được những gói tin này và dẫn tới bị treo máy

- Phá hoại hoặc chỉnh sửa phần cứng: Tiếp cận thay đổi trực tiếp hoặc từ xa các thông tin quan trọng của thiết bị hay phá hoại các thiết bị phần cứng như router, switch

2.3.5 M ột số kỹ thuật tấn công khác

 Mã Hóa URL (URL Encoding)

Những kí tự được giới hạn sử dụng trên URL hoặc URI là một tập các kí tự ASCII, gồm 2369 những kí tự chữ số, kí tự đặc biệt như “ $-_.+!*’() ” và một số kí tự dành riêng là không bị mã hoá trên URL hay URIs Còn những kí tự đặc biệt khác thì

Trang 38

US-được mã hóa như khoảng trắng, < > ”… Sau khi trình chủ nhận US-được dữ liệu, trình chủ

sẽ tự động giải mã để thao tác như bình thường Những nhà phát triển ứng dụng có thể

sẽ thiết kế ứng dụng để kiểm tra dữ liệu nhập vào của người dùng có hợp lệ hay không, những kí tự đặc biệc như < > trong thẻ script thường được dùng trong những kĩ thuật tấn công như XSS sẽ bị loại bỏ Để hợp thức hóa nội dung dữ liệu cần nhập, tin tặc thay vì nhập trực tiếp kí tự đặc biệt vào ô nhập thì họ có thể nhập những kí tự đã được mã hoá theo, từ đó có thể dễ dàng vượt qua kiểm soát này

 Tấn công dựa vào ký tự rỗng

Nhiều ứng dụng Web thường sử dụng ngôn ngữ lập trình như C, Java để tạo modul

xử lý những công việc như thao tác trên những dữ liệu nhập vào từ người dùng Lợi dụng

kí tự kết thúc chuỗi, tin tặc sẽ thêm vào một chuỗi nhập để đánh lừa ứng dụng

2.4 Phát hi ện tấn công SQL Injection và XSS bằng biểu thức chính quy

2.4.1 Gi ới thiệu về biểu thức chính quy

Biểu thức chính quy (regular expression, viết tắt là regexp, regex hay regxp) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định Có thể hiểu biểu thức chính quy là một hoạt động so khớp và trả về kết quả giống nhau của sự so khớp đó Nhiều ngôn ngữ lập trình hỗ trợ biểu thức chính quy trong việc xử

lý chuỗi, chẳng hạn như C#, Perl, PHP có bộ máy mạnh mẽ để xử lý biểu thức chính quy được xây dựng trực tiếp trong cú pháp của chúng

2.4.2 Bi ểu thức chính quy trong PHP

 Hàm preg_match trong PHP

Hàm preg_mathch (string pattern, string subject) trả về 1 nếu đúng quy tắc so mẫu, trả về 0 nếu sai quy tắc so mẫu Trong đó: string pattern: là biểu thức dùng để so mẫu Các chuỗi được so mẫu phải tuân thủ quy tắc của biểu thức này; string subject: là chuỗi được so mẫu

Một pattern (biểu thức so mẫu) nằm giữa hai dấu "/", và hai dấu "/" này nằm trong cặp nháy đôi, có dạng như sau:

$pattern = "/ thi ết_lập quy_tắc_ở đây /";

Những ký tự có ý nghĩa đặc biệt (Meta symbols) trong một regular expression:

Bảng 2.3 Ý nghĩa của ký tự đặc biệt trong biểu thức chính quy

1 ^ Bắt đầu dòng (string)

2 $ K ết thúc dòng (string)

3 Đại diện cho một ký tự bất kỳ

4 + Lặp lại ký tự hay cụm ký tự đứng trước nó (>=1)

5 * Cũng là lặp lại ký tự hay cụm ký tự đứng trước nó (>=0)

6 ? Tồn tại hay không tồn tại ký tự hay cụm ký tự đứng trước nó

7 \ Dấu \ đi kèm với 1 meta symbol sẽ làm mất ý nghĩa của meta symbol đó

- trả về symbol bình thường

Cách biểu diễn số và chữ cái:

Trang 39

- \d - Biểu diễn một con số bất kỳ

- \D - Ký tự bất kỳ không phải là chữ số (ngược với \d)

- \w - Ký tự từ a-z, A-Z, hoặc 0-9

- \W - Ngược lại với \w (nghĩa là các ký tự không thuộc các khoảng: a-z, A-Z, hoặc 0-9)

- Dấu gạch thẳng đứng: | để lựa chọn hoặc cái này hoặc cái kia

- Dấu ngoặc vuông để chỉ đoạn ký tự cho phép

- [a-z] : chỉ các chữ từ a đến

- z[A-Z] : chỉ các chữ từ A đến Z[0-9] : chỉ các số từ 0-9[

- a-zA-z0-9] : các chữ từ a-z, A-Z, 0-9

2.4.3 Phát hi ện tấn công SQL Injection bằng biểu thức chính quy

 Quy luật phát hiện ký tự meta của SQL

/(\%27)|(\')|(\-\-)|(\%23)|(#)/ix

Quy luật này trước tiên tìm những giá trị hex tương đương của dấu ', hoặc bản thân dấu ' hay sự hiện diện của dấu , đây là ký tự SQL dùng cho MS SQL server và Oracle server để bắt đầu cho một câu chú thích và tất cả những gì đi sau nó sẽ bị bỏ đi Nếu dùng MySQL cần kiểm tra thêm sự hiện diện của dấu # (hoặc giá trị hex tương đương) Lập trình viên không cần kiểm tra giá trị hex tương đương của dấu , bởi vì

nó không phải là một ký tự meta của HTML và sẽ không bị encode bởi trình duyệt Nếu tin tặc tự bổ sung dấu thành giá trị hex %2D ( dùng 1 proxy tấn công SQL vẫn thất bại Trong câu lệnh ở trên, ta dùng phát hiện dấu bởi vì đôi khi có những trường hợp SQL được thực hiện mà không cần dấu ' Ví dụ như nêu 1 câu truy vấn SQL có chứa mệnh đề WHERE với hoàn toàn là các giá trị số, như:

Select value1, value2, num_value3 from database

where num_value3=some_user_supplied_number

Trong trường hợp này, tin tặc có thể thực thi một câu lệnh SQL nữa, bằng cách thêm vào dòng

3; insert values into some_other_table

Cuối cùng, các biến pcre như 'i' và 'x' được dùng để kiểm tra các trường hợp phân biệt chữ hoa/thường và bỏ đi khoảng trắng (space) trong firewall rule Bảng quy định

Ngày đăng: 14/07/2020, 15:06

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w