68
1 LỜI CAM ĐOAN Tôi xin cam đoan đây là tìm hiu và nghiên cu ca riêng tôi . Các sliu nêu trong luận văn là trung thực và có cơ sở lý thuyết tham kho. Kết quđạt được trong luận văn là chưa từng nơi nào công bố. Tác giNguyn Huy Li

Đề tài :DDoS và cách phòng chống DDoS cho webserver

Embed Size (px)

Citation preview

Page 1: Đề tài :DDoS và cách phòng chống DDoS cho webserver

1

LỜI CAM ĐOAN

Tôi xin cam đoan đây là tìm hiểu và nghiên cứu của riêng tôi .

Các số liệu nêu trong luận văn là trung thực và có cơ sở lý thuyết tham khảo.

Kết quả đạt được trong luận văn là chưa từng nơi nào công bố.

Tác giả

Nguyễn Huy Lợi

Page 2: Đề tài :DDoS và cách phòng chống DDoS cho webserver

2

MỤC LỤC

Chương 1. Giới thiệu chung ........................................................................... 5

1.1. Đặt vấn đề ............................................................................................ 5

1.2. Mục tiêu ............................................................................................... 6

1.3 Phạm vi của đề tài ................................................................................ 6

1.4. Tóm tắt kết quả .................................................................................... 6

1.5. Cấu trúc luận văn ................................................................................ 7

Chương 2. Tổng quan về DDoS ...................................................................... 8

2.1. Giới thiệu chung về DDoS ................................................................... 8

2.2. Phân loại các kiểu tấn công DDoS ...................................................... 8

2.2.1 Tấn công làm cạn kiệt băng thông ................................................. 9

2.2.2 Tấn công làm cạn kiệt tài nguyên ................................................ 14

2.3. Sơ đồ mạng Botnet ............................................................................. 17

2.3.1 Sơ đồ Handler-Agent .................................................................. 17

2.3.2 Sơ đồ IRC Base ........................................................................... 18

2.4. Các phương pháp xây dựng tài nguyên tấn công .............................. 20

2.4.1 Cách thức cài đặt DDoS Agent .................................................... 20

2.4.2. Giao tiếp trên mạng Botnet........................................................ 22

2.5. Một số kiểu tấn công DDoS và các công cụ tấn công DDoS ............ 22

2.5.1 Một số kiểu tấn công DDoS ......................................................... 22

2.5.2 Một số công cụ tấn công DDoS ................................................... 23

Chương 3. Phòng thủ DDoS ......................................................................... 29

3.1 Tại sao DDoS khó giải quyết .............................................................. 29

3.2 Những thách thức khi xây dựng hệ thống phòng thủ DDoS .............. 30

3.3. Một số giải pháp phòng thủ DDoS .................................................... 37

3.3.1. Giải pháp dành cho doanh nghiệp cung cấp Hosting ................ 37

3.3.2. Giải pháp sử dụng IPS để lọc gói tin .......................................... 37

3.3.3. GeoIP DNS ................................................................................. 38

3.3.4. HAProxy ...................................................................................... 39

Chương 4. Cài đặt, thử nghiệm .................................................................... 41

4.1. Giải pháp dành cho doanh nghiệp cung cấp Hosting ....................... 41

4.1.1. Litespeed ..................................................................................... 41

4.1.2 CloudLinux ................................................................................... 43

4.1.3 ConfigServer Security & Firewall (CSF) .................................... 45

4.1.4. Thử nghiệm ................................................................................. 47

4.2. Giải pháp sử dụng IPS để lọc gói tin ................................................. 51

4.2.1 Snort ............................................................................................. 52

4.2.2 Thử nghiệm .................................................................................. 58

Kết luận: ........................................................................................................ 67

Tài liệu tham khảo ........................................................................................ 68

Page 3: Đề tài :DDoS và cách phòng chống DDoS cho webserver

3

Danh mục các ký hiệu và chữ viết tắt (nếu có)

STT Phần viết tắt Phần viết đầy đủ

1 Server Máy chủ

2 DDoS Tấn công từ chối dịch vụ

3 Client Máy trạm

4 Agent Máy tính bị chiếm quyền điều khiển

5 Traffic Lưu lượng

6 Packet Gói tin

7 Message Bản tin

8 Protocol Giao thức

9 Reply Phản hồi

10 Router Thiết bị định tuyến

11 Subnet Mạng con

12 Broadcast Quảng bá

13 Port Cổng

14 IPS Hệ thống ngăn chặn xâm nhập

Page 4: Đề tài :DDoS và cách phòng chống DDoS cho webserver

4

Danh mục các hình ảnh, đồ thị.

Hình 2.1 Phân loại các kiểu tấn công DDoS .................................................. 9

Hình 2.2: Mô hình mạng Amplifier ............................................................... 11

Hình 2.3 Trả lời truy vấn DNS ..................................................................... 13

Hình 2.4 Quá trình bắt tay ba bước .............................................................. 14

Hình 2.5 Tấn công TCP SYN Attack ............................................................. 15

Hình 2.6 :Sơ đồ mạng Botnet ........................................................................ 17

Hình 2.7 Sơ đồ IRC Base .............................................................................. 18

Hình 2.8 Các phương pháp xây dựng tài nguyên tấn công .......................... 20

Hình 2.9 Mô hình tấn công DDoS thông thường .......................................... 25

Hình 2.10 Mô hình tấn công X-Flash ........................................................... 27

Hình 3.1 Phương pháp đặt gần victim .......................................................... 34

Hình 3.2 Phương pháp đặt gần attacker ...................................................... 35

Hình 3.3 Phương pháp đặt tại phần lõi của Internet ................................... 36

Hình 3.4 Phương pháp kết hợp nhiều vị trí .................................................. 37

Hình 3.5 Mô hình sử dụng IPS để lọc gói tin ............................................... 38

Hình 3.6 Mô hình sử dụng GeoIP DNS ........................................................ 39

Hình 3.7 Mô hình sử dụng HAProxy và Keepalived .................................... 40

Hình 4.1 Máy chủ chạy apache .................................................................... 42

Hình 4.2 Máy chủ chạy litespeed .................................................................. 43

Hình 4.3 Mô hình hosting chia sẻ truyền thống ........................................... 44

Hình 4.4 Mô hình LVE của CloudLinux OS ................................................. 44

Hình 4.5: Các thông số cấu hình CloudLinux .............................................. 45

Hình 4.6: Cấu hình CloudLinux ................................................................... 48

Hình 4.8 Thông số của website ..................................................................... 49

Hình 4.9 Tấn công bằng tool ab ................................................................... 50

Hình 4.10 Thông số của website trong khi bị tấn công ................................ 51

Hình 4.11 Giới hạn tài nguyên ..................................................................... 51

Hình 4.12: Cấu trúc của Snort ..................................................................... 52

Hình 4.13 Mô hình thử nghiệm sử dụng IPS để lọc gói tin .......................... 59

Page 5: Đề tài :DDoS và cách phòng chống DDoS cho webserver

5

Chương 1. Giới thiệu chung

1.1. Đặt vấn đề

Năm 2011, lấy lý do ủng hộ Wikileaks, các nhóm Hacktivism (là một

thuật ngữ diễn tả hành động tấn công, đột nhập vào một hệ thống máy tính

nhằm mục đích chính trị hoặc xã hội) như Anonymous, LulzSec, hay

TeaMp0isoN tiến hành nhiều hoạt động khác nhau chống lại các cơ quan

luật pháp, ngân hàng, chính phủ, các công ty bảo mật và những nhà cung cấp

phần mềm như tấn công lỗ thủng an ninh các hệ thống của Tổ chức Liên

hiệp quốc (UN), cơ quan tình báo bảo mật Straffor, CIA… Cho đến nay,

danh sách nạn nhân của các nhóm Hacktivism ngày một dài thêm, từ các

website của chính phủ Mỹ, Ukraine, Anh, Israel, Indonesia, Mexico, Hy

Lạp, Syria, Thổ Nhĩ Kỳ, … cho đến các ngân hàng như Bank of America,

Nova Ljubljanska Banka's (ngân hàng lớn nhất của Slovenia)..., các công ty

như Visa inc, Paypal inc, MasterCard, Oracle, NASA, …

Các nhóm Hacktivism sử dụng nhiều phương pháp tấn công khác nhau

nhưng phương pháp hay được sử dụng nhất là DDoS. Tuy đây không phải là

phương pháp mới nhưng nó vẫn đem lại hiệu quả cao, gây ảnh hưởng không

nhỏ đến các công ty, tổ chức kinh doanh đặc biệt là kinh doanh trên Internet.

Việt Nam hiện nay đang ở giai đoạn đầu của thương mại điện tử, việc

một công ty thương mại điện tử bị tấn công DDoS làm ảnh hưởng không chỉ

là hình ảnh, uy tín của công ty mà còn ảnh hưởng trực tiếp đến doanh thu,

lợi nhuận của mình. Trong quá trình công tác, tôi đã tiếp xúc với nhiều

trường hợp các công ty bị chính đối thủ cạnh tranh tấn công DDoS, một số

trường hợp bị ảnh hưởng đến mức gần như không thu được lợi nhuận trong

thời gian dài. Thực tế, cũng đã có nhiều giải pháp về phòng chống DDoS,

Page 6: Đề tài :DDoS và cách phòng chống DDoS cho webserver

6

tuy nhiên, các giải pháp về phần cứng thì khá đắt đỏ, các giải pháp về phần

mềm thì rời rạc, chưa tổng hợp. Vì vậy, tôi đã lựa chọn đề tài : “Tìm hiểu

DDoS và xây dựng biện pháp phòng thủ DDoS cho webserver”, với mục

đích xây dựng, kiểm thử một số giải pháp sử dụng phần mềm mã nguồn mở

để các công ty vừa và nhỏ có thể triển khai dễ dàng.

1.2. Mục tiêu

Luận văn có 2 mục tiêu chính :

- Nghiên cứu tìm hiểu về DDoS, phân loại DDoS, giới thiệu một số

công cụ tấn công DDoS và các giải pháp phòng thủ DDoS mà về

mặt chủ quan cá nhân tôi nhận thức được.

- Dựa trên các giải pháp đã trình bày nói trên xây dựng một số kịch

bản kiểm thử.

1.3 Phạm vi của đề tài

Trong phạm vi của đề tài, tôi sẽ trình bày một cái nhìn tổng quan về

DDoS và một số giải pháp dựa trên phần mềm mã nguồn mở. Từ đó tôi cài

đặt và kiểm thử hai giải pháp có giá thành rẻ, dễ triển khai với các doanh

nghiệp vừa và nhỏ.

1.4. Tóm tắt kết quả

Theo yêu cầu đặt ra ban đầu là “Tìm hiểu DDoS và triển khai hệ

thống phòng thủ DDoS ”, cho đến thời điểm hiện tại, luận văn đã làm được

những nội dung sau

I. Tìm hiểu DDoS bao gồm

a. Tìm hiểu được những kiểu tấn công của DDoS.

b. Tìm hiểu được mô hình mạng Botnet (mô hình, cách cài đặt,

giao tiếp).

c. Một số công cụ tấn công DDoS.

II. Giới thiệu một số giải pháp phòng thủ DDoS.

III. Cài đặt và thử nghiệm 2 giải pháp phòng thủ DDoS.

Page 7: Đề tài :DDoS và cách phòng chống DDoS cho webserver

7

1.5. Cấu trúc luận văn Luận văn có 4 chương bao gồm :

Chương 1. Giới thiệu chung.

Chương này tập trung xây dựng tính cấp thiết của việc thực hiện

nghiên cứu, mục tiêu và tóm tắt kết quả của đề tài.

Chương 2. Tổng quan về DDoS.

Chương này giới thiệu về DDoS, mô hình, một số công cụ tấn công

DDoS

Chương 3. Phòng thủ DDoS.

Chương này làm rõ tại sao DDoS khó giải quyết đồng thời đưa ra một

vài giải pháp phòng thủ DDoS dựa trên phần mềm mã nguồn mở.

Chương 4. Cài đặt, thử nghiệm.

Cài đặt thử nghiệm những giải pháp đã nêu ra ở chương 3

Page 8: Đề tài :DDoS và cách phòng chống DDoS cho webserver

8

Chương 2. Tổng quan về DDoS

2.1. Giới thiệu chung về DDoS

DDoS (distributed denial-of-service attack) là một kiểu tấn công đưa

một hệ thống cung cấp dịch vụ đến mức hoạt động tới hạn về tài nguyên,

hay gây nhầm lẫn logic dẫn đến hệ thống ngừng hoạt động .

Khác với DoS (denial-of-service attack) là chỉ cần một máy để tấn

công, DDoS sử dụng nhiều máy tính bị chiếm quyền điều khiển kết nối với

nhau (mạng Botnet) để tấn công nên sức hủy hoại là rất lớn.

2.2. Phân loại các kiểu tấn công DDoS

Nhìn chung, có rất nhiều cách để phân loại các kiểu tấn công DDoS

nhưng theo tôi cách phân loại theo mục đích tấn công là khá đầy đủ, đơn

giản và dễ hiểu. Dưới đây là sơ đồ mô tả sự phân loại các kiểu tấn công

DDoS dựa theo mục đích tấn công: làm cạn kiệt băng thông và làm cạn kiệt

tài nguyên hệ thống.

Page 9: Đề tài :DDoS và cách phòng chống DDoS cho webserver

9

Hình 2.1 Phân loại các kiểu tấn công DDoS

2.2.1 Tấn công làm cạn kiệt băng thông

Tấn công làm cạn kiệt băng thông được thiết kế nhằm làm tràn ngập

mạng mục tiêu với những traffic không cần thiết, với mục địch làm giảm tối

thiểu khả năng của các traffic hợp lệ đến được hệ thống cung cấp dịch vụ

của mục tiêu.

Có hai loại tấn công làm cạn kiệt băng thông :

+ Flood attack: Điều khiển các Agent gửi một lượng lớn traffic đến hệ

thống dịch vụ của mục tiêu, làm dịch vụ này bị hết khả năng về băng thông.

+ Amplification attack: Điều khiển các Agent hay Client tự gửi packet

đến một địa chỉ IP broadcast, làm cho tất cả các máy trong subnet này gửi

packet đến hệ thống dịch vụ của mục tiêu. Phương pháp này làm gia tăng

traffic không cần thiết, làm suy giảm băng thông của mục tiêu.

2.2.1.1 Flood attack:

Trong phương pháp này, các Agent sẽ gửi một lượng lớn IP traffic

làm hệ thống dịch vụ của mục tiêu bị chậm lại, hệ thống bị treo hay đạt đến

Page 10: Đề tài :DDoS và cách phòng chống DDoS cho webserver

10

trạng thái hoạt động bão hòa. Làm cho những người dùng thực sự của hệ

thống không sử dụng được dịch vụ.

Ta có thể chia Flood Attack thành hai loại:

+ UDP Flood Attack: do tính chất kết nối không cần bắt tay của

UDP, hệ thống nhận UDP message chỉ đơn giản nhận vào tất cả các packet

mình cần phải xử lý. Một lượng lớn các UDP packet được gửi đến hệ thống

dịch vụ của mục tiêu sẽ đẩy toàn bộ hệ thống đến ngưỡng tới hạn.

+ Các UDP packet này có thể được gửi đến nhiều port tùy ý hay chỉ

duy nhất một port. Thông thường là sẽ gửi đến nhiều port làm cho hệ thống

mục tiêu phải căng ra để xử lý phân hướng cho các packet này. Nếu port bị

tấn công không sẵn sàng thì hệ thống mục tiêu sẽ gửi ra một ICMP packet

loại “destination port unreachable”. Thông thường các Agent sẽ dùng địa chỉ

IP giả để che giấu hành tung, cho nên các packet trả về do không có port xử

lý sẽ dẫn đến một địa chỉ IP khác. UDP Flood attack cũng có thể làm ảnh

hưởng đến các kết nối xung quanh mục tiêu do sự hội tụ của packet diễn ra

rất mạnh.

+ ICMP Flood Attack: được thiết kế nhằm mục đích quản lý mạng

cũng như định vị thiết bị mạng. Khi các Agent gửi một lượng lớn

ICMP_ECHO_REPLY đến hệ thống mục tiêu thì hệ thống này phải reply

một lượng tương ứng Packet để trả lời, sẽ dẫn đến nghẽn đường truyền.

Tương tự trường hợp trên, địa chỉ IP của các Agent có thể bị giả mạo.

2.2.1.2 Amplification Attack:

Amplification Attack nhắm đến việc sử dụng các chức năng hỗ trợ địa

chỉ IP broadcast của các router nhằm khuyếch đại và hồi chuyển cuộc tấn

công. Chức năng này cho phép bên gửi chỉ định một địa chỉ IP broadcast cho

toàn subnet bên nhận thay vì nhiều địa chỉ. Router sẽ có nhiệm vụ gửi đến

tất cả địa chỉ IP trong subnet đó packet broadcast mà nó nhận được.

Page 11: Đề tài :DDoS và cách phòng chống DDoS cho webserver

11

Attacker có thể gửi broadcast packet trực tiếp hay thông qua một số

Agent nhằm làm gia tăng cường độ của cuộc tấn công. Nếu attacker trực tiếp

gửi packet, thì có thể lợi dụng các hệ thống bên trong broadcast network như

một Agent.

Hình 2.2: Mô hình mạng Amplifier

Có thể chia amplification attack thành hai loại, Smuft va Fraggle

attack:

+ Smuft attack: trong kiểu tấn công này attacker gửi packet đến

network amplifier (router hay thiết bị mạng khác hỗ trợ broadcast), với địa

chỉ của nạn nhân. Thông thường những packet được dùng là ICMP ECHO

REQUEST, các packet này yêu cầu yêu cầu bên nhận phải trả lời bằng một

ICMP ECHO REPLY packet. Network amplifier sẽ gửi đến ICMP ECHO

Attacker/Agent VICTIM

Host

Host

Host

Host

Amplifie

r

Amplifier Network System

Page 12: Đề tài :DDoS và cách phòng chống DDoS cho webserver

12

REQUEST packet đến tất cả các hệ thống thuộc địa chỉ broadcast và tất cả

các hệ thống này sẽ REPLY packet về địa chỉ IP của mục tiêu tấn công

Smuft Attack.

+ Fraggle Attack: tương tự như Smuft attack nhưng thay vì dùng

ICMP ECHO REQUEST packet thì sẽ dùng UDP ECHO packet gửi đến

mục tiêu. Thật ra còn một biến thể khác của Fraggle attack sẽ gửi đến UDP

ECHO packet đến chargen port (port 19/UNIX) của mục tiêu, với địa chỉ

bên gửi là echo port (port 7/UNIX) của mục tiêu, tạo nên một vòng lặp vô

hạn. Attacker phát động cuộc tấn công bằng một ECHO REQUEST với địa

chỉ bên nhận là một địa chỉ broadcast, toàn bộ hệ thống thuộc địa chỉ này lập

tức gửi REPLY đến port echo của nạn nhân, sau đó từ nạn nhân một ECHO

REPLY lại gửi trở về địa chỉ broadcast, quá trình cứ thế tiếp diễn. Đây chính

là nguyên nhân Flaggle Attack nguy hiểm hơn Smuft Attack rất nhiều.

+ DNS Amplification: Ta xem xét một truy vấn DNS như sau:

dig ANY isc.org @x.x.x.x

với x.x.x.x là IP của một máy chủ DNS

Ta sẽ nhận được trả lời từ máy chủ DNS như sau:

; <<>> DiG 9.7.3 <<>> ANY isc.org @x.x.x.x

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5147

;; flags: qr rd ra; QUERY: 1, ANSWER: 27, AUTHORITY: 4, ADDITIONAL: 5

;; QUESTION SECTION:

;isc.org. IN ANY

;; ANSWER SECTION:

isc.org. 4084 IN SOA ns-int.isc.org. hostmaster.isc.org. 2012102700 7200 3600 24796800 3600

isc.org. 484 IN NSEC _kerberos.isc.org. A NS SOA MX TXT AAAA NAPTR

RRSIG NSEC DNSKEY SPF

isc.org. 4084 IN DNSKEY 256 3 5

BQEAAAAB2F1v2HWzCCE9vNsKfk0K8vd4EBwizNT9KO6WYXj0oxEL4eOJ

aXbax/BzPFx+3qO8B8pu8E/JjkWH0oaYz4guUyTVmT5Eelg44Vb1kssy

q8W27oQ+9qNiP8Jv6zdOj0uCB/N0fxfVL3371xbednFqoECfSFDZa6Hw jU1qzveSsW0=

Page 13: Đề tài :DDoS và cách phòng chống DDoS cho webserver

13

isc.org. 4084 IN DNSKEY 257 3 5

BEAAAAOhHQDBrhQbtphgq2wQUpEQ5t4DtUHxoMVFu2hWLDMvoOMRXjGr

hhCeFvAZih7yJHf8ZGfW6hd38hXG/xylYCO6Krpbdojwx8YMXLA5/kA+

u50WIL8ZR1R6KTbsYVMf/Qx5RiNbPClw+vT+U8eXEJmO20jIS1ULgqy3

47cBB1zMnnz/4LJpA0da9CbKj3A254T515sNIMcwsB8/2+2E63/zZrQz

isc.org. 4084 IN NS ord.sns-pb.isc.org.

isc.org. 4084 IN NS sfba.sns-pb.isc.org.

;; AUTHORITY SECTION:

isc.org. 4084 IN NS ns.isc.afilias-nst.info.

isc.org. 4084 IN NS ams.sns-pb.isc.org.

isc.org. 4084 IN NS ord.sns-pb.isc.org.

isc.org. 4084 IN NS sfba.sns-pb.isc.org.

;; ADDITIONAL SECTION:

mx.ams1.isc.org. 484 IN A 199.6.1.65

mx.ams1.isc.org. 484 IN AAAA 2001:500:60::65

mx.pao1.isc.org. 484 IN A 149.20.64.53

mx.pao1.isc.org. 484 IN AAAA 2001:4f8:0:2::2b

_sip._udp.isc.org. 4084 IN SRV 0 1 5060 asterisk.isc.org.

;; Query time: 176 msec

;;SERVER: x.x.x.x#53(x.x.x.x)

;; WHEN: Tue Oct 30 01:14:32 2012

;; MSG SIZE rcvd: 3223

Hình 2.3 Trả lời truy vấn DNS

Gửi một truy vấn 64 bytes nhận được kết quả là 3223 bytes trả về, hay

nói cách khác, thông qua hệ thống DNS này, kẻ tấn công có thể tăng lưu

lượng tấn công lên 50 lần. Độ lớn của gói tin trả về phụ thuộc vào

DNSKEY, là giao thức được thiết kế để hệ thống DNS trở nên an toàn.

Một cách đơn giản, kẻ tấn công gửi các truy vấn DNS (sử dụng giao

thức UDP) đến một máy chủ DNS trên Internet nhưng dùng địa chỉ nạn nhân

giả mạo thành nguồn gốc của truy vấn đó.

Khi máy chủ DNS phản hồi trở lại (thường có kích thước gấp nhiều

lần truy vấn gửi đi), nạn nhân sẽ hứng chịu "phản hồi" đó. Hàng trăm ngàn

truy vấn sẽ liên tục gửi đến máy chủ DNS để "mượn tay" tấn công hệ thống

nạn nhân khiến hệ thống bị nghẽn do lưu lượng dữ liệu gửi đến quá lớn "như

một cơn lũ".

Hiện có 27 triệu máy chủ DNS trên mạng Internet và chúng có thể bị

tấn công để trở thành "vũ khí mạng" của tội phạm.

Page 14: Đề tài :DDoS và cách phòng chống DDoS cho webserver

14

Ngày 28/3/2013, một nhóm tin tặc đã sử dụng phương pháp này tấn

công vào tổ chức chống thư rác Spamhaus, dữ liệu ước tính lên đến khoảng

300 gigabyte dữ liệu (GB)/giây, gấp 6 lần so với các cuộc tấn công DDoS

thông thường (vào khoảng 50 gigabyte dữ liệu/giây).

2.2.2 Tấn công làm cạn kiệt tài nguyên

Resource Deleption Attack là kiểu tấn công trong đó Attacker gửi

những packet dùng các protocol sai chức năng thiết kế, hay gửi những

packet với dụng ý làm tắt nghẽn tài nguyên mạng làm cho các tài nguyên

này không phục vụ những người dùng thông thường khác được.

2.2.2.1 Protocol Exploit Attack

+ TCP SYN Attack: Transfer Control Protocol (TCP) hỗ trợ truyền

nhận với độ tin cậy cao nên sử dụng phương thức bắt tay giữa bên gửi và

bên nhận trước khi truyền dữ liệu. Bước đầu tiên, bên gửi gửi một SYN

REQUEST packet (Synchronize). Bên nhận nếu nhận được SYN REQUEST

sẽ trả lời bằng SYN/ACK REPLY packet. Bước cuối cùng, bên gửi sẽ truyên

packet cuối cùng ACK và bắt đầu truyền dữ liệu.

Hình 2.4 Quá trình bắt tay ba bước

Nếu bên server đã trả lời một yêu cầu SYN bằng một SYN/ACK

REPLY nhưng không nhận được ACK packet cuối cùng sau một khoảng

TCP

Client

Client Port

1024-65535

TCP

Server

Service Port

1-1023

SYS

ACK

SYN/ACK

80

Page 15: Đề tài :DDoS và cách phòng chống DDoS cho webserver

15

thời gian quy định thì nó sẽ resend lại SYN/ACK REPLY cho đến hết thời

gian timeout. Toàn bộ tài nguyên hệ thống “dự trữ” để xử lý phiên giao tiếp

nếu nhận được ACK packet cuối cùng sẽ bị “phong tỏa” cho đến hết thời

gian timeout.

Hình 2.5 Tấn công TCP SYN Attack

Nắm được điểm yếu này, attacker gửi một SYN packet đến nạn nhân

với địa chỉ bên gửi là giả mạo, kết quả là nạn nhân gửi SYN/ACK REPLY

đến một địa chỉ khá và sẽ không bao giờ nhận được ACK packet cuối cùng,

cho đến hết thời gian timeout nạn nhân mới nhận ra được điều này và giải

phóng các tài nguyên hệ thống. Tuy nhiên, nếu lượng SYN packet giả mạo

đến với số lượng nhiều và dồn dập, hệ thống của nạn nhân có thể bị hết tài

nguyên.

+ PUSH Attack: Trong TCP protocol, các packet được chứa trong

buffer, khi buffer đầy thì các packet này sẽ được chuyển đến nơi cần thiết.

Tuy nhiên, bên gửi có thể yêu cầu hệ thống unload buffer trước khi buffer

đầy bằng cách gửi một packet với PUSH và ACK mang giá trị là 1. Những

packet này làm cho hệ thống của nạn nhân unload tất cả dữ liệu trong TCP

buffer ngay lập tức và gửi một ACK packet trở về khi thực hiện xong điều

Malicious

TCP

Client

Victim

TCP

Server

SYS/ACK

SYN

80

?

Page 16: Đề tài :DDoS và cách phòng chống DDoS cho webserver

16

này, nếu quá trình được diễn ra liên tục với nhiều Agent, hệ thống sẽ không

thể xử lý được lượng lớn packet gửi đến và sẽ bị treo.

2.2.2.2 Malformed Packet Attack

Malformed Packet Attack là cách tấn công dùng các Agent để gửi các

packet có cấu trúc không đúng chuẩn nhằm làm cho hệ thống của nạn nhân

bị treo.

Có hai loại Malformed Packet Attack:

+ IP address attack: dùng packet có địa chỉ gửi và nhận giống nhau

làm cho hệ điều hành của nạn nhân không xử lý nổi và bị treo.

+ IP packet options attack ngẫu nhiên hóa vùng OPTION trong IP

packet và thiết lập tất cả các bit QoS lên 1, điều này làm cho hệ thống của

nạn nhân phải tốn thời gian phân tích, nếu sử dụng số lượng lớn Agent có

thể làm hệ thống nạn nhân hết khả năng xử lý.

Page 17: Đề tài :DDoS và cách phòng chống DDoS cho webserver

17

2.3. Sơ đồ mạng Botnet

2.3.1 Sơ đồ Handler-Agent

Hình 2.6 :Sơ đồ mạng Botnet

Botnet là một mạng gồm từ hàng trăm tới hàng triệu máy tính bị điều

khiển hoàn toàn bởi hacker.

Mạng Botnet thông thường bao gồm 3 thành phần : Agent, Client và

Handler. Trong đó :

+ Client: Là phần mềm cơ sở để hacker điều khiển mọi hoạt động của

mạng Handler-Agent.

+ Handler: Là một phần mềm trung gian giữa Agent và Client.

+ Agent: Là một thành phần software thực hiện sự tấn công mục

tiêu,nhận điều khiển từ Client thông quan các Handler.

Page 18: Đề tài :DDoS và cách phòng chống DDoS cho webserver

18

Attacker sẽ từ Client giao tiếp với Handler để xác định số lượng các Agent

đang online, điều chỉnh thời điểm tấn công và cập nhật các Agent. Tuỳ theo

cách attacker cấu hình mạng Botnet , các Agent sẽ chịu sự quản lý của một

hay nhiều Handler.

Thông thường Attacker sẽ đặt các Handler trên một Router hay Server

có lượng lưu thông lớn.Việc này nhằm làm cho các giao tiếp giữa Client,

Handler và Agent khó bị phát hiện.Các giao thức này thường diễn ra trên các

giao thức TCP,UDP, hay ICMP.Chủ nhân thực sự của các Agent thường

không biết họ bị lợi dụng trong các cuộc tấn công DDos, do họ không đủ

kiến thức hoặc các chương trình Backdoor Agent chỉ sử dụng rất ít tài

nguyên hệ thống làm cho hầu như không thể thấy ảnh hưởng gì đến hiệu

năng của hệ thống.

2.3.2 Sơ đồ IRC Base

Hình 2.7 Sơ đồ IRC Base

Page 19: Đề tài :DDoS và cách phòng chống DDoS cho webserver

19

Internet Relay Chat(IRC) là một hệ thống online chat nhiều người.

IRC cho phép người sử dụng tạo một kết nối đến nhiều điểm khác với nhiều

người sử dụng khác nhau và chat thời gian thực. Kiến trúc cũ của IRC

network bao gồm nhiều IRC server trên khắp Internet, giao tiếp với nhau

trên nhiều kênh (channnel).IRC network cho phép user tao ba loại channel:

Public, Private và Secrect.Trong đó :

+ Public channel: Cho phép user của channel đó thấy IRC name và

nhận được message của mọi user khác trên cùng channel

+ Private channel: Được thiết kế để giao tiếp với các đối tượng cho

phép.Không cho phép các user không cùng channel thấy IRC name và

message trên channel. Tuy nhiên , nếu user ngoài channel dùng một số lệnh

channel locator thì có thể biết được sự tồn tại của private channel đó.

+ Secrect channel: Tương tự private channel nhưng không thể xác

định bằng channel locator.

Mạng IRC-based cũng tương tự như mạng Agent-Handler nhưng mô

hình này sử dụng các kênh giao tiếp IRC làm phương tiện giao tiếp giữa

Client và Agent(không sử dụng Handler).Sử dụng mô hình này, attacker còn

có thêm một số lợi thế khác như :

+ Các giao tiếp dưới dạng chat message làm cho việc phát hiện chúng

là vô cùng khó khăn.

+ Lưu thông IRC có thể di chuyển trên mạng với số lượng lớn mà

không bị nghi ngờ.

+ Không cần phải duy trì danh sách các Agent, hacker chỉ cần logon

vào IRC server là đã có thể nhận được report về trạng thái các Agent do các

channel gửi về.

+ Sau cùng: IRC cũng là một môi trường chia sẻ file tạo điều kiện

phát tán các Agent code lên nhiều máy khác.

Page 20: Đề tài :DDoS và cách phòng chống DDoS cho webserver

20

2.4. Các phương pháp xây dựng tài nguyên tấn công

Có rất nhiều điểm chung của các công cụ DDoS attack. Có thể kể ra

một số điểm chung như: cách cài chương trình Agent, phương pháp giao tiếp

giữa các Attacker, Handler và Agent, điểm chung về loại hệ điều hành hỗ trợ

các công cụ này. Sơ đồ sau mô tả sự so sánh tương quan giữa các công cụ

tấn công DDoS này.

Hình 2.8 Các phương pháp xây dựng tài nguyên tấn công

2.4.1 Cách thức cài đặt DDoS Agent

Attacker có thể dùng phương pháp active và passive để cài đặt chương

trình Agent lên các máy khác nhằm thiết lập mạng tấn công kiểu Agent-

Handler hay IRC-based.

Các cách cài đặt sử dụng phương pháp active như:

+ Scaning: dùng các công cụ như Nmap, Nessus để tìm những sơ hở

trên các hệ thống đang online nhằm cài đặt chương trình Agent. Chú ý,

Nmap sẽ trả về những thông tin về một hệ thống đã được chỉ định bằng địa

Page 21: Đề tài :DDoS và cách phòng chống DDoS cho webserver

21

chỉ IP, Nessus tìm kiếm từ những địa chỉ IP bất kỳ về một điểm yếu biết

trước nào đó.

+ Backdoor: sau khi tìm thấy được danh sách các hệ thống có thể lợi

dụng, attacker sẽ tiến hành xâm nhập và cài chương trình Agent lên các hệ

thống này. Có rất nhiều thông tin sẵn có về cách thức xâm nhập trên mạng,

như site của tổ chức Common Vulnerabilities and Exposures (CVE), ở đây

liệt kê và phân loại trên 4.000 loại lỗi của tất cả các hệ thống hiện có. Thông

tin này luôn sẵn sàng cho cả giới quản trị mạng lẫn hacker.

+ Trojan: là một chương trình thực hiện một chức năng thông thường

nào đó, nhưng lại có một số chức năng tiềm ẩn phục vụ cho mục đích riêng

của người viết mà người dùng không thể biết được. Có thể dùng trojan như

một chương trình Agent.

+ buffer Overflow(tràn bộ đệm): tận dụng lỗi buffer overflow,

attacker có thể làm cho chu trình thực thi chương trình thông thường bị

chuyển sang chu trình thực thi chương trình của hacker (nằm trong vùng dữ

liệu ghi đè). Có thể dùng cách này để tấn công vào một chương trình có

điểm yếu buffer overflow để chạy chương trình Agent.

Cách cài đặt passive:

+ Bug Website: attacker có thể lợi dụng một số lỗi của trình duyệt

web để cài chương trình Agent vào máy của người truy cập. Attacker sẽ tạo

một website mang nội dung tiềm ẩn những code và lệnh để đặt bẫy người

dùng. Khi người dùng truy cập nội dung của website, thì trang web tự động

tải và cài đặt chương trình Agent một cách bí mật. Microsoft Internet

Explorer thường là mục tiêu của cách cài đặt này, với các lỗi của ActiveX

có thể cho phép IE brower tự động download và cài đặt code trên máy của

người dùng duyệt web.

Page 22: Đề tài :DDoS và cách phòng chống DDoS cho webserver

22

+ Corrupted file: một phương pháp khác là nhúng code vào trong các

file thông thường. Khi người đọc hay thực thi các file này, máy của họ lập

tức bị nhiễm chương trình Agent software. Một trong những kỹ thuật phổ

biến là đặt tên file rất dài, do mặc định của các hệ điều hành chỉ hiển thị

phần đầu của tên file nên attacker có thể gửi kèm theo email cho nạn nhân

file như sau: iloveyou.txt_hiiiiiii_NO_this_is_DDoS.exe, do chỉ thấy phần

“Iloveyou.txt” hiển thị nên user sẽ mở file này để đọc và lập tức file này

được thực thi và Agent code được cài vào máy nạn nhân. Ngoài ra còn nhiều

cách khác như ngụy trang file, ghép file…

2.4.2. Giao tiếp trên mạng Botnet

Protocol: giao tiếp trên mạng Botnetcó thể thực hiện trên nền các

protocol TCP, UDP, ICMP.

Mã hóa các giao tiếp: một vài công cụ DDoS hỗ trợ mã hóa giao tiếp

trên toàn bộ mạng botnet. Tùy theo giao thức được sử dụng để giao tiếp sẽ

có các phương pháp mã hóa thích hợp. Nếu mạng Botnet ở dạng IRC-based

thì private và secrect channel đã hỗ trợ mã hóa giao tiếp.

Cách kích hoạt Agent: có hai phương pháp chủ yếu để kích hoạt

Agent. Cách thứ nhất là Agent sẽ thường xuyên quét thăm dò Handler hay

IRC channel để nhận chỉ thị (active Agent). Cách thứ hai là Agent chỉ đơn

giản là “nằm vùng” chờ chỉ thị từ Handler hay IRC Channel.

2.5. Một số kiểu tấn công DDoS và các công cụ tấn

công DDoS

2.5.1 Một số kiểu tấn công DDoS

- HTTP Flood

- SYN Flood

- ICMP Flood

Page 23: Đề tài :DDoS và cách phòng chống DDoS cho webserver

23

- SSH Process Table

- TCP Reset

- UDP Flood

2.5.2 Một số công cụ tấn công DDoS

2.5.2.1 Trinoo

Trinoo là một công cụ tấn công từ chối dịch vụ bằng kĩ thuật UDP

Flood được kết hợp từ nhiều nguồn.

Một cuộc tấn công DDoS bằng Trinoo được thực hiện bởi kết nối của

attacker đến Một hay nhiều Trinoo Master và chỉ dẫn cho Master phát động

tấn công DDoS đến một hoặc nhiều mục tiêu. Master sẽ liên lạc với các

daemons để ra lệnh cho các daemons gửi các UDP packet đến mục tiêu.

Mô hình :

attacker(s)-->Master(s)-->daemon(s)-->victim(s)

Attacker -----> Master : port 27665/TCP

Master -----> Deamons : port 27444/UDP

Daemon ------> Master : port 31335/UDP

Deamon -----> UDP Flood đến mục tiêu (random port) .

2.5.2.2 Tribe Flood Network (TFN/TFN2K)

Tương tự như Trinoo nhưng Tribe Flood Network còn cho phép

attacker sử dụng thêm ICMP flood, SYN flood, và Smurf .

Mô hình :

attacker(s)-->client(s)-->daemon(s)-->victim(s)

2.5.2.3 Stacheldraht

Stacheldraht là sự kết hợp các tính năng của Trinoo và TFN, bên cạnh

đó còn thêm khả năng mã hóa giao tiếp giữa attacker và stacheldraht

masters.

Page 24: Đề tài :DDoS và cách phòng chống DDoS cho webserver

24

Stacheldraht cung cấp cho attacker khá nhiều phương thức tấn công từ

chối dịch vụ : ICMP flood, SYN flood, UDP flood, và Smurf .

Mô hình :

client(s)-->handler(s)-->agent(s)-->victim(s)

Client ---> handler(s) : port 16660/tcp

Handler <----> agent(s): port 65000/tcp,

ICMP_ECHOREPLY

2.5.2.4 Trinity

Trinity có hầu hết các kỹ thuật tấn công bao gồm: UDP, TCP SYS,

TCP ACK, TCP fragment, TCP NULL, TCP RST, TCP random flag, TCP

ESTABLISHED packet flood. Nó có sẵn khả năng ngẫu nhiên hóa địa chỉ

bên gởi. Trinity cũng hỗ trợ TCP flood packet với khả năng ngẫu nhiên tập

CONTROL FLAG. Trinity có thể nói là một trong số các công cụ DDoS

nguy hiểm nhất.

2.5.2.5 Shaft

Shaft có các kĩ thuật tấn công UDP, ICMP và TCP flood. Có thể tấn

công phối hợp nhiều kiểu cùng lúc. Có thống kê chi tiết cho phép attacker

biết tình trạng tổn thất của nạn nhân, mức độ quy mô của cuộc tấn công để

điều chỉnh số lượng Agent.

Mô hình :

client(s)-->handler(s)-->agent(s)-->victim(s)

Client ----> handler(s): port 20432/tcp

Handler ---> agent(s): port 18753/udp

Agent ---> handler(s): port 20433/udp

Page 25: Đề tài :DDoS và cách phòng chống DDoS cho webserver

25

2.5.2.6 X-Flash

Vấn đề then chốt của hacker tấn công bằng hình thái cổ điển là nắm

quyền điều khiển càng nhiều máy tính càng tốt, sau đó anh ta sẽ trực tiếp

phát động tấn công hàng loạt từ xa thông qua một kênh điều khiển. Với quy

mô mạng lưới tấn công bao gồm vài trăm nghìn máy, hình thái này có thể

đánh gục ngay lập tức bất cứ hệ thống nào. Phối hợp với khả năng giả mạo

địa chỉ IP, kiểu tấn công này sẽ rất khó lần theo dấu vết.

Hình 2.9 Mô hình tấn công DDoS thông thường

Mô hình này có một số nhược điểm:

- Mạng lưới tấn công là cố định và tấn công xảy ra đồng loạt nên rất

dễ điều tra ngược tìm manh mối.

Page 26: Đề tài :DDoS và cách phòng chống DDoS cho webserver

26

- Software cài lên các Infected Agent là giống nhau và có thể dùng

làm bằng chứng kết tội hacker.

- Phía nạn nhân có thể điều chỉnh hệ thống phòng vệ để ngăn chặn vì

mạng lưới tấn công là “khả kiến”.

- Hacker buộc phải trực tiếp kết nối đến mạng lưới các máy tấn công

tại thời điểm tấn công để điều khiển nên rất dễ lần ra thủ phạm.

X-Flash xuất hiện sau khi DantruongX và nhóm BeYeu phát hiện ra

những lỗ hổng bảo mật của IE và Flash. Nó chỉ bằng cách đơn giản là gửi

yêu cầu tới web server dạng HTTP Request ( yêu cầu dạng POST hay GET)

với một tốc độ cực kì nhanh khiến web serivces bị treo.

Cách tấn công : Hacker treo một file flash trên một website trung gian

có nhiều người truy xuất, người dùng truy xuất website này file flash sẽ

được tải về máy và được chương trình Flash thực thi. Từ đây vô số các yêu

cầu truy xuất sẽ gởi đến website mục tiêu.

Page 27: Đề tài :DDoS và cách phòng chống DDoS cho webserver

27

Hình 2.10 Mô hình tấn công X-Flash

Flash DDOS có một số đặc tính khiến cho việc ngăn chặn và phát hiện

gần như là không thể.Do mạng lưới tấn công phức tạp và tự hình thành :

+ Không cần thiết phải nắm quyền điều khiển và cài DDOS software

vào các infected agent. Thay vào đó mọi user với một trình duyệt có hỗ trợ

nội dung Flash (có Flash player) sẽ trở thành công cụ tấn công.

+ Số lượng attack agent tùy thuộc vào số lượng user truy xuất các

website đã bị hacker “nhúng” nội dung flash, số lượng này thay đổi theo thời

gian và hoàn toàn không thể nhận biết địa chỉ IP nguồn, vì đây là các user

thông thường.

+ Không hề có quá trình gởi lệnh và nhận báo cáo giữa hacker và

mạng lưới tấn công, toàn bộ lệnh tấn công được “nhúng” trong nội dung

Page 28: Đề tài :DDoS và cách phòng chống DDoS cho webserver

28

flash và hacker không cần nhận báo cáo do đây là mô hình tấn công bất đồng

bộ.

+ Tấn công bất đồng bộ: việc tấn công diễn ra không cần có mệnh

lệnh. User truy xuất website, load nội dung flash về trình duyệt và Flash

player thực thi nội dung flash thì ngay lập tức máy của họ trở thành một

attack agent-liên tục gởi hàng trăm request đến webserver nạn nhân.

+ Quy mô tấn công phụ thuộc vào số lượng website bị lợi dụng và số

lượng user thường xuyên truy xuất các website này. Chỉ tính trung bình

hacker lợi dung được 10 website và mỗi website này có số lượng truy xuất

khoảng 100 user tại một thời điểm thì tổng số request mà server nạn nhân

phải hứng chịu tại một thời điểm lên đến con số vài chục ngàn. Đây là một

số liệu kinh hoàng với bất kỳ ai làm quản tri hệ thống của bất cứ website nào

và kết quả thường là hệ thống tê liệt ngay lập tức.

Tuy nhiên, hiện nay chương trình Flash player mới nhất đã được vá

lỗi, cách tấn công Flash hầu như không còn được sử dụng.

Page 29: Đề tài :DDoS và cách phòng chống DDoS cho webserver

29

Chương 3. Phòng thủ DDoS

3.1 Tại sao DDoS khó giải quyết

Thực hiện tấn công DDoS có 2 trường phái chính: đó là nhằm vào

điểm yếu (vulnerability attack) và làm ngập mạng (flooding attack). Do có 1

số đặc tính về kĩ thuật như sau làm ta rất khó giải quyết được triệt để các

cuộc tấn công DDoS:

- Sự đơn giản: Một người bình thường không rành về mạng cung có

thể thực hiện 1 cuộc tấn công từ chối dịch vụ. Bởi vì đã có sẵn rất nhiều

công cụ DDoS trên mạng và cả hướng dẫn sử dụng đầy đủ từ a-z để thực

hiện.

- Sự đa dạng của các gói tin tấn công: Sự giống nhau giữa các traffic

tấn công và các traffic hợp lệ làm quản trị viên khó có thể phân biệt được.

Khác với các nguy cơ bảo mật như virut, worm, adware… cần phải có

những gói tin mánh khóe, mẹo mực lợi dụng vào lỗ hổng, nhưng flood

attack chỉ cần lưu lượng lớn traffic và header cũng như nội dung packet đều

có thể tùy ý theo Attacker

- IP spoofing: Sự giả mạo IP làm cho các traffic attack từ agents đến

như là từ những người dùng hợp lệ. Vì thế quản trị viên rất khó phân biệt để

có thể từ chối phục vụ những request tấn công.

- Lượng traffic lớn, gửi với tần suất cao: Lượng traffic khổng lồ mà

DDoS tạo ra không chỉ làm ngập tài nguyên của Victim, mà còn làm quản trị

viên rất khó mô tả, phân tích và tách biệt được packet hợp lệ và packet tấn

công chúng.

- Số lượng lớn các Agents: Một trong những điểm mạnh của tấn công

DDoS là có thể huy động được 1 số lượng lớn Agent phân tán trên toàn

Internet. Khi đó, luồng tấn công sẽ lan tỏa trên nhiều nhánh tới Victim, điểm

tụ tấn công sẽ gần sát nạn nhân, và hệ thống phòng thủ sẽ rất khó có thể

chống từ phía xa. Ngoài ra, hệ thống Agent phân tán cũng đồng nghĩa với sự

phức tạp, phong phú, khác biệt về mô hình quản lý mạng giữa các ISP khác

nhau, vì thế các cơ cơ chế phòng thủ yêu cầu sự phối hợp từ nhiều nơi sẽ

triển khai khó khăn hơn rất nhiều.

Page 30: Đề tài :DDoS và cách phòng chống DDoS cho webserver

30

- Những điểm yếu trên mô hình mạng Internet: Có những cơ chế, giao

thức mạng mà khi thiết kế người ta chưa lường trước được những điểm yếu

có thể bị lợi dụng (ví dụ TCP SYN, ping of Death, LAND Attack…). Đôi

khi là lỗi của nhà quản trị khi cấu hình các policy mạng chưa hợp lý.

3.2 Những thách thức khi xây dựng hệ thống phòng thủ DDoS

Do những tính chất phức tạp của DDoS như đã trình bày ở trên, nên

xây dựng 1 hệ thống phòng thủ DDoS là không đơn giản. Để làm được điều

đó cần xử lý được cả trên 2 lĩnh vực: kĩ thuật và xã hội.

3.2.1 Những thách thức về mặt kĩ thuật

Cần sự xử lý phân tán từ nhiều điểm trên Internet: Vì attack

traffic xảy ra từ nhiều nguồn khác nhau, đi qua toàn mạng Internet trong khi

thường chỉ có một mình Victim với ít thiết bị, quyền hạn, khả năng xử lý

hạn chế nên không thể đạt được hiệu quả cao. Sự tấn công phân tán thì cần

sự phòng thủ phân tán thì mới giải quyết triệt để được.

Thiếu thông tin chi tiết về các cuộc tấn công thực tế: Có không

nhiều thông tin về tác hại của DDoS gây lên cho các doanh nghiệp, nó

thường chỉ có khi tác hại của nó là rõ ràng và doanh nghiệp không thể tự xử

lý được mà phải báo lên chính quyền. Vì thế lại càng ít các thông tin chi tiết,

như là bản log các traffic, sơ đồ mạng chi tiết của doanh nghiệp.

Khó thử nghiệm trên thực tế: Những hệ thống thử nghiệm DDoS ở

phòng thí nghiệm không thể phản ánh đúng thực tế rộng lớn, phong phú trên

mạng Internet được. Trong khi đó nếu muốn triển khai để thử nghiệm thật

qua Internet thì các điều luật không cho phép, vì tấn công DDoS không chỉ

ảnh hưởng đến Victim, mà còn liên quan đến rất nhiều các thành phần khác

như router, switch… của ISP quản lý ở phần lõi Mạng. Còn nếu thử nghiệm

luôn trên 1 hệ thống thật đang bị tấn công thì lại thiếu thông tin cần đo đạc ở

Agent, Handler, Attacker…

Chưa có chuẩn đánh giá các hệ thống phòng thủ: Có nhiều vendor

đã công bố rằng giải pháp của họ có thể giải quết được DDoS. Nhưng hiện

tại chưa có 1 lộ trình chuẩn nào để kiểm thử các hệ thống phòng thủ DDoS.

Từ đó dẫn đến 2 vấn đề: thứ nhất là những người phát triển hệ thống phòng

thủ tự test chính họ, do đó những thiết kế sẽ luôn phù hợp nhất để hệ thống

Page 31: Đề tài :DDoS và cách phòng chống DDoS cho webserver

31

đó hoạt động thuận lợi. Thứ hai là những nghiên cứu về DDoS không thể so

sánh hiệu suất thực tế của các hệ thống phòng thủ khác nhau, thay vào đó,

họ chỉ có thể nhận xét về từng giải pháp trên môi trường thử nghiệm mà

thôi.

3.2.2 Những thách thức về mặt xã hội

Một thử thách lớn khi muốn giải quyết triệt để vấn nạn tấn công

DDoS là về yếu tố Xã hội. Có rất nhiều điều luật về an ninh, bảo mật của

nhiều đất nước, nhiều ISP khác nhau mà người triển khai khó có thể thỏa

mãn tất cả để thực hiện hệ thống phòng thủ của mình. Ví dụ ISP không cho

bạn sơ đồ chi tiết cấu hình Mạng, không cho phép bạn tự do cài đặt chương

trình trên các router của họ… Đối với các nạn nhân của DDoS, thông thường

là các doanh nghiệp, thì việc đầu tiên là họ sẽ cố gắng tự mình giải quyết,

nếu thành công thì sẽ giấu kín, không công bố cho bên ngoài là mình đang bị

tấn công vì lo ngại ảnh hưởng đến danh tiếng của công ty. Chỉ khi nào dịch

vụ của họ bị chết hẳn, không thể tự cứu thì mới liên hệ với các ISP và chính

quyền.

Một vấn đề khác là đôi khi cần phải sửa đổi một số điểm yếu của các

kiến trúc mạng để giảm tác hại của DDoS, ví dụ như giao thức TCP, IP,

HTTP… Nhưng không dễ làm được điều đó, vì hiện tại đã có rất nhiều hệ

thống xây dựng trên nền tảng cũ, và không thể ngày thay đổi trong ngày một

ngày hai được.

Có một đặc điểm của DDoS là khi Victim bị tấn công, thì nếu muốn

triệt để không còn traffic DDoS nữa, thì phải làm sao yêu hàng nghìn Agent

ngừng tấn công. Chỉ có 1 cách làm được điều này là tại các Agent phải cài

đặt 1 phần mềm, hay hệ thống để ngăn chặn gói tin DDoS ngay khi vừa sinh

ra. Nhưng không dễ thuyết phục được các End User làm điều đó, vì nó

không mang lại lợi ích trực tiếp gì cho bản thân họ, đôi khi còn làm ảnh

hưởng đến hiệu năng mạng của End User.

Yếu tố cuối cùng là thiếu sự thống nhất về các điều luật, chế tài xử phạt

các Attacker, Handler, Agents giữa các bộ luật về Công nghệ thông tin của

các nước và giữa các quy định về bảo mật, an toàn của các Internet Service

Provider.

3.2.3 Mục tiêu khi xây dựng hệ thống phòng thủ

Page 32: Đề tài :DDoS và cách phòng chống DDoS cho webserver

32

Cho dù triển khai hệ thống phòng thủ theo cách thức nào thì cuối cùng

cũng phải hướng tới 4 mục tiêu chính như sau:

Tính hiệu quả: yêu cầu các thành phần tham gia vào hệ thống phòng

thủ: victim, router… đều không phải chịu thêm tải quá nặng. Ví dụ khi bình

thường CPU Usage của Server chỉ chạy 10% để phục vụ cho các Client,

nhưng sau khi cài đặt hệ thống phòng thủ vào, cho dù chưa xảy ra DDoS thì

CPU Usage do phải tính toán thêm nhiều nên đã lên đến 20% là không chấp

nhận được.

Tính trọn vẹn: Một hệ thống phòng thủ tốt cần phải bảo vệ Victim

được khỏi tất cả các kiểu tấn công DDoS. Bởi vì đối với Attacker, một khi

đã điều khiển được mạng botnet thì hắn hoàn toàn có thể sử dụng nhiều kịch

bản tấn công khác nhau, lợi dụng nhiều điểm yếu của giao thức, của mạng

hoặc thay đổi thông số bên trong packet. Vì thế nếu hệ thống chỉ có thể

phòng thủ được 1 số cách tấn công nhất định, thì khi attacker thay đổi, hệ

thống đó sẽ sụp đổ hoàn toàn.

Cung cấp dịch vụ cho tất cả các traffic hợp lệ: đây là yêu cầu quan

trọng nhất khi triển khai một hệ thống phòng thủ DDoS.

Chi phí phát triển và điều hành thấp

3.2.4 Các hướng phòng thủ DDoS

Có thể phân loại các phương pháp giải quyết DDoS theo hai tiêu chí

là thời gian và vị trí. Xét theo thời gian, có hai xu hướng: trước (phòng

ngừa) và sau (phản ứng lại khi cuộc tấn công xảy ra). Xét theo vị trí đặt

trung tâm điều khiển việc xử lý phòng chống DDoS, thì có các vị trí: gần

Victim, gần Attacker, trong phần lõi của Internet hoặc kết hợp nhiều vị trí..

3.2.4.1 Phòng ngừa và phản ứng lại

Phương pháp phòng ngừa áp dụng các chính sách để kẻ tấn công

không thể hoặc khó tấn công hệ thống. Phương pháp này có thể được thực

hiện bằng cách tăng cường sức mạnh của hệ thống: năng lực xử lý các yêu

cầu dịch vụ, băng thông… để giảm thiểu tối đa tác hại của cuộc tấn công

DDoS. Nhưng do mạng lưới tấn công có đặc điểm phân tán, là tập trung của

nhiều máy tính cấu hình trung bình nên dễ tập hợp được số lượng lớn để hội

Page 33: Đề tài :DDoS và cách phòng chống DDoS cho webserver

33

tụ thành một lượng băng thông gấp nhiều lần so với hệ thống của victim. Vì

vậy việc tăng cường sức mạnh không thực sự có hiệu quả.

Phương pháp phản ứng lại chấp nhận cho cuộc tấn công xảy ra, sau đó

truy tìm và tiêu diệt các hướng tấn công, làm giảm thiểu rủi ro hoặc chấm

dứt cuộc tấn công. Bằng cách phát hiện chính xác kẻ tấn công, nạn nhân sẽ

có chính sách cấm những truy nhập, từ đó giảm thiểu được tác hại của cuộc

tấn công. Phương pháp này hiện là hướng nghiên cứu chính trong việc giải

quyết DDoS.

Nhược điểm chung của phương pháp phản ứng lại là việc giải quyết

không triệt để và không chủ động. Nạn nhân bị tấn công đã phải hứng chịu

các hậu quả. Biện pháp này chỉ giúp chấm dứt hậu quả sớm và giảm thiểu

thiệt hại.

3.2.4.2 Vị trí của hệ thống phòng thủ

Phương pháp đặt gần victim là phương pháp đơn giản nhất do ít phụ

thuộc vào các tác nhân khác, nạn nhân tự giải quyết vấn đề. Phương pháp

này thường dùng để phản ứng lại sau khi nạn nhân phát hiện bị tấn công.

Tuy nhiên cách tiếp cận này không thể giải quyết tận gốc, quản trị viên chỉ

có thể giảm thiểu thiệt hại chứ không thể chấm dứt cuộc tấn công.

Page 34: Đề tài :DDoS và cách phòng chống DDoS cho webserver

34

Hình 3.1 Phương pháp đặt gần victim

Phương pháp đặt gần attacker là phương pháp ngăn chặn các gói tin

DDoS ngay khi vừa được sinh ra tại nguồn. Nó có ưu điểm là giảm được tối

đa tác hại của gói tin DDoS, chống được giả mạo IP. Tuy nhiên lại rất khó

thực hiện do phải thay đổi hệ thống mạng trên quy mô lớn. Hiện mới chỉ có

khoảng ba hướng nghiên cứu theo cách tiếp cận này. Trong đó, D-WARD là

có kết quả tốt nhất với khả năng hoạt động độc lập.

Page 35: Đề tài :DDoS và cách phòng chống DDoS cho webserver

35

Hình 3.2 Phương pháp đặt gần attacker

Một vị trí khác là đặt tại phần lõi của Internet. Cách tiếp cận này ít

được quan tâm rộng rãi do để tiếp cận được phần lõi của Internet cần có một

khoản chi phí không nhỏ, cũng như sự đảm bảo chắc chắn về tính hiệu quả

đem lại khi tăng sự phức tạp của phần lõi.

Page 36: Đề tài :DDoS và cách phòng chống DDoS cho webserver

36

Hình 3.3 Phương pháp đặt tại phần lõi của Internet

Phương pháp cuối cùng và hay được nghiên cứu hiện nay là phương

pháp kết hợp nhiều vị trí: nạn nhân phát hiện và bắt đầu xử lý, sau đó cố

gắng đẩy vị trí phòng chống ra hệ thống mạng gần kẻ tấn công nhất có thể,

từ đó giúp giảm tải cho toàn mạng Internet chứ không chỉ cho Victim nữa.

Page 37: Đề tài :DDoS và cách phòng chống DDoS cho webserver

37

Hình 3.4 Phương pháp kết hợp nhiều vị trí

3.3. Một số giải pháp phòng thủ DDoS

Hiện nay, giải pháp phòng thủ DDoS có nhiều, có cả phần cứng và

phần mềm, tuy nhiên trong quá trình nghiên cứu tìm hiểu, tôi đề xuất một số

giải pháp sử dụng các phần mềm mã nguồn mở. Ưu điểm của các phương

pháp này là giá thành rẻ, dễ triển khai và bảo trì.

3.3.1. Giải pháp dành cho doanh nghiệp cung cấp Hosting

Với việc có nhiều trang web trên một máy chủ, doanh nghiệp cung

cấp hosting thường xuyên phải giải quyết việc làm sao để khi một trang web

bị DDoS thì không ảnh hưởng đến các trang web khác cùng nằm trên máy

chủ. Giải pháp hiện nay một số doanh nghiệp cung cấp hosting tại Việt Nam

đã triển khai và rất thành công đó là kết hợp Litespeed, Cloudlinux và

firewall CSF.

3.3.2. Giải pháp sử dụng IPS để lọc gói tin

Phương pháp này sử dụng một máy chủ làm gateway, trên máy chủ

này cài CSF để cản lọc gói tin từ tầng mạng và Snort inline để lọc gói tin

tầng ứng dụng, các gói tin nào hợp lệ sẽ được gửi đến máy chủ phục vụ nằm

phía sau.

Page 38: Đề tài :DDoS và cách phòng chống DDoS cho webserver

38

Snort inline nhận các gói tin từ iptables (không như Snort lấy các gói

tin từ libpcap) sau đó dựa vào các luật đã được định nghĩa để quyết định cấm

hay cho phép gói tin đi qua.

Hình 3.5 Mô hình sử dụng IPS để lọc gói tin

3.3.3. GeoIP DNS

Sử dụng GeoIPDNS ta có thể phân loại người dùng dựa trên vị trí địa

lý, từ đó có thể quy định máy chủ phục vụ một vùng địa lý xác định. Ví dụ:

người dùng thuộc khu vực Hà Nội (dải IP thuộc khu vực Hà Nội) sẽ được

máy chủ HN phục vụ và người dùng thuộc khu vực Hồ Chí Minh sẽ được

máy chủ HCM phục vụ. Nhờ việc phân loại vị trí địa lý, máy chủ sẽ chỉ phục

vụ các IP trong khu vực địa lý nhất định, hạn chế được tình trạng mạng

botnet lớn ở nhiều khu vực địa lý khác nhau tập trung tấn công một máy chủ.

Hiện nay trang web 24h.com.vn đang triển khai theo phương pháp này.

Page 39: Đề tài :DDoS và cách phòng chống DDoS cho webserver

39

Hình 3.6 Mô hình sử dụng GeoIP DNS

3.3.4. HAProxy

HAProxy là một giải pháp cân bằng tải với khả năng mở rộng cao,

được cài đặt cho những website chạy các ứng dụng dựa trên TCP và HTTP.

HAProxy là một giải pháp mã nguồn mở được phát triển trên hệ điều hành

Linux. Trong phiên bản mới nhất, HAProxy hỗ trợ chuyển mạch ngữ cảnh

cho phép người quản trị website có thể thiết đặt các luật của chuyển mạch

trong file cấu hình. Bên cạnh đó, HAProxy còn có số lượng thuật toán phân

tải phong phú, khả năng ngăn chặn các cổng không cần thiết theo nhu cầu

của người quản trị, hỗ trợ các phương pháp cài đặt cookie và khả năng hoạt

động trong suốt giúp tăng tốc độ truyền dẫn dữ liệu.

Có thể kể ra rất nhiều website sử dụng HAProxy như redwall Firewall

(http://www.redwall-firewall.com), Exceliance’s ALOHA Appliance

(http://www.exceliance.fr/en/), http://www.loadbalancer.org, Amazon EC2

(http://aws.amazon.com/ec2/), hay tamtay.vn.

Page 40: Đề tài :DDoS và cách phòng chống DDoS cho webserver

40

Hình 3.7 Mô hình sử dụng HAproxy và Keepalived

Máy chủ HAProxy khi nhận được yêu cầu sẽ căn cứ vào trọng số để

phân chia tải cho 4 máy chủ web.

Mô hình trên còn sử dụng Keepalived để đảm bảo tính sẵn sàng cao

của 2 máy chủ cài HAProxy. Khi sử dụng Keepalived, một máy chủ chạy

HAProxy sẽ ở trạng thái sẵn sàng (active) và máy chủ còn lại sẽ ở trạng thái

chờ (stanby), nếu máy chủ active không hoạt động, máy chủ stanby sẽ

chuyển sang trạng thái active.

Page 41: Đề tài :DDoS và cách phòng chống DDoS cho webserver

41

Chương 4. Cài đặt, thử nghiệm

4.1. Giải pháp dành cho doanh nghiệp cung cấp Hosting

4.1.1. Litespeed

Litespeed (LSWS) một nền tảng Webserver tốt nhất hiện nay thay thế

cho Webserver Apache đã cũ. Litespeed hoạt động một cách mạnh mẽ, hiệu

quả và linh hoạt hơn. Tuy là một phiên bản webserver trả phí khá đắt đỏ so

với Apache miễn phí nhưng trên thị trường Litespeed vẫn chứng tỏ được uy

tín và chất lượng của mình. Một số ưu điểm của Litespeed:

- Tốc độ xử lý file tĩnh của Litespeed có thể nhanh Apache 6 lần.

- Tốc độ xử lý mod_php nhanh hơn đến 50% và nhanh hơn gấp vài lần

với suphp và phpsuexec.

- Hỗ trợ rewrite hiệu quả hơn so với mod_rewrite của Apache do được

viết lại.

- Đưa ra giải pháp bảo mật tốt nhất với PHP suEXEC

- Litespeed hoạt động tốt trên các Hosting Control Panel như: cPanel,

DirectAdmin, Plesk, ISPConfig, H-Sphere, LinuxAdmin và các Control

Panel khác.

- Sử dụng tài nguyên máy chủ linh hoạt và tiết kiệm.

Dưới đây là bản so sánh hiệu năng thực tế giữa hai máy chủ chạy

apache và litespeed có cấu hình như sau: Ram 24G, Cpu 2xE5620 (intel

Xeon quard core 2,4Ghz, 12Mb cache), hiện tại cả hai máy chủ đều có hơn

800 vhost, khoảng 2500 kết nối đồng thời

Page 42: Đề tài :DDoS và cách phòng chống DDoS cho webserver

42

Hình 4.1 Máy chủ chạy apache

Page 43: Đề tài :DDoS và cách phòng chống DDoS cho webserver

43

Hình 4.2 Máy chủ chạy litespeed

Có thể thấy tuy có cùng cấu hình, số lượng truy cập cũng tương

đương nhưng máy chủ chạy Litespeed có load average (tải trung bình) chỉ

bằng 1/3 so với máy chủ chạy apache.

4.1.2 CloudLinux

4.1.2.1 Giới thiệu chung

Cloud Linux là hệ điều hành *Nix đầu tiên, được thiết kế dành riêng

cho nhu cầu lưu trữ web, đặc biệt là phục vụ nhu cầu của các nhà cung cấp

Hosting (Hosting Provider). Cloud Linux sử dụng công nghệ LVE

(Lightweight Virtual Environments - Môi trường ảo hóa) tạo nên sự đột phá

trong việc quản lý, chia sẻ tài nguyên máy chủ cho các tài khoản người

dùng.

Trong trường hợp một số tài khoản hosting có hiện tượng bị tấn công

từ chối dịch vụ (DDOS) hoặc việc mã nguồn chiếm quá nhiều tài nguyên để

xử lý có thể gây ảnh hưởng đến hoạt động của máy chủ thì công nghệ LVE

sẽ giúp hạn chế những tài khoản có chiều hướng gây quá tải, làm giảm thiểu

khả năng gây ảnh hưởng đến sự vận hành chung của hệ thống mà vẫn đảm

bảo hoạt động ổn định thông suốt cho các khách hàng khác trên cùng hệ

thống máy chủ.

Page 44: Đề tài :DDoS và cách phòng chống DDoS cho webserver

44

Hình 4.3 Mô hình hosting chia sẻ truyền thống

Hình 4.4 Mô hình LVE của CloudLinux OS

4.1.2.2 Các thông số cấu hình

Cấu hình Cloudlinux khá đơn giản, chỉ có một vài các thông số như

sau:

- CPU usage: Phần trăm CPU được dùng

- Number of cores for LVE: Số core CPU được dùng

- Virtual Memory: Bộ nhớ ảo được dùng

- Physical memory: Bộ nhớ vật lý được dùng

- Concurrent Connecion (Entry Process): Số process PHP được phép

chạy đồng thời.

- I/O limit: tốc độ đọc ghi tối đa ổ cứng.

Page 45: Đề tài :DDoS và cách phòng chống DDoS cho webserver

45

Hình 4.5: Các thông số cấu hình CloudLinux

4.1.3 ConfigServer Security & Firewall (CSF)

4.1.3.1 Giới thiệu chung

CSF là 1 gói ứng dụng hoạt động trên Linux như là một tường lửa

miễn phí dùng để tăng tính bảo mật cho máy chủ. CSF hoạt động dựa trên

iptables và Login Failure Daemon (ldf) để quyét các file log để phát hiện các

dấu hiệu tấn công bất thường. Một số tính năng của CSF:

- Chống DoS các loại

- Chống Scan Port

- Chống BruteForce Attack

- Chống Syn Flood

- Chống Ping Flood

- Cho phép ngăn chặn truy cập từ 1 quốc gia nào đó bằng cách chỉ định

Country Code chuẩn ISO

- Hỗ trợ IPv6 và IPv4

- Cho phép khóa IP tạm thời và vĩnh viễn ở tầng mạng

4.1.3.2 Các thông số cấu hình CSF

File cấu hình của CSF nằm ở /etc/csf/csf.conf, một số tham số quan

trọng trong file cấu hình CSF là:

- TESTING = "0" : Mặc định khi vừa cài TESTING = "1", với

TESTING = "1" thì LFD daemon (Login Fail Detect daemon) sẽ không hoạt

động, do đó nếu có gì sai sót thì server cũng sẽ không block IP của bạn. Khi

cảm thấy cấu hình đã ổn thì tắt TESTING để LFD bắt đầu hoạt động và chặn

các IP tấn công.

- TESTING_INTERVAL = "5": Thời gian chạy cronjob để clear

iptables nếu như TESTING=1 , tính bằng phút.

Page 46: Đề tài :DDoS và cách phòng chống DDoS cho webserver

46

- AUTO_UPDATES = "1": Bật tự động cập nhật CSF

- TCP_IN = "22,25,53,80,443": Cho phép gói tin TCP đến các

cổng 22 ,25 ,52 ,80 ,443.

- TCP_OUT = "25,80": Cho phép các gói tin TCP đi đến cổng

25,80 của hệ thống khác.

- UDP_IN = "53" : Cho phép các gói tin UDP đến cổng 53

- UDP_OUT = "53": Cho phép các gói tin UDP đi đến cổng 53

- ICMP_IN = "1": Cho phép ping đến máy chủ

- ICMP_IN_RATE = "1/s": Giới hạn số gói tin ping đến server là

1 yêu cầu/s. Nếu ping nhanh hơn tốc độ này sẽ nhận được "Request timeout"

. Trong trường hợp nếu nhiều người cùng ping đến server cùng lúc, thì phần

lớn sẽ nhận được các phản hồi "Request timeout".

- ETH_DEVICE = "eth0": Mặc định CSF sẽ cấu hình iptables để

lọc traffic trên toàn bộ các card mạng, ngoại trừ card loopback . Nếu như

bạn muốn iptables chỉ lọc traffic qua card mạng "eth0" thì khai báo ở đây.

- ETH_DEVICE_SKIP = "eth1": Nếu bạn không muốn iptables

lọc traffic qua card mạng nào thì khai báo ở đây.

- DENY_IP_LIMIT = "500": Giới hạn số lượng IP bị block "vĩnh

viễn" bởi CSF (các IP này được lưu trong file /etc/csf/csf.deny). Khi số

lượng IP bị block vượt qua con số này, csf sẽ tự động unblock IP cũ nhất (IP

ở dòng 1 của file /etc/csf/csf.deny).

- DENY_TEMP_IP_LIMIT = "100" : Giới hạn số lượng IP bị

block tạm thời. Khi số lượng IP bị block vượt qua con số này, csf sẽ tự động

unblock IP cũ nhất (IP ở dòng 1 của file /etc/csf/csf.tempban). Giá trị 0 là

không giới hạn số lượng.

- LF_DAEMON = "1": Bật tính năng Login Fail Detection (phát

hiện đăng nhập sau).

- LF_CSF = "1": Tự động khởi động lại CSF nếu CSF bị treo, tự

động kiểm tra trạng thái của CSF sau mỗi 300s.

- PACKET_FILTER = "1": Lọc các gói tin TCP không hợp lệ

(INVALID state như : sequence number không đúng , kết nối ko thực hiện

đủ ba bước bắt tay, ... )

- SYNFLOOD = "1"; SYNFLOOD_RATE = "30/s";

SYNFLOOD_BURST = "40": Nếu 1 IP gửi 30 gói SYN trong vòng 1s và số

lượng kết nối SYN tồn tại trên máy chủ đạt trên 40 thì hủy những gói SYN

tiếp theo.

- CONNLIMIT = "80;20": Giới hạn số lượng kết nối mới đồng

thời đến server trên mỗi IP. Ví dụ trên có nghĩa là mỗi IP được phép mở 20

kết nối mới đồng thời đến port 80 trên máy chủ.

Page 47: Đề tài :DDoS và cách phòng chống DDoS cho webserver

47

- PORTFLOOD = "80;tcp;20;5": Giới hạn số lượng kết nối đến

một cổng cụ thể trong một khoảng thời gian nhất định. Ví dụ như trên có

nghĩa : nếu nhiều hơn 20 kết nối TCP đến cổng 80 trong vòng 5s thì block

(chặn) IP đó tối thiểu 5s tính từ packet cuối cùng của IP đó. Sau 5s IP đó sẽ

tự động được unlock và truy cập bình thường.

- DROP_NOLOG = "10050,10051": Danh sách các cổng khi bị

hủy (drop) sẽ không cần phải ghi vào log

- CONNLIMIT_LOGGING = "1": Ghi log các IP vượt quá giới

hạn CONNLIMIT cấu hình ở bước trên.

- LF_PERMBLOCK = "1";LF_PERMBLOCK_INTERVAL =

"86400";LF_PERMBLOCK_COUNT = "6"; LF_PERMBLOCK_ALERT =

"1": Bật tính năng block vĩnh viễn một IP. Nếu một IP bị temp ban (khóa

tạm) 6 lần khi vi phạm các luật sẽ block (chặn) ip này 86400s ( 1 ngày) đồng

thời gửi email về cho người quản trị biết.

- CT_LIMIT = "300": Giới hạn số lượng connection từ một IP

đến máy chủ . Nếu số lượng đó vượt quá 300 thì tạm thời block (chặn) IP

đó.

- CT_INTERVAL = "30": Các lần quét để kiểm tra cách nhau

30s.

- CT_EMAIL_ALERT = "1": Gửi email thông báo nếu một IP bị

block bởi connection tracking.

- CT_PERMANENT = "0": Nếu đặt giá trị bằng 1, CSF sẽ block

IP vĩnh viễn, ngược lại, IP sẽ bị block tạm thời và sẽ được unblock sau

CT_BLOCK_TIME giây.

- CT_SKIP_TIME_WAIT = "0": Nếu không muốn đếm số lượng

kết nối đang ở trạng thái TIME_WAIT từ 1 IP đến máy chủ thì đặt giá trị là

1.

- CT_STATES = " SYN_RECV,TIME_WAIT ": Chỉ đếm các

kết nối ở trạng thái SYN_RECV và TIME_WAIT. Nếu muốn đếm tất cả các

trạng thái của kết nối thì để trống.

- CT_PORTS = "80,443": Chỉ áp dụng connection tracking cho

các kết nối đến port 80 và 443.

4.1.4. Thử nghiệm

4.1.4.1 Mô hình

Mô hình sử dụng cho việc kiểm thử này là máy chủ thực tế đang chạy

của một doanh nghiệp cung cấp Hosting trên địa bàn Hà Nội. Máy chủ này

có cấu hình như sau: Ram 24G, chip Cpu 2xE5620 (intel Xeon quard core

2,4Ghz, 12Mb cache). Công cụ để thử nghiệm trong mô hình này là ab

(Apache Benmark).

Page 48: Đề tài :DDoS và cách phòng chống DDoS cho webserver

48

4.1.4.2 Cấu hình Trên máy chủ hosting đã cấu hình CloudLinux với các thông số như

sau: CPU usage: 10%, Vmem:1GB, Pmem:1GB, entry process: 30.

Hình 4.6: Cấu hình CloudLinux

Lựa chọn gói cấu hình Medium của CSF như trong hình

Hình 4.7 : Cấu hình CSF

4.1.4.3 Thử nghiệm

Page 49: Đề tài :DDoS và cách phòng chống DDoS cho webserver

49

Đây là thông số của site trước khi kiểm thử.

Hình 4.8 Thông số của website

Sử dụng tool ab gửi 1000 yêu cầu đến trang web của người dùng

abxewqyu, mỗi lần gửi cùng lúc 25 yêu cầu.

Page 50: Đề tài :DDoS và cách phòng chống DDoS cho webserver

50

Hình 4.9 Tấn công bằng tool ab

Trong quá trình nhận và xử lý request, tài nguyên của site đã dùng hết

(CPU, Vmem)

Page 51: Đề tài :DDoS và cách phòng chống DDoS cho webserver

51

Hình 4.10 Thông số của website trong khi bị tấn công

Vẫn trong quá trình đấy, ta gửi thêm 1000 yêu cầu đến website, nhưng

tài nguyên sử dụng không vượt quá giới hạn đã được cấp.

Hình 4.11 Giới hạn tài nguyên

4.1.4.4. Đánh giá

Giải pháp sử dụng CloudLinux, Litespeed và CSF đối với các doanh

nghiệp cung cấp hosting có những điểm nổi trội hơn so với các giải pháp sử

dụng các phần mềm mã nguồn mở truyền thống khác. Các doanh nghiệp

kinh doanh hosting tại Việt Nam cũng nhận thấy những ưu điểm trên cho

nên mặc dù không miễn phí (CloudLinux: 10$ đến 14$/tháng, LiteSpeed:

350$/năm) nhưng phần lớn các doanh nghiệp đều đang chuyển dần sang giải

pháp này.

4.2. Giải pháp sử dụng IPS để lọc gói tin

Phương pháp này được sử dụng khá rộng rãi. Như trong trường hợp

Vietnamnet bị tấn công DDoS, công ty CMCinfosec đã sử dụng nhiều biện

pháp khác nhau bao gồm việc kết hợp cả phần mềm và phần cứng để hạn

chế DDoS, tuy nhiên ý tưởng chính của phương pháp trên là định tuyến các

yêu cầu của người dùng về hệ thống IPS, tại đây sử dụng CSF để lọc chặn

gói tin ở tầng mạng và sử dụng IPS để lọc gói tin ở tầng ứng dụng, sau đó

các gói tin hợp lệ sẽ được định tuyến đến máy chủ thật. Ưu điểm của phương

pháp này là cản lọc được phần lớn gói tin không hợp lệ, máy chủ web vẫn có

Page 52: Đề tài :DDoS và cách phòng chống DDoS cho webserver

52

khả năng phục vụ mặc dù chịu cường độ DDoS lớn nhưng sẽ làm chậm tốc

độ truy suất của những yêu cầu hợp lệ.

Trong khuôn khổ luận văn của mình, tôi chọn Snort inline để xây

dựng hệ thống IPS.

4.2.1 Snort

4.2.1.1 Giới thiệu

Snort là hệ thống phát hiện và phòng chống xâm nhập mã nguồn mở

được phát triển bởi Sourcefire. Phát hiện và phòng chống xâm nhập dựa trên

ưu điểm của chữ ký, giao thức và kiểm tra sự bất thường, Snort là một trong

những IDS/IPS được triển khai rộng rãi nhất trên thế giới. Với hàng triệu

lượt tải và gần 400.000 người đăng ký, Snort đã trở thành “tiêu chuẩn” cho

IPS.

4.2.1.2 Cấu trúc của Snort

Hình 4.12: Cấu trúc của Snort

Snort bao gồm nhiều thành phần, với mỗi phần có một chức năng

riêng. Các phần chính đó là :

Package Capture : Môđun này lắng nghe trên các cổng được chỉ định

và thu thập các gói tin rồi trao cho môđun giải mã gói tin xử lý.

Decoder (Môđun giải mã gói tin): Tại đây các gói tin được giải mã rồi

chuyển cho môđun tiền xử lý.

Preprocessor (Môđun tiền xử lý): Môđun tiền xử lý là một môđun rất

quan trọng đối với bất kỳ một hệ thống IDS nào để có thể chuẩn bị gói dữ

Page 53: Đề tài :DDoS và cách phòng chống DDoS cho webserver

53

liệu đưa và cho môđun Phát hiện phân tích. Ba nhiệm vụ chính của môđun

này là:

Kết hợp lại các gói tin: Khi một lượng dữ liệu lớn được gửi đi,

thông tin sẽ không đóng gói toàn bộ vào một gói tin mà phải thực hiện việc

phân mảnh, chia gói tin ban đầu thành nhiều gói tin rồi mới gửi đi. Khi

Snort nhận được các gói tin này nó phải thực hiện việc ghép nối lại để có

được dữ liệu nguyên dạng ban đầu, từ đó mới thực hiện được các công việc

xử lý tiếp. Như ta đã biết khi một phiên làm việc của hệ thống diễn ra, sẽ

có rất nhiều gói tin đuợc trao đổi trong phiên đó. Một gói tin riêng lẻ sẽ

không có trạng thái và nếu công việc phát hiện xâm nhập chỉ dựa hoàn

toàn vào gói tin đó sẽ không đem lại hiệu quả cao. Module tiền xử lý

stream giúp Snort có thể hiểu được các phiên làm việc khác nhau (nói cách

khác đem lại tính có trạng thái cho các gói tin) từ đó giúp đạt được hiệu

quả cao hơn trong việc phát hiện xâm nhập.

Giải mã và chuẩn hóa giao thức (decode/normalize): công việc

phát hiện xâm nhập dựa trên dấu hiệu nhận dạng nhiều khi bịthất bại khi

kiểm tra các giao thức có dữ liệu có thể được thể hiện dưới nhiều dạng

khác nhau. Ví dụ: một web server có thể chấp nhận nhiều dạng URL như

URL được viết dưới dạng mã hexa/Unicode, URL chấp nhận cả dấu \ hay

/ hoặc nhiều ký tự này liên tiếp cùng lúc. Chẳng hạn ta có dấu hiệu nhận

dạng “scripts/iisadmin”, kẻ tấn công có thể vượt qua được bằng cách tùy

biến các yêu cấu gửi đến web server như sau: “scripts/./iisadmin”,

“scripts/examples/../iisadmin”. “scripts\iisadmin” ,“scripts/.\iisadmin” hoặc

thực hiện việc mã hóa các chuỗi này dưới dạng khác. Nếu Snort chỉthực

hiện đơn thuần việc so sánh dữ liệu với dấu hiệu nhận dạng sẽ xảy ra tình

trạng bỏ sót các hành vi xâm nhập. Do vậy, môđun tiền xử lý của Snort

phải có nhiệm vụ giải mã và chỉnh sửa, sắp xếp lại các thông tin đầu vào

này để thông tin khi đưa đến môđun phát hiện có thể phát hiện được mà

không bỏ sót.

Phát hiện các xâm nhập bất thường (nonrule /anormal): các

plugin tiền xử lý dạng này thường dùng để đối phó với các xâm nhập

không thể hoặc rất khó phát hiện được bằng các luật thông thường hoặc

các dấu hiệu bất thường trong giao thức. Các môđun tiền xử lý dạng này có

thể thực hiện việc phát hiện xâm nhập theo bất cứ cách nào mà ta nghĩ ra

từ đó tăng cường thêm tính năng cho Snort. Ví dụ, một plugin tiền xử lý có

nhiệm vụthống kê thông lượng mạng tại thời điểm bình thường để rồi khi

có thông lượng mạng bất thường xảy ra nó có thể tính toán, phát hiện và

đưa ra cảnh báo (phát hiện xâm nhập theo mô hình thống kê). Phiên bản

hiện tại của Snort có đi kèm hai plugin giúp phát hiện các xâm nhập bất

thường đó là portscan và bo (backoffice). Portcan dùng để đưa ra cảnh báo

Page 54: Đề tài :DDoS và cách phòng chống DDoS cho webserver

54

khi kẻ tấn công thực hiện việc quét các cổng của hệ thống để tìm lỗ hổng.

Bo dùng để đưa ra cảnh báo khi hệ thống đã bịnhiễm trojan backoffice và

kẻ tấn công từ xa kết nối tới backoffice thực hiện các lệnh từ xa.

Dectection Engine (Môđun phát hiện): Đây là môđun quan trọng nhất

của Snort. Nó chịu trách nhiệm phát hiện các dấu hiệu xâm nhập. Môđun

phát hiện sử dụng các luật được định nghĩa trước để so sánh với dữ liệu thu

thập được từ đó xác định xem có xâm nhập xảy ra hay không. Rồi tiếp theo

mới có thể thực hiện một số công việc như ghi log, tạo thông báo và kết xuất

thông tin. Một vấn đề rất quan trọng trong môđun phát hiện là vấn đề thời

gian xử lý các gói tin: một IDS thường nhận được rất nhiều gói tin và bản

thân nó cũng có rất nhiều các luật xử lý. Có thể mất những khoảng thời gian

khác nhau cho việc xử lý các gói tin khác nhau. Và khi thông lượng mạng

quá lớn có thể xảy ra việc bỏ sót hoặc không phản hồi được đúng lúc. Khả

năng xử lý của môđun phát hiện dựa trên một số yếu tố như: số lượng các

luật, tốc độ của hệ thống đang chạy Snort, tải trên mạng. Một số thử nghiệm

cho biết, phiên bản hiện tại của Snort khi được tối ưu hóa chạy trên hệ thống

có nhiều bộ vi xử lý và cấu hình máy tính tương đối mạnh thì có thể hoạt

động tốt trên cả các mạng cỡ Giga. Một môđun phát hiện cũng có khả năng

tách các phần của gói tin ra và áp dụng các luật lên từng phần nào của gói tin

đó. Các phần đó có thể là:

IP header

Header ở tầng giao vận: TCP, UDP

Header ở tầng ứng dụng: DNS header, HTTP header, FTP

header.

Dữ liệu

Một vấn đề nữa trong Môđun phát hiện đó là việc xử lý thế nào khi

một gói tin bị phát hiện bởi nhiều luật. Do các luật trong Snort cũng được

đánh thứ tự ưu tiên, nên một gói tin khi bị phát hiện bởi nhiều luật khác

nhau, cảnh báo được đưa ra sẽ là cảnh báo ứng với luật có mức ưu tiên lớn

nhất

Output Plug-ins: Module đầu ra hoặc plug-in có thể hoạt động theo nhiều

cách phụ thuộc vào việc bạn muốn lưu các output được tạo ra bằng hệ thống

ghi và tạo cảnh báo như thế nào.

4.2.1.3 Một số tham số cấu hình Snort

File cấu hình (snort.conf) bao gồm:

Thiết lập các biến

Cấu hình môđun giải mã (decoder)

Cấu hình môđun phát hiện (detection)

Cấu hình thư viện liên kết động

Page 55: Đề tài :DDoS và cách phòng chống DDoS cho webserver

55

Cấu hình môđun tiền xử lý

Cấu hình các plugin đầu ra

Tùy biến các luật

4.2.1.4 Cấu trúc luật của Snort

Rules của Snort có hai phần : rule header và rule option. Một Rule có

thể phát hiện một hoặc nhiều kiểu xâm nhập.

Cấu trúc của rule header:

Rule Action Protoco

l

Source Address

và Port

The Direction

Operator

Destination

Address và Port

Alert tcp any 1234 -> 192.168.1.0/24

any

Rule Action là hành động Snort sẽ thực hiện nếu Snort phát hiện thấy

trong gói tin có dấu hiệu khả nghi (có sự trùng nhau giữa nội dung gói tin và

nội dung của rule option). Có 8 loại action mà Snort hỗ trợ:

alert : Tạo ra cảnh báo theo phương thức đã lựa chọn và lưu lại

thông tin packet dựa theo cấu hình output plugin.

log: Lưu thông tin packet .

pass: Bỏ qua packet.

active : Cảnh báo và chuyển sang dynamic rule.

dynamic : Sẽ không hoạt động trừ khi đuợc khởi động bởi một

active rule, sau đó hoạt động như một log rule.

drop : Sử dụng iptables drop packet và lưu log.

reject : Sử dụng iptables drop packet, lưu log và gửi gói tin TCP

reset nếu giao thức là TCP hoặc ICMP port unreachable nếu giao

thức là UDP.

sdrop: Sử dụng iptables drop packet nhưng không lưu log.

Protocol: Snort hỗ trợ 4 giao thức : TCP, UDP, ICMP và IP.

Page 56: Đề tài :DDoS và cách phòng chống DDoS cho webserver

56

Source Address và Port (Destination Address và Port) :

Snort hỗ trợ IP Address dạng CIDR, ví dụ : 192.168.1.0/24, với tất

cả các IP Snort dùng từ khóa any

Snort hỗ trợ cấu hình với một port, một dải port hoặc tất cả các

port.

The Direction Operator : Có 2 loại direction operator là :

-> Chiều đi từ nguồn đến đích , bên trái dấu “->” là địa chỉ IP

nguồn , port nguồn, bên phải dấu “->” là IP đích port đích.

<> Traffic 2 chiều.

Cấu trúc rule option:

Rule option theo sau rule header và được đóng gói trong dấu ngoặc

đơn. Có thể có một hoặc nhiều option, được cách nhau bởi dấu phẩy. Nếu

bạn sử dụng nhiều option, những option hình thành phép logic AND. Một

action trong rule header chỉ được thực hiện khi tất cả các option đều đúng.

Tất cả các option được định nghĩa bằng các từ khóa. Một vài option cũng

chứa các tham số. Thông thường, một option có thể có 2 phần : từ khóa và

đối số. Các đối số được phân biệt với từ khóa bằng dấu hai chấm. Ví dụ:

msg: "Detected confidential";

Trong option này thì msg là từ khóa và "Detected confidential" là đối số của

từ khóa.

Một số từ khóa được sử dụng trong phần option của luật Snort :

msg: < sample message> : Được sử dụng để ghi thông tin vào việc ghi

log và cảnh báo

ack : <Number>: TCP header chứa một trường Acknowledgement

Number dài 32 bit. Trường này chỉ ra rằng sequence number kế tiếp của

người gửi được mong đợi. Trường này chỉ có ý nghĩa khi cờ flag trong

trường TCP được thiết lập.

Page 57: Đề tài :DDoS và cách phòng chống DDoS cho webserver

57

content: “straight text”; content: “|hex data|”: Một đặc tính quan trọng

của Snort là khả năng tìm thấy một mẫu dữ liệu trong một gói tin. Mẫu đó có

thể tồn tại dưới dạng một chuỗi ASCII hoặc là các kí tự thập lục phân. Giống

như virut, những kẻ xâm nhập cũng có các dấu hiệu và từ khóa content để có

thể tìm ra các dấu hiệu trong các gói tin.

offset: < value>: Từ khóa offset được sử dụng kết hợp với từ khóa

content. Sử dụng từ khóa này, bạn có thể bắt đầu tìm kiếm từ một vị trí xác

định so với vị trí bắt đầu của gói tin.

depth: < value> : Từ khóa depth cũng được sử dụng kết hợp với từ

khóa content để xác định giới hạn trên của việc so sánh mẫu. Sử dụng từ

khóa này, bạn có thể xác định một vị trí so với vị trí bắt đầu. Dữ liệu sau vị

trí này sẽ không được tìm kiếm để so mẫu. Nếu bạn dùng cả hai từ khóa

offset và depth thì bạn có thể xác định một khoảng dữ liệu thực hiện việc so

sánh mẫu.

content_list: < filename> : Từ khóa content-list được sử dụng với tên

của một file như là đối số của từ khóa này. File này sẽ chứa một danh sách

các chuỗi sẽ được tìm kiếm trong một gói tin. Mỗi chuỗi được đặt trên các

dòng khác nhau của file.

dsize: [<|>] < number> : Từ khóa dsize được sử dụng để tìm chiều dài

một phần dữ liệu của gói tin. Nhiều cách tấn công sử dụng lổ hổng tràn bộ

đệm bằng cách gửi các gói tin có kích thước lớn. Sử dụng từ khóa này, bạn

có thể tìm thấy các gói tin có chiều dài dữ liệu lớn hoặc nhỏ hơn một số xác

định.

flags: < flags> :Từ khóa flags được sử dụng để tìm ra bit flag nào

được thiết lập trong header TCP của gói tin. Mỗi flag có thể được sử dụng

như một đối số của từ khóa flags trong luật Snort.

Page 58: Đề tài :DDoS và cách phòng chống DDoS cho webserver

58

fragbits: < flag_settings> : Sử dụng từ khóa này, bạn có thể tìm ra

những bit RB (Reserved Bit), DF(Don't Fragment Bit), MF(More Fragments

Bit) trong header IP có được bật lên hay không.

id: < number> : Từ khóa id được sử dụng để đối chiếu trường

fragment ID của header gói tin IP. Mục đích của nó là phát hiện các cách tấn

công sử dụng một số ID cố định.

reference : <id system>,<id> :Từ khóa reference có thể thêm một sự

tham khảo đến thông tin tồn tại trên các hệ thống khác trên mạng. Nó không

đóng một vai trò nào trong cơ chế phát hiện. Có nhiều hệ thống để tham

khảo như CVE và Bugtraq. Những hệ thống này giữ các thông tin thêm về

các kiểu tấn công đã được biết. Bằng việc sử dụng từ khóa này, bạn có thể

kết nối đến các thông tin thêm trong thông điệp cảnh báo.

rev: < revision integer> :Từ khóa rev được thêm vào option của luật

Snort để chỉ ra số revision của luật. Nếu bạn cập nhật luật, bạn có thể sử

dụng từ khóa này để phân biệt giữa các phiên bản. Các module output cũng

có thể sử dụng con số này để nhận dạng số revision.

seq: <hex_value> : Từ khóa seq trong luật Snort có thể được sử dụng

để kiểm tra số thứ tự sequence của gói tin TCP.

4.2.2 Thử nghiệm

4.2.2.1 Mô hình

Mô hình để thử nghiệm gồm có 05 máy tính đóng vai trò tấn công, 02

máy chủ là IPS có cài CSF và Snort inline, 01 máy chủ là máy chủ web đang

chạy một web site sử dụng Joomla 3.1. Tất cả các kết nối trong mô hình đều

có tốc độ 100Mb/s.

Máy chủ IPS sử dụng hai card mạng, trong đó card eth1 có địa chỉ IP

là 172.19.38.164, là card mạng kết nối với 05 máy tính kể trên và card eth0

có địa chỉ 192.168.1.1 kết nối với máy chủ web có IP 192.168.1.2.

Công cụ sử dụng để tấn công là DoSHTTP 2.5.1.

Page 59: Đề tài :DDoS và cách phòng chống DDoS cho webserver

59

Công cụ sử dụng để đo thời gian đáp ứng của máy chủ web là Jmeter

2.9.

Hình 4.13 Mô hình thử nghiệm sử dụng IPS để lọc gói tin

4.2.2.2 Cài đặt

Cài đặt Snort inline

yum -y update

yum -y install gcc flex bison wget make zlib zlib-devel libpcap

libpcap-devel pcre pcre-devel

rpm -Uhv

http://centos.alt.ru/repository/centos/6/i386/libnetfilter_queue-

1.0.2-1.el6.i686.rpm

rpm -Uvh

http://centos.alt.ru/repository/centos/6/i386/libnetfilter_queue-

devel-1.0.2-1.el6.i686.rpm

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-

release-6-8.noarch.rpm

yum -y update

yum -y install libdnet libdnet-devel

cd /root; wget http://www.snort.org/downloads/2311-O daq-

2.0.0.tar.gz

tar xvzf daq-2.0.0.tar.gz

Page 60: Đề tài :DDoS và cách phòng chống DDoS cho webserver

60

cd daq-2.0.0;./configure && make && make install

cd /root; wget http://www.snort.org/downloads/2320 -O snort-

2.9.4.6.tar.gz

tar xvzf snort-2.9.4.6.tar.gz

cd snort-2.9.4.6; ./configure --enable-sourcefire

make && make install

mkdir -p /etc/snort/rules

mkdir –p /var/log/snort

cd /etc/snort

Đăng ký tài khoản tại http://www.snort.org/snort-rules, sau đó tải

rules về. Rule mới nhất (ngày 18/4/2013) dành cho người dùng miễn phí là

snortrules-snapshot-2945.tar.gz.

tar xvzf snortrules-snapshot-2945.tar.gz

mv etc/* /etc/snort/

rmdir /etc/snort/etc

touch /etc/snort/rules/white_list.rules

/etc/snort/rules/black_list.rules

mkdir -p /usr/local/lib/snort_dynamicrules

groupadd -g 40000 snort

useradd snort -g snort -d /var/log/snort -s /sbin/nologin –m

chown -R snort:snort /etc/snort

chown -R snort:snort /var/log/snort

4.2.2.3 Cấu hình

Trên IPS:

Cấu hình cho phép gói tin đi qua

echo “1” > /proc/sys/net/ipv4/ip_forward

Cấu hình Snort (trong file /etc/snort/snort.conf)

ipvar HOME_NET 192.168.1.0/24: địa chỉ mạng cần bảo vệ

ipvar EXTERNAL_NET !$HOME_NET: địa chỉ mạng ngoài

var RULE_PATH rules

var SO_RULE_PATH so_rules

var PREPROC_RULE_PATH preproc_rules

var WHITE_LIST_PATH rules

var BLACK_LIST_PATH rules

config daq: nfq

config daq_mode: inline

config daq_var: queue=0

config snaplen: 65535

Cấu hình CSF (trong file /etc/csf/csf.conf)

Page 61: Đề tài :DDoS và cách phòng chống DDoS cho webserver

61

ETH_DEVICE = eth1 (chỉ lọc ở card external)

SYNFLOOD = "1"

SYNFLOOD_RATE = "30/s"

SYNFLOOD_BURST = "40"

CONNLIMIT = "80;20"

PORTFLOOD = "80;tcp;20;5"

CT_LIMIT = "300"

CT_INTERVAL = "30"

Cấu hình file /etc/csf/csfpost.sh

iptables -P FORWARD ACCEPT

iptables -I FORWARD -i eth0 -p tcp --dport 80 -j NFQUEUE

Chạy snort inline

snort -d -D -c /etc/snort/etc/snort.conf -l /var/log/snort

4.2.2.4 Thử nghiệm

Kịch bản 1: Tấn công máy chủ web khi không có IPS, máy chủ web

cũng không cài CSF

Hình 4.14 Tài nguyên của máy chủ web khi chưa bị tấn công ở

kịch bản 1

Thông tin tài nguyên của máy chủ khi chưa bị tấn công : Có 221 tiến

trình, Load average: 0.05, CPU gần như không phải hoạt động

Page 62: Đề tài :DDoS và cách phòng chống DDoS cho webserver

62

Sử dụng công cụ Jmeter để đo thời gian đáp ứng của máy chủ

Hình 4.15 Thời gian đáp ứng trung bình của máy chủ web khi chưa bị

tấn công ở kịch bản 1

Thời gian đáp ứng trung bình của máy chủ là 220ms.

Thực hiện tấn công máy chủ web, sau 1 phút tấn công thì người dùng

không thể truy cập vào trang demo DDoS, hiện tại đã có 469 tiến trình, load

average (tải trung bình): 97.43, CPU: 90.6%.

Page 63: Đề tài :DDoS và cách phòng chống DDoS cho webserver

63

Hình 4.16 Tài nguyên của máy chủ web khi bị tấn công ở kịch bản 1

Sử dụng công cụ Jmeter để đo thời gian đáp ứng trung bình của máy

chủ, ta được:

Hình 4.17 Thời gian đáp ứng trung bình của máy chủ web khi bị tấn

công ở kịch bản 1

Page 64: Đề tài :DDoS và cách phòng chống DDoS cho webserver

64

Thời gian đáp ứng trung bình của máy chủ trong khi bị tấn công

DDoS là 8248ms.

Nhận xét: Khi bị tấn công, máy chủ phải tạo ra rất nhiều tiến trình

httpd (như trong hình 4.15) để phục vụ yêu cầu từ các máy tấn công. Thời

gian đáp ứng trung bình lên đến 8s/một yêu cầu cho thấy việc phục vụ hết

sức chậm chạp của máy chủ khi đang bị tấn công.

Kịch bản 2: Tấn công máy chủ web khi không có IPS, máy chủ web có sử

dụng CSF

Cấu hình CSF (trong file /etc/csf/csf.conf) như sau

SYNFLOOD = "1"

SYNFLOOD_RATE = "30/s"

SYNFLOOD_BURST = "40"

CONNLIMIT = "80;20"

PORTFLOOD = "80;tcp;20;5"

Thực hiện tấn công DDoS vào máy chủ web, sau 5 phút, thông tin về

tình trạng máy chủ web như sau: có 242 tiến trình, load average 5.82, CPU

73,7%. Đồng thời CSF thông báo đã chặn được các gói tin từ các máy đang

tấn công DDoS vào máy chủ.

Hình 4.18 Tài nguyên và log của máy chủ web sau 5 phút bị tấn công ở

kịch bản 2

Sau khi tấn công 15 phút, ta thấy tài nguyên của máy chủ không quá

khác biệt với thời điểm 5 phút sau khi tấn công.

Page 65: Đề tài :DDoS và cách phòng chống DDoS cho webserver

65

Hình 4.19 Tài nguyên và log của máy chủ web sau 15 phút bị tấn công

ở kịch bản 2

Sử dụng công cụ Jmeter để đo thời gian đáp ứng trung bình của máy

chủ, ta được:

Hình 4.20 Thời gian đáp ứng trung bình của máy chủ web khi bị tấn

công ở kịch bản 2

Nhận xét: Với cấu hình CSF như trên, hệ thống chỉ chặn các gói tin

vượt quá quy định (cho phép 30 gói tin SYN/s, nếu trong hệ thống có 40 kết

nối SYN từ IP đấy thì hủy những gói tin tiếp theo hay chỉ cho phép 20 kết

nối đồng thời từ một IP đến cổng 80), nên máy chủ vẫn phải phục vụ một

phần những yêu cầu không hợp lệ từ các máy tấn công. Chính vì vậy load

average (tải trung bình) của máy chủ vẫn tăng. Tuy nhiên, do CSF đã cản lọc

Page 66: Đề tài :DDoS và cách phòng chống DDoS cho webserver

66

một phần nên load average (tải trung bình) của hệ thống không quá cao và

máy chủ vẫn phục vụ được yêu cầu từ người dùng (thời gian đáp ứng trung

bình 258ms)

Kịch bản 3: Tấn công máy chủ web khi có IPS.

Cấu hình IPS như trên, thêm rule nhận dạng tấn công DDoS bằng

DoSHTTP vào file /etc/snort/rules/local.rules như sau:

drop tcp any any -> any 80 (sid:5;msg:"Detect DoS_HTTP";content:"|57 69

6e 39 38 3b 20 55|";)

Sau 15 phút tấn công, tài nguyên của máy chủ web như sau: có 220

tiến trình, load average (tải trung bình):0.02, CPU gần như không tải.

Hình 4.21 Tài nguyên của máy chủ web và log của Snort sau 15 phút bị

tấn công ở kịch bản 3

Log của Snort ghi nhận đã chặn được các gói tin DDoS vào máy chủ web.

Page 67: Đề tài :DDoS và cách phòng chống DDoS cho webserver

67

Hình 4.22 Thời gian đáp ứng trung bình của máy chủ web khi bị tấn

công ở kịch bản 3

Nhận xét: Khi kết hợp cả CSF và Snort iniline, các gói tin từ các máy

tấn công sẽ bị lọc một phần ở tầng mạng (CSF cản lọc), phần còn lại sẽ bị

Snort inline cản lọc ở tầng ứng dụng. Như vậy chỉ còn các gói tin từ người

dùng hợp lệ đến với máy chủ web. Đó chính là lý do tại sao tài nguyên của

máy chủ web hầu như không thay đổi trước và trong cuộc tấn công DDoS.

Kết luận: Sau khoảng 3 tháng làm luận văn, ít nhiều tôi cũng đã tìm hiểu tương

đối thành công về DDoS và xây dựng được thành công phương pháp phòng

thủ DDoS theo cách hiểu của mình. Qua những gì tìm hiểu được, tôi vẫn

cảm thấy vẫn còn nhiều điều phải làm để có thể hoàn thiện hơn luận văn

cũng như cần có sự hướng dẫn nhiều hơn nữa của các thầy cô và bạn bè.

1. Những kết quả đạt được :

Theo yêu cầu đặt ra ban đầu là “Tìm hiểu DDoS và xây dựng biện

pháp phòng thủ DDoS cho webserver”, cho đến thời điểm hiện tại luận văn

đã đạt được những nội dung sau:

- Tìm hiểu lý thuyết về DDoS

- Tìm hiểu được một số giải pháp thủ DDoS

- Triển khai thành công 02 hệ thống phòng thủ DDoS cho máy

chủ web

2. Hướng phát triển

Do thời gian có hạn nên việc tìm hiểu và xây dựng hệ thống phòng thủ

DDoS vẫn còn nhiều hạn chế và thiếu sót. Tôi hi vọng trong tương lai gần có

thể xây dựng, thử nghiệm hai giải pháp phòng thủ DDoS còn lại và tích hợp

được phương pháp sử dụng IPS, GEOIPDNS và HAPROXY vào một giải

pháp duy nhất để có thể phòng thủ tốt hơn trước các cuộc tấn công DDoS.

Page 68: Đề tài :DDoS và cách phòng chống DDoS cho webserver

68

Tài liệu tham khảo

Tiếng Anh

1. Jelena Mirkovic, Sven Dietrich, David Dittrich, Peter Reiher

(2005), Internet Denial of Service: Attack and Defense

Mechanisms, Prentice Hall PTR.

2. HangChau, Network Security – Defense Against DoS/DDoS Attacks

3. Yonghua You (2007), A Defense Framework for Flooding-based

DDoS Attacks.

4. http://www.litespeedtech.com

5. http://cloudlinux.com

6. http://configserver.com

7. Snort Team (2013), Snort Users Manual.

8. Chris Murphy (2013), An Analysis of the Snort Data Acquisition

Modules, SANS Institute InfoSec Reading Room.

9. http://jmeter.apache.org

Tiếng Việt

6. Hoàng văn Quân (2008), Ngăn chặn Ddos bằng giao thức “lan tỏa

ngược”