• SPM kiểm tra, xác thực gói tin CliACK (thơng qua cặp giá trị SEQ_Num và ACK_Num của các gói tin SYN, SYN-ACK và CliACK) và ra quyết định xử lý gói tin SYN (Bước 8): Nếu q trình bắt tay ba bước hợp lệ, tiến hành gộp luồng, các gói tin sau của luồng sẽ được trao đổi trực tiếp giữa máy chủ và máy khách (Bước 9). Nếu khơng có gói tin CliACK hoặc gói tin CliACK khơng hợp lệ, tiến hành xóa luồng. SPM tạo gói tin CliACK giả, RST giả để kết thúc phiên kết nối (Bước 9).
Capture và xử lý các gói tin bắt tay 3 bước tại OFS
Trong giải pháp SSP, OFS có nhiệm vụ bắt giữ các gói tin bắt tay ba bước và chuyển tới máy chủ đồng thời chuyển tới SPM trên Bộ điều khiển để giám sát q trình này. Lưu đồ thuật tốn q trình capture các gói tin bắt tay ba bước của một kết nối TCP được mơ tả như trong Hình 2.9.
Theo đó, OFS phải thực hiện so khớp trên các mục luồng để capture các gói tin SYN (đến từ Client), SYN-ACK (đến từ Server), gói tin xác nhận CliACK đầu tiên của Client và có các action xử lý tương ứng như trình bày trong lưu đồ. Để thực hiện điều đó, SSP tổ chức các mục luồng trên OFS:
• theo trật tự và mức độ ưu tiên (priority) giữa các mục luồng thích hợp,
• sử dụng khả năng so khớp với các trường Flag quy định bởi Openflow 1.5,
• thiết lập loại mục luồng chủ động (proactive) và đáp ứng (reactive) thích hợp.
Hình 2.9. Lưu đồ q trình capture và xử lý các gói tin bắt tay ba bước tại OFS
Bảng 2.6 là ví dụ về cấu trúc, cách tổ chức, sắp xếp các bảng luồng, thiết lập các thuộc tính cơ bản của các mục luồng để thực hiện capture các gói tin bắt tay ba bước theo giải pháp SSP. Hệ thống có cổng gateway kết nối Internet là port_number = 1, các cổng kết nối với máy chủ nội bộ gồm port_number = 2,3,4. Mức độ ưu tiên trong một bảng luồng được thiết lập từ trên xuống dưới.
• Flow Table 0: Gồm các mục luồng loại chủ động, tồn tại vĩnh viễn để so khớp và chọn
ra các gói SYN đến từ client (FE11, FE12, FE13), SYN-ACK đến từ server (FE2) , gói tin ACK đến từ client (FE3). Mục luồng FE4 chỉ ra hướng xử lý khi table-miss xảy ra đối với bảng luồng.
Các mục luồng FE1x, FE2, FE3 sử dụng trường so khớp Flags để capture các loại gói tin tương ứng.
• Flow Table 1: Bao gồm các mục luồng FE5x được cài đặt bởi SPM cho mỗi kết nối
TCP để so khớp và capture các gói CliACK đầu tiên được xác nhận từ client hồn thành q trình bắt tay 3 bước. Action tương ứng của các mục luồng này là Chuyển tới Bộ điều khiển. Mỗi mục luồng được thiết lập thời gian timeout chính bằng thời gian chờ gói tin CliACK. Nếu
báo tới SPM. Mục luồng FE6 chỉ ra hướng xử lý table-miss.
• Flow Table 2: Gồm các mục luồng loại chủ động thiết lập hướng xử lý các gói tin trao
đổi dữ liệu giữa client và server sau khi đã được xác thực quá trình bắt tay ba bước.
Bảng 2.6. Ví dụ về cấu trúc và sắp xếp các mục luồng trong bảng luồng của SSP
Quản lý và giám sát quá trình bắt tay ba bước tại Module SPM
Module SPM được lập trình như một ứng dụng bảo mật có thể tích hợp trực tiếp trong bộ điều khiển hoặc thực thi độc lập trong các máy chủ bảo mật để giám sát quá trình bắt tay ba bước và xử lý gói tin khi xác định có tấn cơng xảy ra.
Quy trình xử lý và giám sát quá trình bắt tay ba bước của các kết nối TCP tại SPM được thể hiện trong lưu đồ Hình 2.10. Các thơng tin giám sát được quản lý trong bảng FMT có cấu trúc như Bảng 2.7.
• Tại mỗi sự kiện packet-in, nếu gói tin đến là SYN-ACK từ một máy chủ cần bảo vệ, SPM tạo mục luồng capture gói tin CliACK, tính giá trị thời gian chờ tối đa t (sẽ trình bày ở
mục 2.3.4.3) và thiết lập giá trị thời gian này cho tham số idle timeout của mục luồng. Đồng thời SPM tạo một mục thông tin trong bảng FMT để quản lý kết nối dang dở (HOC) với các thơng tin thuộc tính tương ứng trong đó lưu trữ giá trị SEQ_Num.
Hình 2.10. Lưu đồ hoạt động của mô đun SPM tại bộ điều khiển Bảng 2.7. Cấu trúc bảng giám sát luồng FMT Bảng 2.7. Cấu trúc bảng giám sát luồng FMT
FlowID srcIP srcPort dstIP dstPort SEQ_Num
1 IPs1 Ps1 IPd1 Pd1 Seq1
2 IPs2 Ps2 IPd2 Pd2 Seq2
3 IPs3 Ps3 IPd3 Pd3 Seq3
… … … … … …
• Nếu gói tin đến là gói tin ACK, SPM sẽ tìm mục thơng tin tương ứng trong bảng FMT và so sánh giá trị số hiệu ACK_Num với giá trị lưu trữ SEQ_Num trong mục thông tin. Nếu cặp giá trị này khớp nhau, quá trình bắt tay ba bước được xác thực thành cơng và gói tin được chuyển tiếp tới máy chủ đích. Nếu khơng tìm thấy mục thơng tin tương ứng hoặc cặp giá trị
ACK_Num và SEQ_Num không khớp nhau, SPM xác định gói tin SYN đến từ một nguồn khơng tin cậy, khi đó gói tin các mục thơng tin tương ứng sẽ bị hủy.
• Khi hết thời gian chờ timeout, nếu khơng nhận được gói tin CliACK tương ứng, SPM sẽ tạo ra gói tin ACK giả phía client để gửi tới máy chủ để kết thúc q trình bắt tay ba bước và ngay sau đó, gửi gói tin RST để đóng kết nối mở HOC tương ứng trên máy chủ.
Tính tốn thời gian chờ gói CliACK của các luồng
Theo giao thức TCP, sau khi nhận được gói tin SYN, máy chủ sẽ tạo ra một vùng nhớ TCB để chứa thông tin kết nối trước khi gửi gói tin SYN-ACK tới máy khách. Vùng nhớ được tồn tại trong suốt thời gian chờ TIMEWAIT đợi gói tin xác nhận CliACK từ phía máy khách. Thời gian chờ này được kẻ tấn cơng lợi dụng để duy trì sự chiếm đoạt tài nguyên bộ nhớ TCB bởi các kết nối dang dở HOC trên máy chủ. Tùy theo hệ điều hành, thời gian này thường được đặt cố định và có giá trị từ 75s đến 189s [113]. Để khảo sát khoảng thời gian nhận được gói tin SYN và gói tin CliACK trong lưu lượng mạng thực tế, bộ lưu lượng lành tính CAIDA 2013 [107] được phân tích và cho kết quả thống kê CDF như trong Hình 2.11. Kết quả thống kê cho thấy, gần 99% kết nối TCP trong lưu lượng mạng thực tế có gói tin CliACK đến sau gói tin SYN trong vịng 2s. Do đó thiết lập thời gian chờ q lớn là khơng cần thiết.
Giá trị thời gian chờ cao sẽ đảm bảo cho kết nối được thành công khi độ trễ gói tin đường truyền lớn, tuy nhiên điều này tạo cơ hội cho sự chiếm dụng tài ngun vơ ích trên máy chủ, nhất là khi tấn công SYN Flood xảy ra. Để cân bằng giữa hai yếu tố này, giải pháp SSP đưa ra cơ chế điều chỉnh thời gian chờ theo số lượng kết nối đến máy chủ theo công thức:
𝑡𝑡= � 𝑇𝑇1, 𝑛𝑛 ≤ 𝐹𝐹
𝑇𝑇2+ (𝑇𝑇1− 𝑇𝑇2)𝑒𝑒−𝑘𝑘𝑛𝑛−𝑁𝑁𝑁𝑁 , 𝑛𝑛 > 𝐹𝐹 (2.12) trong đó:
• n là số lượng kết nối TCP dang dở đang tồn tại tới máy chủ đích,
• N là số kết nối TCP đang mở trung bình mà một máy chủ phải xử lý trong điều kiện
bình thường. Trên thực tế giá trị N phụ thuộc vào đặc điểm, tính chất dịch vụ trong mỗi máy chủ,
• 𝑇𝑇1 là thời gian chờ lớn nhất,
• 𝑇𝑇2 là thời gian chờ nhỏ nhất,
• k là hệ số hiệu chỉnh.
Biểu đồ trong Hình 2.12 mơ tả sự thay đổi thời gian chờ t theo số lượng yêu cầu kết nối tới máy chủ n. Nếu số lượng yêu cầu kết nối n nhỏ hơn ngưỡng N, giá trị t được chọn bằng 𝑇𝑇1 –
thường được chọn bằng giá trị TIME_WAIT được sử dụng bởi máy chủ. Nếu n vượt quá N,
SPM điều chỉnh giảm giá trị t tương ứng với phần vượt quá giữa n so với N. Khi đạt đến giá trị thời gian chờ t, mặc dù chưa hết thời gian TIME_WAIT, SPM chủ động gửi gói tin CliACK giả để hồn tất q trình bắt tay ba bước trên máy chủ và sau đó gửi gói tin RST để kết thúc kết nối. Nhờ đó, số lượng kết nối dang dở HOC trên máy chủ được giảm xuống, tài nguyên bộ nhớ được giải phóng, phục vụ cho các yêu cầu kết nối tiếp theo.
Hình 2.11. Thống kê CDF khoảng thời gian giữa gói tin SYN và gói tin CliACK của lưu lượng mạng thực tế
Hình 2.12. Hiệu chỉnh thời gian chờ của các luồng
Điều chỉnh thời gian chờ đồng thời cịn giảm sự chiếm dụng tài ngun vơ ích trên OFS bởi các mục luồng tạo ra tương ứng với các gói tin SYN tấn cơng. Các mục luồng này được tạo ra mà khơng có gói tin nào được khớp, tồn tại cho đến khi hết thời gian chờ. Khi tấn công xảy ra, số lượng mục luồng vơ ích tăng lên nhanh chóng và làm cạn kiệt khơng gian bộ nhớ TCAM của bộ chuyển mạch.
Thiết lập ngưỡng thay đổi chính sách xử lý gói tin SYN tại OFS
Năng lực xử lý của bộ chuyển mạch phụ thuộc nhiều vào cấu hình phần cứng của nó. Năng
lực này là hữu hạn và nó giới hạn điều kiện làm việc của bộ chuyển mạch. Kẻ tấn công DoS/DDoS thường cố gắng tạo ra lưu lượng vượt quá năng lực xử lý này, khi đó hệ thống không thể hoạt động hoặc khơng thể phục vụ một kết nối bình thường khác. Mỗi thiết bị thường có cơ chế bảo vệ nhờ thiết lập các ngưỡng hoạt động. Giải pháp SPM sử dụng cơ chế xử lý điều khiển tự động của kỹ thuật SDN/Openflow để thiết lập ngưỡng hoạt động, bảo vệ bộ chuyển mạch khi có tấn cơng SYN Flood xảy ra. SPM định nghĩa hai chế độ hoạt động của bộ chuyển mạch:
- Chấp nhận xử lý gói tin SYN (Activated): Tất cả các gói tin SYN đến được xử lý bình
thường theo quy trình mơ tả ở trên.
Hình 2.13. Sơ đồ chuyển tiếp chính sách xử lý gói tin SYN tại bộ chuyển mạch
Sự chuyển tiếp giữa trạng thái Activated và Deactivated phụ thuộc vào số lượng kết nối dở dang n mà bộ chuyển mạch đang xử lý và hai ngưỡng M1, M2 (M1 > M2):
• M1 là ngưỡng cao của n. Khi n vượt quá ngưỡng này, SSP chuyển sang chế độ Giới
hạn xử lý gói tin SYN.
• M2 là ngưỡng về mức bình thường của n. Khi OFS đang làm việc ở chế độ Giới hạn
xử lý gói tin SYN, nếu n giảm xuống mức dưới giá trị ngưỡng M2, thì OFS chuyển về chế độ Chấp nhận xử lý gói tin SYN, nghĩa là tất cả các gói tin SYN đến được chuyển tiếp và xử lý bình thường.
Giá trị của M1 và M2 được xác định dựa trên các điều kiện hoạt động bình thường của mỗi bộ chuyển mạch. Sơ đồ chuyển tiếp giữa hai trạng thái này theo sự thay đổi giá trị n được mô tả như trong Hình 2.13.
2.3.5. Phân tích và đánh giá hiệu năng của giải pháp
Mơ hình thử nghiệm testbed
Hiệu năng của giải pháp SSP được kiểm nghiệm và đánh giá qua mơ hình thử nghiệm như trong Hình 2.14. Mơ hình có cấu trúc bao gồm:
• Bộ điều khiển Floodlight [74] được cài đặt trên máy tính chạy hệ điều hành Ubuntu version 14.04 với cấu hình: CPU Intel TM Core i3-2330M @ 2.2GHz, 500GB HDD, 4GB RAM.
• Bộ chuyển mạch OpenFlow được xây dựng dựa trên một NetGPGA [114] Card của Xilinx VirtexTM-II pro 50 4x1 Gbps Ethernet; 4.5 MB SRAM và 64 MB DDR2; FPGA Spartan II.
• Máy chủ cài đặt dịch vụ FTP trên cấu hình CPU Intel TM Core i3-2330M @ 2.2GHz, 500GB HDD, 4GB RAM. Hệ điều hành Windows Server 2012.
• Lưu lượng lành tính được tạo ra từ một phần mềm ứng dụng thực hiện tạo 50 yêu cầu tải tệp tin tới máy chủ dịch vụ. Lưu lượng tấn công được phát, biên tập bởi công cụ BoNeSi [115] và phát lại vào hệ thống bởi TCPReplay [116]. BoNeSi được cấu hình với phương thức tấn cơng SYN Flood, địa chỉ IP nguồn phát sinh ngẫu nhiên, tốc độ trong mỗi trường hợp giữ ổn định, tăng dần từ mức 100 pps đến khi vượt khả năng chịu tải của hệ thống.
Hình 2.14. Mơ hình testbed đánh giá hiệu năng giải pháp SSP
Các tham số hệ thống và kịch bản thử nghiệm để so sánh giữa các giải pháp:
• Lưu lượng tấn cơng được phát đi với các tốc độ khác nhau từ 100 pps (gói/s) đến 1.000 pps trong các mơ hình hệ thống khác nhau.
• Bằng phương pháp thử tải hệ thống, các giá trị M1 và M2 được chọn lần lượt là M1 = 7.500 và M2 = 7.000, N = 500.
• Căn cứ kết quả thống kê ở biểu đồ Hình 2.11 và giá trị thời gian TIME_WAIT của các hệ điều hành phổ biến [113], [117], các giá trị T1, T2 được chọn lần lượt là: T1 = 15s, T2 = 2s, k = 1,5.
Tỷ lệ kết nối thành cơng của lưu lượng lành tính
Mục tiêu của tấn công DDoS là ngăn cản khơng cho các lưu lượng lành tính kết nối tới máy chủ dịch vụ. Một giải pháp chống tấn công DDoS hiệu quả phải đảm bảo tỷ lệ kết nối thành công cao. Trong mơ hình thử nghiệm, hai tham số được đo và tính tốn bao gồm:
• Tỷ lệ kết nối thành cơng được tính bởi số u cầu tải tệp tin thực hiện thành công trên
tổng số yêu cầu phát tới máy chủ FTP.
• Thời gian kết nối trung bình được tính bởi khoảng thời gian từ khi client lành tính gửi gói tin SYN tới khi nhận gói tin dữ liệu đầu tiên trong phiên kết nối từ máy chủ FTP. Các tham số được đo trong hai mơ hình SSP và Openflow chuẩn với các tốc độ tấn công khác nhau. Ở mơ hình Openflow chuẩn, các tham số của các mục luồng được xác định bởi 4 tham số: địa chỉ IP nguồn, địa chỉ IP đích, số hiệu cổng nguồn và số hiệu cổng đích. Với mỗi tốc độ tấn cơng, lưu lượng tấn công được phát trong thời gian 100s. Sau khi lưu lượng tấn công được phát đi được 20s, lưu lượng lành tính được phát đi với tốc độ 50 yêu cầu tải tệp tin/s. Kích thước tệp tin trên máy chủ có dung lượng 2,16 MB.
Hình 2.15. Tỷ lệ kết nối thành công từ lưu lượng lành tính khi máy chủ chịu tấn cơng DDoS với cường độ tấn cơng khác nhau
Hình 2.16. Thời gian kết nối trung bình của lưu lượng lành tính khi máy chủ chịu tấn cơng với cường độ tấn cơng khác nhau
Kết quả cho thấy:
• Giải pháp SSP cải thiện đáng kể tỷ lệ kết nối thành cơng so với mơ hình Openflow chuẩn, vẫn đạt mức 85% trong khi tỷ lệ kết nối ở mơ hình Openflow chuẩn suy giảm xuống 5% ở tốc độ tấn công 600pps. Ở tốc độ tấn công 700 pps, lưu lượng lành tính khơng thể kết nối tới máy chủ ở giải pháp Openflow, trong khi ở SSP vẫn duy trì tỷ lệ kết nối cao và suy giảm xuống mức 58% ở tốc độ tấn cơng 1.000 pps.
• Thời gian kết nối trung bình trong mơ hình Openflow chuẩn tăng mạnh lên đến 120ms ở tốc độ tấn công 600pps trong khi giá trị tham số này duy trì ở mức ổn định dưới 10ms. Tuy nhiên ở tốc độ tấn cơng dưới 100pps, thời gian kết nối trung bình của giải pháp Openflow chuẩn thấp hơn so với SSP vì cơ chế kiểm sốt q trình bắt tay ba bước ở giải pháp này.
(a)
(b)
(c)
Hình 2.17. Số kết nối đang mở tại máy chủ với các cường độ tấn công khác nhau
Số lượng kết nối dang dở trên máy chủ
Mục tiêu của tấn công SYN Flood là kẻ tấn công tạo ra hàng loạt các kết nối dang dở trên máy chủ nhằm làm cạn kiệt tài nguyên kết nối mạng và máy chủ không thể thực hiện kết nối với các lưu lượng lành tính. Để đánh giá hiệu năng của giải pháp, số lượng kết nối dang dở trên