Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số và bùng nổ hạ tầng Internet, an toàn thông tin mạng đã trở thành yếu tố sống còn đối với mọi tổ chức và doanh nghiệp. Theo các báo cáo an ninh mạng quốc tế, hơn 60% các sự cố tấn công mạng xuất phát từ các kỹ thuật quét thăm dò lỗ hổng (Reconnaissance/Port Scanning), tấn công từ chối dịch vụ (DoS/DDoS) và tấn công khai thác tầng ứng dụng như SQL Injection. Phần lớn các cuộc xâm nhập mạng nguy hiểm đều bắt đầu bằng giai đoạn thu thập thông tin bí mật thông qua các kỹ thuật quét lén (Stealth Scan) nhằm vượt qua hệ thống Tường lửa (Firewall) truyền thống.
Vấn đề cốt lõi đặt ra là các giải pháp giám sát an ninh thương mại hiện nay thường có chi phí bản quyền rất cao, đòi hỏi cấu hình phần cứng chuyên dụng phức tạp. Trong khi đó, các hệ thống NIDS (Network Intrusion Detection System) mã nguồn mở quy mô lớn như Snort hay Suricata tuy mạnh mẽ nhưng lại tiêu tốn nhiều tài nguyên hệ thống, gây khó khăn cho việc triển khai tại các doanh nghiệp vừa và nhỏ (SME), các thiết bị mạng biên (Edge Computing) hoặc trong các môi trường phòng thí nghiệm đào tạo chuyên ngành Mạng máy tính. Hơn nữa, việc thiếu khả năng phân tích chi tiết luồng dữ liệu thô (Raw Packet Data) ở tầng liên kết dữ liệu (Data Link Layer) và thiếu cơ chế phản hồi cảnh báo đa kênh tức thời là những rào cản lớn đối với các nhà quản trị mạng.
Đề tài "Xây dựng phần mềm phân tích dữ liệu và phát hiện xâm nhập mạng" do sinh viên Đỗ Minh Hậu và Lê Hoàng Kha thực hiện dưới sự hướng dẫn của ThS. Nguyễn Thị Thanh Vân tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) được nghiên cứu nhằm giải quyết trực tiếp bài toán trên.
Mục tiêu cụ thể của dự án bao gồm:
- Nghiên cứu toàn diện cơ chế đóng gói dữ liệu (Encapsulation), phân mảnh (Fragmentation) và lu chuyển gói tin trong mô hình OSI và chồng giao thức TCP/IP.
- Xây dựng module Packet Sniffer độc lập bằng ngôn ngữ Python sử dụng Raw Socket, có khả năng thu thập và giải mã toàn diện các khung dữ liệu Ethernet (Layer 2), gói tin IPv4/ICMP/ARP (Layer 3), phân đoạn TCP/UDP (Layer 4) và dữ liệu HTTP (Layer 7).
- Thiết kế và cài đặt động cơ phát hiện xâm nhập dựa trên luật (Signature-based IDS Engine) để nhận diện chính xác các hình thức tấn công mạng phổ biến: Xmas Tree Scan, Null Scan, FIN Scan, Ping of Death và SQL Injection.
- Xây dựng hệ thống cảnh báo đa kênh thời gian thực bao gồm: gửi cảnh báo qua Email (SMTP), phát cảnh báo âm thanh (Audio Alert) và ghi vết nhật ký hệ thống (Log Analysis).
- Triển khai thử nghiệm thực tế trên môi trường mạng mô phỏng (Testbed) để đánh giá độ chính xác, hiệu năng xử lý và tính khả thi của giải pháp.
Phương pháp tiếp cận của đề tài là xây dựng hệ thống từ gốc (from scratch) bằng ngôn ngữ Python, tận dụng trực tiếp thư viện socket với cơ chế AF_PACKET và SOCK_RAW trên nền tảng Linux. Cách tiếp cận này giúp phần mềm đạt độ linh hoạt tối đa, loại bỏ sự phụ thuộc vào các engine nặng nề của bên thứ ba, đồng thời cho phép can thiệp và bóc tách từng bit dữ liệu trong cấu trúc Header của các giao thức mạng.
Kết quả kỳ vọng đạt được là một phần mềm NIDS gọn nhẹ (dưới 50MB RAM), khả năng bắt gói tin thời gian thực với độ trễ phân tích dưới 50ms, tỷ lệ phát hiện các cuộc tấn công thăm dò và khai thác đạt 100% trong môi trường mạng thử nghiệm, cung cấp công cụ trực quan phục vụ công tác quản trị và đào tạo an ninh mạng.
Phạm vi nghiên cứu tập trung vào mạng cục bộ (LAN Ethernet) trên hệ điều hành Linux (Ubuntu 18.04 LTS), phân tích các giao thức IPv4, TCP, UDP, ICMP và HTTP. Đề tài chưa mở rộng sang việc giải mã các luồng dữ liệu mã hóa SSL/TLS (HTTPS) và chưa tích hợp các thuật toán học máy phát hiện bất thường tự động (Anomaly Detection).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ thống, việc đánh giá các giải pháp phân tích và phát hiện xâm nhập mạng hiện có trên thị trường là bước quan trọng nhằm xác định khoảng trống công nghệ và định hình hướng phát triển.
| Giải pháp |
Ưu điểm |
Nhược điểm |
Khả năng tùy biến & Cảnh báo |
| Snort IDS |
Bộ luật (Ruleset) phong phú, cộng đồng lớn, hỗ trợ phát hiện hàng ngàn loại tấn công. |
Cấu hình phức tạp, tiêu tốn CPU/RAM lớn, cú pháp viết luật đòi hỏi chuyên môn cao. |
Hỗ trợ Syslog, tích hợp cảnh báo bên thứ ba, khó can thiệp sâu vào luồng code lõi. |
| Suricata |
Xử lý đa luồng (Multi-threading), hiệu năng cao trên mạng tốc độ Gbps. |
Yêu cầu tài nguyên phần cứng mạnh, phức tạp khi triển khai trên hệ thống nhúng/nhỏ. |
Xuất log định dạng JSON (EVE JSON), không tích hợp sẵn cảnh báo âm thanh trực tiếp. |
| Wireshark |
Giao diện đồ họa (GUI) mạnh mẽ, giải mã hơn 2000 giao thức mạng, phân tích pcap sâu. |
Chỉ là công cụ Sniffer/Analyzer, không có cơ chế tự động kích hoạt cảnh báo tấn công. |
Không phải là hệ thống IDS tự động phát hiện xâm nhập thời gian thực. |
| Python IDS (Đề tài) |
Cực kỳ gọn nhẹ (<50MB RAM), mã nguồn mở, bóc tách nhị phân trực tiếp, đa kênh cảnh báo. |
Giới hạn ở tốc độ mạng trung bình, bộ luật tập trung vào các dạng tấn công điển hình. |
Cực kỳ linh hoạt, tích hợp phát âm thanh và gửi Email SMTP tức thời. |
Yêu cầu người dùng và hệ thống được chuẩn hóa theo mô hình phân loại ưu tiên MoSCoW:
- Must Have (Bắt buộc có): Module bắt gói tin Raw Socket tầng Data Link; giải mã định dạng Ethernet Frame, IPv4, TCP, UDP, ICMP; thuật toán nhận diện Xmas Tree, Null, FIN, Ping of Death, SQL Injection; module gửi cảnh báo Email qua SMTP và âm thanh.
- Should Have (Nên có): Bóc tách payload HTTP để kiểm tra câu lệnh SQL Injection; lưu vết gói tin vi phạm ra định dạng log chi tiết kèm mốc thời gian (timestamp).
- Could Have (Có thể có): Hỗ trợ xuất và đọc file định dạng PCAP để phân tích ngoại tuyến; tích hợp cổng gửi tin nhắn SMS qua API.
- Won't Have (Chưa thực hiện trong phiên bản này): Bóc tách gói tin mã hóa HTTPS/TLS; giao diện Dashboard Web thời gian thực; cơ chế ngăn chặn chủ động (IPS - Inline Dropping).
Thách thức kỹ thuật lớn nhất nằm ở việc xử lý chuỗi byte nhị phân (Binary stream) từ Card mạng mà không làm tràn bộ đệm (Buffer Overflow) khi lưu lượng mạng tăng cao, đồng thời phải tách đúng các trường cờ điều khiển (Control Flags) trong TCP Header vốn chỉ chiếm các bit đơn lẻ.
Thiết kế hệ thống
Kiến trúc phần mềm được thiết kế theo mô hình module hóa hướng đối tượng, phân tách rõ ràng giữa các tầng thu thập, giải mã, phát hiện và phản hồi.
flowchart TD
A["Card mạng vật lý (NIC - Promiscuous Mode)"] -->|"Raw Ethernet Frames"| B["Module Sniffer & Parser (sniffAnaly_use)"]
B --> C{"Phân loại giao thức"}
C -->|"Ethernet / IPv4 / TCP"| D["Module TCP Flags Analyzer"]
C -->|"IPv4 / ICMP"| E["Module ICMP Length Analyzer"]
C -->|"TCP Port 80 / HTTP"| F["Module HTTP Payload Decoder"]
D --> G["Module Rule Detection (check_use)"]
E --> G
F --> G
G -->|"Xmas / Null / FIN Scan"| H["Module Cảnh báo (alert_use)"]
G -->|"Ping of Death"| H
G -->|"SQL Injection"| H
H --> I["Gửi Email SMTP (TLS Port 587)"]
H --> J["Phát cảnh báo Audio (Sound Alert)"]
H --> K["Ghi log chi tiết (IDS Log File)"]
Hệ thống bao gồm 3 package chức năng chính:
- Package
sniffAnaly_use: Chịu trách nhiệm tương tác với tầng Network Access, cấu hình Socket ở chế độ Promiscuous để thu nhận toàn bộ khung dữ liệu đi qua card mạng. Chứa các class đóng gói: Ethernet, IPv4, TCP, UDP, ICMP, HTTP, Pcap.
- Package
check_use: Chứa logic nghiệp vụ phát hiện xâm nhập thông qua các hàm kiểm tra chuyên biệt: check_xmastree(), check_nullscan(), check_finscan(), check_ping(), check_pingofdeath(), check_sqlinjection().
- Package
alert_use: Chịu trách nhiệm phản hồi tức thời khi có cảnh báo từ check_use, triển khai qua các hàm send_mail() và send_sound().
Technology Stack chuẩn xác:
- Ngôn ngữ lập trình: Python 3.7+
- Thư viện mạng lõi: Python Standard Library
socket (AF_PACKET, SOCK_RAW), struct (binary unpack).
- Thư viện phân tích tầng ứng dụng: Scapy 2.4.2 (HTTP payload sniffing).
- Hệ điều hành triển khai: Ubuntu 18.04 LTS (Kernel 4.15+).
- Môi trường Web Server thử nghiệm: Apache 2.4, MySQL 5.7, PHP 7.2 (LAMP Stack) chạy ứng dụng DVWA (Damn Vulnerable Web Application).
- Công cụ kiểm thử xâm nhập: Nmap 7.70, Hping3, SQLMap.
Cấu trúc bản ghi nhật ký (Log Schema) của hệ thống được chuẩn hóa để lưu trữ đầy đủ dấu vết phục vụ điều tra số (Digital Forensics):
[TIMESTAMP] [ATTACK_TYPE] Source_IP:Source_Port -> Dest_IP:Dest_Port | Protocol: [TCP/ICMP/HTTP] | Details: [FLAG_STATUS / PAYLOAD_SAMPLE]
Methodology
Dự án áp dụng mô hình phát triển phần mềm lặp từng bước (Iterative Development Methodology), đảm bảo tính chặt chẽ từ khâu lý thuyết giao thức đến thực nghiệm tấn công.
Lộ trình triển khai được phân chia cụ thể qua 5 giai đoạn:
- Giai đoạn 1 (15/03 - 10/04): Khảo sát lý thuyết mạng TCP/IP, cấu trúc gói tin, cơ chế Raw Socket trên Linux; hoàn thiện đề cương chi tiết.
- Giai đoạn 2 (11/04 - 27/05): Lập trình module
sniffAnaly_use, giải quyết bài toán đồng bộ môi trường Python 3 và phân tích chuỗi nhị phân bằng struct.unpack().
- Giai đoạn 3 (28/05 - 24/06): Cài đặt logic phát hiện các cuộc tấn công thăm dò (Port Scan) và từ chối dịch vụ (Ping of Death); phát triển module cảnh báo Email và Audio.
- Giai đoạn 4 (25/06 - 06/07): Xây dựng môi trường Web Server DVWA trên Ubuntu 18.04, cấu hình CSDL MySQL và phát triển hàm bắt gói tin HTTP để phát hiện tấn công SQL Injection.
- Giai đoạn 5 (07/07 - 14/07): Chạy thực nghiệm toàn diện các kịch bản tấn công, đo lường hiệu năng, fix lỗi sót gói tin và hoàn thiện báo cáo khóa luận.
Đánh giá rủi ro và chiến lược giảm thiểu:
- Rủi ro tràn bộ đệm socket: Giới hạn kích thước nhận dữ liệu với buffer chuẩn 65535 bytes (
recvfrom(65535)).
- Rủi ro cổng gửi tin nhắn SMS bị chặn: Thử nghiệm qua SinchSMS gặp lỗi do dải số Việt Nam rơi vào blacklist; phương án thay thế là tập trung tối ưu hóa kênh cảnh báo Email SMTP tự động kèm âm thanh cảnh báo trực tiếp tại máy trạm giám sát.
Implementation và kết quả
Development process
Quá trình phát triển tập trung vào việc bóc tách cấu trúc dữ liệu nhị phân từ Card mạng. Khung Ethernet chuẩn có kích thước Header là 14 bytes. Sau khi giải mã Ethernet Header, hệ thống xác định giao thức tầng mạng thông qua trường EtherType (IPv4 có mã 0x0800).
Trong gói tin IPv4, độ dài Header (IHL) được xác định để trỏ chính xác đến vị trí bắt đầu của tầng Transport (TCP/UDP/ICMP).
1. Khởi tạo Raw Socket và giải mã Ethernet Frame
import socket
import struct
def init_raw_socket():
# Bắt tất cả các gói tin ở Layer 2 (Data Link Layer) sử dụng chuẩn Ethernet (0x0003)
raw_socket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(3))
return raw_socket
def parse_ethernet_frame(data):
# Ethernet header: 6 bytes Dest MAC, 6 bytes Src MAC, 2 bytes Protocol type
dest_mac, src_mac, proto = struct.unpack('! 6s 6s H', data[:14])
dest_mac_str = ':'.join(f'{b:02x}' for b in dest_mac)
src_mac_str = ':'.join(f'{b:02x}' for b in src_mac)
proto_type = socket.htons(proto)
return dest_mac_str, src_mac_str, proto_type, data[14:]
2. Giải mã IPv4 và phân tích cờ TCP Flags
TCP Header chứa trường cờ điều khiển (Control Flags) kích thước 6 bits nằm tại byte thứ 13 của Header: URG (Urgent), ACK (Acknowledgment), PSH (Push), RST (Reset), SYN (Synchronize), FIN (Finish).
def parse_ipv4_packet(data):
version_header_len = data[0]
ihl = (version_header_len & 0xF) * 4
ttl, proto, src, target = struct.unpack('! 8x B B 2x 4s 4s', data[:20])
src_ip = socket.inet_ntoa(src)
target_ip = socket.inet_ntoa(target)
return proto, src_ip, target_ip, data[ihl:]
def parse_tcp_segment(data):
src_port, dest_port, seq, ack, offset_reserved_flags = struct.unpack('! H H L L H', data[:14])
offset = (offset_reserved_flags >> 12) * 4
flags = offset_reserved_flags & 0x003F
# Bóc tách từng bit cờ điều khiển
flag_urg = (flags & 0x20) >> 5
flag_ack = (flags & 0x10) >> 4
flag_psh = (flags & 0x08) >> 3
flag_rst = (flags & 0x04) >> 2
flag_syn = (flags & 0x02) >> 1
flag_fin = (flags & 0x01)
return src_port, dest_port, flags, (flag_urg, flag_ack, flag_psh, flag_rst, flag_syn, flag_fin), data[offset:]
3. Thuật toán phát hiện các dạng tấn công mạng (Rule Engine)
- Phát hiện Xmas Tree Scan: Kẻ tấn công gửi gói tin TCP với 3 cờ URG, PSH, FIN cùng được bật (Flags =
0b00101001 tương đương giá trị thập phân 41).
def check_xmastree(flags, src_ip, dest_port):
# Kiểm tra cờ URG (bit 5), PSH (bit 3), FIN (bit 0) đồng thời bật
if flags == 0x29: # 0b00101001 (Decimal: 41)
alert_msg = f"[CANH BAO] Phat hien Xmas Tree Scan tu IP: {src_ip} den Port: {dest_port}"
print(alert_msg)
return True
return False
- Phát hiện Null Scan: Gói tin TCP không bật bất kỳ cờ nào (Flags =
0).
def check_nullscan(flags, src_ip, dest_port):
if flags == 0x00:
alert_msg = f"[CANH BAO] Phat hien Null Scan tu IP: {src_ip} den Port: {dest_port}"
print(alert_msg)
return True
return False
- Phát hiện FIN Scan: Gói tin TCP chỉ bật duy nhất cờ FIN (Flags =
1).
def check_finscan(flags, src_ip, dest_port):
if flags == 0x01:
alert_msg = f"[CANH BAO] Phat hien FIN Scan tu IP: {src_ip} den Port: {dest_port}"
print(alert_msg)
return True
return False
- Phát hiện Ping of Death: Kẻ tấn công gửi gói tin ICMP Echo Request với kích thước vượt quá giới hạn tối đa của giao thức IP (65.535 bytes) hoặc gửi lưu lượng lớn gây tràn bộ đệm.
def check_pingofdeath(data_len, icmp_type, src_ip):
# ICMP Echo Request có Type = 8, kích thước payload vượt ngưỡng bất thường (> 60000 bytes)
if icmp_type == 8 and data_len > 60000:
alert_msg = f"[CANH BAO] Phat hien Ping of Death tu IP: {src_ip} voi kich thuoc {data_len} bytes!"
print(alert_msg)
return True
return False
- Phát hiện SQL Injection (tầng HTTP): Kiểm tra nội dung payload HTTP chứa các chuỗi ký tự tấn công đặc trưng (
' OR '1'='1, UNION SELECT, --, admin'#).
def check_sqlinjection(payload_str, src_ip):
sqli_signatures = ["' or '1'='1", "union select", "or 1=1", "--", "admin'--", "' or ''='"]
for signature in sqli_signatures:
if signature in payload_str.lower():
alert_msg = f"[CANH BAO] Phat hien tan cong SQL Injection tu IP: {src_ip}! Signature: {signature}"
print(alert_msg)
return True
return False
Testing và validation
Mô hình kiểm thử được thiết lập với 2 máy ảo:
- Máy Attacker: Hệ điều hành Kali Linux (IP:
192.168.1.15), sử dụng Nmap, Scapy và trình duyệt web để phát động tấn công.
- Máy Target & IDS: Hệ điều hành Ubuntu 18.04 LTS (IP:
192.168.1.20), cài đặt Apache/MySQL chạy DVWA và ứng dụng giám sát Python IDS.
| Kịch bản kiểm thử |
Lệnh phát động tấn công |
Kết quả bắt gói tin |
Tỷ lệ phát hiện |
Thời gian phản hồi cảnh báo |
| Xmas Tree Scan |
nmap -sX -p 80 192.168.1.20 |
Bắt đúng TCP Segment, cờ URG+PSH+FIN = 41 |
100% (10/10 lần) |
< 0.8 giây (Email + Sound) |
| Null Scan |
nmap -sN -p 80 192.168.1.20 |
Bắt đúng TCP Segment, Flags = 0 |
100% (10/10 lần) |
< 0.8 giây (Email + Sound) |
| FIN Scan |
nmap -sF -p 80 192.168.1.20 |
Bắt đúng TCP Segment, Flags = 1 |
100% (10/10 lần) |
< 0.8 giây (Email + Sound) |
| Ping of Death |
ping -s 65500 192.168.1.20 |
Bắt gói tin ICMP phân mảnh kích thước lớn |
100% (10/10 lần) |
< 1.0 giây (Email + Sound) |
| SQL Injection |
Nhập ' OR '1'='1 trên form DVWA |
Bắt HTTP GET/POST Request chứa chuỗi SQL |
100% (15/15 mẫu) |
< 1.2 giây (Email + Sound) |
Kết quả đạt được
Hệ thống đã hoàn thành 100% các tính năng đề ra theo đề cương:
- Giải mã chính xác toàn bộ 7 trường dữ liệu Ethernet Frame, 12 trường dữ liệu IPv4 Header, 10 trường dữ liệu TCP Segment và các thông điệp ICMP.
- Tự động kích hoạt chuông cảnh báo âm thanh tại máy trạm và gửi Email thông báo chi tiết địa chỉ IP kẻ tấn công, cổng đích và loại hình xâm nhập ngay trong vòng 1-2 giây.
- File log được ghi nhận liên tục, cung cấp bằng chứng rõ ràng phục vụ công tác điều tra sự cố an toàn thông tin mạng.
Đổi mới và đóng góp
- Phân tích nhị phân thuần túy (Pure Binary Decoding): Khác với nhiều giải pháp sử dụng thư viện bao bọc (wrapper) cồng kềnh, phần mềm giải mã trực tiếp luồng bit nhị phân từ raw socket thông qua cấu trúc
struct.unpack. Điều này giúp tiết kiệm tối đa tài nguyên bộ nhớ và tối ưu hóa tốc độ xử lý.
- Cơ chế cảnh báo tức thời đa giác quan (Multi-sensory Alerting): Tích hợp cảnh báo âm thanh trực tiếp kết hợp gửi mail SMTP giúp quản trị viên túc trực tại phòng NOC/SOC nhận biết xâm nhập mạng ngay lập tức mà không cần liên tục nhìn vào màn hình log.
- Hiệu năng vượt trội trên thiết bị phần cứng thấp:
+-------------------------------------------------------------+
| Mức tiêu thụ bộ nhớ RAM (Memory Footprint Comparison) |
+-------------------------------------------------------------+
| Snort IDS: [████████████████████████████████] ~350 MB |
| Suricata: [████████████████████████████████████] ~500 MB|
| Python IDS: [████] ~42 MB (Tiết kiệm > 85% tài nguyên) |
+-------------------------------------------------------------+
- Đóng góp học thuật và ứng dụng: Cung cấp bộ mã nguồn mẫu hoàn chỉnh, minh bạch, có tính sư phạm cao, phục vụ giảng dạy các môn học Mạng máy tính, Lập trình mạng Socket và An toàn thông tin tại các trường đại học chuyên ngành CNTT.
Ứng dụng thực tế và triển khai
Tình huống ứng dụng thực tế
- Doanh nghiệp vừa và nhỏ (SME): Triển khai làm cảm biến giám sát an ninh (Security Sensor) tại Gateway mạng nội bộ, bảo vệ máy chủ Web/CSDL nội bộ mà không cần đầu tư máy chủ chuyên dụng đắt đỏ.
- Phòng Lab và Trung tâm Đào tạo An ninh mạng: Sử dụng làm công cụ trực quan giúp sinh viên quan sát trực tiếp cấu trúc gói tin thô khi thực hiện các bài tập tấn công - phòng thủ (Red Team vs Blue Team).
- Hệ thống mạng công nghiệp / IoT Gateway: Tích hợp trực tiếp lên các thiết bị nhúng chạy Linux (như Raspberry Pi 4) để giám sát các thiết bị IoT trong nhà máy.
Hướng dẫn triển khai (Deployment Guide)
Yêu cầu hệ thống:
- Phần cứng tối thiểu: CPU 1.0 GHz (Dual-core), 512MB RAM, 100MB dung lượng đĩa trống, 01 Card mạng Ethernet hỗ trợ Promiscuous Mode.
- Hệ điều hành: Linux (Ubuntu 18.04 LTS / Debian 10+).
- Phần mềm: Python 3.7+, thư viện Scapy.
Các bước cài đặt và vận hành:
# 1. Cập nhật hệ thống và cài đặt các gói phụ thuộc
sudo apt update && sudo apt install -y python3 python3-pip libpcap-dev
# 2. Cài đặt thư viện Scapy
pip3 install scapy
# 3. Chạy phần mềm với quyền Root (Bắt buộc để mở Raw Socket)
sudo python3 main.py
# 4. Kiểm tra file nhật ký cảnh báo an ninh
tail -f ids_alert.log
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Xử lý đơn luồng (Single-thread Limitation): Việc phân tích gói tin tuần tự có thể dẫn đến hiện tượng trễ hoặc bỏ sót gói tin khi lưu lượng mạng đạt ngưỡng Gigabit/s.
- Giới hạn nhận diện theo luật cố định: Hệ thống hoạt động theo phương pháp Signature-based, do đó chưa có khả năng phát hiện các cuộc tấn công Zero-day hoặc các biến thể tấn công lẩn tránh tinh vi.
- Chưa giải mã HTTPS: Do dữ liệu ở tầng Transport đã bị mã hóa bởi TLS/SSL, phần mềm hiện chỉ kiểm tra được payload HTTP không mã hóa (Port 80).
Hướng phát triển trong tương lai
- Áp dụng kỹ thuật xử lý đa luồng (Multi-threading / Asynchronous I/O với
asyncio) và tích hợp cơ chế bắt gói tin hiệu năng cao như DPDK hoặc eBPF.
- Tích hợp mô hình học máy (Machine Learning như Random Forest, SVM, Isolation Forest) để nhận diện các bất thường lưu lượng (Anomaly Detection).
- Xây dựng giao diện Dashboard tương tác trực quan trên nền Web (sử dụng Flask/FastAPI và ReactJS).
Đối tượng hưởng lợi
- Sinh viên chuyên ngành CNTT / An toàn thông tin: Nắm vững cấu trúc nhị phân của các giao thức mạng, hiểu rõ bản chất hoạt động của Socket tầng thấp và cơ chế tấn công thăm dò.
- Kỹ sư An ninh mạng / Quản trị hệ thống: Sở hữu một công cụ phân tích lưu lượng mạng gọn nhẹ, dễ dàng nhúng vào các kịch bản kiểm tra an ninh tự động hoặc cài đặt tại các sensor phân tán.
- Doanh nghiệp quy mô nhỏ: Tiết kiệm 100% chi phí bản quyền phần mềm IDS thương mại, có được giải pháp giám sát an ninh mạng cơ bản và hiệu quả.
- Giảng viên và Nhà nghiên cứu: Bộ khung mã nguồn mở phục vụ làm tài liệu tham khảo cho các đề tài nghiên cứu chuyên sâu về phân tích lưu lượng mạng và an ninh phòng thủ.
Câu hỏi thường gặp
1. Phần mềm yêu cầu cấu hình và môi trường triển khai như thế nào?
Hệ thống yêu cầu hệ điều hành Linux (khuyến nghị Ubuntu 18.04 LTS trở lên) có Python 3.7+ và bắt buộc phải chạy với quyền quản trị (root hoặc sudo) để có thể khởi tạo Socket ở chế độ AF_PACKET và SOCK_RAW.
2. Giới hạn xử lý lưu lượng mạng của phần mềm là bao nhiêu?
Với kiến trúc đơn luồng thuần Python, phần mềm hoạt động tối ưu trên các đường truyền mạng LAN nội bộ tốc độ từ 10Mbps đến 100Mbps. Đối với các hệ thống mạng quy mô lớn hơn, cần nâng cấp kiến trúc sang mô hình đa tiến trình hoặc áp dụng cơ chế vòng đệm Ring Buffer.
3. Phần mềm có thể tích hợp với các hệ thống SIEM hiện có không?
Có. Dữ liệu cảnh báo được ghi nhận dưới dạng cấu trúc log văn bản tiêu chuẩn (Timestamp, Source IP, Dest IP, Alert Type). Quản trị viên có thể dễ dàng sử dụng các công cụ thu thập log như Filebeat, Logstash hoặc Fluentd để đẩy dữ liệu về các hệ thống SIEM tập trung như Splunk hoặc ELK Stack.
4. Chi phí triển khai và bảo trì hệ thống ước tính như thế nào?
Chi phí bản quyền phần mềm là 0 VNĐ do được phát triển hoàn toàn trên nền tảng mã nguồn mở Python. Doanh nghiệp có thể tận dụng hạ tầng máy chủ cũ hoặc các board mạch nhúng như Raspberry Pi (chi phí phần cứng dưới 1.500.000 VNĐ) để vận hành liên tục 24/7 với chi phí điện năng không đáng kể.
5. Tại sao hệ thống lại phát hiện được các kiểu quét cổng Stealth Scan mà Firewall thông thường bỏ sót?
Các kỹ thuật quét như Xmas Tree, Null, FIN Scan cố tình vi phạm quy tắc bắt tay 3 bước (TCP 3-Way Handshake) bằng cách bật các tổ hợp cờ bất thường để thăm dò phản hồi RST từ cổng đóng của máy chủ. Firewall thông thường chỉ kiểm tra trạng thái kết nối có hợp lệ hay không, trong khi phần mềm kiểm tra chi tiết từng bit cờ điều khiển trong TCP Header nên phát hiện chính xác hành vi thăm dò này.
Kết luận
Đồ án tốt nghiệp "Xây dựng phần mềm phân tích dữ liệu và phát hiện xâm nhập mạng" đã giải quyết thành công bài toán giám sát an toàn thông tin ở tầng mạng cục bộ. Bằng việc làm chủ kỹ thuật lập trình Socket ở tầng liên kết dữ liệu và xây dựng động cơ đối sánh mẫu dấu hiệu tấn công, phần mềm mang lại giải pháp phát hiện xâm nhập hiệu quả, gọn nhẹ và có độ chính xác cao.
Kết quả của đề tài không chỉ khẳng định giá trị thực tiễn trong công tác quản trị an ninh mạng doanh nghiệp mà còn đóng góp một công cụ học tập và nghiên cứu hữu ích cho cộng đồng công nghệ thông tin. Các nhà phát triển và sinh viên quan tâm có thể tiếp tục mở rộng dự án với các thuật toán Trí tuệ nhân tạo (AI) nhằm nâng cao năng lực tự động ứng phó sự cố an ninh mạng trong tương lai.