3.4.1 Giải thuật
Dựa trên ý tƣởng thuật toán gốc đƣợc mô tả trong phƣơng pháp lọc của Doron [4], chúng tôi tiến hành cải tiến: thay đổi cách hành xử của lƣu lƣợng hợp lệ, thay thế điều kiện kiểm tra cũ bằng điều kiện kiểm tra mới, bổ sung các điều kiện kiểm tra mở rộng, cách đánh giá giá trị ƣu tiên mới – chi tiết trong bảng 1. Những phần mã lệnh đóng vai trò chuyển tiếp gói tin sau khi đã quyết định, chúng tôi giữ nguyên nhƣ mã nguồn gốc.
Thuật toán cải tiến có thể đƣợc minh họa cơ bản nhƣ sau:
Procedure TLF01( packet *p) // giá trị đầu vào là gói tin cần kiểm tra
62 TE = Tend – Tstart; //(tham khảo công thức ở 3.2.1) , Điều kiện 1 - kiểm tra thời gian reading time
Davg(i) = DMax * F(i); // (tham khảo công thức ở 3.2.1) ,Điều kiện 1 - kiểm tra lƣu lƣợng trung bình của phiên
If(Davg(i) <= DMax ) then
F = random(0.75;1); // đặt giá trị F > 0,75 nhƣng < 1; Else
F = 0; // ƣu tiên thấp nhất
End if;
Cập nhật F(i) vào cơ sở dữ liệu;
DRequest_avg = F*( DReceived/ PRequest ); // (tham khảo công thức ở 3.2.2), Điều kiện 2 - kiểm tra lƣu lƣợng truy vấn trung bình
If( DRequest_avg <= DRequest_max) ) then // Kiểm tra truy vấn có vƣợt ngƣỡng cho phép? F = random(F;1); // nếu bình thƣờng sẽ tăng điểm lên nhƣng không vƣợt quá 1
else
F = 0;
End if;
Sử dụng cơ chế trạng thái tối thiểu; // Điều kiện 3 – tham khảo cách xác định và giá trị tính ở 3.2.3
// nếu độ ƣu tiên lớn hơn 0 , thông thƣờng là lớn hơn 0.75 thì quyết định đẩy gói tin
đang đƣợc kiểm tra vào High Queue, ngƣợc lại thì đẩy gói tin đang đƣợc kiểm tra vào Low Queue
If(F > 0) then
Đẩy gói tin vào hàng đợi ƣu tiên cao;
Else
Đẩy gói tin vào hàng đợi ƣu tiên thấp;
End if;
End procedure;
63
Giải thích thuật toán:
- Đầu vào: Gói tin vào từ mạng, trƣớc khi đƣợc đặt vào bộ đệm của Router xử lý chuyển tiếp đến Web bên trong Webfarm thì cần thông qua bộ lọc này ( do bộ lọc đƣợc đặt ở trƣớc Router – tham khảo hình 32)
- Quy trình xử lý
Bộ lọc sẽ khởi tạo các giá trị ban đầu. Những giá trị này bao gồm: ngƣỡng kích cỡ truy vấn tối đa cho phép(150KB), ngƣỡng thời gian đọc một trang Web trung bình(10s), kích cỡ gói tin(200bytes), trọng số bộ nhớ dành cho hàng đợi High Queue và Low Queue(4:1)…
Căn cứ vào thời gian đến của gói tin cuối cùng của truy vấn đến trang đang đọc, tổng dữ liệu của Web-request này, thời gian kết thúc của phiên Web- request tính toán đƣợc thời gian đọc trang và lƣợng dữ liệu nhận đƣợc của phiên đó từ đó so sánh với các ngƣỡng cho phép. Nếu các ngƣỡng băng thông phiên này vƣợt qua ngƣỡng cho phép khi khởi tạo thì rõ ràng cần đặt biến ƣu tiên F=0 và đẩy luôn gói tin từ địa chỉ IP nguồn của phiên này vào hàng đợi ƣu tiên thấp. Kiểu kiểm tra này sẽ phục vụ cho phát hiện các dạng tấn công Simple Flooding (đã trình bày chi tiết trong phần 3.2.1).
Căn cứ vào tần suất truy vấn dữ liệu trong khoảng thời gian nghỉ reading time chúng ta có thể sử dụng cơ chế bẫy tần suất để loại bỏ các dạng tấn công High-Burst-Slow. Nếu tần suất không đều và có sự ngẫu nhiên thì lƣu lƣợng là bình thƣờng, ngƣợc lại tần suất gửi tin có chu kỳ lặp đi lặp lại thì chắc chắn đó là lƣu lƣợng tấn công.
Ngoài ra chúng tôi còn sử dụng cơ chế trạng thái tối thiểu. Phần này thiết kế không khác nhiều phƣơng pháp của E.Doron sử dụng [4].
Giá trị F cuối cùng sẽ là căn cứ để quyết định xem gói tin của phiên hiện tại có phải là từ nguồn lƣu lƣợng tấn công hay không. Nếu phải sẽ bị gửi xuống hàng đợi ƣu tiên thấp và tất nhiên kết nối đó sẽ bị hoãn lại chƣa phục vụ cho đến khi hàng đợi ƣu tiên cao không còn dữ liệu để xử lý. Nhƣ vậy trong các trƣờng hợp tấn công DDoS xảy ra, rõ ràng cách phân loại này sẽ giúp bộ lọc hạn chế đáng kể các lƣu lƣợng tấn công truy vấn hoàn thành kết nối tới máy chủ Web. Giá trị F [0.75:1] là cặp giá trị cận dƣới và cận trên tối ƣu nhất mà
64 chúng tôi tìm ra sau nhiều kết quả thử nghiệm Heuristic để xác suất phân loại đúng đạt giá trị cao trên 90%.
- Đầu ra: Quyết định chuyển gói tin vào loại hàng đợi xử lý nào.
3.4.2 Độ phức tạp của thuật toán
Với n giá trị đầu vào, khi thực hiện thuật toán ngoài các phép gán để tính toán tìm giá trị cơ bản của phiên và các lệnh điều kiện quyết định có độ phức tạp O(n), phép cập nhật vào cơ sở dữ liệu, không tồn tại một vòng lặp nào nên độ phức tạp tổng thể của thuật toán là O(n).
3.4.3 Độ tin cậy của phƣơng pháp
Độ tin cậy của phƣơng pháp phụ thuộc vào hai yếu tố:
1) Độ tin cậy của tham số thống kê đặc tính hành vi ngƣời dùng trong mô hình dữ liệu
2) Những sai số trong phép tính toán lại ngƣỡng và tỉ lệ phát hiện đúng trong trƣờng hợp đúng là hành vi tấn công và trong trƣờng hợp là hành vi ngƣời dùng hợp lệ không đƣợc dƣới 95% hoặc tỉ lệ phát hiện sai ngƣời dùng hợp pháp là tấn công hoặc kẻ tấn công là ngƣời dùng hợp pháp phải dƣới 5%. Yếu tố thứ nhất 1) đƣợc chứng minh trong bài báo của Lee & Gupta thông qua các thống kê toán học và xác suất xuất hiện dữ liệu bất kỳ so với giá trị đề xuất. Tác giả cũng đƣa ra những biên độ sai số những kết quả thống kê thực tế so với thống kê trong mô hình theo mức chấp nhận đƣợc. Dĩ nhiên trong thực tế không thể có trƣờng hợp nào mà chúng ta đo đƣợc chính xác hoàn toàn những thuộc tính hành vi đó. Yếu tố thứ hai 2) để chứng minh, chúng tôi tìm cách thực hiện những thực nghiệm heuristic để tính toán kết quả thu đƣợc, sau đó so sánh tỉ lệ sai sót khi tiến hành nhiều phiên thực nghiệm khác nhau.
3.4.4 Sơ đồ hoạt động cơ bản
Với tất cả những phân tích ở trên, thuật toán thực hiện đƣợc thiết kế nhƣ sau: Dữ liệu gói tin đi vào đƣợc kiểm tra các điều kiện là các điều kiện bẫy thời gian, bẫy tần suất, trạng thái tối thiểu. Tùy theo kết quả kiểm tra sau cùng của các điều kiện trên mà hệ thống sẽ sinh ra giá trị ƣu tiên F(i) cho mỗi kết nối phù hợp. Dựa theo giá
65 trị ƣu tiên mà hệ thống sẽ quyết định đẩy gói tin đó vào hàng đợi High Queue hay Low Queue.
Để minh họa đƣợc tốt nhất hiệu quả của thuật toán mới trên mô hình dữ liệu mới sẽ thể hiện ra sao trong trƣờng hợp website có tấn công xảy ra. Chúng tôi dựa trên các kiểu tấn công đã biết [4] nhƣng có chỉnh sửa để phù hợp với mô hình dữ liệu mới – do không tuân theo mô hình ON – OFF nên các ngƣỡng và cách tham chiếu các giá trị sẽ có sự khác biệt. Ta giả sử tất cả các kiểu tấn công, hacker có thể dễ dàng bắt chƣớc – do kẻ tấn công có thể tái tạo lại gói tin, tốc độ gửi dƣới bất kỳ dạng nào. Có tất cả bốn dạng tấn công chúng tôi tập trung thử nghiệm: “Simple flooding”, “High-burst slow”, “Low-burst fast”, “Low rate DDoS” hay Shrew Attack.
Với mỗi kiểu tấn công, sẽ có sự khác nhau về tần suất truyền tin, thời gian truyền tin cũng nhƣ cách tổ chức các nhóm nhỏ máy tính zombie tấn công cũng khác
66 nhau. Chúng tôi đi chi tiết vào mỗi dạng tấn công cụ thể, đặc điểm chi tiết nhận dạng chúng.
67
CHƢƠNG IV: MÔ PHỎNG VÀ ĐÁNH GIÁ 4.1 Thực hiện mô phỏng
4.1.1 Mô hình mô phỏng
Để phục vụ phép thử nghiệm ngắn gọn và tập trung vào tƣơng tác giữa trình duyệt và máy chủ web, chúng tôi chọn mô hình mô phỏng có cấu trúc cơ bản nhƣ hình 32. Sở dĩ chúng tôi chọn mô hình đơn giản nhƣ vậy trong khi thực tế từ ngƣời dùng đến máy chủ web, gói tin phải đi qua rất nhiều chặng mạng với cấu trúc khác nhau, mạng chứa máy chủ Web cũng có thể trang bị nhiều các lớp bảo vệ, các thiết bị hỗ trợ cân bằng tải…. tuy nhiên chúng không làm suy giảm lƣu lƣợng cần truyền tải thực sự từ trình duyệt lên web mà chỉ tăng độ trễ của gói tin. Theo những thống kê nghiên cứu thì độ trễ này (~20ms – 60ms) không đáng kể so với thời gian ngƣời dùng đọc dữ liệu. Do đó chúng tôi giả sử các chặng đƣờng mạng đó là môi trƣờng Internet chung trong mô hình chúng tôi sử dụng và không tính thêm thời gian trễ vào các ngƣỡng thời gian thử thách của giải pháp. Trong mô hình mô phỏng này chúng tôi cũng giả sử máy chủ Web có hỗ trợ Cache.
Hình 32 Mô hình mô phỏng
4.1.2 Chƣơng trình mô phỏng, yêu cầu thiết bị và cấu hình
Tất cả các nghiên cứu thực nghiệm chúng tôi đều tiến hành trên máy tính với các chƣơng trình mô phỏng bằng phần mềm. Thông số cơ bản của máy tính chúng tôi dùng là:
68 CPU: Intel Core i5-3210M 2.5 Ghz
RAM: 4 GB
Hệ điều hành: Ubuntu 12.04 LTS Precis Pangolin Video Card onboard
Để có thể mô phỏng đƣợc tất cả các tham số về độ trễ, thời gian gửi tin, độ lớn mỗi gói, có sinh dữ liệu tự động, mô phỏng cả trƣờng hợp Webserver có hỗ trợ cache… phải có phần cứng hỗ trợ. Điều mà không khả thi nếu triển khai toàn bộ các thành phần thiết bị cần thiết nhƣ trong nghiên cứu. Vì vậy chúng tôi chọn sử dụng phần mềm mô phỏng, trong số đó NS-2.29 [19] là công cụ mô phỏng chính. Do đây là phần mềm miễn phí, hỗ trợ tất cả các chuẩn giao thức cơ bản, hỗ trợ cache, nhiều thƣ viện mở rộng và có khả năng tùy biến cách thức gửi tin rất tốt. Chúng tôi đã tùy chỉnh cách thức gửi tin để phù hợp với lƣu lƣợng ngƣời dùng hợp lệ trong mô hình mới.
Ngoài ra để đo bộ nhớ chúng tôi sử dụng dbstat là một công cụ thống kê bộ nhớ trong Linux rất trực quan và có thể chọn thời gian đo, hỗ trợ xuất file định dạng phù hợp.
Để minh họa các kết quả thông qua đồ thị trực quan chúng tôi sử dụng Gnuplot phiên bản 4.6 chạy trên Ubuntu, hoặc dùng Gnuplot trên Window phiên bản 5.0 để hỗ trợ tiếng Việt khi trình bày thông tin các nhãn. Các kết quả chúng tôi lấy từ thống kê bên môi trƣờng Ubuntu.
4.1.3 Kịch bản mô phỏng
Để minh họa dạng tấn công DDos, sẽ rất khó để có thể thực hiện hàng triệu truy vấn trên một phần mềm mô phỏng. Không làm mất tính tổng quát của chƣơng trình thử nghiệm, chúng tôi thu nhỏ quy mô hệ thống đi khoảng 1000 lần. Băng thông thiết lập giữa Router của nhà cung cấp dịch vụ và máy chủ Web đặt là 1.024 Mbps [ tƣơng đƣơng 1 Gbps trong thực tế] và băng thông tối đa giữa bất kỳ máy của ngƣời dùng hợp lệ với máy chủ dao động từ 128Kbps đến 512Kbps đƣờng upload và 1.024 Mbps đƣờng download.
Với cách thu nhỏ nhƣ trên thì khoảng 8 kẻ tấn công [tƣơng đƣơng 8000 máy tính Zombie trong thực tế] có băng thông đƣờng upload tối đa 128Kbps cũng có thể
69 làm quá tải băng thông Webserver trong các trƣờng hợp tấn công Simple Flooding – không có biện pháp phòng chống.
Số ngƣời dùng hợp lệ tăng từ 1 đến 100 [tƣơng đƣơng 1000 đến 100.000 ngƣời dùng trong thực tế], số lƣợng kẻ tấn công cũng có thể thay đổi để thử nghiệm tính hiệu quả của thuật toán trong các trƣờng hợp lƣu lƣợng tấn công và lƣu lƣợng hợp lệ xen kẽ. Trong các trƣờng hợp có kẻ tấn công, chúng tôi sử dụng 3 ngƣời dùng hợp lệ có băng thông kết nối 128kbps [tƣơng đƣơng 3000 máy ngoài thực tế]
Chúng tôi giả sử rằng trong trƣờng hợp bình thƣờng máy chủ có thể phục vụ 200 kết nối của ngƣời dùng hợp pháp có băng thông 128kbps tại một thời điểm.
Kích thƣớc gói tin là 200 bytes. Đặt trọng số hàng đợi High Queue: 0.8, Low Queue: 0.2. Giá trị chọn phản ánh mức độ ƣu tiên trong xử lý gói tin. Trọng số chọn tƣơng tự với cách chọn của Paolo Losi [18] với hai luồng xử lý. Với những kết nối chuyển vào hàng đợi ƣu tiên cao cần có nhiều không gian hơn để có thể lƣu trữ và chuyển tiếp trong trƣờng hợp server phải yêu cầu phục vụ lƣợng lớn truy vấn. Những kết nối bị nghi ngờ chuyển vào hàng đợi ƣu tiên thấp có thể bị loại bỏ nếu lƣợng dữ liệu vào là quá lớn. Do đó chỉ nên dành một khoảng nhỏ chứa những dữ liệu chƣa thực sự cần thiết. Điểm quan trọng ở đây là giả sử bộ nhớ hàng đợi sẽ tăng theo lƣợng gói tin gửi và phụ thuộc vào bộ nhớ RAM thực lƣu trữ của máy tính. Do vậy trong các trƣờng hợp bình thƣờng, ta giả thiết là các hàng đợi này phục vụ đƣợc tất cả các kết nối mà không bị đầy dữ liệu.
4.1.4 Tham số đo đạc
Với từng kịch bản sẽ tiến hành đo những tham số thể hiện đặc tính bản chất của kết quả hƣớng đến.
Với kịch bản xác định tính hiệu quả của phƣơng pháp cũ với mô hình dữ liệu mới, chúng ta cần xác định đƣợc: Tỉ lệ phát hiện sai truy cập hợp pháp là tấn công trong các trƣờng hợp truy cập thông thƣờng = tỉ lệ truy cập thành công của ngƣời dùng bình thƣờng khi không có tấn công. Phát hiện sai ở đây nghĩa là khi sinh ra dữ liệu của ngƣời dùng bình thƣờng rồi tiến hành thử kết nối đến máy chủ Web thì phiên truy cập không thành công – do bị bộ lọc ngăn lại.
Với kịch bản xác định tính hiệu quả của phƣơng pháp mới với mô hình dữ liệu mới chúng tôi tiến hành đo đạc:
70 Tỉ lệ phiên truy cập thành công của ngƣời dùng hợp lệ trong các trƣờng hợp không có kẻ tấn công nào, có kẻ tấn công với các phƣơng pháp khác nhau, tốc độ khác nhau. Tỉ lệ phiên truy cập thành công đƣợc tính theo công thức:
số lần phiên người dùng hợp pháp được đi qua / số phiên thử nghiệm.
Tỉ lệ sử dụng bộ nhớ, CPU của bộ lọc so với trung bình các phƣơng pháp khác và mức chấp nhận đƣợc của máy chủ
Tỉ lệ ảnh hƣởng đến băng thông mạng hay thông lƣợng trung bình.
4. 2 Tiến hành mô phỏng
4.2.1 Kịch bản 1: Áp dụng mô hình lƣu lƣợng mới
a) Sử dụng mô hình lƣu lƣợng mới với bộ lọc cũ:
Kịch bản phương pháp cũ sử dụng mô hình lưu lượng cũ: Trong 8 tiếng, tác giả thiết kế 3 client hợp lệ lần lƣợt kết nối tới server vào các thời điểm khác nhau. Các kết nối hợp lệ này tuân theo thống kê ngƣỡng của mô hình Choi&Lim: thời gian nghỉ ngẫu nhiên trong phạm vi từ 5 giây đến 30 giây và lƣu lƣợng ngẫu nhiên trong khoảng từ 30KB đến 100KB. Sau đó tác giả tiến hành đo mẫu tỉ lệ phiên 3 client truy cập thành công trong các trƣờng hợp: không có tấn công xảy ra, có tấn công dạng đơn giản (Simple Flooding), có tấn công dạng phức tạp (Low-rate). Kết quả thu đƣợc tác giả so sánh tỉ lệ phiên truy cập thành công của client hợp lệ khi có áp dụng bộ lọc WDA [4] và khi không áp dụng bộ lọc WDA để tìm độ hiệu quả của thuật toán.
Kịch bản phương pháp cũ sử dụng mô hình lưu lượng mới: Trong 8 tiếng, chúng tôi cũng sử dụng 3 client hợp lệ lần lƣợt kết nối tới server vào các thời điểm khác nhau. Các kết nối hợp lệ này sử dụng ngƣỡng thống kê theo mô hình Lee &
Gupta. Chúng tôi tiến hành xây dựng lại cách gửi tin và tƣơng tác của các truy vấn
hợp lệ tới server. Sau đó chúng tôi tiến hành đo mẫu tỉ lệ phiên 3 client truy cập thành công trong các trƣờng hợp: không có tấn công xảy ra, có tấn công dạng đơn