Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, hạ tầng mạng tại các doanh nghiệp ngày càng mở rộng nhằm đáp ứng nhu cầu truyền tải khối lượng dữ liệu lớn và băng thông cao. Tuy nhiên, sự phát triển này đồng thời đặt ra nhiều thách thức trong công tác quản trị sự cố và bảo đảm an toàn thông tin trước các nguy cơ tấn công từ bên trong lẫn bên ngoài, duy trì tính sẵn sàng của thiết bị và tài nguyên hệ thống. Để quản trị mạng hiệu quả, việc triển khai giải pháp giám sát an ninh mạng là yêu cầu thiết yếu giúp quản trị viên thu thập thông tin, phân tích, đánh giá và đưa ra giải pháp ứng phó kịp thời.

Một hệ thống giám sát mạng hiệu quả cần bảo đảm các tiêu chí: hoạt động liên tục, tính linh hoạt, chức năng hiệu quả, đơn giản trong triển khai và chi phí tối ưu. Đề tài "Nghiên cứu và xây dựng hệ thống giám sát an toàn thông tin dựa trên Snort" được nhóm sinh viên Phạm Đình Khánh và Cao Thanh Khiết (Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP.HCM, năm 2022) thực hiện nhằm giải quyết các nhiệm vụ cụ thể sau:

  1. Tìm hiểu cơ cấu hoạt động, thành phần và phương thức triển khai của hệ thống phát hiện và phòng chống xâm nhập (IDS/IPS).
  2. Ứng dụng và triển khai phần mềm phát hiện xâm nhập mã nguồn mở Snort trên môi trường thực nghiệm.
  3. Cấu hình, quản lý, phân tích và thống kê hoạt động giám sát mạng trên cơ sở phần mềm Snort.

Đối tượng nghiên cứu của đồ án là phần mềm giám sát an toàn thông tin Snort, các cơ chế phát hiện và ngăn chặn xâm nhập mạng (NIDS/IPS), cùng các kỹ thuật tấn công mạng phổ biến. Phạm vi thực nghiệm được triển khai trong môi trường mạng ảo hóa cục bộ thông qua mô phỏng kịch bản tấn công DoS nhắm vào hệ thống máy chủ dịch vụ.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và mô hình an ninh mạng

Nghiên cứu dựa trên các nguyên tắc nền tảng của an toàn thông tin:

  • Mô hình bộ ba CIA:
    • Tính bí mật (Confidentiality): Ngăn ngừa việc tiết lộ trái phép thông tin qua phân quyền vật lý/logic, mã hóa (SSL/TLS, AES), tường lửa và ACL.
    • Tính toàn vẹn (Integrity): Ngăn ngừa và phát hiện sự sửa đổi trái phép dữ liệu, bảo đảm tính chính xác khi lưu trữ hoặc truyền tải.
    • Tính sẵn sàng (Availability): Bảo đảm dữ liệu và tài nguyên hệ thống luôn sẵn sàng phục vụ người dùng hợp pháp.
  • Các thành phần an ninh cơ bản: Quản trị định danh (AAA - Authentication, Authorization, Accounting), Mật mã hóa (Cryptography), Kiểm toán (Auditing), và hệ thống quản lý nhật ký (Log Access, Log Event, Log Device).
  • Phân loại tấn công mạng:
    • Các giai đoạn tấn công: Thăm dò (Reconnaissance - gồm thụ động và chủ động), Quét hệ thống (Scanning cổng, mạng, lỗ hổng), Chiếm quyền điều khiển (Gaining access), Duy trì quyền truy cập (Maintaining access bằng backdoor, trojan, rootkit), Xóa dấu vết (Clearing tracks bằng che giấu log, tạo tunnel).
    • Các hình thức tấn công: Tấn công giả mạo (Man-in-the-Middle - MITM qua ARP Cache Poisoning theo RFC 826, DNS Spoofing theo RFC 1034/1035), Tấn công từ chối dịch vụ (DoS/DDoS qua Volume-based, Protocol-based, Application-based), Tấn công lừa đảo (Phishing), Tấn công nội bộ (Insider attack), Tấn công phá mã khóa và khai thác lỗ hổng phần mềm (như Sendmail, Rlogin).
  • Các giải pháp an ninh mạng: Tường lửa (Firewall), Mạng LAN ảo (VLAN - theo Port, MAC, Protocol; giao thức VTP), Mạng riêng ảo (VPN - Site-to-site, Remote-Access, Intranet VPN) và yếu tố con người trong an toàn thông tin.

Phương pháp nghiên cứu

  • Phương pháp tổng hợp và phân tích lý thuyết: Nghiên cứu tài liệu chuyên ngành về giao thức mạng TCP/IP, kiến trúc phát hiện xâm nhập IDS/IPS, tài liệu hướng dẫn kỹ thuật của Snort.
  • Phương pháp thực nghiệm mô phỏng: Xây dựng mô hình mạng thử nghiệm trên nền tảng ảo hóa VMware Workstation Pro 16, cấu hình Snort trên hệ điều hành Linux (CentOS 7), thiết lập các kịch bản tấn công DoS bằng công cụ hping3 từ máy Kali Linux sang máy nạn nhân Windows Server 2008 R2 để kiểm chứng khả năng phát hiện của Snort.

Thiết kế và triển khai hệ thống

Mô hình kiến trúc và thành phần của Snort

Hệ thống Snort được cấu thành từ 5 mô-đun chức năng chính:

  1. Mô-đun giải mã gói tin (Packet Decoder): Sử dụng thư viện libpcap để bắt và phân tích gói tin thô từ lớp liên kết dữ liệu (Data Link) đến lớp ứng dụng (Application).
  2. Mô-đun tiền xử lý (Preprocessors): Thực hiện tái hợp các gói tin bị phân mảnh, chuẩn hóa giao thức nhằm chuẩn bị dữ liệu đầu vào cho mô-đun phát hiện.
  3. Mô-đun phát hiện (Detection Engine): Đối sánh dữ liệu gói tin với bộ quy tắc (rules) đã được định nghĩa.
  4. Mô-đun ghi log và cảnh báo (Logging and Alerting System): Tiếp nhận các gói tin vi phạm quy tắc để ghi lại thông tin hoặc phát cảnh báo.
  5. Mô-đun kết xuất thông tin (Output Module): Hỗ trợ xuất dữ liệu cảnh báo ra nhiều định dạng: tập tin log, Syslog, cơ sở dữ liệu (MySQL), XML, gửi thông điệp SNMP trap hoặc thông báo SMB.

Cấu trúc luật (Rule) của Snort gồm hai phần chính:

  • Rule Header: Chứa hành động (action), loại giao thức (protocol: IP, ICMP, TCP, UDP), địa chỉ IP nguồn/đích (address), cổng nguồn/đích (port) và hướng truyền (direction: ->, <>).
  • Rule Options: Chứa các tùy chọn bổ sung liên kết bằng logic AND như thông điệp (msg), mẫu chuỗi dữ liệu (content, offset, depth, content-list), kích thước dữ liệu (dsize), cờ điều khiển (flags), phân mảnh IP (fragbits), độ ưu tiên và phân loại (classtype, priority), định danh luật (sid, rev).

Bảng dưới đây mô tả các ký tự đại diện cho các cờ TCP được hỗ trợ trong tùy chọn flags của luật Snort:

Cờ TCP Ký tự tham số trong luật Snort
FIN (Finish Flag) F
SYN (Sync Flag) S
RST (Reset Flag) R
PSH (Push Flag) P
ACK (Acknowledge Flag) A
URG (Urgent Flag) U
Reserved Bit 1 0
Reserved Bit 2 1
No Flag set 2

Chế độ ngăn chặn Snort-Inline (tích hợp từ phiên bản 2.0 RC1) kết hợp cơ chế của iptables thông qua Netfilter, ipqueue và thư viện libipq, bổ sung thêm các hành động: DROP (hủy gói và ghi log), SDROP (hủy gói không ghi log), REJECT (từ chối gói và gửi gói tin phản hồi). Thứ tự ưu tiên xử lý luật trong chế độ Inline là: activation $\rightarrow$ dynamic $\rightarrow$ pass $\rightarrow$ drop $\rightarrow$ sdrop $\rightarrow$ reject $\rightarrow$ alert $\rightarrow$ log.

Triển khai thực nghiệm

Môi trường thử nghiệm được thiết lập trên VMware Workstation Pro 16 với 3 máy ảo:

Thành phần Hệ điều hành Địa chỉ IP mô phỏng Chức năng
Máy tấn công (Attacker) Kali Linux Tự cấp phát Sử dụng công cụ hping3 phát động tấn công DoS
Hệ thống IDS/IPS CentOS 7 64-bit 192.142 Cài đặt Snort, thư viện hỗ trợ và cấu hình luật
Máy nạn nhân (Client) Windows Server 2008 R2 192.130 Đóng vai trò máy chủ dịch vụ mục tiêu

Quá trình cài đặt và cấu hình Snort trên CentOS 7 bao gồm:

  1. Cài đặt các gói phụ trợ và thư viện: gcc, gcc-c++, libnetfilter_queue, flex, bison, zlib, pcre, libdnet, tcpdump, Libpcap, DAQ, LuaJIT.
  2. Biên dịch và cài đặt Snort: Biên dịch nguồn Snort với tùy chọn --enable-sourcefire.
  3. Phân quyền và cấu hình:
    • Tạo user và group riêng biệt: snort.
    • Tạo cấu trúc thư mục /etc/snort/rules, /var/log/snort, /usr/local/lib/snort_dynamicrules và cấp quyền 5775.
    • Thiết lập các biến mạng trong /etc/snort/snort.conf:
      • ipvar HOME_NET 192.0/24
      • ipvar EXTERNAL_NET !$HOME_NET
  4. Tạo luật kiểm thử (Test Rule) trong file /etc/snort/rules/local.rules:
alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)
  1. Kiểm thử kịch bản DoS:
    • Máy Kali thực thi lệnh tấn công ICMP flood: hping3 192.130 -1 -d [size] -i u1 -V -n.
    • Máy Snort khởi chạy tiến trình giám sát: snort -A console -q -u snort -g snort -c /etc/snort/snort.conf.
    • Quan sát lưu lượng mạng và trạng thái tài nguyên trên máy Windows Server 2008 R2 trước, trong và sau khi khởi động Snort.

Nội dung chính theo từng chương

Chương 1: Giới thiệu tổng quan về đề tài

Chương 1 khái quát về tình hình an ninh mạng máy tính và những thách thức trong bảo mật dữ liệu doanh nghiệp. Tác giả trình bày các nguyên tắc cốt lõi của an ninh mạng (bộ ba CIA), các vấn đề quản trị rủi ro, và các phương thức bảo đảm an toàn thông tin (Cryptography, Authentication, Authorization, Auditing). Chương này cũng phân tích chi tiết các nguy cơ đe dọa an ninh, mô hình các giai đoạn tấn công của hacker, các dạng tấn công điển hình (MITM, ARP Spoofing, DNS Spoofing, Phishing, DoS/DDoS, tấn công nội bộ, khai thác lỗ hổng Sendmail/Rlogin). Đồng thời, chương 1 giới thiệu các giải pháp bảo mật phổ biến như Firewall, NIDS/HIDS, IPS, VLAN, VPN, nhấn mạnh vai trò của yếu tố con người trong chính sách an ninh thông tin và đưa ra sơ đồ ứng dụng thực tế tại một mô hình doanh nghiệp giả định (Công ty môi giới nhà đất Thiên Thành).

Chương 2: Nghiên cứu kiến trúc và bộ luật của Snort

Chương 2 đi sâu vào phân tích hệ thống phát hiện và ngăn chặn xâm nhập Snort. Nội dung bao gồm yêu cầu phần cứng, hệ điều hành hỗ trợ và cấu trúc 5 mô-đun chức năng (Giải mã gói tin, Tiền xử lý, Phát hiện, Log/Cảnh báo, Kết xuất thông tin). Tác giả làm rõ cú pháp xây dựng bộ luật (Rule Header và Rule Options), chi tiết các từ khóa cấu hình (content, offset, depth, flags, fragbits, dsize, classtype, ack). Cuối chương trình bày cơ chế hoạt động của Snort-Inline khi tích hợp với iptables, bổ sung các hành động loại bỏ gói tin (DROP, SDROP, REJECT) để chuyển đổi chức năng từ IDS sang IPS.

Chương 3: Triển khai và cài đặt hệ thống giám sát an toàn thông tin dựa trên Snort

Chương 3 trình bày toàn bộ quy trình thiết lập thực nghiệm. Tác giả xây dựng sơ đồ mạng thử nghiệm trên phần mềm ảo hóa với 3 máy (Kali Linux, CentOS 7 chạy Snort, Windows Server 2008 R2). Chương này cung cấp chi tiết các câu lệnh cập nhật hệ thống, biên dịch mã nguồn các thư viện (libpcap, daq, LuaJIT) và Snort, thiết lập cấu hình snort.conf, phân quyền thư mục cho user snort. Tiếp đó, tác giả tiến hành thử nghiệm kịch bản tấn công DoS ICMP bằng hping3, vận hành câu lệnh giám sát và phân tích kết quả ghi nhận lưu lượng cảnh báo trên console.

Kết quả và đóng góp

  • Kết quả thực nghiệm:
    • Đã cài đặt hoàn chỉnh phần mềm Snort phiên bản mã nguồn mở cùng các thư viện phụ trợ (Libpcap, DAQ, LuaJIT) trên nền tảng CentOS 7.
    • Cấu hình thành công tập luật kiểm thử local.rules và kiểm tra tính hợp lệ của tệp cấu hình bằng lệnh snort -T -c /etc/snort/snort.conf.
    • Thực hiện kịch bản tấn công bằng công cụ hping3 từ máy Kali Linux sang máy nạn nhân Windows Server 2008 R2. Khi bật chế độ giám sát snort -A console, Snort đã phát hiện lưu lượng bất thường và xuất các dòng cảnh báo tương ứng với luật đã định nghĩa.
  • Đóng góp của đề tài:
    • Hệ thống hóa các kiến thức nền tảng về an toàn thông tin, các mô hình tấn công mạng và cơ chế vận hành của hệ thống phát hiện/ngăn chặn xâm nhập.
    • Cung cấp tài liệu hướng dẫn từng bước về việc cài đặt, cấu hình và vận hành Snort từ mã nguồn trên hệ điều hành Linux.
    • Minh họa trực quan quy trình phát hiện lưu lượng tấn công mạng thông qua mô hình thực nghiệm giả lập.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế được ghi nhận

  • Hạn chế của phần mềm Snort:
    • Tồn tại khả năng đưa ra cảnh báo giả (False Positive) khi lưu lượng bình thường bị nhận diện nhầm là dấu hiệu bất thường.
    • Không có khả năng giải mã và phân tích các luồng dữ liệu đã được mã hóa (chẳng hạn như SSL/TLS, SSH, IPSec).
    • Hoạt động phụ thuộc hoàn toàn vào cơ sở dữ liệu mẫu nhận dạng (signature), đòi hỏi phải liên tục cập nhật để phát hiện các mối đe dọa mới.
    • Không thể tự động xác định cuộc tấn công có thực sự xâm nhập thành công vào hệ thống đích hay không.
    • Hiệu năng bị giới hạn bởi năng lực phần cứng và băng thông mạng khi lưu lượng dữ liệu tăng cao.
  • Hạn chế trong phạm vi thực nghiệm của đồ án:
    • Chưa xây dựng được giao diện trực quan để cảnh báo trực tiếp mà vẫn phải theo dõi thủ công qua tệp log hoặc màn hình dòng lệnh console.
    • Kịch bản thực nghiệm còn đơn giản, chủ yếu dừng lại ở mức độ phát hiện gói tin ICMP qua công cụ hping3.
    • Nhóm nghiên cứu gặp khó khăn về rào cản tài liệu tiếng Anh chuyên sâu và hạn chế về kinh nghiệm thực tế trong môi trường mạng doanh nghiệp phức tạp.

Hướng phát triển

  • Nghiên cứu mở rộng các luật phát hiện phức tạp hơn đối với nhiều giao thức mạng khác nhau.
  • Tích hợp thêm các công cụ hỗ trợ trực quan hóa giao diện quản trị (như Web UI, Snort Report) để nâng cao khả năng quản lý và thống kê cảnh báo.
  • Tiếp tục tối ưu hóa hiệu năng giám sát nhằm đáp ứng các yêu cầu bảo mật trong hệ thống mạng thực tế.

Giá trị tham khảo

Đồ án là tài liệu tham khảo phù hợp cho:

  • Sinh viên chuyên ngành Công nghệ thông tin, Mạng máy tính và An toàn thông tin đang thực hiện đồ án môn học hoặc khóa luận tốt nghiệp liên quan đến Network Security, IDS/IPS.
  • Quản trị viên hệ thống mạng mới tiếp cận với các công cụ giám sát mã nguồn mở, cần tài liệu tham khảo chi tiết về các bước biên dịch, cài đặt và cấu hình Snort trên nền tảng Linux (CentOS/RedHat).
  • Người học cần tài liệu tổng hợp về lý thuyết an ninh mạng, cấu trúc quy tắc của Snort (Rule Header, Rule Options) và cơ chế tích hợp ngăn chặn Snort-Inline.

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

1. Kiến trúc Snort gồm những mô-đun nào và nhiệm vụ của từng mô-đun là gì?
Snort gồm 5 mô-đun chính: Mô-đun giải mã gói tin (Packet Decoder - bắt và phân tích gói tin thô qua libpcap), Mô-đun tiền xử lý (Preprocessors - tái hợp gói và chuẩn hóa dữ liệu), Mô-đun phát hiện (Detection Engine - đối sánh gói tin với bộ quy tắc), Mô-đun ghi log và cảnh báo (Logging and Alerting - ghi nhận thông tin vi phạm), Mô-đun kết xuất thông tin (Output Module - xuất dữ liệu ra file, database, Syslog, SNMP, SMB).

2. Sự khác biệt giữa Snort ở chế độ IDS thông thường và Snort-Inline là gì?
Snort IDS thông thường chỉ thực hiện bắt gói tin qua thư viện libpcap, đối sánh và đưa ra cảnh báo mà không can thiệp vào luồng truyền gói tin. Snort-Inline tích hợp trực tiếp với cơ chế lọc gói của iptables (thông qua Netfilter, libipq, ipqueue), cho phép thực thi chức năng ngăn chặn của IPS với các hành động như DROP, SDROP, REJECT và thay đổi thứ tự ưu tiên xử lý quy tắc.

3. Quy tắc kiểm thử (Rule) được sử dụng trong bài thực nghiệm của đồ án có cấu trúc như thế nào?
Quy tắc kiểm thử được cấu hình trong file /etc/snort/rules/local.rules có nội dung:
alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;).
Quy tắc này sẽ phát sinh cảnh báo đối với mọi gói tin ICMP từ bất kỳ địa chỉ/cổng nguồn nào truyền đến mạng nội bộ $HOME_NET trên bất kỳ cổng nào, với thông điệp "ICMP test", định danh quy tắc sid:10000001 và phiên bản sửa đổi rev:001.

4. Mô hình thực nghiệm trong đồ án sử dụng các hệ điều hành và công cụ cụ thể nào?
Mô hình thực nghiệm gồm 3 máy ảo chạy trên VMware Workstation Pro 16: máy tấn công sử dụng Kali Linux với công cụ hping3; máy giám sát cài đặt hệ điều hành CentOS 7 64-bit chạy Snort (cùng các thư viện Libpcap, DAQ, LuaJIT); máy nạn nhân sử dụng Windows Server 2008 R2.

5. Nhược điểm chính của Snort được tác giả chỉ ra trong đồ án là gì?
Các nhược điểm chính bao gồm: có thể phát sinh cảnh báo giả (False Positive); không phân tích được dữ liệu đã mã hóa (SSL, SSH, IPSec); phụ thuộc vào việc cập nhật signature định kỳ; không thể xác định việc tấn công có thành công hay không; và hiệu năng bị giới hạn theo băng thông và tài nguyên xử lý của hệ thống.

Kết luận

Đồ án tốt nghiệp "Nghiên cứu và xây dựng hệ thống giám sát an toàn thông tin dựa trên Snort" của nhóm tác giả Phạm Đình Khánh và Cao Thanh Khiết đã hệ thống hóa các kiến thức nền tảng về an ninh mạng, mô hình đe dọa và cơ chế hoạt động của hệ thống phát hiện/ngăn chặn xâm nhập. Nhóm nghiên cứu đã triển khai thành công mô hình thực nghiệm cài đặt Snort từ mã nguồn trên nền tảng CentOS 7, cấu hình các quy tắc đối sánh và kiểm thử khả năng phát hiện tấn công DoS ICMP. Mặc dù kịch bản thực nghiệm còn ở mức cơ bản và chưa tích hợp giao diện điều khiển trực quan, đồ án đã cung cấp tài liệu tham khảo có tính hệ thống và thực tiễn cao cho việc nghiên cứu, ứng dụng Snort trong công tác giám sát an toàn mạng.