1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hểu spark cho phân tích dữ liệu lớn và áp dụng cho bài toán phát hiện xâm nhập mạng

61 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 3,92 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI (16)
    • 1.1. GIỚI THIỆU BÀI TOÁN (16)
    • 1.2. MỤC TIÊU (16)
    • 1.3. BỐ CỤC CỦA BÁO CÁO (17)
  • CHƯƠNG 2: TỔNG QUAN VỀ PHÁT HIỆN XÂM NHẬP MẠNG (18)
    • 2.1. KHÁI NIỆM XÂM NHẬP MẠNG (18)
    • 2.2. MỘT SỐ KIỂU TẤN CÔNG PHỔ BIẾN (18)
      • 2.2.1. Tấn công từ chối dịch vụ (18)
      • 2.2.2. Tấn công thăm dò (19)
      • 2.2.3. Tấn công chiếm quyền root (19)
      • 2.2.4. Tấn công điều khiển từ xa (20)
    • 2.3. MỘT SỐ KỸ THUẬT PHÒNG CHỐNG XÂM NHẬP TRUYỀN THỐNG (20)
      • 2.3.1. Tường lửa (firewall) (20)
      • 2.3.2. Mã hóa dữ liệu (20)
      • 2.3.3. VPN (21)
    • 2.4. HỆ THỐNG PHÁT HIỆN XÂM NHẬP MẠNG (21)
      • 2.4.1. Khái niệm (21)
      • 2.4.2. Chức năng (22)
      • 2.4.3. Phân loại (22)
        • 2.4.3.1. Thu thập dữ liệu giám sát (22)
        • 2.4.3.2. Thu thập dữ liệu phân tích (24)
  • CHƯƠNG 3: TỔNG QUAN VỀ SPARK TRONG PHÂN TÍCH DỮ LIỆU LỚN (26)
    • 3.1. TỔNG QUAN SPARK (26)
    • 3.2. KIẾN TRÚC CƠ BẢN CỦA SPARK (27)
    • 3.3. SPARK APPLICATIONS (28)
    • 3.4. SPARKSESSION (29)
    • 3.5. DATAFRAMES (29)
    • 3.6. TRANSFORMATIONS (30)
    • 3.7. ACTIONS (31)
    • 3.8. WORKFLOW CỦA SPARK ARCHITECTURE (32)
    • 3.9. MLLIB (33)
      • 3.9.1. Học có giám sát (35)
      • 3.9.2. Gợi ý (36)
      • 3.9.3. Học không có giám sát (36)
      • 3.9.4. Phân tích đồ thị (36)
      • 3.9.5. Deep learning (37)
  • CHƯƠNG 4: KẾT QUẢ ỨNG DỤNG MỘT SỐ THUẬT TOÁN VÀO PHÁT HIỆN XÂM NHẬP MẠNG (38)
    • 4.1. BỘ DỮ LIỆU NSL-KDD (38)
    • 4.2. THỰC NGHIỆM (43)
      • 4.2.1. Thông số đánh giá các thuật toán học máy (43)
      • 4.2.2. Một số phương pháp đánh giá (43)
        • 4.2.2.1. Hold-out Validation (43)
        • 4.2.2.2. Cross-Validation (44)
        • 4.2.2.3. Bootstrap và Jackknife (45)
      • 4.2.3. Hyperparameter Tuning (46)
      • 4.2.4. Tiến hành thực nghiệm (47)
        • 4.2.4.1. Tiền xử lý dữ liệu (47)
        • 4.2.3.2. Lựa chọn thuộc tính (49)
        • 4.2.4.3. Ước lượng độ chính xác và lực chọn tham số (52)
        • 4.2.4.4. Tiến hành kiểm tra model (56)
  • KẾT LUẬN (58)
    • 1. KẾT QUẢ ĐẠT ĐƢỢC (58)
    • 2. KHÓ KHĂN GẶP PHẢI (58)
    • 3. VẤN ĐỀ TỒN ĐỌNG VÀ HƯỚNG PHÁT TRIỂN (59)
  • TÀI LIỆU THAM KHẢO (60)

Nội dung

TỔNG QUAN VỀ PHÁT HIỆN XÂM NHẬP MẠNG

KHÁI NIỆM XÂM NHẬP MẠNG

Xâm nhập mạng hiện nay vẫn chưa có định nghĩa chính xác và mỗi chuyên gia an toàn thông tin có cách hiểu riêng Hành vi này được định nghĩa là việc đột nhập vào mạng nhằm truy cập, thao tác hoặc lạm dụng tài sản có giá trị, dẫn đến việc làm cho tài nguyên mạng trở nên không đáng tin cậy hoặc không sử dụng được Hầu hết các cuộc tấn công xâm nhập mạng đều vượt qua các lớp bảo mật của hệ thống theo những phương thức cụ thể, nhằm phá vỡ các thuộc tính bảo mật của thông tin và hệ thống Một định nghĩa phổ biến khác về xâm nhập mạng là định nghĩa của Kendall.

1999 Tác giả đã đưa ra khái niệm về xâm nhập như sau:

Tấn công mạng, hay xâm nhập mạng, là các hoạt động có chủ đích nhằm khai thác lỗ hổng của hệ thống thông tin để làm suy yếu tính sẵn sàng, tính toàn vẹn và tính bảo mật của hệ thống.

MỘT SỐ KIỂU TẤN CÔNG PHỔ BIẾN

Hiện nay, các kiểu xâm nhập mạng được phân loại thành bốn loại chính: tấn công từ chối dịch vụ, kiểu thăm dò, tấn công chiếm quyền “root” và tấn công điều khiển từ xa Bài viết dưới đây sẽ cung cấp thông tin chi tiết về từng loại tấn công này.

2.2.1 Tấn công từ chối dịch vụ

Tấn công từ chối dịch vụ (DoS) là một loại tấn công mạng gây ra tình trạng quá tải cho hệ thống, khiến nó không thể cung cấp dịch vụ bình thường Hình thức tấn công này có thể làm gián đoạn hoạt động của hệ thống hoặc buộc hệ thống phải ngưng hoạt động hoàn toàn.

Tùy thuộc vào phương thức thực hiện, tấn công từ chối dịch vụ (DoS) có nhiều tên gọi khác nhau Một trong những phương thức phổ biến là lợi dụng điểm yếu của giao thức TCP để tiến hành tấn công DoS Bên cạnh đó, còn có hình thức tấn công từ chối dịch vụ phân tán (DDoS), nơi kẻ tấn công sử dụng nhiều nguồn khác nhau để thực hiện cuộc tấn công.

Denial of Service) và mới nhất là tấn công từ chối dịch vụ theo phương pháp phản xạ DRDoS ( Distributed Reflection of Service)

Tấn công từ chối dịch vụ cổ điển (DoS) bao gồm các phương thức như đăng nhập liên tiếp, tấn công làm ngập SYN, tấn công Smurf, trong đó kẻ tấn công phát sinh nhiều gói ICMP tới địa chỉ Broadcast của mạng với địa chỉ nguồn là mục tiêu, và các cuộc tấn công “gây lụt” UDP.

Tấn công DDoS (Distributed Denial of Service) xuất hiện từ năm 1999 và có sức mạnh vượt trội so với các cuộc tấn công DoS cổ điển Mục tiêu chính của các cuộc tấn công DDoS là chiếm dụng băng thông, gây nghẽn mạch hệ thống và dẫn đến việc hệ thống ngưng hoạt động Kẻ tấn công thường chiếm dụng và điều khiển nhiều máy tính hoặc mạng máy tính từ nhiều địa điểm khác nhau để đồng loạt gửi một lượng lớn gói tin, nhằm làm tê liệt tài nguyên và làm nghẽn đường truyền của mục tiêu cụ thể.

2.2.2 Tấn công thăm dò Đối với kiểu tấn công thăm dò (Probe), tin tặc quét mạng hoặc máy tính để tìm ra điểm yếu dễ tấn công mà thông qua đó tin tặc có thể thu thập thông tin trái phép về tài nguyên, các lỗ hổng hoặc dịch vụ của hệ thống Các kiểu tấn công thăm dò như: Sniffing, Ping Sweep, Ports Scanning,…

2.2.3 Tấn công chiếm quyền root

Kiểu tấn công chiếm quyền root (User to Root - U2R) xảy ra khi tin tặc với quyền hạn của người dùng bình thường cố gắng truy cập trái phép vào quyền quản trị cao nhất của hệ thống Một trong những phương thức phổ biến để thực hiện kiểu tấn công này là gây ra tình trạng tràn bộ đệm.

Kiểu tấn công này, mặc dù ít phổ biến hơn so với các hình thức DoS và probe, lại rất nguy hiểm vì kẻ tấn công có thể chiếm quyền truy cập cao nhất, từ đó kiểm soát toàn bộ hệ thống.

2.2.4 Tấn công điều khiển từ xa Đây là kiểu tấn công điều khiển từ một máy tính từ xa có tên tiếng anh là

"Remote to local" hay R2L là một hình thức tấn công mà kẻ tấn công không có tài khoản trong hệ thống nhưng cố gắng gửi gói tin đến một máy tính qua mạng Chúng khai thác lỗ hổng bảo mật để truy cập trái phép với tư cách người dùng cục bộ Một trong những phương pháp tấn công phổ biến là đoán mật khẩu bằng cách sử dụng phương pháp từ điển brute-force hoặc FTP Write.

MỘT SỐ KỸ THUẬT PHÒNG CHỐNG XÂM NHẬP TRUYỀN THỐNG

Một số các biện pháp ngăn chặn xâm nhập được sử dụng khá phổ biến như: tường lửa (firewall), mã hóa, VPN,…

Tường lửa là một giải pháp quan trọng trong hệ thống mạng, giúp ngăn chặn truy cập trái phép và bảo vệ thông tin nội bộ khỏi sự xâm nhập không mong muốn Tường lửa có thể được triển khai dưới dạng phần cứng, phần mềm hoặc kết hợp cả hai, thường được đặt giữa mạng nội bộ của doanh nghiệp và Internet Chức năng chính của tường lửa là đảm bảo an toàn thông tin, ngăn chặn truy cập không mong muốn từ bên ngoài và kiểm soát việc truy cập từ bên trong tới các địa chỉ nhất định trên Internet.

Mã hóa dữ liệu là một phương pháp bảo vệ thông tin bằng cách chuyển đổi dữ liệu từ dạng thông thường sang dạng mã hóa không thể đọc được, nhưng có thể giải mã lại bằng một phương thức tương ứng Mục đích chính của mã hóa là ngăn chặn việc nghe trộm và chỉnh sửa dữ liệu trong quá trình truyền tải, đảm bảo rằng bên thứ ba không thể đọc được nội dung thông điệp từ các gói tin đã mã hóa Nó cũng giúp ngăn chặn giả mạo thông tin và đảm bảo tính không thể phủ nhận trong an toàn mạng Mỗi phương pháp mã hóa đi kèm với một phương pháp giải mã nhất định, bao gồm các thuật toán và bộ khóa mã bí mật.

Mạng riêng ảo (VPN) là một kết nối mạng được triển khai trên hạ tầng mạng công cộng, với các chính sách quản lý và bảo mật tương tự như mạng cục bộ VPN sử dụng cơ chế mã hóa dữ liệu để tạo ra một đường ống bảo mật giữa nơi gửi và nơi nhận, giúp đảm bảo an toàn khi truyền tải thông tin qua mạng công cộng Dữ liệu được mã hóa chỉ để lộ phần đầu gói, cho phép nó di chuyển nhanh chóng đến đích mà không bị lộ nội dung, ngay cả khi bị bắt lại Kết nối giữa dữ liệu được mã hóa và đóng gói được gọi là kết nối VPN, thường được biết đến là đường ống VPN (VPN Tunnel).

HỆ THỐNG PHÁT HIỆN XÂM NHẬP MẠNG

Mặc dù mỗi hệ thống máy tính có các cơ chế bảo mật riêng để ngăn chặn xâm nhập trái phép, nhưng các giải pháp như firewall và mã hóa dữ liệu vẫn chưa đủ mạnh để phát hiện và ngăn chặn các cuộc tấn công ngày càng tinh vi Do đó, cần thiết phải xây dựng một hệ thống giám sát chuyên biệt có khả năng phát hiện và cảnh báo sớm về các nguy cơ tấn công, và hệ thống phát hiện xâm nhập chính là giải pháp cho vấn đề này.

Phát hiện xâm nhập mạng là quá trình theo dõi và phân tích các sự kiện trong hệ thống máy tính hoặc mạng, nhằm phát hiện dấu hiệu của sự cố tiềm ẩn, bao gồm hành vi đáng ngờ, mối đe dọa sắp xảy ra, và vi phạm chính sách bảo mật hoặc tiêu chuẩn bảo mật đã được thiết lập.

Hệ thống phát hiện xâm nhập mạng (IDS) là thiết bị hoặc phần mềm giám sát lưu lượng mạng, thu thập thông tin và phát hiện các hoạt động xâm nhập, đồng thời cung cấp cảnh báo kịp thời.

Chức năng quan trọng nhất là: giám sát – cảnh báo – bảo vệ

 Giám sát: lưu lượng mạng và các hoạt động khả nghi

 Cảnh báo: báo cáo về tình hình mạng cho hệ thống và nhà quản trị

Bảo vệ hệ thống là việc áp dụng các thiết lập mặc định và cấu hình từ quản trị viên để thực hiện các biện pháp hiệu quả nhằm ngăn chặn kẻ xâm nhập và các hành động phá hoại.

 Phân biệt: tấn công bên trong và tấn công bên ngoài

 Phát hiện: những dấu hiệu bất thương dựa trên những gì đã biết hoặc nhờ vào sự so sánh thông lượng mạng

Hệ thống IDS có thể được phân loại dựa trên cách thu thập dữ liệu giám sát hoặc dựa trên phương pháp phân tích [3]

2.4.3.1 Thu thập dữ liệu giám sát

Theo cách thu thập dữ liệu giám sát, hệ thống phát hiện xâm nhập (IDS) được phân loại thành hai loại chính: IDS dựa trên mạng (NIDS) và IDS dựa trên máy trạm (HIDS).

- Hệ thống phát hiện xâm nhập ở mức mạng (Network – based IDS)

Hệ thống NIDS (Network Intrusion Detection System) sử dụng bộ dò và bộ cảm biến được cài đặt trên toàn mạng để theo dõi lưu lượng Các bộ dò tìm kiếm lưu lượng trùng khớp với những mô tả hoặc dấu hiệu đã được định nghĩa, trong khi các bộ cảm biến thu nhận và phân tích lưu lượng trong thời gian thực Khi phát hiện mẫu lưu lượng hoặc dấu hiệu khả nghi, bộ cảm biến sẽ gửi tín hiệu cảnh báo đến trạm quản trị và có thể được cấu hình để ngăn chặn các xâm nhập tiếp theo NIDS bao gồm nhiều cảm biến phân bố trên toàn mạng nhằm theo dõi các gói tin và so sánh với các mẫu đã được xác định để phát hiện tấn công.

- Hệ thống phát hiện xâm nhập ở mức máy trạm chủ (Host – based IDS)

HIDS, hay Hệ thống phát hiện xâm nhập trên máy chủ, là phần mềm được cài đặt trên các trạm làm việc để giám sát mọi hoạt động diễn ra trên máy tính Ví dụ minh họa cho HIDS cho thấy hệ thống này phân tích thông tin từ nội bộ, cung cấp cơ chế phân tích toàn diện để phát hiện chính xác các thành phần tấn công.

Nhược điểm của HIDS là quá trình thu thập dữ liệu diễn ra trên từng trạm máy chủ và ghi vào log, điều này có thể dẫn đến việc giảm hiệu suất mạng.

2.4.3.2 Thu thập dữ liệu phân tích

Theo cách thu thập dữ liệu phân tích, hệ thống phát hiện xâm nhập (IDS) được chia thành ba loại chính: dựa vào dấu hiệu (Misuse-based IDS), dựa vào bất thường (Anomaly-based IDS) và kết hợp (Hybrid IDS) Trong đó, Hybrid IDS kết hợp giữa hai hệ thống dựa vào dấu hiệu và bất thường, vì vậy bài viết này sẽ tập trung trình bày về hai loại hệ thống chính là Misuse-based IDS và Anomaly-based IDS.

- Hệ thống phát hiện xâm nhập dựa vào dấu hiệu (Misuse-based IDS )

Hệ thống IDS này dựa vào việc nhận diện các dấu hiệu của cuộc xâm nhập, bao gồm thông tin về các kết nối nguy hiểm đã được xác định trước Nó mô hình hóa các dấu hiệu của các cuộc tấn công đã biết và so sánh thông tin gói tin đến với những dấu hiệu này để phát hiện hoạt động đáng ngờ, từ đó đưa ra cảnh báo cho hệ thống Ưu điểm của hệ thống là khả năng phát hiện tấn công đã biết với tỷ lệ cảnh báo sai thấp Tuy nhiên, nhược điểm lớn nhất là chỉ phát hiện được các cuộc tấn công đã biết, yêu cầu cập nhật thường xuyên các dấu hiệu về các cuộc tấn công mới và thời gian phát hiện có thể tăng khi cơ sở dữ liệu mở rộng.

Hệ thống phát hiện xâm nhập dựa vào bất thường (Anomaly-based IDS) hoạt động dựa trên giả thiết rằng "Dấu hiệu của các cuộc tấn công khác biệt với dấu hiệu của những trạng thái mạng bình thường." Quy trình phát hiện bao gồm hai giai đoạn: giai đoạn huấn luyện, nơi xây dựng hồ sơ về các hoạt động bình thường, và giai đoạn phát hiện, trong đó các quan sát được so khớp với hồ sơ để xác định dấu hiệu bất thường Ưu điểm nổi bật của hệ thống này là khả năng phát hiện các mối nguy hiểm chưa được biết đến, điều này đã thu hút sự quan tâm đáng kể từ các nhà nghiên cứu trong những năm gần đây Do đó, luận văn sẽ tập trung vào phương pháp tiếp cận này.

TỔNG QUAN VỀ SPARK TRONG PHÂN TÍCH DỮ LIỆU LỚN

TỔNG QUAN SPARK

Apache Spark là một nền tảng tính toán hợp nhất với các thư viện hỗ trợ xử lý dữ liệu song song trên các cụm máy tính Nó tương thích với nhiều ngôn ngữ lập trình như Python, Java, Scala và R, và cung cấp các thư viện cho nhiều tác vụ từ SQL, streaming đến machine learning Spark có khả năng hoạt động trên mọi thiết bị, từ máy tính cá nhân đến hàng trăm cụm server, giúp hệ thống dễ dàng khởi động và mở rộng để xử lý dữ liệu lớn.

Hình 3.1 minh họa tất cả các thành phần và thư viện mà Spark cung cấp đến người dùng

Hiện nay, các tổ chức lưu trữ một khối lượng thông tin khổng lồ phục vụ nhiều mục đích khác nhau Điều này đòi hỏi một mô hình mới có khả năng xử lý dữ liệu lớn, tính toán song song và tự động mở rộng Spark đã được phát triển để đáp ứng những yêu cầu này.

KIẾN TRÚC CƠ BẢN CỦA SPARK

Khi nhắc đến máy tính, chúng ta thường nghĩ đến máy tính bàn hoặc laptop, nhưng những thiết bị này không đủ mạnh để xử lý các tác vụ tính toán phức tạp Để khắc phục vấn đề này, Spark đã tổ chức kiến trúc hệ thống thành các cluster, bao gồm một nhóm máy tính và nguồn tài nguyên liên quan Mỗi cluster được cấu thành từ nhiều Worker Node, giúp tăng cường khả năng xử lý và hiệu suất tính toán.

Node đảm bảo thực thi các tác vụ được chỉ định thông qua Spark Context Tất cả các lệnh thực thi trên Spark đều được gửi qua Spark Context, mà làm việc với cluster manager để quản lý các tác vụ Trong Spark, có các cluster manager như Spark’s standalone cluster manager.

YARN hoặc Mesos Hình 3.2 minh họa về kiến trúc của Spark Cluster

SPARK APPLICATIONS

Hình 3.3 Kiến trúc của hệ thống Spark

Hệ thống Spark được cấu thành từ một quá trình driver và một nhóm các quá trình executor Hình 3.3 minh họa kiến trúc của hệ thống Spark, với một driver process ở bên trái và bốn executor process ở bên phải.

Trong hệ thống Spark, driver process sẽ hàm main của chương trình, và được đặt trong một node của một cluster, và nhiệm vụ của nó như sau:

- Duy trì thông tin về Spark Application

- Phản ứng lại với chương trình của người dùng hoặc kết quả đầu vào

- Phân tích, phân rã và lên biểu đồ công các việc giữa các executor

Executor là những phần chịu trách nhiệm cho việc xử lí các tác vụ mà driver phân công cho chúng Nó có nhiệm vụ như sau:

- Thực thi code được giao

- Báo cáo trạng thái của việc tính toán cho node driver

SPARKSESSION

Chúng ta điều khiển hệ thống Spark thông qua driver process gọi là SparkSession, nơi mà một thể hiện của SparkSession thực hiện các thao tác của người dùng trên các cluster Mối quan hệ giữa SparkSession và Spark Application là 1-1, tức là chỉ có một SparkSession khi một ứng dụng Spark được khởi chạy Hình 3.4 minh họa các API mà SparkSession cung cấp.

DATAFRAMES

DataFrame là API cấu trúc phổ biến trong Spark, hiển thị dữ liệu dưới dạng bảng với các cột và hàng, trong đó kiểu dữ liệu của các cột được gọi là Schema Khi dữ liệu quá lớn để xử lý trên một máy tính, Spark sẽ chia DataFrame thành nhiều phần để nhiều máy tính cùng xử lý Để thực hiện công việc song song, Spark phân chia dữ liệu thành các partition, mỗi partition là một tập hợp các hàng được lưu trữ trên một máy tính trong cluster Các partition của DataFrame thể hiện cách dữ liệu được phân phối trên các tầng vật lý trong cluster trong quá trình thực thi, và việc phân chia này được thực hiện tự động bởi Spark.

29 động biết cách sẽ thực thị chính xác trên các cluster Chúng ta có thể hình dung cách phân phối chia nhỏ thành 5 partition trong Spark ở hình 3.5

Hình 3.5 Ví dụ cách phân phối partition trong Spark

TRANSFORMATIONS

Trong Spark, kiến trúc dữ liệu là immutable, tức là không thể thay đổi sau khi được tạo ra Để biến đổi dữ liệu, chúng ta cần tạo ra một dữ liệu mới từ dữ liệu gốc Có hai loại biến đổi trong Spark.

- Narrow dependencies là kiểu biến đổi với mỗi partition đầu vào sẽ cho ra một partition tương ứng (Hình 3.6)

- Wide dependencies: là kiểu biến đổi với partition đầu vào sẽ cho ra nhiều partition tương ứng Spark sẽ trao đổi các partition giữa các cluster (Hình 3.7)

Hình 3.6 Phép biến đổi narrow dependencies Hình 3.7 Phép biến đổi wide dependencies

Phép biến đổi trong Spark là cách chỉ định chuỗi thao tác dữ liệu khác nhau, dẫn đến khái niệm Lazy Evaluation Điều này có nghĩa là Spark sẽ trì hoãn việc thực thi đồ thị tính toán cho đến thời điểm cuối cùng Thay vì định nghĩa dữ liệu ngay lập tức khi thực hiện một số phép toán, bạn sẽ xây dựng một đồ thị các phép toán trước khi thực thi.

Kế hoạch biến đổi mà bạn muốn áp dụng lên dữ liệu gốc cho phép Spark tối ưu hóa quá trình xử lý Bằng cách trì hoãn việc thực thi lệnh cho đến khi cần thiết, Spark có khả năng tối ưu hóa dữ liệu đầu vào và các phép biến đổi.

ACTIONS

Transformations cho phép xây dựng kế hoạch biến đổi logic để kích hoạt việc tính toán và thực hiện các hành động Một hành động sẽ hướng dẫn Spark thực hiện tính toán kết quả từ chuỗi các biến đổi, như được minh họa trong hình 3.8.

Hình 3.8 Quá trình thao tác DataFrame theo logic và vật lý

WORKFLOW CỦA SPARK ARCHITECTURE

Hình 3.9 Workflow của Spark Architecture

Hình 3.9 minh họa workflow của Spark Architecture Nó bao gồm các bước như sau:

In the first step, the client uploads the Spark code, and once a program is submitted, the driver converts the user's code, which includes transformations and actions, into a structure known as a logically directed acyclic graph (DAG) During this process, Spark also optimizes performance, such as through pipelining transformations.

Bước 2: Sau khi hoàn thành bước trước, Spark sẽ chuyển đổi DAG thành kế hoạch thực thi vật lý với nhiều giai đoạn Sau khi quá trình biến đổi hoàn tất, Spark tạo ra các thành phần thực thi tại tầng vật lý, và các task này sẽ được đóng gói và chuyển đến các cluster.

Bước 3: Driver sẽ thông báo cho cluster manager để điều phối các tài nguyên Cluster manager sẽ khởi động các executor trên các worker node, và tại thời điểm này, driver sẽ phân công các task cho các executor dựa trên dữ liệu có sẵn Khi các executor được khởi động, chúng sẽ đăng ký với driver, giúp driver theo dõi các executor đang thực hiện nhiệm vụ nào.

Trong suốt quá trình thực hiện các tác vụ, chương trình driver sẽ quản lý các executor và lập kế hoạch cho các tác vụ tương lai để gửi đến các executor.

MLLIB

MLlib là một gói trong hệ sinh thái Apache Spark, được tích hợp sẵn và cung cấp các giao diện hỗ trợ thu thập, làm sạch dữ liệu, cùng với các kỹ thuật lựa chọn và huấn luyện mô hình học máy Nó cho phép điều chỉnh các mô hình và ứng dụng chúng trong tính toán MLlib rất phù hợp với các bài toán trong đề tài này, vì vậy chúng ta sẽ tập trung tìm hiểu sâu hơn về MLlib.

MLlib bao gồm hai gói: org.apache.spark.ml cho việc xử lý dữ liệu kiểu DataFrames và org.apache.spark.mllib cho dữ liệu kiểu RDD Với MLlib, Spark hỗ trợ xử lý dữ liệu, tạo thuộc tính cho tập huấn luyện và kiểm tra, cũng như xây dựng mô hình nhanh chóng hơn Khi đối mặt với dữ liệu lớn và mô hình có dung lượng vượt quá khả năng xử lý của một máy tính, Spark sử dụng MLlib để phân tách và xử lý dữ liệu một cách dễ dàng và nhanh chóng.

Hình 3.11 Quy trình thực hiện học máy trong Spark

Hình 3.11 minh họa quy trình thực hiện học máy trong Spark Nó bao gồm các bước như sau:

1 Thu thập và trích xuất các dữ liệu liên quan đến yêu cầu của bài toán

2 Tiền xử lí dữ liệu

3 Chuyển đổi dữ liệu thành các thuộc tính để phục vụ cho thuật toán

4 Chia dữ liệu thành các tập traning để sinh ra model

5 Đánh giá và so sánh các model để chọn ra cáí tốt nhất

6 Tận dụng các kết quả từ những bước trước đó để sử dụng model nhằm dự đoán, xác định ngoại vi hoặc giải quyết các thách thức chung trong kinh doanh

Các thuật toán học máy MLlib hỗ trợ:

- Tiền xử lí dữ liệu

- Học không có giám sát

Học có giám sát là một phương pháp quan trọng trong học máy, sử dụng dữ liệu đã được dán nhãn để huấn luyện mô hình dự đoán giá trị mới MLlib cung cấp hỗ trợ cho các thuật toán phân loại và hồi quy trong quá trình này, giúp cải thiện độ chính xác của các dự đoán.

Phân loại là một nhóm các thuật toán giúp dự đoán nhãn của dữ liệu, bao gồm các loại như Binary Classification (phân loại nhị phân với 2 nhãn), Multiclass Classification (phân loại đa lớp với nhiều nhãn), và Multilabel Classification (phân loại đa nhãn cho phép gán nhiều nhãn cho một đối tượng) Trong lĩnh vực này, MLlib hỗ trợ các phương pháp như hồi quy logistic, cây quyết định, rừng ngẫu nhiên và cây tăng cường gradient.

In classification tasks, the label set for objects consists of discrete and finite values, while in regression tasks, the label set includes continuous and infinite values For regression, MLlib offers support for various techniques including linear regression, generalized linear regression, isotonic regression, decision trees, random forests, gradient-boosted trees, and survival regression.

Gợi ý là một công cụ hỗ trợ ra quyết định, cung cấp giải pháp cá nhân hóa mà không cần trải qua quá trình tìm kiếm phức tạp Nó học từ hành vi của người dùng và đề xuất các kết quả tốt nhất trong số những lựa chọn phù hợp.

3.9.3 Học không có giám sát

Học không có giám sát là phương pháp tìm kiếm mối quan hệ giữa các đối tượng trong tập dữ liệu mà không cần nhãn để dự đoán kết quả Khác với học có giám sát, học không có giám sát khám phá cấu trúc của dữ liệu MLlib hỗ trợ các kỹ thuật như k-mean, bisecting k-mean, mô hình hỗn hợp Gaussian và phân bổ Dirichlet tiềm ẩn.

Phân tích đồ thị là một tập hợp các thuật toán dựa trên cấu trúc đồ thị, tập trung vào các đối tượng được chỉ định và mối quan hệ giữa chúng Ví dụ, một đồ thị mẫu với bảy nút và bảy cạnh được minh họa trong hình 3.12.

Hình 3.12 Đồ thị mẫu có bảy nút và bảy cạnh

Deep learning là một tập hợp các thuật toán nhằm mô hình hóa dữ liệu ở mức độ trừu tượng cao Điều này được thực hiện thông qua việc sử dụng nhiều lớp xử lý phức tạp và các biến đổi phi tuyến tính.

KẾT QUẢ ỨNG DỤNG MỘT SỐ THUẬT TOÁN VÀO PHÁT HIỆN XÂM NHẬP MẠNG

BỘ DỮ LIỆU NSL-KDD

Trước khi sử dụng các bộ phân lớp để phát hiện xâm nhập mạng, chúng cần trải qua quá trình huấn luyện và kiểm tra trên tập dữ liệu đã được gán nhãn Tập dữ liệu KDD99, được tạo ra từ dữ liệu TCPDUMP trong 7 tuần từ hệ thống phát hiện xâm nhập DARPA 1998, là tập dữ liệu phổ biến nhất cho các thí nghiệm KDD99 bao gồm các tập dữ liệu huấn luyện với 4.898.431 bản ghi, mỗi bản ghi có 41 thuộc tính như loại giao thức, dịch vụ và cờ, và được gán nhãn là bình thường hoặc một cuộc tấn công cụ thể Số thứ tự và tên các thuộc tính được mô tả chi tiết trong bảng 4.1.

Bảng 4.1 Tập 41 thuộc tính của tập dữ liệu KDD99

STT Tên thuộc tính Mô tả Tính chất

1 duration Chiều dài (số giây) của kết nối Liên tục

2 protocol_type Loại giao thức, ví dụ tcp, udp, Đứt đoạn

3 service Dịch vụ mạng trên các điểm đến ví dụ http, telnet, Đứt đoạn

4 src_bytes Số lượng dữ liệu byte từ nguồn tới đích Liên tục

5 dst_bytes Số lượng dữ liệu byte từ đích tới nguồn Liên tục

6 flag Tình trạng bình thường hoặc lỗi kết nối Đứt đoạn

7 land Bằng 1 nếu kết nối là từ/đến host tương tự/port; bằng 0 nếu ngược lại Đứt đoạn

8 wrong_fragment Số lượng wrong fragments Liên tục

9 urgent Số lượng gói tin khẩn cấp Liên tục

10 hot Số lượng chỉ số nóng Liên tục

11 num_failed_logins Số lần đăng nhập thất bại Liên tục

12 logged_in Bằng 1 nếu đăng nhập thành công; 0 nếu ngược lại Đứt đoạn

13 num_compromised Số lượng điều kiện thỏa hiệp Liên tục

14 root_shell Bằng 1 nếu thu được root shell; 0 nếu ngược lại Đứt đoạn

15 su_attempted Bằng 1 nếu cố gắng thực hiện lệnh ''su root''; 0 nếu ngược lại Đứt đoạn

16 num_root Số lần truy cập quyền “root” Liên tục

17 num_file_creations Số hoạt động tạo tập tin Liên tục

18 num_shells Số lượng shell prompts Liên tục

19 num_access_files Số hoạt động trên các tập tin kiểm soát truy cập Liên tục

20 num_outbound_cmds Số lượng lệnh outbound trong 1 phiên ftp Liên tục

21 is_host_login Bằng 1 nếu đăng nhập thuộc về danh sách ''máy chủ'' đã biết; 0 nếu ngược lại Đứt đoạn

22 is_guest_login Bằng 1 nếu đăng nhập là một tài khoản khách; 0 nếu ngược lại Đứt đoạn

Số lượng kết nối đến các máy chủ tươngtự giống như các kết nối hiện hành trong2 giây đã qua

24 serror_rate Số % kết nối có lỗi “SYN” Liên tục

25 rerror_rate Số % kết nối có lỗi “REJ” Liên tục

26 same_srv_rate Số % các kết nối đến những dịch vụ tương tự Liên tục

27 diff_srv_rate % kết nối với các dịch vụ khác nhau Liên tục

Số lượng kết nối đến các dịch vụ tương tự giống nhau các kết nối hiện hành trong2 giây đã qua

29 srv_serror_rate % kết nối có lỗi “SYN” từ các dịch vụ Liên tục

30 srv_rerror_rate % kết nối có lỗi “REJ” từ các dịch vụ Liên tục

31 srv_diff_host_rate Tỉ lệ % kết nối đến máy chủ khác nhau Liên tục

32 dst_host_count Đếm các kết nối có cùng một đích đến Liên tục

33 dst_host_srv_count Đếm các kết nối có cùng host đích và sử dụng các dịch vụ tương tự Liên tục

34 dst_host_same_srv_rate % các kết nối có cùng host đích và sử dụng các dịch vụ tương tự Liên tục

35 dst_host_diff_srv_rate % các dịch vụ khác nhau trên các host hiện hành Liên tục

36 dst_host_same_src_port_ rate

% các kết nối đến các host hiện thời có cùng cổng src Liên tục

37 dst_host_srv_diff_host

% các kết nối đến các dịch vụ tương tự đến từ các host khác nhau Liên tục

38 dst_host_serror_rate % các kết nối đến các host hiện thời có một lỗi S0 Liên tục

39 dst_host_srv_serror_rate % các kết nối đến các host hiện hành và dịch vụ quy định rằng có một lỗi S0 Liên tục

40 dst_host_rerror_rate % các kết nối đến các host hiện thời có mỗi lỗi RST Liên tục

41 dst_host_srv_rerror_rate % các kết nối đến các máy chủ hiện hành và dịch vụ quy định rằng có lỗi RST Liên tục

Ví dụ về một bản ghi kết nối trong bộ KDD 99:

Trong mỗi bản ghi, thông tin cuối cùng là nhãn của kết nối, ví dụ như trong trường hợp này, nhãn cuối cùng là “smurf”, liên quan đến kiểu tấn công smurf, một hình thức tấn công từ chối dịch vụ (DoS).

Tập dữ liệu huấn luyện chứa 22 kiểu tấn công và thêm 17 kiểu trong tập dữ liệu kiểm tra, được phân thành 4 nhóm:

Tấn công từ chối dịch vụ (DoS) bao gồm nhiều hình thức như neptune, smurf, pod, teardrop, và các kiểu tấn công này nhằm làm quá tải tài nguyên tính toán hoặc bộ nhớ Kết quả là, kẻ tấn công có thể chặn đứng khả năng xử lý các yêu cầu hợp lệ, khiến người dùng hợp lệ không thể truy cập vào máy chủ.

Remote to Local (R2L) là một loại tấn công mạng bao gồm các phương thức như guess-passwd, ftp-write, imap và phf Trong kiểu tấn công này, kẻ tấn công không cần có tài khoản nhưng có khả năng gửi gói tin đến một máy tính qua mạng Bằng cách khai thác các lỗ hổng bảo mật, họ có thể đạt được quyền truy cập cục bộ như một người sử dụng hợp pháp của máy đó.

User to Root (U2R) là các kiểu tấn công như buffer-overflow, load-module, perl, và rootkit, trong đó kẻ tấn công bắt đầu với quyền truy cập bình thường và khai thác các lỗ hổng để đạt được quyền truy cập root trên hệ thống.

Probe là một hình thức tấn công mạng bao gồm các kỹ thuật như port-sweep, ip-sweep, và nmap Trong các cuộc tấn công này, kẻ xâm nhập cố gắng thu thập thông tin về mạng máy tính, từ đó làm suy yếu khả năng kiểm soát an ninh của hệ thống.

Năm 2009, các tác giả đã phân tích bộ dữ liệu KDD CUP 99 (KDD99) và phát hiện ra rằng có đến 78% bản ghi trong tập huấn luyện và 75% trong tập kiểm tra là dư thừa Sự tồn tại của các bản ghi trùng lặp này có thể cản trở hiệu quả của các thuật toán máy học, đặc biệt là với những bản ghi không xuất hiện thường xuyên như các cuộc tấn công U2R Họ cũng chỉ ra rằng các bản ghi trùng lặp có thể làm sai lệch kết quả đánh giá, vì các thuật toán sẽ ưu tiên phát hiện những bản ghi xuất hiện thường xuyên hơn Để khắc phục vấn đề này, các tác giả đã phát triển bộ dữ liệu NSL-KDD từ KDD99 bằng cách loại bỏ các bản ghi dư thừa Bộ dữ liệu NSL-KDD bao gồm 125.973 bản ghi trong tập huấn luyện và 22.544 bản ghi trong tập kiểm tra, ít hơn nhiều so với KDD99 Họ cho rằng kích thước của NSL-KDD là hợp lý và có thể được sử dụng như một bộ dữ liệu hoàn chỉnh mà không cần lấy mẫu ngẫu nhiên, giúp cho việc so sánh các nghiên cứu trở nên nhất quán hơn.

Thông tin chi tiết về mỗi kiểu tấn công trong tập dữ liệu NSL-KDD được mô tả ở bảng 4.2

Bảng 4.2.Thông tin tập dữ liệu NSL-KDD

Phân lớp Tên tấn công Số bản ghi Tỷ lệ %

Probe ipsweep, nmap, portsweep, satan

Dos back, land, neptune, pob, smurf, teardrop

U2R buffer_overlow, loadmodule, perl, rootkit

R2L ftp_write, guess_passwd, imap, multihop, phf, spy, warezclient, warezmaster

THỰC NGHIỆM

4.2.1 Thông số đánh giá các thuật toán học máy Để đánh giá tính hiệu quả áp dụng các thuật toán học máy, chúng ta sẽ quan tâm đến khái niệm ma trận hỗn độn (confusion matrix) đối với bài toán phát hiện xâm nhập mạng như sau:

Bảng 4.3 mô tả confusion matrix, trong đó FP (False Positive) là số mẫu được phân lớp là bất thường nhưng thực tế là bình thường, dẫn đến cảnh báo sai TP (True Positive) là số mẫu được phân lớp và thực sự là bất thường FN (False Negative) là số mẫu được phân lớp là bình thường nhưng thực tế là bất thường, gây nguy hiểm cho hệ thống TN (True Negative) là số mẫu được phân lớp và thực sự là bình thường Dựa vào định nghĩa này, việc đánh giá hiệu quả của các hệ thống phát hiện xâm nhập mạng được thực hiện thông qua việc đo lường và so sánh độ chính xác.

4.2.2 Một số phương pháp đánh giá

Hold-out validation là một phương pháp đánh giá mô hình đơn giản, trong đó dữ liệu được chia thành hai phần: một phần lớn để huấn luyện mô hình và một phần nhỏ hơn để đánh giá hiệu suất của mô hình Phương pháp này giúp kiểm tra khả năng tổng quát của mô hình trên tập dữ liệu chưa thấy.

43 dữ liệu đủ lớn và tập con đủ lớn để huấn luyện cho model Phương pháp Hold-out Validation được mô tả trong hình 4.1

Cross-Validation là một phương pháp hiệu quả để tạo ra tập hợp các tập training và validation, với k-fold cross-validation là phiên bản phổ biến nhất Phương pháp này bắt đầu bằng việc chia tập dữ liệu training thành k folds Đối với mỗi hyperparameter, mô hình sẽ được huấn luyện trên k-1 tập fold và sử dụng tập fold còn lại để đánh giá Kết quả đánh giá sẽ là giá trị trung bình từ các lần chạy tương ứng với hyperparameter và tập k fold Bằng cách lặp lại quy trình này với nhiều hyperparameter khác nhau, chúng ta có thể xác định hyperparameter tốt nhất cho mô hình.

Phương pháp Bootstrap là kỹ thuật lấy mẫu có hoàn lại, cho phép một cá thể xuất hiện nhiều lần trong quá trình lấy mẫu Kỹ thuật này tạo ra một tập dữ liệu mới từ các phần tử của tập gốc, với các phần tử sau khi được lấy mẫu sẽ được hoàn trả lại cho tập gốc.

Phương pháp Jackknife là một kỹ thuật lấy mẫu có hoàn lại, nhưng khác với phương pháp bootstrap, Jackknife loại bỏ một số phần tử trong tập dữ liệu gốc để tạo ra các tập con mới Quá trình này được lặp lại nhiều lần, tạo ra nhiều tập con khác nhau cho phân tích.

Phương pháp Bootstrap và Jackknife được mô tả trong hình 4.3

Hyperparameter tuning là quá trình tối ưu hóa các tham số cần thiết cho mô hình, nhằm tìm ra bộ tham số tốt nhất Các hyperparameter là những tham số mà mô hình cần xác định trước khi áp dụng thuật toán, ví dụ như số cụm trong phương pháp gom cụm Để thực hiện hyperparameter tuning, có nhiều phương pháp khác nhau được áp dụng.

Grid Search là phương pháp tìm kiếm tối ưu hyperparameter bằng cách sử dụng một danh sách các giá trị cụ thể và đánh giá từng giá trị đó với mô hình để xác định lựa chọn tốt nhất Mặc dù hiệu quả, phương pháp này tiêu tốn nhiều thời gian và chi phí tính toán Hình 4.4 minh họa quy trình của Grid Search.

Random Search là phương pháp tìm kiếm ngẫu nhiên trong danh sách hyperparameter, thay vì sử dụng toàn bộ giá trị như Grid Search Phương pháp này giúp tiết kiệm chi phí tính toán vì chỉ cần đánh giá một số giá trị ngẫu nhiên Hình 4.5 mô tả rõ hơn về Random Search.

4.2.4.1 Tiền xử lý dữ liệu

Bộ dữ liệu NSL-KDD bao gồm bốn cột thuộc tính phi số, trong đó cột thứ hai thể hiện loại giao thức, cột thứ ba thể hiện loại dịch vụ, cột thứ tư thể hiện trạng thái cờ của kết nối, và cột thứ 42 thể hiện nhãn kết nối (bình thường hoặc tên tấn công cụ thể) Để chuyển đổi các thuộc tính số hai, ba và bốn sang dạng số, chúng ta sử dụng phương pháp "One hot encoding", giúp tính toán hội tụ nhanh hơn mà không làm thay đổi thứ tự giữa các giá trị Phương pháp này sẽ thêm n cột mới vào bảng dữ liệu, với n là tổng số thuộc tính của ba cột trên, và sau đó loại bỏ ba cột thuộc tính dạng categorical Với dữ liệu NSL-KDD có tổng cộng 84 thuộc tính, bảng dữ liệu sẽ được mở rộng thêm 84 cột mới, mỗi cột tương ứng với tên thuộc tính, trong đó đánh số 1 cho những thuộc tính mà đối tượng sở hữu và 0 cho những thuộc tính không sở hữu Phương pháp này được minh họa trong hình 4.6.

Hình 4.6 Minh họa phương pháp One hot encoding

Trong tập dữ liệu NSL-KDD, đối với cột chứa nhãn dữ liệu ta sẽ chuyển đổi thành 2 dạng:

Nhãn dữ liệu được phân loại thành hai loại: normal và attack, với chỉ số indexer tương ứng là 0 và 1 Các nhãn có giá trị normal sẽ được giữ nguyên, trong khi những nhãn còn lại sẽ được gán nhãn là attack.

- Nhãn có năm loại normal, dos, probe, r2l, u2r và được đánh indexer theo thứ tự là 0, 1,

2, 3, 4 Phương án biến đổi được mô tả chi tiết trong bảng 4.4

Bảng 4.4 Phương án biến đổi nhãn cho tiền xử lý dữ liệu

Loại nhãn Tên nhãn Indexer

Probe ipsweep, nmap, portsweep, satan 1

Dos back, land, neptune, pob, smurf, teardrop 2

U2R buffer_overlow, loadmodule, perl, rootkit 3

R2L ftp_write, guess_passwd, imap, multihop, phf, spy, warezclient, warezmaster

Lưu chọn thuộc tính là bước quan trọng trong tiền xử lý dữ liệu, giúp xác định các thuộc tính quan trọng ảnh hưởng đến thuật toán Việc lựa chọn này không chỉ giải quyết vấn đề thuộc tính nhiễu mà còn giảm số chiều dữ liệu, tăng tốc độ xử lý và cải thiện độ chính xác của thuật toán Nhóm nghiên cứu đã áp dụng phương pháp Attribute Ratio (AR) để thực hiện lựa chọn thuộc tính, với chỉ số AR của thuộc tính i được tính theo công thức cụ thể.

Chỉ số Class Ratio (CR) thể hiện tỷ lệ của mỗi lớp so với thuộc tính j, được tính theo hai công thức khác nhau tùy thuộc vào loại dữ liệu của từng thuộc tính Công thức AR(i) = MAX(CR(j)) cho phép xác định giá trị tối đa của CR cho mỗi lớp.

AVG là trung bình cộng

Bảng 4.5 Loại dữ liệu của các thuộc tính trong tập KDD-NSL

Loại dữ liệu Thuộc tính

Nominal Protocol_type(2), Service(3), Flag(4)

Land(7), logged_in(12), root_shell(14), su_attempted(15), is_host_login(21),, is_guest_login(22) Numeric Duration(1), src_bytes(5), dst_bytes(6), wrong_fragment(8), urgent(9), hot(10),

The dataset includes various metrics that are crucial for analyzing security incidents and system performance Key indicators such as the number of failed logins (num_failed_logins), compromised accounts (num_compromised), and root access attempts (num_root) provide insights into potential security breaches Additionally, metrics like the number of file creations (num_file_creations) and shells initiated (num_shells) help assess system usage patterns The analysis of outbound commands (num_outbound_cmds) and access files (num_access_files) further enhances understanding of user behavior Error rates, including service error rate (srv_serror_rate) and overall error rate (rerror_rate), are essential for diagnosing system reliability Furthermore, host and service-related metrics, such as destination host count (dst_host_count) and same service rate (dst_host_same_srv_rate), are vital for evaluating network traffic and service consistency These indicators collectively facilitate a comprehensive evaluation of system security and performance.

Tập KDD-NSL bao gồm 41 thuộc tính, với bảng 4.5 mô tả chi tiết loại dữ liệu của từng thuộc tính Dựa trên thông tin này, chúng ta sẽ tiến hành áp dụng chỉ số AR và minh họa qua một ví dụ cụ thể về cách tính chỉ số này.

AR cho thuộc tính count - thuộc tính số 23

Bảng 4.6 Kết quả tính mean cho thuộc tính count

Dựa vào bảng 4.6, ta sẽ tính được chỉ số AR(23) = 0.348512787/0.16459408 = 2.117

Với thuộc tính dạng binary như logged_in – thuộc tính số 12, chúng ta sẽ dựa vào kết quả bảng số 4.7 tính được chỉ số AR(12) = 909/86 = 10.6

Bảng 4.7 Bảng thống kê tần số của các thuộc tính logged_in

Tương tự, chúng ta tính được chỉ số AR cho các thuộc tính còn lại và kết quả được thống kê ở bảng 4.8

Bảng 4.8 Thống kê kết quả chỉ số AR cho 41 thuộc tính

Ngày đăng: 27/11/2021, 15:51

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w