Nội dung chính của đồ án xoay quanh việc đề xuất phương pháp phát hiện tấn công từ chối dịch vụ DDoS trong môi trường điện toán đám mây, bằng cách áp dụng học sâu kết hợp với các công ng
CƠ SỞ LÝ THUYẾT
Các mô hình điện toán đám mây
2.1.1 Điện toán đám mây – Cloud Computing
Điện toán đám mây, lần đầu tiên được đề cập trong tài liệu của Compaq vào năm 1996, đã được Giáo sư Ramnath Chellappa từ Đại học Emory nhắc đến vào năm 1997 Đây là công nghệ cung cấp dịch vụ tính toán qua Internet, bao gồm máy chủ, lưu trữ, cơ sở dữ liệu, mạng, phần mềm, phân tích và trí tuệ nhân tạo Điện toán đám mây mang lại giải pháp thay thế hiệu quả cho các trung tâm dữ liệu truyền thống tại chỗ.
Có ba loại điện toán đám mây chính: đám mây công cộng, đám mây riêng và đám mây kết hợp Đám mây công cộng được sở hữu và vận hành bởi các nhà cung cấp dịch vụ bên thứ ba, trong khi đám mây riêng được sử dụng độc quyền bởi một doanh nghiệp hoặc tổ chức cụ thể Đám mây kết hợp kết hợp cả hai loại trên, cho phép chia sẻ dữ liệu và ứng dụng giữa đám mây công cộng và riêng Điện toán đám mây mang lại nhiều lợi ích cho người dùng.
Giảm chi phí lớn cho việc mua phần cứng và phần mềm
Cung cấp tốc độ truy cập nhanh chóng vào các tài nguyên, thường chỉ với vài cú nhấp chuột
Cho phép mở rộng hoặc thu hẹp yêu cầu về tài nguyên theo yêu cầu kinh doanh
Nó giúp tăng năng suất bằng cách giảm nỗ lực vận hành
Cung cấp độ tin cậy cao với chi phí sao lưu và khôi phục dữ liệu thấp và rất nhanh cho việc tiếp tục kinh doanh
Cung cấp an ninh với nhiều chính sách, công nghệ và điều khiển mạnh mẽ để tăng cường bảo mật dữ liệu
2.1.2 Các loại dịch vụ điện toán đám mây
Trong điện toán đám mây, có nhiều loại dịch vụ đáp ứng nhu cầu cụ thể của người dùng, mỗi loại cung cấp mức độ kiểm soát, linh hoạt và khả năng quản lý khác nhau Hình 1 dưới đây minh họa tổng quan về các loại dịch vụ điện toán đám mây chính.
Hình 2.1: Các loại dịch vụ trên điện toán đám mây a) Dịch vụ cơ sở hạ tầng (IaaS)
IaaS (Infrastructure-as-a-Service) cung cấp hạ tầng dưới dạng dịch vụ, cho phép người dùng triển khai và chạy phần mềm trên máy ảo như trên máy chủ thực Người dùng có thể lưu trữ dữ liệu cá nhân trên “đám mây” và quản lý tài nguyên được cung cấp mà không cần kiểm soát hạ tầng vật lý Họ cũng có khả năng yêu cầu mở rộng tài nguyên theo nhu cầu sử dụng.
Hình 2.2: Dịch vụ hạ tầng (IaaS) b) Dịch vụ nền tảng (PaaS)
PaaS (Platform as a Service) cung cấp một nền tảng trừu tượng giúp phát triển ứng dụng dễ dàng và nhanh chóng Nó loại bỏ lo ngại về chi phí và sự phức tạp trong việc quản lý phần cứng và phần mềm cơ bản Với PaaS, nhà phát triển không cần tải xuống hay cài đặt phần mềm, vì tất cả các tính năng cần thiết để xây dựng và cung cấp ứng dụng web đã được tích hợp sẵn Điều này cho phép các nhà phát triển tập trung vào việc tạo ra sản phẩm mà không phải bận tâm đến việc thiết lập máy chủ hay cơ sở dữ liệu.
Hình 2.3: Dịch vụ nền tảng (PaaS)
6 c) Dịch vụ phần mềm (SaaS)
SaaS (Phần mềm dưới dạng dịch vụ) là mô hình cung cấp ứng dụng cho phép người dùng truy cập và sử dụng theo nhu cầu Các nhà cung cấp SaaS có thể lưu trữ ứng dụng trên máy chủ của họ hoặc cho phép người dùng tải xuống và cài đặt trên thiết bị cá nhân, đồng thời có khả năng vô hiệu hóa ứng dụng khi không cần thiết Chức năng theo yêu cầu có thể được quản lý nội bộ hoặc chia sẻ bản quyền với các nhà cung cấp ứng dụng bên thứ ba.
Hình 2.4: Dịch vụ phần mềm (SaaS)
2.1.3 Lợi ích của việc tích hợp Cloud trong quá trình phát triển sản phẩm Điện toán đám mây mang lại nhiều lợi ích đáng kể, và có thể tổng kết thành sáu giá trị cốt lõi chính:
Điện toán đám mây giúp doanh nghiệp tiết kiệm chi phí bằng cách chỉ yêu cầu thanh toán cho tài nguyên và dịch vụ thực sự sử dụng Điều này loại bỏ nhu cầu đầu tư lớn vào cơ sở hạ tầng và phần mềm, cho phép doanh nghiệp linh hoạt điều chỉnh ngân sách và tập trung vào phát triển kinh doanh.
Điện toán đám mây mang lại khả năng mở rộng linh hoạt, cho phép doanh nghiệp tự động điều chỉnh tài nguyên theo nhu cầu công việc Nhờ đó, họ có thể dễ dàng thích ứng với sự biến động mà không cần đầu tư vào phần cứng mới hoặc quản lý quy trình mở rộng phức tạp.
Điện toán đám mây cho phép người dùng truy cập dữ liệu và ứng dụng từ bất kỳ thiết bị nào có kết nối internet, mang lại sự linh hoạt trong công việc và giúp nhân viên làm việc hiệu quả ở mọi nơi.
Bảo mật và sao lưu tự động là những tính năng quan trọng mà các nhà cung cấp dịch vụ điện toán đám mây thường cung cấp, giúp giảm thiểu rủi ro mất dữ liệu quan trọng Những biện pháp này đảm bảo an toàn cho thông tin và duy trì tính liên tục trong quản lý dữ liệu.
Doanh nghiệp có thể dễ dàng triển khai và vận hành các ứng dụng mạnh mẽ mà không gặp phải những rắc rối về cấu hình phức tạp, từ đó nâng cao khả năng tiếp cận và sử dụng công nghệ mới một cách nhanh chóng.
Điện toán đám mây tối ưu hóa việc sử dụng tài nguyên, giúp giảm lãng phí và nâng cao hiệu suất cho doanh nghiệp Các công cụ theo dõi và quản lý tài nguyên cung cấp cái nhìn sâu sắc về việc sử dụng nguồn lực, từ đó giúp tối ưu hóa chúng một cách hiệu quả.
Công nghệ ảo hóa
2.2.1 Virtualization là gì? Ảo hóa là công nghệ cho phép tạo ra các phiên bản ảo của máy chủ, kho lưu trữ, mạng, và nhiều thiết bị vật lý khác Phần mềm ảo hóa mô phỏng các chức năng của phần cứng vật lý, cho phép chạy nhiều máy ảo trên một máy chủ vật lý duy nhất Doanh nghiệp sử dụng công nghệ ảo hóa để tối ưu hóa việc sử dụng tài nguyên phần cứng và tối đa hóa lợi nhuận từ các khoản đầu tư lớn Công nghệ này cũng hỗ trợ nhiều dịch vụ điện toán đám mây, giúp các tổ chức quản lý cơ sở hạ tầng hiệu quả hơn
Công nghệ ảo hóa cho phép quản trị viên triển khai và quản lý nhiều máy ảo trên một máy chủ vật lý, giúp giảm thiểu lãng phí tài nguyên và tối ưu hóa việc sử dụng Nhờ đó, doanh nghiệp tiết kiệm chi phí phần cứng, dễ dàng mở rộng, phản hồi nhanh chóng với hệ thống và thực hiện sao lưu dữ liệu linh hoạt.
Hình 2.5: Kiến trúc truyền thống và kiến trúc ảo hóa
Công nghệ ảo hóa không chỉ giới hạn ở phần cứng mà còn mở rộng khả năng triển khai môi trường phần mềm, mạng và lưu trữ ảo Với ứng dụng đa dạng, công nghệ này đóng vai trò quan trọng trong quản lý trung tâm dữ liệu, phát triển ứng dụng, cũng như trong lĩnh vực nghiên cứu và giáo dục.
Công nghệ ảo hóa đóng vai trò quan trọng trong việc tối ưu hóa tài nguyên, nâng cao tính linh hoạt và bảo mật cho hạ tầng máy tính hiện đại Nó không chỉ là yếu tố then chốt trong quản lý hạ tầng mà còn là nền tảng thiết yếu cho các xu hướng công nghệ tiên tiến như điện toán đám mây và containerization.
2.2.2 Lịch sử phát triển của công nghệ ảo hóa
Công nghệ ảo hóa, ra đời từ những năm 1960, đã trải qua nhiều giai đoạn phát triển quan trọng, bắt đầu với VM/370 - hệ điều hành máy ảo đầu tiên Sự phát triển của ảo hóa phần cứng đã giúp chia sẻ tài nguyên hiệu quả, và vào những năm 1990, công nghệ này trở nên phổ biến trong doanh nghiệp, đặt nền tảng cho điện toán đám mây Hiện nay, ảo hóa tiếp tục phát triển mạnh mẽ với nhiều tính năng mới, được ứng dụng rộng rãi trong điện toán đám mây, trí tuệ nhân tạo và Internet of Things (IoT).
Sự phát triển của công nghệ ảo hóa gắn liền với những nhân vật tiên phong như Robert Bemer, Gerald J Popek, Robert P Goldberg, Paul McCartney, và công ty
VMware đã có những đóng góp đáng kể trong lĩnh vực ảo hóa, giúp thúc đẩy sự đổi mới và phát triển mạnh mẽ trong ngành công nghệ thông tin.
Hypervisor, hay còn gọi là Virtual Machine Monitor (VMM), là phần mềm, firmware hoặc phần cứng chuyên dụng cho việc tạo ra các máy ảo Để thực hiện ảo hóa trên một máy tính, việc cài đặt Hypervisor là cần thiết trên hệ thống đó.
Có hai loại Hypervisor dựa trên cách cài đặt: Bare-metal Hypervisor và Hosted Hypervisor
2.2.3.1 Bare – metal Hypervisor Đây là loại Hypervisor chạy trực tiếp trên phần cứng của máy chủ, không thông qua một OS nào cả, vì vậy còn có tên gọi là Bare-metal Vị trí hoạt động của loại này có thể được hình dung bằng mô hình sau :
Bare-metal Hypervisor được cài đặt trực tiếp trên máy chủ mà không cần hệ điều hành trung gian Những Hypervisor này thường đi kèm với phần mềm quản lý, giúp người dùng dễ dàng thao tác Chẳng hạn, VMware ESX kết hợp với VMware vSphere Client, cho phép người dùng tạo và sử dụng máy ảo như các máy vật lý.
Các loại Hypervisor hoạt động như phần mềm thông thường, cài đặt trên nền tảng hệ điều hành và sử dụng các dịch vụ mà hệ điều hành cung cấp để phân phối tài nguyên cho máy ảo Hypervisor hoạt động như một lớp phần mềm riêng biệt so với hệ điều hành máy chủ, với các hệ điều hành máy ảo nằm trên lớp thứ ba so với phần cứng máy chủ Mô hình hoạt động của loại Hypervisor này được mô tả rõ ràng trong kiến trúc của nó.
Một trong những ưu điểm nổi bật của Hosted Hypervisor là sự đơn giản trong việc triển khai và sử dụng Người dùng có thể dễ dàng cài đặt và chạy trên hệ điều hành chủ mà không cần can thiệp sâu vào cấu hình phần cứng Điều này khiến Hosted Hypervisor trở thành lựa chọn phổ biến cho cá nhân và nhóm phát triển, giúp họ tận dụng lợi ích của ảo hóa mà không phải đối mặt với sự phức tạp trong quản lý tài nguyên máy chủ.
Việc chọn loại Hypervisor phù hợp cần dựa trên nhu cầu sử dụng cụ thể Nếu bạn cần hiệu suất cao và kiểm soát tối ưu, Bare-metal Hypervisor là sự lựa chọn lý tưởng Ngược lại, nếu bạn ưu tiên tính linh hoạt và dễ sử dụng, Hosted Hypervisor sẽ là lựa chọn thích hợp hơn.
2.2.4 Giới thiệu về máy ảo Container
Máy ảo Container, hay còn gọi là Container, là một phương pháp ảo hóa nhẹ giúp đóng gói ứng dụng cùng với tất cả thư viện, gói phụ thuộc và các thành phần
Hình 2.8: Mô hình máy ảo truyền thống
Trước đây, mô hình truyền thống bắt đầu với việc xây dựng kiến trúc phần cứng, cài đặt hệ điều hành và triển khai ứng dụng, nhưng gặp nhiều vấn đề như khó khăn trong việc cấu hình tài nguyên cho máy ảo và thời gian khởi động lâu Khi tài nguyên đã được phân bổ cho máy ảo, máy thật không thể sử dụng lại chúng, dẫn đến lãng phí thời gian và hiệu suất Để khắc phục những vấn đề này, mô hình "Microservices" đã xuất hiện như một giải pháp mới, chuyển đổi từ kiến trúc "Monolithic", giúp cải thiện tính linh hoạt trong vận hành và phát triển phần mềm Giải pháp này chính là Container.
Hình 2.9: Mô hình máy ảo Container
Với công nghệ container, nhiều container có thể được triển khai trên một máy chủ vật lý, sử dụng chung kernel của máy chủ và chia sẻ tài nguyên, khác với các máy ảo truyền thống Container mang lại nhiều lợi ích vượt trội so với máy ảo, bao gồm hiệu suất cao hơn, tiết kiệm tài nguyên và khả năng triển khai nhanh chóng.
Linh động: Triển khai ở bất kỳ nơi đâu do sự phụ thuộc của ứng dụng vào tầng
OS cũng như cơ sở hạ tầng được loại bỏ
Hệ thống phát hiện xâm nhập
Giám sát mạng là quá trình liên tục theo dõi hoạt động của mạng máy tính để phát hiện và xử lý các vấn đề như chậm trễ, sự cố hoặc tình trạng không hoạt động Mục tiêu chính của giám sát mạng là thông báo kịp thời cho quản trị viên về bất kỳ vấn đề nào thông qua email, tin nhắn SMS hoặc các cảnh báo khác, nhằm duy trì hoạt động ổn định của hệ thống mạng Đây là một phần quan trọng trong quản lý mạng, giúp điều tra các sự cố liên quan đến máy chủ quá tải, kết nối mạng hoặc thiết bị mạng bị hư hỏng.
Giám sát mạng được thực hiện thông qua các công cụ phần mềm chẩn đoán, thiết bị phần cứng kết nối mạng và phân tích lưu lượng cùng hoạt động của thiết bị mạng Hai đặc điểm chính của giám sát mạng liên tục là khả năng theo dõi và phân tích thời gian thực.
Khả năng tạo ra các cảnh báo mà những người quản lý mạng có thể sử dụng để thực hiện các kiểm tra thích hợp
Khả năng tạo báo cáo trong đó lưu lại tất cả các vấn đề phát hiện trong quá trình giám sát
Các tính năng này đóng vai trò then chốt trong lĩnh vực an ninh mạng, cho phép phát hiện sớm các cuộc tấn công mạng và thực hiện các biện pháp phòng ngừa kịp thời để bảo đảm an toàn cho hệ thống.
2.3.2.1 Tấn công mạng là gì?
Tấn công mạng là hành vi xâm nhập trái phép vào hệ thống máy tính, trang web, cơ sở dữ liệu, hạ tầng mạng hoặc thiết bị cá nhân và tổ chức qua internet với mục đích bất hợp pháp Mục tiêu của các cuộc tấn công này rất đa dạng, bao gồm xâm phạm dữ liệu (đánh cắp, sửa đổi, mã hóa hoặc phá hủy thông tin), làm suy giảm tính toàn vẹn của hệ thống (gây gián đoạn hoặc cản trở dịch vụ), và khai thác tài nguyên của nạn nhân (hiển thị quảng cáo không mong muốn hoặc sử dụng mã độc để đào tiền ảo).
Hình 2.12: Tấn công mạng (Cyber Attack)
2.3.2.2 Đối tượng và mục đích của tấn công mạng?
Các mục tiêu của tấn công mạng có thể là cá nhân, doanh nghiệp, tổ chức chính phủ hoặc phi chính phủ, và thậm chí cả các quốc gia Doanh nghiệp thường là đối tượng chính của các cuộc tấn công mạng, do đó, việc bảo mật thông tin và hệ thống là cực kỳ quan trọng.
18 phát từ việc các kẻ tấn công chủ yếu nhắm đến việc kiếm lợi nhuận và gây tổn thất tài chính cho các doanh nghiệp
Ngoài các mục tiêu phổ biến như trục lợi bất hợp pháp và tống tiền doanh nghiệp, còn tồn tại những mục đích phức tạp và nguy hiểm hơn Một số cuộc tấn công có thể nhắm đến việc cạnh tranh không lành mạnh giữa các doanh nghiệp, đe dọa an ninh hoặc nền kinh tế quốc gia, hoặc thậm chí nhằm phá hoại các tổ chức tôn giáo.
2.3.2.3 Phân loại tấn công mạng a) Tấn công bằng phần mềm độc hại (Malware attack)
Hình 2.13: Các loại tấn công bằng phần mềm độc hại
Tấn công malware là một trong những hình thức tấn công phổ biến nhất hiện nay, bao gồm các loại như spyware, ransomware, virus và worm Tin tặc thường khai thác các lỗ hổng bảo mật hoặc sử dụng chiêu trò lừa đảo (phishing) để dụ người dùng nhấp vào liên kết hoặc email độc hại, từ đó cài đặt phần mềm độc hại vào máy tính Khi malware đã được cài đặt thành công, nó có thể gây ra nhiều hậu quả nghiêm trọng.
Ngăn cản người dùng truy cập vào một file hoặc folder quan trọng (ransomware)
Cài đặt thêm những phần mềm độc hại khác
Lén lút theo dõi người dùng và đánh cắp dữ liệu (spyware)
Làm hư hại phần mềm, phần cứng, làm gián đoạn hệ thống b) Tấn công giả mạo (Phishing attack)
Phishing là kỹ thuật giả mạo danh tính của tổ chức hoặc cá nhân đáng tin cậy nhằm tạo lòng tin với người dùng, thường qua email Mục tiêu chính của tấn công phishing là thu thập thông tin nhạy cảm như số thẻ tín dụng và mật khẩu, hoặc lừa người dùng cài đặt phần mềm độc hại Phishing có thể chỉ là một bước trong cuộc tấn công lớn hơn để lây lan malware.
Hình 2.14: Quy trình của một cuộc tấn công giả mạo c) Tấn công trung gian (Man-in-the-middle attack)
Tấn công trung gian (MitM) là một hình thức tấn công nghe lén, diễn ra khi kẻ tấn công xâm nhập vào giao tiếp giữa hai bên Khi đã thành công trong việc chen vào, chúng có khả năng đánh cắp dữ liệu quan trọng từ giao dịch đó.
Loại hình này thường xảy ra khi:
Khi nạn nhân kết nối vào một mạng Wifi công cộng không an toàn, kẻ tấn công có khả năng "chen vào giữa" thiết bị của nạn nhân và mạng Wifi Điều này dẫn đến việc thông tin mà nạn nhân gửi đi có thể bị rơi vào tay kẻ tấn công một cách vô tình.
Khi phần mềm độc hại xâm nhập vào thiết bị, kẻ tấn công có khả năng truy cập và thay đổi dữ liệu của nạn nhân một cách dễ dàng.
Hình 2.15: Cuộc tấn công Man-in-the-middle d) Tấn công từ chối dịch vụ (DoS và DDoS)
Hình 2.16: Tấn công từ chối dịch vụ
Here is a rewritten paragraph that contains the meaning of the original text, complying with SEO rules:"Tấn công từ chối dịch vụ (DoS) là một hình thức tấn công mạng nguy hiểm, có thể làm gián đoạn hoạt động của hệ thống, máy chủ hoặc mạng nội bộ trong thời gian ngắn Bằng cách gửi một lượng lớn yêu cầu hoặc lưu lượng truy cập cùng lúc, kẻ tấn công có thể khiến hệ thống bị quá tải, từ đó ngăn chặn người dùng truy cập dịch vụ trong thời gian cuộc tấn công diễn ra, gây ra những thiệt hại nghiêm trọng về mặt kinh tế và uy tín."
Một biến thể của DoS là DDoS (Distributed Denial of Service), trong đó tin tặc khai thác một mạng lưới máy tính gọi là botnet để thực hiện các cuộc tấn công Điều đáng lưu ý là các máy tính trong botnet thường không nhận thức được việc chúng đang bị lợi dụng để tham gia vào cuộc tấn công này.
21 e) Tấn công cơ sở dữ liệu (SQL injection)
Hình 2.17: Quy trình cuộc tấn công cơ sở dữ liệu
Tin tặc có khả năng "tiêm" mã độc vào máy chủ thông qua ngôn ngữ truy vấn cấu trúc (SQL) nhằm lấy thông tin quan trọng không nên công khai Tấn công SQL injection thường xảy ra do lỗ hổng trên website, và chỉ cần chèn mã độc vào ô tìm kiếm cũng có thể gây ra cuộc tấn công.
Ngoài SQL injection, còn tồn tại nhiều loại tấn công mạng khác như tấn công chuỗi cung ứng và tấn công email, mỗi loại đều có những đặc điểm và mức độ tinh vi khác nhau Điều này yêu cầu cả cá nhân và tổ chức phải duy trì sự cảnh giác và cập nhật công nghệ phòng chống mới Tuy nhiên, trong đồ án tốt nghiệp này, chúng ta sẽ tập trung nghiên cứu về các cuộc tấn công từ chối dịch vụ.
2.3.2.4 Tấn công từ chối dịch vụ (DoS & DDoS)
Kỹ thuật Deep Learning chống tấn công DDoS
2.4.1 Khái niệm về trí tuệ nhân tạo
Trí tuệ nhân tạo (AI) là một lĩnh vực khoa học máy tính tập trung vào việc giải quyết các vấn đề nhận thức liên quan đến trí thông minh của con người, như học tập, sáng tạo và nhận diện hình ảnh Các tổ chức hiện đại thu thập lượng lớn dữ liệu từ nhiều nguồn khác nhau, bao gồm cảm biến thông minh và nội dung do con người tạo ra Mục tiêu của AI là phát triển hệ thống tự học có khả năng phân tích dữ liệu, tìm ra ý nghĩa và áp dụng kiến thức để giải quyết các vấn đề mới tương tự như con người.
Công nghệ AI hiện nay có khả năng tham gia vào các cuộc trò chuyện với con người một cách tự nhiên, tạo ra hình ảnh và văn bản độc đáo, đồng thời đưa ra quyết định dựa trên dữ liệu theo thời gian thực Việc tích hợp tính năng AI vào ứng dụng giúp các tổ chức tối ưu hóa quy trình kinh doanh, cải thiện trải nghiệm khách hàng và thúc đẩy đổi mới sáng tạo.
2.4.2 Khái niệm về Deep Learning
Học sâu là một phương pháp trong trí tuệ nhân tạo (AI) giúp máy tính xử lý dữ liệu tương tự như bộ não con người Các mô hình học sâu có khả năng nhận diện mẫu phức tạp trong hình ảnh, văn bản, âm thanh và nhiều loại dữ liệu khác, từ đó cung cấp thông tin chi tiết và dự đoán chính xác.
Hình 2.23: Các dữ liệu đầu vào có thể sử dụng trong Deep Learning
Các thuật toán học sâu mô phỏng cấu trúc não người thông qua mạng nơ-ron nhân tạo Trong não, hàng triệu nơ-ron kết nối để học hỏi và xử lý thông tin Tương tự, mạng nơ-ron học sâu được cấu tạo từ nhiều lớp nơ-ron nhân tạo, hoạt động phối hợp trong máy tính.
Các nơ-ron nhân tạo là các mô-đun phần mềm, hay còn gọi là nút, thực hiện các phép toán để xử lý dữ liệu Mạng nơ-ron nhân tạo sử dụng các nút này trong các thuật toán học sâu nhằm giải quyết những vấn đề phức tạp.
Một mạng nơ-ron chuyên sâu có các thành phần sau: a) Lớp đầu vào
Một mạng nơ-ron nhân tạo bao gồm nhiều nút để tiếp nhận dữ liệu đầu vào, tạo thành lớp đầu vào của hệ thống Bên cạnh đó, còn có lớp ẩn, nơi xử lý và chuyển đổi thông tin trước khi đưa ra kết quả cuối cùng.
Lớp đầu vào trong mạng nơ-ron chịu trách nhiệm xử lý và truyền dữ liệu đến các lớp sâu hơn Các lớp ẩn xử lý thông tin ở nhiều cấp độ khác nhau và có khả năng thích ứng khi tiếp nhận thông tin mới Mạng học sâu với hàng trăm lớp ẩn cho phép phân tích vấn đề từ nhiều góc độ khác nhau.
Để phân loại hình ảnh của một loài vật chưa xác định, bạn cần so sánh nó với các loài vật đã biết Việc này giúp xác định đặc điểm và phân loại chính xác loài vật đó.
Khi quan sát một loài vật, hãy chú ý đến hình dáng của cặp mắt, đôi tai, kích thước, số chi và hình mẫu lông của chúng Bằng cách này, bạn có thể xác định các hình mẫu đặc trưng, chẳng hạn như hình dạng mắt, kích thước tai, số lượng chi và màu sắc lông, từ đó giúp bạn phân biệt và nhận dạng loài vật đó một cách chính xác.
Loài vật có móng guốc nên nó có thể là bò hoặc hươu
Loài vật có mắt mèo nên nó có thể là một loài mèo hoang dã nào đó
Các lớp ẩn trong mạng nơ-ron chuyên sâu hoạt động đồng bộ, mỗi lớp đảm nhiệm việc xử lý một đặc điểm khác nhau của hình ảnh động vật Khi một thuật toán học sâu phân loại hình ảnh, các lớp ẩn sẽ cùng nhau phân tích để xác định chính xác loại động vật Cuối cùng, lớp đầu ra sẽ đưa ra kết quả phân loại dựa trên các thông tin đã được xử lý.
Lớp đầu ra bao gồm các nút xuất dữ liệu Các mô hình học sâu xuất ra đáp án
"có" hoặc "không" chỉ có hai nút trong lớp đầu ra Mặt khác, các mô hình xuất ra nhiều đáp án hơn sẽ có nhiều nút hơn
Hình 2.24: Thành phần của một mạng CNN
2.4.3 Ứng dụng Deep Learning trong việc phòng chống tấn công DDoS
Trong lĩnh vực bảo mật, trí tuệ nhân tạo (AI) đóng vai trò quan trọng trong việc hỗ trợ các chuyên gia chống lại các cuộc tấn công DDoS và phát hiện hoạt động bất thường Tuy nhiên, tin tặc cũng đang sử dụng công nghệ AI để phát triển các phương pháp tấn công tinh vi hơn AI có khả năng phân tích lượng lớn dữ liệu từ các luồng truy cập và nhận diện các mẫu hành vi đáng ngờ thông qua thuật toán học máy và chẩn đoán dữ liệu, giúp nâng cao hiệu quả bảo mật mạng.
Khi phát hiện dấu hiệu của một cuộc tấn công DDoS, hệ thống sẽ tự động kích hoạt các biện pháp phòng ngừa trước sự gia tăng đột ngột từ một địa chỉ IP cụ thể.
Việc áp dụng học sâu (Deep Learning - DL) trong công tác phòng chống tấn công DDoS đã trở nên quen thuộc với các nhà nghiên cứu, nhưng vẫn còn nhiều hạn chế trong thực tế Hiện tại, một số nghiên cứu đã bắt đầu ứng dụng DL để phát hiện và ngăn chặn các cuộc tấn công mạng, tuy nhiên, cần nhiều nghiên cứu và thử nghiệm hơn để nâng cao hiệu quả và khả năng ứng dụng thực tế của công nghệ này.
Hiện nay, nhiều nghiên cứu đã được thực hiện để ứng dụng Deep Learning (DL) trong việc phát hiện các cuộc tấn công từ chối dịch vụ (DDoS) Các công trình này nhằm nâng cao khả năng bảo mật và phát hiện kịp thời các mối đe dọa trong môi trường mạng.
Bộ lọc gói Berkeley (eBPF)
Bộ lọc gói Berkeley mở rộng (eBPF) là phiên bản nâng cao của BPF, được giới thiệu bởi Alexei Starovoitov vào năm 2013 và xuất hiện lần đầu trong Kernel 3.18 Trái ngược với BPF "cổ điển" (cBPF) ra đời năm 1992, chủ yếu dùng để lọc gói tin trong kernel như tcpdump, eBPF mang lại nhiều tính năng linh hoạt hơn eBPF cho phép chèn mã mới vào nhân Linux trong thời gian chạy, với mã được kích hoạt khi có sự kiện nhất định xảy ra.
eBPF cho phép thực thi mã trực tiếp trong nhân Linux mà không cần cài đặt các mô-đun bổ sung, giúp đơn giản hóa quá trình triển khai.
eBPF cho phép biên dịch và chèn mã động vào nhân, mang lại sự linh hoạt đáng kể cho việc phát triển ứng dụng và công cụ.
eBPF hỗ trợ các chuỗi dịch vụ tùy ý, cho phép các nhà phát triển xây dựng ứng dụng và chức năng mạng phức tạp một cách linh hoạt.
eBPF kết hợp với Đường dẫn dữ liệu eXpress của Linux (XDP) để tối ưu hóa việc truy cập vào các gói mạng đến, từ đó nâng cao hiệu suất mạng một cách hiệu quả.
Mặc dù eBPF mang lại nhiều lợi ích, nhưng nó cũng gặp phải một số nhược điểm, đặc biệt là kích thước chương trình bị hạn chế, điều này có thể ảnh hưởng đến khả năng phát triển các chương trình mạng chất lượng cao.
Tiếp theo, chúng ta sẽ khám phá một số tính năng quan trọng nhất của eBPF
Xác thực an toàn là một khái niệm quan trọng trong eBPF, vì chương trình eBPF có thể được tải trong thời gian chạy trong kernel Trình xác minh sẽ kiểm tra chương trình để đảm bảo rằng nó không gây hại cho hệ thống, bằng cách xem xét các khía cạnh khác nhau của chương trình eBPF.
Chương trình không được có vòng lặp vô hạn
Chương trình không được sử dụng các biến chưa được khởi tạo hoặc truy cập bộ nhớ ngoài giới hạn
Chương trình phải có kích thước nhất định đáp ứng yêu cầu hệ thống
Chương trình cần đảm bảo độ phức tạp hữu hạn, cho phép trình xác minh đánh giá tất cả các bước thực hiện khả thi Điều này giúp đảm bảo khả năng hoàn thành
Việc sử dụng các trình trợ giúp (helper functions) là rất quan trọng trong việc tạo mã cho các hoạt động phức tạp với eBPF, do những hạn chế của ngôn ngữ C.
Trình trợ giúp là các hàm phần mềm gốc trong nhân Linux mà chương trình eBPF có thể gọi để thực hiện nhiệm vụ cụ thể, giúp khắc phục các hạn chế của eBPF Chúng cho phép thực hiện các hoạt động phức tạp mà không cần viết mã từ đầu Đặc biệt, trình trợ giúp không bị hạn chế bởi các quy tắc như vòng lặp bị cấm trong eBPF, cho phép người dùng sử dụng tất cả các vòng lặp cần thiết.
Mã eBPF có thể được thêm vào theo yêu cầu, nhưng các trình trợ giúp cần được biên dịch và tích hợp vào nhân Linux trước khi sử dụng Điều này có nghĩa là bạn có thể sử dụng các trình trợ giúp có sẵn trong nhân Linux hoặc tạo một trình trợ giúp mới nếu không có lựa chọn phù hợp Để sử dụng trình trợ giúp mới, nó phải được thêm vào bản phát hành của nhân Linux và biên dịch lại.
Trình trợ giúp là các hàm được đề xuất cho chương trình eBPF, cung cấp lệnh gọi hàm do nhân Linux xác định Chúng cho phép thực hiện các hoạt động như truy xuất và gửi dữ liệu giữa eBPF và kernel, mở rộng khả năng xử lý các tác vụ phức tạp của eBPF.
Khái niệm Tail calls đề cập đến việc vượt qua giới hạn kích thước của chương trình eBPF Nhờ vào các lệnh Tail calls, chương trình eBPF có khả năng gọi một chương trình khác mà không cần quay lại chương trình trước đó Điều này khác biệt với các lệnh gọi hàm thông thường, vì cuộc gọi tail có chi phí tối thiểu và được thực hiện dưới dạng bước nhảy dài, sử dụng lại cùng một khung ngăn xếp.
eBPF đã cải tiến BPF truyền thống bằng cách thêm khả năng lưu trạng thái thông qua bộ nhớ Mục tiêu chính của eBPF là cho phép xuất dữ liệu giữa kernel và không gian người dùng, cũng như chia sẻ dữ liệu giữa các chương trình eBPF khác nhau Một thách thức trong việc chia sẻ bộ nhớ là quản lý sự đồng thời, nhưng eBPF đã giải quyết vấn đề này bằng cách sử dụng cấu trúc dữ liệu gọi là map Các map, bao gồm nhiều dạng như vectơ, hashmap và bảng, giúp lập trình viên không cần lo lắng về sự đồng thời vì hệ thống sẽ tự động xử lý Hơn nữa, các map có thể được lồng vào nhau, cho phép sử dụng nhiều loại map khác nhau Tóm lại, map là kho lưu trữ khóa/giá trị hiệu quả trong không gian kernel, có thể truy cập từ các chương trình eBPF và chia sẻ với các ứng dụng khác, không yêu cầu chúng phải cùng loại.
BPF_MAP_TYPE_PERCPU_HASH;
BPF_MAP_TYPE_PERCPU_ARRAY
BPF_MAP_TYPE_PROG_ARRAY;
BPF_MAP_TYPE_PERF_EVENT_ARRAY;
BPF_MAP_TYPE_PERF_EVENT_ARRAY;
BPF_MAP_TYPE_STACK_TRACE
Hình 2.26: Kiến trúc của bộ nhớ dùng chung
Hình 2.27: Biểu diễn các XDP và tc hook points
XDP cung cấp cơ chế chạy chương trình eBPF ở mức thấp nhất trong ngăn xếp mạng Linux, ngay sau khi nhận gói, giúp tiết kiệm tài nguyên và giảm thiểu chu kỳ CPU cần thiết để xử lý gói Mặc dù hiệu suất cao hơn so với ngăn xếp mạng truyền thống, thông tin đầu vào cho chương trình lại hạn chế XDP hoạt động với ba chế độ khác nhau.
Kiểm thử hệ thống sử dụng Grafana K6
K6, hay còn gọi là Grafana k6, là công cụ kiểm thử hệ thống do Grafana Labs và cộng đồng phát triển Là một dự án mã nguồn mở với khả năng mở rộng linh hoạt, k6 đã nhanh chóng thu hút sự chú ý của cộng đồng lập trình viên kể từ khi ra mắt chính thức trên GitHub vào ngày 27/02/2017, nhờ hiệu suất cao và tính dễ sử dụng ấn tượng.
Trong k6, hai khái niệm quan trọng cần hiểu là Người dùng ảo (Virtual Users - VUs) và Thời gian kiểm thử (Duration) Người dùng ảo đại diện cho số lượng người dùng ảo có thể truy cập đồng thời vào sản phẩm của bạn, trong khi thời gian kiểm thử xác định khoảng thời gian thực hiện bài kiểm tra Việc tạo và thực hiện bài kiểm thử trên k6 rất đơn giản, nhờ vào việc sử dụng ngôn ngữ JavaScript, giúp người dùng dễ dàng làm quen với công cụ này.
Trong đồ án tốt nghiệp này, tôi sẽ sử dụng k6 để thực hiện các cuộc tấn công DDoS, nhằm kiểm tra và đánh giá hiệu quả của hệ thống phát hiện xâm nhập mà tôi đề xuất trong chương tiếp theo.
Kết luận và đặt câu hỏi nghiên cứu
Chương 2 đã cung cấp một cái nhìn tổng quan về lĩnh vực điện toán đám mây, kỹ thuật học sâu, và các công nghệ ngày càng trở nên quan trọng trong công nghệ thông tin và an ninh mạng như ảo hóa, IDS và bộ lọc gói mở rộng Berkeley Những kiến thức này là nền tảng cần thiết để nghiên cứu và triển khai các hệ thống thực tiễn, từ đó biến các ý tưởng thành hiện thực và tạo ra giá trị nghiên cứu thiết thực
Với sự phát triển của kiến trúc Microservices và Cloud Computing, bảo mật cho hạ tầng và hệ thống ảo hóa trên nền tảng điện toán đám mây ngày càng quan trọng Khi học máy trở thành xu hướng chính trong nhiều lĩnh vực kỹ thuật, việc ứng dụng các kỹ thuật này vào an ninh mạng đã trở thành yêu cầu thiết yếu Tuy nhiên, việc này không hề đơn giản, bởi dữ liệu truyền tải qua các luồng trao đổi giữa các thiết bị đầu cuối thường dẫn đến sự trộn lẫn gói tin, làm tăng độ phức tạp trong xử lý lưu lượng mạng so với việc làm việc với các tệp dữ liệu tĩnh.
Để triển khai một mô hình phát hiện xâm nhập sử dụng kỹ thuật học sâu trong môi trường mạng, cần giải quyết các vấn đề đã nêu Mục tiêu của đồ án tốt nghiệp này là đưa ra các giải pháp hiệu quả cho những khó khăn này.
Trong chương 3 tới, tôi sẽ trình bày chi tiết về phương pháp thực hiện và kịch bản testbed, đồng thời cung cấp hướng dẫn cụ thể về cách cài đặt và sử dụng testbed để mô phỏng ý tưởng tích hợp của hệ thống phát hiện xâm nhập.
PHƯƠNG PHÁP THỰC HIỆN
Xây dựng Testbed Deep Learning IDS
Dựa trên các vấn đề đã được trình bày trong chương II, tôi đã xây dựng một Testbed mô phỏng hoạt động của hệ thống phát hiện xâm nhập.
Trong mô hình testbed mô phỏng các máy chủ xử lý tác vụ tính toán, mặt phẳng điều khiển (Control Plane) đóng vai trò trung tâm trong hệ thống phát hiện xâm nhập Nó thu thập và phân tích thông tin về CPU, RAM, GPU và các chỉ số khác từ tất cả các máy chủ trong cụm Kubernetes Dựa trên dữ liệu thu thập được, mặt phẳng điều khiển quyết định cách triển khai các Pod chạy Container nhằm tối ưu hóa và nâng cao hiệu quả cấu hình hệ thống.
Dựa trên kịch bản đã được xây dựng trong hình 3.1, tôi đã thiết kế và cài đặt một testbed chi tiết với kiến trúc như thể hiện trong hình 3.2.
Hình 3.2: Mô hình testbed thực tế
Testbed sẽ có 1 cụm Kubernetes, bao gồm 1 Master Node và 1 Worker
Node Master sẽ được cài đặt Cilium Operator để tích hợp kiến trúc mạng Cilium vào cụm Điều này cho phép cài đặt chương trình eBPF vào nhân Linux của các Worker Node Mỗi Worker Node sẽ có một Pod chạy các Container, trong đó Container sẽ chạy Web Server NGINX Ingress Controller sẽ được triển khai theo mô hình LUCID và kết hợp với LoadBalancer Để truy cập vào các ứng dụng trong Container từ bên ngoài, dự án sẽ sử dụng một Service LoadBalancer để đưa chúng ra Internet.
Chi tiết cấu hình của các máy sẽ như sau:
Vai trò Thiết bị vật lý Hệ điều hành
Attacker Sử dụng Cloud Azure Kubernetes
Master Node 4 vCPUs, 16GB RAM, 16GB ROM Linux (Ubuntu
Worker Node 8 vCPUs, 32GB RAM, 32GB ROM Linux (Ubuntu
Bảng 3.1 Thông số cấu hình máy tính trong Testbed
Dựa trên thông tin cấu hình chi tiết trong bảng 3.1, chúng tôi tiến hành mô phỏng hệ thống phát hiện xâm nhập hoạt động trên nền tảng điện toán đám mây gốc.
Để đơn giản hóa quá trình cài đặt và thiết lập, tôi sử dụng dịch vụ Kubernetes trên cloud Azure kết hợp với dải Public IP gắn với NAT Gateway, nhằm tạo ra cuộc tấn công với nhiều địa chỉ IP gốc.
Trong hệ thống phần mềm, các Worker Node hoạt động dưới sự quản lý của một máy Master, đóng vai trò là trung tâm điều phối trong cụm Máy Master này giúp tinh chỉnh dữ liệu và đưa ra các quyết định quan trọng.
Các Worker Node đóng vai trò quan trọng trong việc triển khai Pod chứa các Container chạy ứng dụng, tạo nên hệ thống phát hiện xâm nhập Tất cả các Container images đều được viết lại dưới dạng Dockerfile, sau đó được đóng gói và lưu trữ trên kho lưu trữ từ xa, cụ thể là Dockerhub Danh sách các Images sẽ được sử dụng được trình bày trong bảng dưới đây.
LUCID ailab/nginx:latest DockerHub
NGIN ailab/lucid:latest DockerHub
KEDA ailab/keda:latest DockerHub
Bảng 3.2 Thông tin về images của testbed
Trong bài viết này, cụm K8S được cài đặt trên nền tảng cloud Azure với vai trò Attacker Để thực hiện cuộc tấn công DDoS giả lập theo thời gian thực, tôi đã sử dụng dịch vụ Azure Kubernetes Service và thuê dải IP trên Azure Phần mềm mã nguồn mở Grafana k6 được cài đặt để thực hiện các Stress test, gửi lưu lượng đến Container chạy Web Server NGINX trong cụm Để phân phối lưu lượng truy cập đến Pod, dịch vụ LoadBalancer sẽ được sử dụng, giúp Pod tiếp cận từ bên ngoài mạng.
Cả hai Container và Pod đều mở cổng 80 để nhận các yêu cầu từ phần mềm kiểm thử nhằm thực hiện chẩn đoán Dưới đây là bảng mô tả địa chỉ IP của các thành phần mạng trong testbed.
Thành phần mạng ngoài cụm Địa chỉ IP Public
Bảng 3.3 Thông tin về các thành phần chính trong mạng ở ngoài cụm
Thành phần mạng trong cụm Địa chỉ IP
Bảng 3.4 Thông tin về các thành phần chính của mạng ở trong cụm
Dựa trên thông tin về các thành phần cần thiết trong testbed, tôi sẽ tiến hành cài đặt và cấu hình các thành phần trong cụm Kubernetes để thực hiện việc đo đạc và thống kê số liệu.
3.1.3 Cài đặt và cấu hình cho Testbed
3.1.3.1 Cấu hình cho cụm Kubernetes Đồ án lựa chọn Kubernetes làm nền tảng quản lý Container bởi sự tiện dụng và được hỗ trợ bởi một cộng đồng người dùng lớn mạnh Quy trình cài đặt cụm rất phức tạp và đó không phải là trọng tâm của đồ án Tham khảo [22] và [23], sau khi cài đặt với các phần cứng vật lý nêu trên, chúng ta đã thu được cụm Kubernetes với thông tin của Worker Node cấu hình như sau:
Để đảm bảo tương tác và triển khai ứng dụng trên cụm Kubernetes một cách hiệu quả, các máy chủ cần có cấu hình mạnh mẽ (CPU, RAM, ) và các công cụ hỗ trợ như kubectl và docker CLI Điều này giúp đáp ứng tiêu chuẩn triển khai sát với thực tế nhất có thể.
3.1.3.2 Cài đặt kiến trúc mạng Cilium
Trong quá trình cài đặt cho môi trường testbed, đồ án sẽ triển khai mạng Cilium cho cụm Kubernetes, ứng dụng kiến trúc mạng với bộ lọc gói Berkeley mở rộng Để thực hiện cài đặt Cilium, ta có thể sử dụng một tập hợp các câu lệnh cụ thể.
Đầu tiên, ta cần kiểm tra phiên bản và thiết lập biến môi trường cho cụm
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt) CLI_ARCH=amd64 if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi
To download the installation file and verify its integrity, use the following command: ```bashcurl -L fail remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-```
${CLI_ARCH}.tar.gz{,.sha256sum} sha256sum check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
Container hóa Model AI và Web Server, triển khai hệ thống phát hiện xâm nhập
Đầu tiên, tôi sẽ tiến hành huấn luyện mô hình trí tuệ nhân tạo và viết Inference để mô hình có thể biểu diễn lưu lượng truy cập Sau khi hoàn tất huấn luyện, tôi sẽ tạo Dockerfile để đóng gói toàn bộ mô hình cùng với mã nguồn và cấu hình Web Server thành một Image, sau đó đưa lên kho lưu trữ từ xa Cụm Kubernetes sẽ truy cập kho lưu trữ này, tải Image về và chạy Container để triển khai hệ thống phát hiện xâm nhập Dưới đây là các bước cài đặt và huấn luyện mô hình trí tuệ nhân tạo.
Cài đặt hệ thống quản lý môi trường với Miniconda bằng cách sử dụng lệnh `bash Miniconda3-latest-Linux-x86_64.sh` Sau đó, tạo môi trường mới với Python 3.9 bằng lệnh `conda create -n python39 python=3.9` và kích hoạt môi trường đó bằng `conda activate python39`.
Cấu hình cho môi trường với Tensorflow và cài đặt tshark
(python39)$ pip install scikit-learn h5py pyshark protobuf==3.19.6
(python39)$ sudo apt install tshark
Cấu hình cho giai đoạn tiền xử lý dữ liệu
(python39)$ python3 lucid_dataset_parser.py dataset_type DOS2019 dataset_folder /sample-dataset/ packets_per_flow 10 dataset_id DOS2019 traffic_type all time_window 10
(python39)$ python3 lucid_dataset_parser.py preprocess_folder /sample-dataset/
Huấn luyện cho mô hình trí tuệ nhân tạo python3 lucid_cnn.py train /sample-dataset/
Lệnh này huấn luyện LUCID với các siêu tham số nhằm tối đa hóa độ chính xác trên bộ xác thực Mô hình được lưu trữ ở định dạng h5 trong thư mục đầu ra, kèm theo tệp csv ghi lại hiệu suất của mô hình Hai tệp này có tên giống nhau, ngoại trừ phần mở rộng, và được định dạng như sau:
Tiền tố 10t-10n thể hiện giá trị của cửa sổ thời gian siêu tham số, đồng thời các gói/mẫu này tạo ra kết quả tối ưu nhất dựa trên điểm F1 trong bộ xác thực.
Kiểm tra mô hình sau khi huấn luyện
58 python3 lucid_cnn.py predict /sample-dataset/ model /output/10t-10n-DOS2019-LUCID.h5
Sau khi hoàn thành việc huấn luyện mô hình trí tuệ nhân tạo LUCID, bước tiếp theo là đóng gói toàn bộ mã nguồn và mô hình thành một Image để triển khai trên môi trường Kubernetes Để thực hiện điều này, tôi sẽ sử dụng Docker Hub làm kho lưu trữ từ xa Nội dung của Dockerfile sẽ được trình bày chi tiết trong phần sau.
RUN conda create -n python39 python=3.9
RUN pip install scikit-learn h5py pyshark protobuf==3.19.6
CMD ["python3 lucid_cnn.py predict_live eth0 model /output/10t- 10n-DOS2019-LUCID.h5 dataset_type DOS2019"]
Mô hình LUCID mà tôi đã tự viết hiện đã được lưu trữ trên Docker Hub với tên gọi lucid:latest Tiếp theo, tôi sẽ tiến hành viết một tập tin để tiếp tục phát triển dự án.
YAML được sử dụng để tương tác với API của cụm Kubernetes, cho phép tạo ra các tài nguyên như Pod và dịch vụ cân bằng tải Dịch vụ cân bằng tải đóng vai trò quan trọng trong việc phát hiện xâm nhập từ mạng Internet Hơn nữa, việc sử dụng Deployment để triển khai Pod trên Worker Node mang lại nhiều lợi ích đáng kể, giúp quản lý và mở rộng ứng dụng một cách hiệu quả.
Deployment tự động tạo và quản lý nhiều bản sao (replicas) của Pod, giúp đảm bảo tính sẵn sàng cao cho ứng dụng Nhờ vào việc này, ứng dụng luôn có đủ tài nguyên để đáp ứng nhu cầu, ngay cả khi có Pod gặp lỗi hoặc tạm thời không hoạt động.
DeploymentSet hỗ trợ triển khai ứng dụng an toàn thông qua rolling update, cho phép cập nhật phiên bản mới mà không làm gián đoạn dịch vụ Trong quá trình này, DeploymentSet sẽ tạo ra các Pod mới với phiên bản mới và từ từ loại bỏ các Pod cũ, đảm bảo luôn có ít nhất một Pod đang chạy phiên bản cũ để duy trì tính sẵn sàng cho ứng dụng.
Khả năng mở rộng linh hoạt của DeploymentSet cho phép điều chỉnh số lượng replicas của Pod một cách dễ dàng, giúp đáp ứng nhu cầu thay đổi về lưu lượng truy cập hoặc tải trọng ứng dụng Người dùng có thể tăng hoặc giảm số lượng replicas mà không cần can thiệp thủ công vào các Pod.
DeploymentSet có khả năng tự động khôi phục bằng cách khởi động lại các Pod bị lỗi hoặc tạm thời không hoạt động, đảm bảo rằng ứng dụng luôn duy trì đủ tài nguyên để đáp ứng nhu cầu của người dùng.
Như vậy sau phần 3.2, hệ thống phát hiện xâm nhập đã được triển khai trên cụm Kubernetes và sẵn sàng đi vào hoạt động
3.3 Cấu hình KEDA cho việc tự động mở rộng quy mô cho hệ thống AI
3.3.1.1 Cấu hình KEDA cho việc scale hệ thống LUCID
The ScaledObject named "lucid-fast-scale-out" is designed for rapid scaling in response to DDoS attacks, operating within the default namespace It references the deployment of the application through the scaleTargetRef, ensuring swift and efficient scaling capabilities.
The LUCID deployment configuration specifies a minimum of 1 pod and a maximum of 1000 pods to handle DDoS attacks It includes a cooldown period of 15 seconds before scaling down and a polling interval of 5 seconds to check for triggers.
To monitor DDoS attacks effectively, configure your Prometheus server at the address http://prometheus-server.default.svc and utilize the metric named 'ddos_attack_count' with a threshold set at 100 attacks per second for scaling purposes Employ the Prometheus query `sum(rate(ddos_attack_count[1m])) by (instance)` to assess the number of DDoS attacks Additionally, download the installation file and verify its integrity using the command: `curl -L fail remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-`.
${CLI_ARCH}.tar.gz{,.sha256sum} sha256sum check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
The ScaledObject for "Slow Scale Out" is defined with apiVersion: keda.sh/v1alpha1 and is categorized under kind: ScaledObject It is named lucid-slow-scale-out and resides in the default namespace The specification includes a scaleTargetRef that references the deployment name lucid-deployment, which is crucial for managing the application's scaling behavior under normal conditions.
KẾT QUẢ
Đánh giá hiệu năng của mô hình học sâu
4.1.1 Thông số đánh giá và siêu tham số
Trước tiên, chúng ta cần phải hiểu ý nghĩa của một số khái niệm thông số cơ bản như sau:
ACC Tỷ lệ phần trăm của các mẫu được phân loại chính xác FPR Tỷ lệ phần trăm các mẫu bị phân loại là DDoS nhưng sai
Tỷ lệ PPV (Precision) là tỷ lệ giữa số mẫu được phân loại đúng là DDoS so với tổng số mẫu được phân loại là DDoS TPR (Recall) thể hiện phần trăm các mẫu được phân loại đúng trong tổng số mẫu thực tế.
F1 score Thước đo tổng thể của một mẫu, đo về hiệu suất
TP Các mẫu DDoS được phân loại đúng
TN Không phải DDoS nhưng được xếp là DDoS
FP Không phải DDoS nhưng bị xếp là DDoS
FN Là DDoS nhưng bị xếp không phải DDoS
Bảng 4.1: Các thông số cơ bản đánh giá quá trình học sâu
Ta có các công thức để đánh giá hiệu năng của mô hình:
Đầu ra của quá trình huấn luyện kết hợp các tham số có thể huấn luyện và siêu tham số nhằm tối đa hóa điểm F1 trên bộ xác thực, trong đó siêu tham số t là khoảng thời gian cửa sổ trượt và n là số gói thu được trên một mẫu Khi t nhỏ, hệ thống phát hiện cuộc tấn công DDoS hoạt động nhanh hơn, trong khi t và n cao giúp mô hình thu thập nhiều thông tin hơn, nâng cao độ chính xác Mục tiêu cuối cùng là cải thiện hiệu năng, giảm thiểu tổng số kết quả dương tính giả (FP) và âm tính giả (FN).
4.1.2 Tiến hành đo đạc để lựa chọn bộ siêu tham số
Biểu đồ 4.1 Giá trị của siêu tham số t và F1 khi n thay đổi
Thực hiện cho n thay đổi giá trị từ 1 đến 100, ta quan sát đước:
F1 có xu hướng tăng khá nhanh khi n có giá trị nhỏ hơn 5
Khi n có giá trị vượt qua 5, F1 dần trở nên ổn định hơn và duy trì ở mức 0,99
Với giá trị t càng nhỏ, điểm F1 với những giá trị n đầu tiên sẽ khá cao Tuy nhiên cũng sẽ dần trở nên ổn định sau khi vượt ngưỡng n = 5
Khi giá trị n thấp, tốc độ phát hiện sẽ tăng lên, đồng thời yêu cầu về bộ nhớ RAM sẽ giảm.
Biểu đồ 4.2 Giá trị của tham số n và F1 khi t thay đổi
Thực hiện cho t thay đổi giá trị từ 1 đến 100, ta quan sát được:
Khi n = 1, các luồng lưu lượng được biểu diễn dưới dạng ma trận [1, f], dẫn đến mô hình mạng tích chập nơ-ron không thể quan sát các thuộc tính khác nhau của các gói trong cùng một mẫu Điều này làm giảm điểm F một cách đồng đều khi t tăng.
Khi t tăng cao, các điểm F có xu hướng thay đổi nhẹ với các giá trị n khác nhau Tuy nhiên, chúng dần hội tụ và ổn định xung quanh giá trị 0,99 khi t đạt mức 100.
Qua đây có thể kết luận rằng, F1 bị ảnh hưởng nhiểu hơn bởi siêu tham số n trong tập Train hơn là với t
Kết luận: Dựa trên các kết quả đo đạc, chúng tôi đã chọn siêu tham số n = 100 và t = 100 để huấn luyện mô hình trí tuệ nhân tạo LUCID, nhằm tối ưu hóa hiệu suất của mô hình.
Sau khi thực hiện quá trình huấn luyện cho mô hình, em sẽ kiểm tra kết quả với tập Test UNB201X
Ta thu được kết quả như sau
Validation Set ACC FPR PPV TPR F1
Đánh giá lượng tài nguyên tiêu thụ cho hệ thống phát hiện xâm nhập trong môi trường điện toán đám mây gốc
4.2.1 CPU của mô hình Deep Learning tiêu thụ
Biểu đồ 4.3 Biểu đồ thể hiện lượng CPU sử dụng của mô hình Deep Learning
Trục tung thể hiện mức sử dụng CPU trung bình, được đo bằng tỷ lệ phần trăm
Trục hoành thể hiện thời gian, được đo bằng giây
Đường màu đen là lượng CPU tiêu thụ của mô hình DL khi lưu lượng hoạt động bình thường
Đường màu đỏ là lượng CPU tiêu thụ của mô hình DL khi tải tăng cao
Trong trạng thái hoạt động bình thường, mô hình AI tiêu tốn tài nguyên CPU thấp do chỉ xử lý dữ liệu nhỏ và không yêu cầu nhiều phép toán Khi tải tăng cao, mô hình học sâu (DL) sẽ tiêu tốn nhiều CPU hơn, nhưng mức tiêu thụ chỉ tăng gấp khoảng hai lần so với trạng thái bình thường Điều này cho thấy mô hình DL có hiệu suất cao mà không cần quá nhiều CPU, cho phép triển khai trên các môi trường mạng Biểu đồ cũng chỉ ra mức sử dụng CPU của container ở mức trung bình và ổn định.
4.2.2 RAM của mô hình Deep Learning tiêu thụ
Biểu đồ 4.4 Biểu đồ thể hiện lượng RAM sử dụng của mô hình Deep Learning
Trục tung thể hiện mức sử dụng RAM trung bình, được đo bằng GB
Trục hoành thể hiện thời gian, được đo bằng giây
Đường màu đen là lượng RAM tiêu thụ của mô hình DL khi lưu lượng hoạt động bình thường
Đường màu đỏ là lượng RAM tiêu thụ của mô hình DL khi tải tăng cao
Trong trạng thái bình thường, mô hình AI tiêu tốn một lượng RAM cân đối, nhưng khi tải tăng cao, mô hình học sâu (DL) cần nhiều RAM hơn để xử lý khối lượng lớn tác vụ toán học như tiền xử lý dữ liệu, phân loại và gán nhãn Việc này là cần thiết để chạy các chương trình xử lý dữ liệu và xác định lưu lượng truy cập có phải là lưu lượng lành tính hay không Mặc dù mức tiêu thụ RAM của mô hình DL tăng khi tải cao, nó vẫn chiếm một phần nhỏ hơn so với lượng RAM mà ứng dụng tiêu thụ khi hoạt động Tổng thể, mức tiêu thụ RAM của mô hình DL không quá lớn và vẫn thấp hơn đáng kể so với ứng dụng.
4.2.3 CPU của Ứng dụng tiêu thụ
Biểu đồ 4.5 Biểu đồ thể hiện lượng CPU của Ứng dụng tiêu thụ
Trục tung thể hiện mức sử dụng CPU trung bình, được đo bằng tỷ lệ phần trăm
Trục hoành thể hiện thời gian, được đo bằng giây
Đường màu đen là lượng CPU tiêu thụ của Ứng dụng khi lưu lượng hoạt động bình thường
Đường màu đỏ biểu thị mức tiêu thụ CPU của ứng dụng trong điều kiện tải cao Ứng dụng được thử nghiệm là một API, có khả năng xử lý yêu cầu ở tầng 7, bao gồm giao thức HTTP và HTTPS Trong điều kiện lưu lượng truy cập bình thường, ứng dụng sử dụng một phần CPU nhất định để xử lý yêu cầu Tuy nhiên, khi lưu lượng tăng cao, mức tiêu thụ CPU có thể đạt gần 70%, yêu cầu nhiều tài nguyên hơn để kịp thời xử lý tất cả các gói tin gửi đến.
4.2.4 RAM của Ứng dụng tiêu thụ
Biểu đồ 4.6 Biểu đồ thể hiện lượng RAM của Ứng dụng tiêu thụ
Trục tung thể hiện mức sử dụng RAM trung bình, được đo bằng GB
Trục hoành thể hiện thời gian, được đo bằng giây
Đường màu đen là lượng RAM tiêu thụ của Ứng dụng khi lưu lượng hoạt động bình thường
Đường màu đỏ là lượng RAM tiêu thụ của Ứng dụng khi tải tăng cao
Trong hoạt động bình thường, ứng dụng tiêu tốn RAM cao hơn một chút so với mô hình học sâu Tuy nhiên, trong trường hợp tấn công DDoS, lượng RAM tiêu thụ của ứng dụng tăng đột biến, vượt xa mức tiêu thụ bình thường và so với mô hình học sâu Nguyên nhân là do ứng dụng cần RAM để lưu trữ tạm thời lượng dữ liệu lớn và sự gia tăng nhanh chóng của các tiến trình để duy trì tốc độ hoạt động Do đó, mức sử dụng RAM của ứng dụng không ổn định như mô hình học sâu và thường xuyên ở mức cao hơn.
Với lưu lượng truy cập cao bất thường, hệ thống phát hiện tấn công của chúng ta không thể bị bỏ qua Nhờ vào các thuật toán và phân tích đã trình bày trong chương 2 và chương 3, tôi đã thành công trong việc thu thập các nhật ký hệ thống (log) của mô hình DL trong cụm Kubernetes.
Hình 4.1 Nhật ký Log của hệ thống phát hiện xâm nhập khi có DDoS
Ngay khi cuộc tấn công DDoS bắt đầu, hệ thống nhanh chóng phát hiện các dấu hiệu bất thường trong lưu lượng đầu vào chỉ sau một thời gian ngắn Hệ số phần trăm đánh giá lưu lượng truy cập DDoS đã tăng từ 0,5 lên 0,667 chỉ sau hai khoảng thời gian hoạt động Đến khoảng thời gian thứ tư, hệ thống đã xác định lưu lượng đến là DDoS với điểm số 1.000, tương đương với tỷ lệ tấn công từ chối dịch vụ đạt 100%.
4.2.5 Đánh giá khả năng tự mở rộng quy mô
Hình 4.7 Biểu đồ số lượng pod được thêm vào hệ thống
Biểu đồ thể hiện sự biến động số lượng pod trong hai tình huống: khi hệ thống hoạt động bình thường và khi hệ thống bị tấn công DDoS (tấn công từ chối dịch vụ phân tán).
Kịch bản và Quy luật Mở rộng Pod
Trong kịch bản bình thường, khi hệ thống nhận được một lượng yêu cầu ổn định mà không có sự gia tăng đột biến, số lượng pod sẽ được tăng dần Điều này giúp tiết kiệm tài nguyên và duy trì hiệu suất ổn định mà không cần phải mở rộng quá mức.
Khi hệ thống gặp tấn công DDoS, số lượng yêu cầu tăng đột ngột, gây quá tải Để duy trì hoạt động và đáp ứng các yêu cầu hợp lệ, Kubernetes sẽ tự động mở rộng số lượng pod trong thời gian ngắn, giúp hệ thống không bị sập.
Trục hoành (X-axis) trên biểu đồ thể hiện thời gian tính bằng giây, trong khi trục tung (Y-axis) biểu thị số lượng pod đang hoạt động trong hệ thống tại một thời điểm nhất định.
Đường biểu diễn cho kịch bản bình thường bắt đầu từ một số lượng pod cơ bản và tăng dần theo thời gian với độ dốc thấp Điều này cho thấy tốc độ tăng số lượng pod chậm, phản ánh trạng thái tải hệ thống ổn định và ít biến động.
Đường biểu diễn cho kịch bản bất thường (DDoS) bắt đầu từ số lượng pod cơ bản, nhưng khi xảy ra tấn công DDoS, số lượng yêu cầu tăng đột biến dẫn đến sự gia tăng nhanh chóng số lượng pod Đường biểu diễn cho thấy độ dốc lớn, với số lượng pod tăng từ mức cơ bản lên đến 400 pod chỉ trong 4 giây Điều này phản ánh cơ chế "fast scale-out" của Kubernetes, giúp bảo vệ hệ thống trước sự gia tăng tải đột ngột.
4.2.6 Đánh giá khả năng ngừng hoạt động (Downtime) của hệ thống khi bắt đầu xảy ra DDOS
Hình 4.8 Biểu đồ thời gian hệ thống ngưng hoạt động khi xảy ra DDOS
Trong các tình huống xảy ra tăng tải đột ngột, thời gian downtime của hệ thống là chỉ số quan trọng phản ánh khả năng xử lý và thích ứng của hệ thống trước sự gia tăng tải.
Hệ thống đã tăng cường khả năng xử lý lên 1000 yêu cầu mỗi giây với thời gian downtime chỉ 0.5 giây, cho thấy cơ chế "fast scale" đã được kích hoạt hiệu quả Việc mở rộng nhanh chóng này giúp giảm thiểu thời gian ngừng hoạt động, đồng thời duy trì khả năng đáp ứng của hệ thống trong bối cảnh tải tăng đột ngột.
Hệ thống đã ghi nhận sự gia tăng 2000 yêu cầu/giây, dẫn đến thời gian downtime tăng lên 1.0 giây Mặc dù thời gian ngừng hoạt động có xu hướng gia tăng, hệ thống vẫn duy trì thời gian downtime ở mức tương đối thấp Điều này cho thấy cơ chế "fast scale" vẫn hoạt động hiệu quả, mặc dù bắt đầu gặp khó khăn khi tải lượng tiếp tục gia tăng.
Kết luận
Dựa trên kết quả đo đạc từ quá trình thử nghiệm của testbed, tôi đã phân tích và rút ra những kết luận chính xác về hiệu quả của hệ thống phát hiện tấn công DDoS trong môi trường Cloud Native, ứng dụng phương pháp học sâu.
Hệ thống mà tôi phát triển đã chứng minh khả năng phát hiện tấn công DDoS hiệu quả với các tính năng nổi bật như thu thập dữ liệu hoạt động, ghi nhớ log và phân tích lưu lượng truy cập Đặc biệt, hệ thống có khả năng nhận diện cuộc tấn công từ chối dịch vụ chỉ sau một vài khoảng thời gian.
Hệ thống có khả năng ngắt kết nối với các gói tin giúp ngăn chặn hiệu quả các cuộc tấn công DDoS Điều này chứng tỏ rằng việc triển khai mô hình này trong môi trường mạng không chỉ khả thi mà còn mang lại nhiều triển vọng.