Giới thiệu dự án

Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 đã biến Internet vạn vật (Internet of Things - IoT) thành một trụ cột công nghệ nền tảng. Theo các báo cáo thống kê công nghiệp quốc tế, số lượng thiết bị IoT kết nối toàn cầu đã vượt mốc 15 tỷ thiết bị và dự kiến đạt hơn 30 tỷ thiết bị vào năm 2030, phủ sóng từ đô thị thông minh (Smart City), lưới điện thông minh (Smart Grid), chăm sóc sức khỏe đến các hệ thống tự động hóa công nghiệp. Tuy nhiên, kiến trúc IoT phân tán đi kèm với những lỗ hổng bảo mật nghiêm trọng do phần lớn các thiết bị đầu cuối bị giới hạn tài nguyên tính toán (CPU, RAM, nguồn điện), thiếu cơ chế cập nhật firmware an toàn và không được tích hợp các lớp phòng thủ chuyên sâu.

+------------------+      +-------------------+      +----------------------+
|  Internet / WAN  | ---> |  Edge IDS Gateway | ---> |  IoT End Devices     |
| (Threat Vectors) |      | (Raspberry Pi 4B) |      | (ESP32, Sensors, UI) |
+------------------+      +-------------------+      +----------------------+

Bài toán thực tế và thách thức kỹ thuật (Problem Statement)

Các hệ thống phát hiện xâm nhập mạng truyền thống (Network Intrusion Detection System - NIDS) chuyên dụng của doanh nghiệp thường có chi phí đắt đỏ (hàng nghìn USD), kích thước cồng kềnh và tiêu thụ công suất điện lớn, hoàn toàn không phù hợp để lắp đặt tại các nút mạng biên (Edge Node) hoặc các mạng nội bộ IoT quy mô vừa và nhỏ. Ngược lại, việc bỏ ngỏ lớp bảo mật biên khiến các thiết bị IoT dễ dàng bị khai thác thành công cụ tấn công mạng (Botnet) thông qua các kỹ thuật dò quét cổng, tấn công từ điển (Brute-force) hoặc từ chối dịch vụ phân tán (DoS/DDoS).

Mục tiêu của đồ án

  1. Nghiên cứu kiến trúc và cơ chế hoạt động của các giải pháp NIDS mã nguồn mở hàng đầu hiện nay, bao gồm Snort và Suricata.
  2. Thiết kế và đóng gói hệ thống NIDS độc lập trên phần cứng nhúng Raspberry Pi 4 Model B (4GB RAM) với kiến trúc ARM.
  3. Xây dựng bộ quy tắc (Ruleset) tùy chỉnh tối ưu hóa khả năng phát hiện các mối đe dọa phổ biến trong mạng IoT: quét mạng (Port Scanning), dò mật khẩu SSH (SSH Brute-force), tấn công tràn gói ICMP/UDP và tràn kết nối TCP SYN Flood.
  4. Đo kiểm, phân tích thực nghiệm hiệu năng (tải CPU, chiếm dụng RAM, tỷ lệ phát hiện) giữa Snort và Suricata trong cùng điều kiện phần cứng.
  5. Đề xuất giải pháp phối hợp tường lửa iptables nhằm ngăn chặn tình trạng cạn kiệt tài nguyên phần cứng nhúng khi đối mặt với các cuộc tấn công DoS cường độ cao.

Phạm vi và giới hạn nghiên cứu

  • Phạm vi triển khai: Mạng cục bộ (LAN) IoT kết nối các thiết bị cảm biến, trạm điều khiển nhúng, máy trạm Windows, Android và nút kiểm thử Kali Linux.
  • Phương pháp tiếp cận: Phát hiện xâm nhập dựa trên chữ ký (Signature-based Detection) kết hợp kiểm soát trạng thái mạng.
  • Giới hạn kỹ thuật: Không mở rộng giải mã luồng mã hóa tầng ứng dụng chuyên sâu (SSL/TLS inspection quy mô lớn) nhằm tránh gây nghẽn cổ chai trên CPU nhúng.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí so sánh NIDS phần cứng thương mại Cloud-based NIDS Embedded Edge NIDS (Raspberry Pi)
Chi phí đầu tư Rất cao (> $2,000) Định kỳ theo dung lượng/băng thông Rất thấp (< $100)
Độ trễ xử lý Thấp (chuyên dụng ASIC/FPGA) Phụ thuộc đường truyền Internet Rất thấp (xử lý ngay tại nút mạng nội bộ)
Quyền riêng tư dữ liệu Cục bộ Dữ liệu phải đẩy lên đám mây Cục bộ 100%, bảo mật dữ liệu IoT
Mức độ tiêu thụ điện Cao (50W - 250W) Không tiêu thụ tại biên Cực thấp (~5W - 7W)
Khả năng tùy biến Giới hạn theo nhà cung cấp Phụ thuộc nhà cung cấp SaaS Tự do tinh chỉnh mã nguồn, cấu hình rule

Bảng ưu tiên yêu cầu hệ thống theo mô hình MoSCoW

  • Must-have (Bắt buộc): Bắt và giải mã toàn bộ gói tin trên giao diện mạng eth0/wlan0; Phân tích và so khớp chữ ký thời gian thực; Ghi log cảnh báo định dạng chuẩn (/var/log/snort/alertfast.log).
  • Should-have (Cần có): Cơ chế đa luồng tận dụng 4 nhân xử lý của chip ARM; Tối ưu hóa dung lượng bộ nhớ RAM tránh hiện tượng Out-Of-Memory (OOM).
  • Could-have (Nên có): Tự động chặn IP độc hại thông qua liên kết iptables; Giám sát trạng thái tài nguyên qua giao diện dòng lệnh htop.
  • Won't-have (Chưa thực hiện): Huấn luyện mô hình Deep Learning phân tích bất thường trực tiếp trên SoC thời gian thực.

Thiết kế hệ thống

               [Attacker - Kali Linux]
                         |
                 (192.168.1.x/24)
                         |
                         v
             +-----------------------+
             | Switch / Access Point |
             +-----------------------+
                         |
       +-----------------+-----------------+
       |                                   |
       v                                   v
+-----------------------------+   +-------------------+
| Embedded NIDS (Raspberry Pi)|   | Target IoT Nodes  |
| - Libpcap Packet Capture    |   | - Windows Host    |
| - Snort / Suricata Engines  |   | - Android Devices |
| - Stateful iptables Filter  |   | - ESP32 / Sensors |
+-----------------------------+   +-------------------+

Ngăn xếp công nghệ (Technology Stack)

  • Phần cứng trung tâm: Raspberry Pi 4 Model B (Broadcom BCM2711, Quad-core Cortex-A72 ARMv8 64-bit @ 1.5GHz, 4GB LPDDR4 SDRAM, Gigabit Ethernet).
  • Hệ điều hành: Raspberry Pi OS (Debian 64-bit kernel 5.15+).
  • Công cụ IDS lõi: Snort v2.9.20 (Engine đơn luồng tối ưu bộ nhớ), Suricata v6.0.x (Engine đa luồng Multi-threaded).
  • Thư viện mạng: libpcap v1.10.x, libnet, libdaq.
  • Tường lửa & Quản trị: iptables v1.8.7, iptables-persistent, htop, tcpdump.
  • Môi trường kiểm thử: Kali Linux 2023.x (Nmap v7.94, THC-Hydra v9.5, Hping3, Shell Scripts).

Phương pháp luận (Methodology)

Dự án áp dụng quy trình kiểm thử lặp (Iterative Empirical Methodology):

  1. Giai đoạn 1 (Baseline Setup): Cài đặt môi trường, phân bổ biến mạng $HOME_NET$EXTERNAL_NET.
  2. Giai đoạn 2 (Rule Development): Viết và biên dịch các rule cục bộ (local.rules).
  3. Giai đoạn 3 (Attack Injection): Thực thi các kịch bản tấn công định lượng từ Kali Linux.
  4. Giai đoạn 4 (Performance Profiling): Thu thập số liệu cảnh báo, profiling CPU/RAM qua htop và trích xuất log.

Implementation và kết quả

Quy trình phát triển và các quy tắc phát hiện (Rulesets)

Hệ thống triển khai bộ giải mã Packet Decoder bắt gói tin thông qua libpcap, đưa qua khối Preprocessors để ghép mảnh dữ liệu (Defragmentation) và chuẩn hóa giao thức, sau đó chuyển tới Detection Engine.

1. Quy tắc phát hiện Xmas Port Scan (Nmap)

Kỹ thuật quét Xmas bật đồng thời các cờ FIN, PSH và URG trong TCP header nhằm vượt qua các bộ lọc gói cơ bản:

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"SCAN Xmas Scan Detected"; flags:FPU; sid:1000002; rev:1; classtype:attempted-recon;)

2. Quy tắc phát hiện tấn công vét cạn SSH (SSH Brute-force)

Sử dụng cơ chế đếm ngưỡng (detection_filter) để bắt các hành vi khởi tạo kết nối liên tục từ cùng một địa chỉ IP nguồn:

alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"ATTACK SSH Brute Force Attempt"; flow:to_server,established; content:"SSH-"; detection_filter:track by_src, count 5, seconds 30; sid:1000003; rev:1; classtype:suspicious-login;)

3. Quy tắc phát hiện UDP Flood và ICMP Echo Request

# Phát hiện ICMP Ping quét mạng
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP Ping Detection"; itype:8; sid:1000001; rev:1; classtype:icmp-event;)

# Phát hiện tràn lưu lượng UDP
alert udp $EXTERNAL_NET any -> $HOME_NET 8080 (msg:"DOS UDP Flood Attack Detected"; dsize:>500; threshold:type both, track by_src, count 50, seconds 2; sid:1000004; rev:1; classtype:denial-of-service;)
# Script giả lập tấn công TCP SYN Flood từ Kali Linux
#!/bin/bash
TARGET_IP="192.168.1.105"
TARGET_PORT="80"
echo "Bắt đầu tấn công TCP SYN Flood tới $TARGET_IP:$TARGET_PORT..."
hping3 -S --flood -V -p $TARGET_PORT $TARGET_IP

Kiểm thử và đánh giá hiệu năng thực nghiệm

Quá trình kiểm thử được tiến hành độc lập trên cùng phần cứng Raspberry Pi 4B cho cả Snort và Suricata qua 5 kịch bản tấn công:

[Kali Linux (Attacker)] --- 1 Gbps Ethernet ---> [Raspberry Pi 4B (IDS Sensor)]

Bảng tổng hợp kết quả thực nghiệm

Kịch bản tấn công Công cụ kiểm thử Số gói gửi / Vector Cảnh báo Snort (alert) Cảnh báo Suricata (fast.log) Tải CPU Snort (Max) Tải CPU Suricata (Max)
ICMP Ping Sweep ping -c 200 200 gói ICMP 200 200 ~12% (1 core) ~8% (Đa nhân)
Xmas Port Scan nmap -sX 1,000 cổng quét 1,000 1,000 ~28% ~18%
SSH Brute-Force hydra (Passlist 50) 50 lần thử xác thực 45 (sau ngưỡng filter) 45 ~15% ~11%
UDP Flood Shell Script UDP 10,000 gói tin 9,982 9,991 ~65% ~42%
TCP SYN Flood hping3 --flood ~150,000 pps Bị treo/Drop (100% CPU) Quá tải CPU (>95%) 100% (Core 0) 95% - 98% (4 Cores)
Tải CPU khi xử lý UDP Flood & SYN Flood:
Snort:    [|||||||||||||||||||||||||||||||||||||||||||||||||| 100%] (Single-thread Bottleneck)
Suricata: [|||||||||||||||||||||||||||||||||||||| 78%]           (Multi-threaded Balanced)

Giải pháp chống quá tải bằng tích hợp Tường lửa iptables

Khi đối mặt với tấn công TCP SYN Flood cực lớn, tài nguyên CPU của Raspberry Pi bị cạn kiệt do phải phân tích gói tin liên tục ở tầng người dùng (Userspace). Để giải quyết triệt để vấn đề này, một tập luật iptables Stateful Packet Inspection được thiết lập tại tầng Kernel:

# Chặn IP tấn công trực tiếp tại kernel nếu vượt quá 10 kết nối/giây
sudo iptables -A INPUT -p tcp --dport 80 --syn -m limit --limit 10/second --limit-burst 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 --syn -j DROP
sudo iptables-save | sudo tee /etc/iptables/rules.v4

Sau khi kích hoạt quy tắc iptables, lưu lượng độc hại bị loại bỏ ngay tại tầng giao tiếp mạng của kernel, giúp hạ mức sử dụng CPU của Raspberry Pi xuống dưới 25%, duy trì khả năng giám sát mạng an toàn.


Đổi mới và đóng góp

  1. Chứng minh tính khả thi của Edge Security trên phần cứng hạn chế: Nghiên cứu đã chứng minh dòng máy tính bảng đơn (Single-Board Computer) giá rẻ như Raspberry Pi 4B hoàn toàn đáp ứng tốt vai trò NIDS cho toàn bộ mạng nội bộ IoT với lưu lượng đạt tới 300 - 450 Mbps.
  2. So sánh định lượng giữa Single-Thread và Multi-Thread: Cung cấp số liệu thực nghiệm chứng minh kiến trúc đa luồng của Suricata phân phối tải đều trên 4 nhân Cortex-A72, giảm nguy cơ nghẽn đơn nhân so với kiến trúc cổ điển của Snort v2.
  3. Mô hình phối hợp NIDS + Kernel Packet Filtering: Đưa ra mô hình kết hợp phòng thủ 2 lớp (Layered Defense): NIDS chịu trách nhiệm phân tích chuyên sâu các đợt quét/tấn công có chủ đích; iptables chịu trách nhiệm giảm tải các đợt càn quét DoS băng thông cao.

Ứng dụng thực tế và triển khai

Trường hợp sử dụng điển hình (Real-World Use Cases)

  • Hệ thống Nhà thông minh (Smart Home): Đặt Raspberry Pi IDS tại cổng vào router mạng gia đình để bảo vệ camera an ninh, khóa cửa thông minh và trợ lý ảo khỏi nguy cơ bị chiếm quyền điều khiển.
  • Tự động hóa nhà xưởng & SME: Giám sát các cảm biến PLC và máy in 3D trong mạng xưởng công nghiệp nhỏ mà không làm thay đổi cấu trúc mạng hiện hữu.
+-------------------------------------------------------------------+
|                        TẬP TRUNG HÓA LOG                          |
|  [Edge Pi Node 1]      [Edge Pi Node 2]      [Edge Pi Node 3]     |
|         \                     |                     /             |
|          +--------------------+--------------------+              |
|                               |                                   |
|                               v                                   |
|                  [Máy chủ SIEM / ELK Stack]                       |
+-------------------------------------------------------------------+

Kế hoạch và Lộ trình triển khai (Deployment Roadmap)

Tuần 1-2: Chuẩn bị phần cứng, flash OS, tối ưu Swap & Network Buffer
Tuần 3-4: Biên dịch Snort/Suricata, cấu hình Interface ở chế độ Promiscuous Mode
Tuần 5-6: Nạp ruleset tùy biến cho các giao thức IoT (MQTT, CoAP, HTTP, SSH)
Tuần 7-8: Chạy thử nghiệm thực tế, phân tích log và tối ưu hóa iptables

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Băng thông giới hạn: Khi lưu lượng mạng vượt qua ngưỡng 600 Mbps hoặc số gói tin trên giây (pps) quá lớn, hệ thống có hiện tượng bỏ sót gói tin (packet drop) do băng thông bus mạng và bộ đệm phần cứng nhúng.
  • Phát hiện chữ ký cố định: Chưa có khả năng tự động thích ứng với các biến thể tấn công Zero-Day nếu chữ ký chưa được cập nhật vào tệp .rules.

Hướng phát triển tiếp theo

  • Tích hợp TinyML / Anomaly Detection: Nhúng các mô hình Machine Learning siêu nhẹ (Isolation Forest, Random Forest) để phát hiện hành vi bất thường trên các giao thức IoT như MQTT/CoAP.
  • Ứng dụng công nghệ eBPF / XDP: Nâng cấp cơ chế lọc gói dữ liệu trực tiếp tại network driver bằng eBPF để tăng tốc độ xử lý lên gấp 3-5 lần so với iptables thông thường.

Đối tượng hưởng lợi

+-----------------------------------------------------------------------+
| Sinh viên & Học viên: Tài liệu tham khảo thực tế về Security & ARM   |
| Lập trình viên nhúng: Mẫu cấu hình ruleset và tối ưu kernel pcap     |
| Doanh nghiệp SME: Giải pháp NIDS chi phí dưới $100 bảo vệ hệ thống   |
| Nhà nghiên cứu: Dữ liệu thực nghiệm so sánh Snort vs Suricata trên Pi|
+-----------------------------------------------------------------------+
  • Sinh viên An toàn thông tin / Mạng máy tính: Nắm bắt quy trình xây dựng, triển khai và đo kiểm NIDS từ mức phần cứng đến tầng ứng dụng.
  • Kỹ sư vận hành hệ thống IoT: Sở hữu mẫu cấu hình chi tiết, tối ưu hóa các tham số buffer trên Linux để tự xây dựng thiết bị giám sát biên an toàn.
  • Doanh nghiệp vừa và nhỏ (SMEs): Tiết kiệm đến 90% chi phí đầu tư bảo mật ban đầu mà vẫn đảm bảo tính an toàn cho hệ thống mạng nội bộ.

Câu hỏi thường gặp

1. Cấu hình phần cứng tối thiểu để triển khai hệ thống này là gì?

Cần tối thiểu bo mạch Raspberry Pi 3B+ (1GB RAM) cho các mạng gia đình lưu lượng thấp. Tuy nhiên, khuyến nghị sử dụng Raspberry Pi 4B (từ 2GB đến 4GB RAM) kết hợp thẻ nhớ Class 10/UHS-I tốc độ cao để đảm bảo Suricata chạy mượt mà ở chế độ đa luồng.

2. Giữa Snort và Suricata, nên lựa chọn công cụ nào cho Raspberry Pi?

  • Chọn Snort: Nếu phần cứng của bạn có RAM thấp (dưới 1GB) và môi trường mạng đơn giản, yêu cầu mức tiêu thụ tài nguyên tối thiểu.
  • Chọn Suricata: Nếu sử dụng Raspberry Pi 4B (CPU 4 nhân), môi trường mạng có nhiều luồng dữ liệu đồng thời và cần hiệu năng phân tích gói tin cao hơn.

3. Làm thế nào để bảo vệ hệ thống khi Raspberry Pi bị kẻ tấn công DoS trực tiếp?

Cần kích hoạt mô-đun giới hạn lưu lượng (rate limiting) của iptables hoặc cấu hình fail2ban để tự động ngắt các kết nối vượt ngưỡng ngay tại tầng nhân (Kernel space), ngăn không cho gói tin độc hại tràn vào hàng đợi của NIDS.

4. Hệ thống có thể giám sát các thiết bị IoT kết nối không dây (Wi-Fi) không?

Có. Bằng cách cấu hình giao diện wlan0 ở chế độ giám sát (Monitor mode) hoặc thiết lập Raspberry Pi làm trạm phát Access Point trung gian kết nối giữa thiết bị IoT và Router chính.

5. Chi phí duy trì và thời gian hoàn vốn (ROI) của giải pháp này như thế nào?

Tổng chi phí phần cứng ban đầu khoảng $60 - $90 (gồm Pi 4B, nguồn, thẻ nhớ, vỏ tản nhiệt). Chi phí điện năng tiêu thụ chỉ khoảng 5W (~$1/tháng). Thời gian hoàn vốn gần như ngay lập tức so với việc mua thiết bị bảo mật chuyên dụng hoặc thuê dịch vụ Cloud IDS.


Kết luận

Đồ án tốt nghiệp "Xây dựng hệ thống phát hiện xâm nhập dựa trên thiết bị nhúng" do sinh viên Đỗ Văn Hiếu thực hiện đã giải quyết trọn vẹn bài toán bảo mật mạng biên cho hệ sinh thái IoT với chi phí tối ưu. Thông qua quá trình phân tích lý thuyết và thực nghiệm chuyên sâu trên phần cứng Raspberry Pi 4B, đồ án đã khẳng định tính khả thi vượt trội của các giải pháp NIDS mã nguồn mở (Snort và Suricata) khi được tinh chỉnh phù hợp với kiến trúc ARM.

Kết quả đo kiểm trên 5 kịch bản tấn công thực tế (ICMP, Xmas Scan, SSH Brute-force, UDP Flood, TCP SYN Flood) cung cấp cơ sở kỹ thuật vững chắc để lựa chọn công cụ phù hợp với từng bài toán thực tế. Mô hình phối hợp giữa NIDS và tường lửa iptables mở ra hướng tiếp cận phòng thủ nhiều lớp toàn diện, chi phí thấp nhưng mang lại hiệu quả bảo vệ cao cho hạ tầng mạng thông minh trong tương lai.