Kết quả biến thiên theo tốc độ bùng nổ tấn công

Một phần của tài liệu Chống tấn công từ chối dịch vụ phân tán tần suất thấp (Trang 40 - 52)

kiểm tra thuật toán RRED mới với thông lượng TCP để xác định sự ổn định và hiệu quả của thuật toán khi có tấn công thay đổi tốc độ kết nối. Với giá trị Ta = 1 (s), Tb = 200 (ms), Rb = [0,1 0,5] (Mbps) trên thuật toán RRED mới và thực hiện mô phỏng trong NS2. Các kết quả thu được và thể hiện trong hình 14.

Hình 14. Kết quả thông lượng TCP dưới tấn công khi Ta = 1(s), Tb = 200(ms), Rb = [0.1,0.5] (Mbps)

Bảng 4 so sánh kết quả mô phỏng tại thời điểm Rb=0.25Mbps cho thấy thuật toán RRED với giá trị Tout biến thiên có thông lượng TCP cải thiện hơn so với thuật toán RRED cũ với giá trị T* là hằng số.

Tham số mô phỏng Giá trị

(T*=10ms) Giá trị Tout Biến thiên Number of users 30 30 Attackers number 20 20 rate_f1_normal 600.870000 600.970000 rate_f1_attack 596.640000 598.810000 nth_f1 0.992960 0.996406

Từ ba bộ kết quả thử nghiệm tương ứng với ba bộ thông số, chúng ta thấy rằng thuật toán RRED mới là tương đối hiệu quả. Những kết quả này cho thấy các thông lượng TCP được duy trì gần như hoàn toàn trong nhiều cuộc tấn công Dos tần suất thấp. Nó cũng khẳng định rằng các thuật toán hiện tương tự như RRED có thông lượng thấp hơn so với thuật toán RRED sau cải tiến.

KẾT LUẬN

Trong luận văn này, chúng tôi đề xuất cải tiến thuật toán RRED để chống các cuộc tấn công DoS tần suất thấp. Qua quá trình mô phỏng và phân tích cho thấy RRED sau khi cải tiến là tương đối hiệu quả và có cải thiện hiệu năng TCP đáng kể trong các cuộc tấn công DoS tần suất thấp. Một số kết quả thu được như sau:

- Thuật toán RRED mới sau khi cải tiến rất mạnh mẽ so với RRED đã được đề xuất.

- Thuật toán RRED mới cải thiện hiệu suất thông lượng TCP trong các cuộc tấn công LDoS.

- Thay đổi được giá trị hằng số T* trong thuật toán RRED ban đầu, nhằm kẻ tấn công khó xác định tính toán hoặc thay đổi tốc độ tấn công.

Cho đến nay, RRED chỉ tập trung vào giải quyết vấn đề liên quan đến các luồng TCP nhưng không đề cập về các gói tin UDP. Vì vậy, đây là một trong những vấn đề chính cần phải được xử lý để cải tiến các thuật toán RRED trong hướng nghiên cứu tương lai.

PHỤ LỤC A. Cài đặt trong NS2

A.1 Giới thiệu chƣơng trình mô phỏng NS2

NS-2 là phần mềm mô phỏng mạng khá mạnh, hoạt động của nó được điều khiển bởi các sự kiện rời rạc[27]. NS-2 được thiết kế và phát triển theo kiểu hướng đối tượng, được phát triển tại đại học California, Berkely. Bộ phần mềm này được viết bằng ngôn ngữ C++ và OTcl. Có thể tương thích với hệ điều hành Linux và hệ điều hành Windows. Mô phỏng cung cấp hỗ trợ rộng rãi để mô phỏng giao thức TCP, thiết bị định tuyến, …

Hình 10. Cấu trúc của NS-2

Cấu trúc của NS-2 bao gồm các thành phần được chỉ ra trên Hình 10

Tùy vào mục đích của người dùng đối với kịch bản mô phỏng OTcl mà kết quả mô phỏng có thể được lưu trữ vào tệp vết (trace file) với khuôn dạng (format) được những người phát triển NS định nghĩa trước hoặc theo khuôn dạng do người sử dụng NS quyết định khi viết kịch bản mô phỏng. Nội dung tệp vết sẽ được tải vào trong các ứng dụng khác để thực hiện phân tích.

A.2 Cài đặt NS2

Mở terminal của ubuntu thực hiện các lần lượt lệnh sau để thực hiện việc cài đặt.

Dowload bộ cài ns-allinone-2.33

+ wget http://nchc.dl.sourceforge.net/sourceforge/nsnam/ns-allinone-

Giải nén ns-allinone-2.33

tar -xzvf ns-allinone-2.33.tar.gz

Di chuyển vào thư mục ns-allinone-2.33 bằng lệnh cd ns-allinone-2.33

Cài đặt thêm các gói cần thiết

Sudo apt-get install -f build-essential libxt-dev libxt6 libsm-dev libsm6 libice-dev libice6 libxmu-de

Thực hiện lênh sau để cài đặt ./install

Sau khi cài đặt bạn cần đặt lại đường dẫn cho các gói phần mềm. Cần chỉnh sửa thêm file /.bashrc. Để mở file /.bashrc thực hiện lệnh sau

Gedit ~/.bashrc

Xuất hiện cửa sổ soạn thảo, bạn hãy thêm các dòng sau vào dưới cùng của

cửa sổ này (sau từ fi). Tùy từng bản ns-allinone khác nhau mà tên các gói là

khác nhau. Thường thì sau khi cài sẽ xuất hiện chỉ dẫn cho các đường dẫn, các bạn có thể copy từ đó xuống. Dưới là đường dẫn cho bản ns-allinone-2.33. Thư mục home của mình là /home/sun (sun chính là tến đăng nhập vào ubuntu của mình ). Tùy từng tên đăng nhập của mọi người thay cho hợp lý.

Hãy load file thiết lập đường dẫn cho NS-2 ở file đính kèm

Sau khi thiết lập đường dẫn xong bạn save file /.bashrc này lại và mở một cửa sổ terminal mới gõ lệnh ns nếu xuất hiện dấu % thì việc thiết lập là thành công.

Cuối cùng là xác mình lại việc cài đặt ns2. Di chuyển vào thư mục ns-2.33 (chú ý lúc này bạn đang ở thư mục ns2-allinone-2.33 , nếu bạn bật cửa sổ terminal mới thì bạn gõ lệnh đầy đủ

cd ~/ns-allinone-2.33/ns-2.33

thực hiện lệnh dưới để xác minh lại việc cài đặt ./validate

Trong luận văn này, chúng tôi cài đặt bộ mô phỏng dựa trên công cụ AQM&DoS Simulation Platform [1] để đánh giá, mô phỏng hiệu quả của thuật toán RRED sau khi cải tiến và so sánh thuật toán RRED ban đầu.

Cải tiến về thuật toán RRED được thực hiện trong các hàm của tệp red- robust.h và red-robust.cc và thực hiện mô phỏng tấn công từ chối dịch vụ phân tán tần suất thấp.

Kết quả mô phỏng được kiết xuất dạng tệp log. Sử dụng Matlab để vẽ đồ thị biểu diễn kết quả mô phỏng, phân tính và đánh giá cải tiến của thuật toán RRED mới.

B.1. Sao chép các tệp sau vào thư mục "ns-allinone-2.33\ns-2.33\queue". red-robust.h

red-robust.cc

B.2. Thêm các dòng sau vào cuối tệp ns-default.tcl ("ns-allinone-2.33\ns- 2.33\tcl\lib\ns-default.tcl").

# Added by leoking RobustRed config 0 Queue/RED/Robust set hash_bins_ 23 Queue/RED/Robust set hash_levels_ 2 Queue/RED/Robust set score_max_ 10 Queue/RED/Robust set score_min_ -1 Queue/RED/Robust set score_pass_ 0

Queue/RED/Robust set last_drop_time_ 0ms

Queue/RED/Robust set drop_related_period_ 10ms # Added by leoking RobustRed config 1

B.3. Chèn dòng sau vào trước đoạn mã nguồn "$(OBJ_STL)" trong tệp Makefile ("ns-allinone-2.33\ns-2.33\Makefile"):

queue/red-robust.o \

B.4. Biên dịch lại hệ thống ns-allinone-2.33 bằng các lệnh sau: make clean make depend make C. Mà nguồn tệp red-robust.cc #include <math.h> #include <sys/types.h> #include "config.h" #include "template.h"

#include "random.h" #include "flags.h" #include "delay.h" #include "red-robust.h"

static class RobustREDClass : public TclClass { public:

RobustREDClass() : TclClass("Queue/RED/Robust") {} TclObject* create(int argc, const char*const* argv) {

//printf("creating RED Queue. argc = %d\n", argc);

//mod to enable RED to take arguments if (argc==5)

return (new RobustREDQueue(argv[4])); else

return (new RobustREDQueue("Drop")); }

} class_robustred;

RobustREDQueue::RobustREDQueue(const char * trace) : REDQueue(trace) { bind("hash_bins_", &hash_bins_); bind("hash_levels_", &hash_levels_); bind("score_max_", &score_max_); bind("score_min_", &score_min_); bind("score_pass_", &score_pass_); bind_time("last_drop_time_", &last_drop_time_); bind_time("drop_related_period_", &drop_related_period_); resetBins(0); } void RobustREDQueue::enque(Packet* pkt) { if (dropAnomaly(pkt)) {

//reportDrop(pkt); //Where report? need to further thinking updateBinsDroptime(pkt); drop(pkt); //printf("\tT* =%d",pkt); } else { REDQueue::enque(pkt); } return;

void RobustREDQueue::reportDrop(Packet* pkt) { double drop_time=updateBinsDroptime(pkt); last_drop_time_=drop_time;

return; }

int RobustREDQueue::hashPkt(Packet* pkt, int ilevel) { int ibin=0;

hdr_ip* iph=hdr_ip::access(pkt);

unsigned int param1=(int)(iph->saddr()); unsigned int param2=(int)(iph->daddr()); //unsigned int param3=int(iph->sport()); //unsigned int param4=int(iph->dport());

ibin=((param1<<ilevel)+param2)%hash_bins_; return ibin; } void RobustREDQueue::resetBins(int v) { int i,j; for (i=0;i<hash_levels_;i++) { for (j=0;j<hash_bins_;j++) { bins_[i][j].score=v; bins_[i][j].last_drop_time=0; } } } void RobustREDQueue::printBins() { double now=Scheduler::instance().clock(); int i,j;

printf("%lf hash_levels_=%d hash_bins_=%d last_drop_time_=%lf\n", now, hash_levels_, hash_bins_, last_drop_time_); for (i=0;i<hash_levels_;i++) { for (j=0;j<hash_bins_;j++) { printf("[%d,%lf]\t", bins_[i][j].score, bins_[i][j].last_drop_time); }

} } double RobustREDQueue::updateBinsDroptime(Packet *pkt) { double now=Scheduler::instance().clock(); int ilevel=0; int ibin=0; for (ilevel=0;ilevel<hash_levels_;ilevel++){ ibin=hashPkt(pkt, ilevel); bins_[ilevel][ibin].last_drop_time=now; } return now; } int RobustREDQueue::dropAnomaly(Packet *pkt) { int rtn=1; double now=Scheduler::instance().clock(); #ifdef RREDDEBUG hdr_ip* iph=hdr_ip::access(pkt);

printf("%lf saddr=%d daddr=%d ", now, iph->saddr(), iph- >daddr()); #endif int ilevel=0; int ibin=0; double time_old=0.000; double T0=0.000; double T1=0.000; double T2=0.000; double T3=0.000; double Tout; for (ilevel=0;ilevel<hash_levels_;ilevel++){ ibin=hashPkt(pkt, ilevel); #ifdef RREDDEBUG

printf("ibin%d=%d ", ilevel, ibin); #endif

if (ilevel==0){

Tout=0.011; time_old=now; }

// Need further analysis if (now-MAX(last_drop_time_, bins_[ilevel][ibin].last_drop_time)<0.010) { //Tout=0.100; //if (now- bins_[ilevel][ibin].last_drop_time<drop_related_period_) { //if (now-last_drop_time_<drop_related_period_) { if (bins_[ilevel][ibin].score>score_min_){ bins_[ilevel][ibin].score=bins_[ilevel][ibin].score-1 } } else { if (bins_[ilevel][ibin].score<score_max_){ bins_[ilevel][ibin].score=bins_[ilevel][ibin].score+1; } } if (bins_[ilevel][ibin].score>=score_pass_) { rtn=0;

//time_old: thoi gian sau cung ma Router tim thay goi tin la goi tin tan cong

Tout=now-time_old;

//Tout: la thoi gian ma khoang giua 2 hang doi ky di nghi ngo goi tin tan cong

time_old=now; } #ifdef RREDDEBUG printf("[%d,%lf] ", bins_[ilevel][ibin].score, bins_[ilevel][ibin].last_drop_time); #endif } //printf("\thoipv =%f",now-MAX(last_drop_time_, bins_[ilevel][ibin].last_drop_time)); //printf("\thoipv =%f",ilevel); #ifdef RREDDEBUG printf("\n"); if (rtn==1) { printf("Anomaly Detected !!\n"); } printBins(); #endif return rtn; }

TÀI LIỆU THAM KHẢO

[1]. Changwang Zhang, Jianping Yin, Zhiping Cai, and Weifeng Chen, “RRED: Robust RED Algorithm to Counter Low-rate Denial-of-Service Attacks”, IEEE Communications Letters, vol.14, pp.489-491, 2010.

[2]. Aleksandar Kuzmanovic and Edward W. Knightly (2006). Low-Rate TCP- Targeted Denial of Service Attacksand Counter Strategies. IEEE/ACM Transactions on Networking, Vol. 14, No. 4, pages 683-696.

[3]. Haibin Sun, John C. S. Lui, David K. Y. Yau (2006). Distributed Mechanism in Detecting and Defending Against the Low-Rate TCP Attack. Computer Networks, Vol. 50, No. 3, pages 2312-2330.

[4]. Guang Yang, Mario Gerla, and M. Y. Sanadidi (2004). Defense against Low-Rate TCP-Targeted Denial-of-Service Attacks. In Proceedings of the Ninth International Symposium on Computers and Communications, Vol. 2, pages 345-350.

[5]. Jelena Mirkovic, Sven Dietrich, David Dittrich, Peter Reiher (2004); Internet Denial of Service: Attack and Defense Mechanisms.chm; Prentice Hall PTR.

[6]. Michael Glenn (2003); A Summary of DoS/DDoS Prevention, Monitoring and Mitigation Techniques in a Service Provider Environment; SANS Institute. [7]. S. Bellovin, M. Leech, and T. Taylor (October 2001), "ICMP Traceback Messages" Internet draft, work in progress.

[8]. J. Mirkovic (August 2003), D-WARD: Source-End Defense Against Distributed Denial-of-Service Attacks, PhD thesis, University of California Los Angeles, http://lasr.cs.ucla.edu/ddos/dward-thesis.pdf.

[9]. E. O'Brien. "NetBouncer: A Practical Client-Legitimacy-Based DDoS Defense via Ingress Filtering".

http://www.networkassociates.com/us/_tier0/nailabs/_media/documents/netboun cer.pdf.

[10]. J. Mirkovic, M. Robinson, P. Reiher, and G. Kuenning (August 2003), "Forming Alliance for DDoS Defenses," Proceedings of the New Security Paradigms Workshop (NSPW 2003), ACM Press, pp. 11–18.

[11]. A. Shevtekar, K. Anantharam and N. Ansari: “Low Rate TCP Denial-of- Service Attack De-tection ad Edge Routers”, IEEE Communica-tions Letters, 9, 4, pp. 363–365 (2005).

[12]. A. Yaar, A. Perrig, and D. Song, (May 2003) "Pi: A Path Identification Mechanism to Defend Against DDoS Attacks", Proceedings of the IEEE Symposium on Security and Privacy, pp. 93–107.

[13]. A. Yaar, A. Perrig, and D. Song, (May 2004) "SIFF: a stateless Internet flow filter to mitigate DDoS flooding attacks", Proceedings of the IEEE Symposium on Security and Privacy, pp. 130–143.

[14]. C. Jin, H. Wang, and K. G. Shin (October 2003), "Hop-Count Filtering: An Effective Defense Against Spoofed DDoS Traffic", Proceedings of the 10th ACM Conference on Computer and Communication Security, ACM Press, pp 30–41.

[15]. Shrews: Low-Rate TCP-Targeted Denial of Service Attacks http://www.cs.northwestern.edu/~akuzma/rice/doc/shrew.pdf

[16]. TCP congestion avoidance algorithm, Wikipedia online, http://en.wikipedia.org/wiki/TCP_congestion_avoidance_algorithm

[17]. Drop Tail, Wikipedia online http://en.wikipedia.org/wiki/Tail_drop

[18]. Bloom Filters, Wikipedia online: http://antognini.ch/papers/ BloomFilters20080620.pdf

[19]. S. Floyd and V. Jacobson, Random Early Detection Gateways for Conges- tion Avoidance, IEEE/ACM Transactions on Networking, pages 397-413, vol 1, issue 4, Aug. 1993.

[20]. R. Mahajan, S. Floyd and D. Wetherall, Controlling high-bandwidth flows at the congested router, In Proceedings of IEEE ICNP 2001, Riverside, CA, Nov. 2001.

[21]. M. Allman, S. Floyd and C. Partridge: “Increas-ing TCP’s Initial Window”, RFC3390 (2002).

[22]. M. Allman, V. Paxson and W. Stevens: “TCP Congestion Control”, RFC2581 (1999).

[23]. G. Yang, M. Gerla and M. Sanadid: “De-fence against Low-rate TCP- targeted Denial-of-Service Attacks”, Proc of ISCC2004 (2004).

[24]. Sally Floyd and Van Jacobson: “Random Early Detection Gateways for Congestion Avoidance”, August 1993 IEEE/ACM Transactions on Networking. [25]. V. Jacobson. Congestion avoidance and control. ACM Computer Comm. Review, 18(4):314–329, Aug. 1988

[26]. V. Paxson and M. Allman. Computing TCP’s retransmission timer, November 2000. Internet RFC 2988

[27]. The Network Simulator NS2: http://isi.edu/nsnam/ns/

[28]. T. J. Ott, T. V. Lakshman, and L. H. Wong, “SRED: Stabilized RED”, Proc. IEEE INFOCOM’99, NY, March 21-25, 1999, pp. 1346-1355

[29]. W. Feng, D. D. Kandlur, D. Saha, and D. G. Shin, “BLUE: A New Class of Active Queue Management Algorithms”, University of Michigan, April 1999.

Một phần của tài liệu Chống tấn công từ chối dịch vụ phân tán tần suất thấp (Trang 40 - 52)

Tải bản đầy đủ (PDF)

(52 trang)