Điều đầu tiên mà bạn có thể thấy ở kiến trúc SDN này, đó là nó khá giống với kiến trúc điện toán đám mây (Cloud computing) hoặc mạng vạn vật (Internet of Things). Đặc điểm đầu tiên của những kiến trúc này đó là lượng dữ liệu trao đổi giữa các thiết bị vô cùng lớn, và cũng rất đa dạng, do đó việc xây dựng một hệ thống tường lửa (Firewall) không phải là ý kiến hay. Lý do là vì bạn sẽ phải thiết kế những bộ luật vô cùng phức tạp và chặt chẽ, cùng với đó là bạn phải luôn cập nhật bộ luật của mình để có thể đáp ứng được với những kiểu tấn công mới.
Tiếp theo, Anti-Virus và Anti-Malware, đây đều là những giải pháp rất tốt để bảo mật mạng SDN. Tuy nhiên, những giải pháp này chỉ có khả năng phát hiện mã độc có trong hệ thống, chứ không thể ngăn chặn được các dạng tấn công mạng như DDoS, Scanning, Spoofing, … Ngày nay các dạng tấn công mạng ngày càng phổ biến và đa dạng, do đó chúng ta cần một giải pháp toàn diện hơn nữa so với giải pháp này. Và do đó, ứng cử viên hàng đầu của chúng ta, đó là IDPS.
ML-Based IDPS
Như các bạn đã biết thì dữ liệu mạng sẽ có hai dạng chính: Uncorrelated data và Serial data, dịch nôm na ra là “dữ liệu rời rạc” và “dữ liệu theo chuỗi”, tuy nhiên mình nghĩ là nên để nguyên tên tiếng anh của chúng thì hơn. Uncorrelated data là những dữ liệu không liên quan tới nhau, có thể là những gói tin HTTP, DNS, SSL, … Và được gửi đi một cách rời rạc. Trong khi đó, Serial data là một chuỗi dữ liệu liên quan tới nhau, hoặc chí ít thì chúng liền mạch với nhau theo một quy luật ổn định nào đó. Và với mỗi loại dữ liệu trên thì chúng ta sẽ lại có những hướng tiếp cận khác nhau.
Đối với Uncorrelated data, chúng ta cũng sẽ có hai hướng tiếp cận để xây dựng một hệ thống ML-Based IDPS, đó là Classification (phân lớp) hoặc Clustering (phân cụm). Đối với việc sử dụng Classification trong Uncorrelated data, chúng ta cần một bộ dữ liệu đã được phân loại chính xác dữ liệu của các kiểu tấn công. Có khá nhiều bộ dữ liệu phục vụ cho việc này, ví dụ như KDD99, hoặc UNSW-NB15.
Tuy nhiên, hầu như dữ liệu mạng đều không có nhãn, và khi đó chúng ta sẽ cần tới Clustering. Việc áp dụng Clustering trong Uncorrelated data cũng khá giống với việc áp dụng Classification, chỉ khác ở chỗ là lựa chọn thuật toán phân cụm thay vì thuật toán phân lớp mà thôi.
Đối với Serial data, chúng ta chỉ có thể sử dụng các thuật toán phân cụm để phát hiện những dữ liệu bất thường. Tuy nhiên, kết quả thực nghiệm cho thấy việc áp dụng các thuật toán Clustering vào những dạng dữ liệu như này thực sự không hiệu quả cho
28 | Page lắm, do đó chúng ta cần những thuật toán học sâu (Deep Learning) như LSTM,
AutoEncoder, GAN, ….
Xây dựng hệ thống
Quy trình hoạt động của hệ thống có thể được tóm tắt như sau:
• Các dữ liệu mạng sẽ được Capture bởi thành phần Core của Control Plane. Dữ
liệu mạng trong ONOS sẽ được truyền đi dưới dạng các Flow (khác với các dạng Packet thông thường). Dạng dữ liệu mạng này có ưu điểm là số lượng các gói tin sẽ ít hơn nhiều so với dạng Packet thông thường, do đó sẽ giúp cho hệ thống có thể hoạt động tốt mà không bị quá tải.
• Các dữ liệu được Capture này sẽ được truyền tới ứng dụng IDPS của chúng ta ở
trên Application Plane.
• Các dữ liệu này sẽ được truyền cho thành phần IDPS Manager của ứng dụng
IDPS để chịu trách nhiệm phân tích gói tin và đưa ra dự đoán là gói tin bình thường hay gói tin tấn công. Thành phần IDPS Manager này sẽ gọi tới Module chạy Machine Learning ở bên ngoài để chạy thuật toán và xử lý dữ liệu (như đã giải thích ở trên, Machine Learning sử dụng Python để lập trình, trong khi đó ONOS lại sử dụng Java, nên mình phải thiết kế Module Machine Learning ở ngoài).
• Từ kết quả của thuật toán, đưa ra các cập nhật cho Flow Rules nếu chưa có luật
ngăn chặn kiểu tấn công đó.
29 | Page
Nhận xét
Mạng SDN sẽ có cái nhìn toàn cục hơn so với mạng thông thường, khi mà máy Controller sẽ quản lý và điều khiển một cách tập trung hầu như toàn bộ các hoạt động của mạng. Điều này dẫn tới việc áp dụng IDPS trong mạng SDN sẽ hiệu quả và dễ triển khai hơn nhiều so với mạng thông thường, tuy nhiên sẽ lại có thêm một số vấn đề mới phát sinh, chẳng hạn như nếu máy Controller bị tấn công thành công thì IDPS đó sẽ không còn đáng tin cậy nữa, hoặc vấn đề về việc khó mở rộng hệ thống mạng. Thay vì sử dụng các Packet thông thường thì mạng SDN sử dụng các Flow để truyền dữ liệu (trong một đơn vị thời gian thì số lượng Flow sẽ ít hơn rất nhiều so với số lượng Packet), do đó việc áp dụng Machine Learning trong SDN sẽ không phải lo về vấn đề quá tải dữ liệu giống như trong mạng IoT
Kết luận
Qua bảng trên, các bạn có thể thấy 2 thuật toán Random Forest và Decision Tree cho ra độ chính xác tốt nhất, cùng với đó Decision Tree cho thời gian training nhanh nhất.
Dưới đây là bảng Confusion Matrix của 2 thuật toán trên (bảng này là kết quả của việc phân loại tập dữ liệu Test), trong đó các hàng là dữ liệu chính xác (True label), còn các cột là dữ liệu dự đoán của thuật toán (Predict label):
30 | Page Qua các bảng trên thì ta có thể thấy kiểu tấn công “Ping of Death” có vẻ dễ bị nhận nhầm, trong khi các kiểu tấn công còn lại thì phân biệt khá tốt.