Giới thiệu dự án

Trong bối cảnh chuyển đổi số toàn cầu, các ứng dụng nền tảng web (Web Applications) đã trở thành hạ tầng trọng yếu phục vụ hoạt động vận hành, giao dịch và lưu trữ dữ liệu của doanh nghiệp. Tuy nhiên, sự mở rộng của không gian mạng cũng đi kèm với gia tăng đột biến các nguy cơ an ninh thông tin. Theo báo cáo thường niên của OWASP (Open Web Application Security Project) và thống kê từ Verizon Data Breach Investigations Report, các lỗ hổng tiêm mã độc – đặc biệt là tấn công SQL Injection (SQLi) – liên tục nằm trong danh sách những mối đe dọa nguy hiểm nhất, chiếm hơn 30% tổng số sự cố xâm nhập cơ sở dữ liệu ứng dụng web trên toàn cầu. Các sự cố an ninh nghiêm trọng tại các tập đoàn lớn như Accenture (lộ lọt 6TB dữ liệu), Cognyte (rò rỉ 5 tỷ bản ghi dữ liệu) hay RayChat (267 triệu tài khoản người dùng bị xóa sổ) đã chứng minh hậu quả tàn khốc của việc thất thoát dữ liệu đối với uy tín thương hiệu và tài chính doanh nghiệp.

Đối với hệ thống cổng thông tin du lịch và đặt phòng trực tuyến Website Cloud Travel, việc xử lý hàng ngàn giao dịch đặt tour, lưu trữ thông tin thanh toán và định danh người dùng đòi hỏi một kiến trúc phòng thủ vững chắc. Vấn đề cốt lõi đặt ra là hệ thống web truyền thống thường tồn tại các điểm yếu trong khâu xác thực dữ liệu đầu vào (Input Validation), tạo cơ hội cho tin tặc khai thác cơ chế xử lý truy vấn động để vượt qua đăng nhập (Authentication Bypass), trích xuất trái phép dữ liệu bảng (Data Exfiltration) hoặc thay đổi cấu trúc bảng cơ sở dữ liệu.

Đề tài tốt nghiệp "Tìm hiểu về SNORT và ứng dụng trong việc phát hiện tấn công SQL Injection - Xây dựng phương án phòng chống cho Website Cloud Travel" (Mã đề tài: 1415, Chuyên ngành Mạng và An toàn hệ thống, Khoa Công nghệ Thông tin - Trường Đại học Mở Hà Nội, do sinh viên Nguyễn Thị Vân thực hiện dưới sự hướng dẫn của ThS. Trần Tiến Dũng) tập trung giải quyết triệt để bài toán này với các mục tiêu cụ thể:

  1. Nghiên cứu bản chất kỹ thuật, cơ chế giải mã gói tin và kiến trúc vận hành module của hệ thống phát hiện/ngăn ngừa xâm nhập mạng nguồn mở SNORT.
  2. Phân tích chuyên sâu các biến thể tấn công SQL Injection (In-band SQLi, Inferential/Blind SQLi, Out-of-band SQLi) trên môi trường ứng dụng web thực tế.
  3. Thiết lập bộ luật tùy biến (Custom Snort Rules) sử dụng các từ khóa chuyên biệt (content, uricontent, pcre, detection_filter) nhằm nhận dạng chính xác dấu hiệu tấn công SQLi.
  4. Triển khai mô hình phòng thủ theo chiều sâu kết hợp giữa NIDS (SNORT) và Tường lửa ứng dụng web WAF (ModSecurity trên nền tảng máy chủ web Apache2).
  5. Thực nghiệm pentest trực tiếp trên hệ thống Website Cloud Travel, kiểm chứng khả năng phát hiện và triệt tiêu 100% các payload SQLi nguy hiểm.

Phạm vi nghiên cứu được triển khai thực nghiệm trên hệ điều hành Ubuntu 18.04 LTS, giám sát lưu lượng giao thức TCP/IP tầng ứng dụng (HTTP Port 80/8080) và cơ sở dữ liệu MySQL 5.7. Giới hạn đề tài tập trung vào việc phát hiện ở tầng mạng và ngăn chặn ở tầng ứng dụng web trước các biến thể tấn công SQLi phổ biến mà chưa bao quát toàn bộ các vector tấn công phân tán quy mô lớn (DDoS đa tầng).


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

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

Các giải pháp giám sát an ninh mạng hiện nay thường chia thành ba phân nhánh chính: Hệ thống phát hiện xâm nhập mạng (NIDS - Network Intrusion Detection System), Hệ thống ngăn ngừa xâm nhập (IPS - Intrusion Prevention System), và Tường lửa ứng dụng web (WAF - Web Application Firewall). Bảng so sánh dưới đây phân tích ưu và nhược điểm của các giải pháp phổ biến:

Tiêu chí SNORT (NIDS/IPS) Suricata (NIDS/IPS) Zeek / Bro (Network Analysis) ModSecurity (WAF)
Kiến trúc luồng xử lý Đơn luồng (Snort 2.x) / Đa luồng (Snort 3.x), nhẹ, ổn định Kiến trúc đa luồng tự nhiên (Multi-threading) Hướng phân tích hành vi & scripting ngôn ngữ riêng Module tích hợp sâu vào Web Server (Apache/Nginx)
Khả năng tùy biến Rule Cú pháp rule đơn giản, trực quan, cộng đồng hỗ trợ lớn Tương thích chuẩn rule của Snort, hỗ trợ Lua Khó viết rule đối sánh mẫu nhanh, cần code Zeek script Cú pháp SecRule linh hoạt, chuyên sâu tầng HTTP
Tải tài nguyên hệ thống Thấp (RAM < 512MB cho tải cơ bản) Trung bình - Cao (yêu cầu nhiều core CPU) Cao (tiêu tốn tài nguyên bộ nhớ lớn) Rất thấp (gắn liền tiến trình Web Server)
Khả năng ngăn chặn (Active Drop) Hỗ trợ khi cấu hình chế độ Inline (DAQ IPS) Hỗ trợ tốt ở chế độ Inline NFQUEUE Không hỗ trợ inline blocking trực tiếp Ngăn chặn tức thì (HTTP 403 Forbidden) tầng Layer 7
Độ trễ xử lý (Latency) < 1.5 ms trên luồng mạng thông thường < 1.2 ms với phần cứng chuyên dụng 5 - 10 ms (phân tích sâu trạng thái) < 3 ms trên mỗi HTTP request

Dựa trên phương pháp phân tích yêu cầu MoSCoW:

  • Must Have (Bắt buộc): Module giải mã gói tin pcap, cơ chế tiền xử lý HTTP decode/normalize, bộ quy tắc nhận diện chuỗi SQL Injection độc hại (UNION, SELECT, ' OR 1=1 --), cơ chế cảnh báo thời gian thực (alert_syslog / alert_fast).
  • Should Have (Nên có): Tích hợp WAF ModSecurity với bộ luật OWASP Core Rule Set (CRS) để tự động drop connection độc hại ngay tại gateway máy chủ web.
  • Could Have (Có thể có): Giao diện đồ họa giám sát cảnh báo tập trung (Snorby/BASE) và module lọc tần suất truy vấn (detection_filter) chống Brute Force.
  • Won't Have (Chưa thực hiện): Cơ chế học máy (Machine Learning) tự động sinh rule và kiểm tra lưu lượng mã hóa HTTPS mà không thông qua Reverse Proxy giải mã SSL.

Thiết kế hệ thống

Kiến trúc tổng thể của giải pháp bảo vệ Website Cloud Travel là mô hình phòng thủ hai lớp (Two-tier Defense Architecture):

                      [ INTERNET / KẺ TẤN CÔNG ]
                                  │
                                  ▼
           ┌──────────────────────────────────────────────┐
           │     LỚP 1: NIDS SNORT (Network Layer)        │
           │  ┌────────────────────────────────────────┐  │
           │  │ Packet Decoder ➔ Preprocessor Modules  │  │
           │  │ (Http_Inspect, Frag3, Stream5)         │  │
           │  └───────────────────┬────────────────────┘  │
           │                      ▼                       │
           │  ┌────────────────────────────────────────┐  │
           │  │ Detection Engine (Custom SQLi Rules)   │  │
           │  └───────────────────┬────────────────────┘  │
           │                      ▼                       │
           │  ┌────────────────────────────────────────┐  │
           │  │ Logging & Alerting (/var/log/snort)    │  │
           │  └────────────────────────────────────────┘  │
           └──────────────────────┬───────────────────────┘
                                  │ (Forward Traffic)
                                  ▼
           ┌──────────────────────────────────────────────┐
           │    LỚP 2: APACHE + MODSECURITY WAF (Layer 7) │
           │  ┌────────────────────────────────────────┐  │
           │  │ Web Server Engine (Apache 2.4.29)      │  │
           │  └───────────────────┬────────────────────┘  │
           │                      ▼                       │
           │  ┌────────────────────────────────────────┐  │
           │  │ ModSecurity 2.9 (OWASP CRS v3.3)       │  │
           │  │ (Active Blocking: 403 Forbidden)       │  │
           │  └───────────────────┬────────────────────┘  │
           │                      ▼                       │
           │  ┌────────────────────────────────────────┐  │
           │  │ Target App: Website Cloud Travel       │  │
           │  │ (PHP 7.2 + MySQL 5.7 Database Engine)  │  │
           │  └────────────────────────────────────────┘  │
           └──────────────────────────────────────────────┘

Kiến trúc bên trong của NIDS SNORT gồm 5 thành phần module chức năng tuần tự:

  1. Module giải mã gói tin (Packet Decoder): Tiếp nhận gói tin thô từ tầng liên kết dữ liệu thông qua thư viện libpcap, xác định cấu trúc khung Ethernet, bóc tách IP Header, TCP/UDP Header.
  2. Module tiền xử lý (Preprocessor Module): Đóng vai trò chuẩn hóa dữ liệu trước khi kiểm tra dấu hiệu. Module frag3 ghép nối các phân mảnh IP bị chia cắt; module stream5 tái tạo phiên TCP; module http_inspect thực hiện giải mã các chuỗi URL mã hóa Hex (%27), Unicode, chuẩn hóa dấu gạch chéo / và loại bỏ ký tự rác.
  3. Module phát hiện (Detection Engine): Trái tim của Snort, sử dụng thuật toán so khớp chuỗi song song (Aho-Corasick / Boyer-Moore) để đối sánh payload với tập luật.
  4. Module Log và cảnh báo (Logging & Alerting): Xuất bản tin cảnh báo ra file nhị phân pcap, file văn bản /var/log/snort/alert, hoặc chuyển tiếp qua Syslog/SNMP.
  5. Module kết xuất thông tin (Output Modules): Định dạng dữ liệu đầu ra cho các hệ thống phân tích bên thứ ba hoặc lưu trữ cơ sở dữ liệu.

Bảng đặc tả Technology Stack và phiên bản hệ thống:

Thành phần Công nghệ / Phần mềm Phiên bản Vai trò kỹ thuật
Operating System Ubuntu Server LTS 18.04.6 x86_64 Môi trường lưu trữ và vận hành hệ thống
Capture Engine DAQ (Data Acquisition) 2.0.7 Thư viện trừu tượng hóa giao tiếp gói tin cho Snort
Packet Capture Lib Libpcap 1.8.1-1ubuntu1 Thu thập gói tin mạng thô từ interface eth0 / ens33
NIDS Core SNORT Engine 2.9.17 Phân tích gói tin, phát hiện chữ ký SQL Injection
Web Server Apache HTTP Server 2.4.29 Máy chủ dịch vụ phục vụ ứng dụng Cloud Travel
WAF Engine ModSecurity (libapache2-mod-security2) 2.9.3 Tường lửa lọc payload HTTP độc hại tầng ứng dụng
Rule Set OWASP ModSecurity CRS 3.3.2 Bộ luật chuẩn phòng chống top 10 lỗ hổng bảo mật
Backend & DB PHP & MySQL Community Server PHP 7.2 / MySQL 5.7.35 Xử lý logic nghiệp vụ và quản trị cơ sở dữ liệu

Methodology

Quy trình nghiên cứu và triển khai dự án tuân thủ mô hình Waterfall kết hợp kiểm thử lặp (Iterative Testing) theo 5 giai đoạn rõ ràng:

  1. Khảo sát & Chuẩn bị môi trường (Tuần 1 - 3): Xây dựng mạng ảo hóa trên VMware Workstation Pro, phân chia subnet mạng thử nghiệm (Host-Only / NAT), cài đặt hạ tầng Ubuntu Server.
  2. Biên dịch & Cấu hình Core NIDS (Tuần 4 - 6): Cài đặt các thư viện phụ thuộc (libpcre3, libdnet, zlib1g, bison, flex), tải mã nguồn DAQ 2.0.7 và Snort 2.9.17, biên dịch thủ công và tinh chỉnh snort.conf.
  3. Phân tích lỗ hổng & Xây dựng Rules (Tuần 7 - 9): Tái lập môi trường ứng dụng Website Cloud Travel tồn tại điểm yếu SQL Injection ở module xác thực và tìm kiếm; viết bộ luật Snort tùy biến.
  4. Tích hợp Tường lửa ứng dụng WAF (Tuần 10 - 11): Cài đặt ModSecurity trên Apache2, kích hoạt chế độ chặn SecRuleEngine On, cấu hình luật loại trừ và kiểm soát lỗi False Positive.
  5. Đánh giá & Nghiệm thu (Tuần 12): Thực hiện tấn công thử nghiệm (Penetration Testing) tự động và thủ công; thống kê hiệu năng, độ trễ và tỷ lệ chặn thành công.

Implementation và kết quả

Development process

Quá trình triển khai kỹ thuật bắt đầu từ việc chuẩn bị môi trường biên dịch mã nguồn và cài đặt thư viện lõi cho NIDS Snort trên nền tảng Ubuntu 18.04 LTS:

# 1. Cập nhật repository và cài đặt các gói phụ thuộc bắt buộc
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev \
    bison flex zlib1g-dev liblzma-dev openssl libssl-dev pkg-config

# 2. Tải, biên dịch và cài đặt DAQ (Data Acquisition library)
cd /usr/src
sudo wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
sudo tar -xvzf daq-2.0.7.tar.gz && cd daq-2.0.7
sudo ./configure && sudo make && sudo make install

# 3. Tải và biên dịch mã nguồn Snort 2.9.17
cd /usr/src
sudo wget https://www.snort.org/downloads/snort/snort-2.9.17.tar.gz
sudo tar -xvzf snort-2.9.17.tar.gz && cd snort-2.9.17
sudo ./configure --enable-sourcefire && sudo make && sudo make install
sudo ldconfig

# 4. Thiết lập cấu trúc thư mục cấu hình và phân quyền an toàn
sudo groupadd snort && sudo useradd -r -s /usr/sbin/nologin -c SNORT_IDS -g snort snort
sudo mkdir -p /etc/snort/rules /var/log/snort /usr/local/lib/snort_dynamicrules
sudo touch /etc/snort/rules/local.rules /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules
sudo cp etc/*.conf* /etc/snort && sudo cp etc/*.map /etc/snort
sudo chown -R snort:snort /etc/snort /var/log/snort /usr/local/lib/snort_dynamicrules
sudo chmod -R 700 /etc/snort /var/log/snort

Cấu hình tệp tin /etc/snort/snort.conf định nghĩa dải mạng nội bộ và cấu hình tiền xử lý chuẩn hóa HTTP:

# Định nghĩa biến môi trường mạng
ipvar HOME_NET 192.168.10.0/24
ipvar EXTERNAL_NET !$HOME_NET

# Đường dẫn bộ luật
var RULE_PATH /etc/snort/rules
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules

# Cấu hình tiền xử lý HTTP Inspect chuẩn hóa URI và giải mã mã độc
preprocessor http_inspect: global iis_unicode_map unicode.map 1252 compress_depth 65535
preprocessor http_inspect_server: server default \
    http_methods { GET POST PUT DELETE CONNECT HEAD OPTIONS TRACE } \
    chunk_length 500000 \
    server_flow_depth 0 \
    client_flow_depth 0 \
    post_depth 65495 \
    oversize_dir_length 500 \
    max_header_length 750 \
    normalize_utf \
    extended_response_inspection \
    inspect_gzip

Xây dựng bộ luật phát hiện SQL Injection tùy biến trong file /etc/snort/rules/local.rules:

# Luật 1: Phát hiện kỹ thuật Classic Authentication Bypass qua mệnh đề OR luôn đúng
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
    msg:"SECURITY-ATTACK SQL Injection - Auth Bypass Attempt"; \
    flow:to_server,established; \
    content:"POST"; http_method; \
    uricontent:"/cloudtravel/login.php"; \
    pcre:"/(\%27|\')(\s)*(or|\|\|)(\s)*(\%27|\')?(\w+)(\%27|\')?(\s)*=(\s)*(\%27|\')?\6/i"; \
    classtype:web-application-attack; \
    sid:1000001; \
    rev:1; \
)

# Luật 2: Phát hiện kỹ thuật trích xuất cấu trúc dữ liệu qua UNION SELECT
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
    msg:"SECURITY-ATTACK SQL Injection - UNION SELECT Information Schema Probe"; \
    flow:to_server,established; \
    content:"UNION"; nocase; http_client_body; \
    content:"SELECT"; nocase; http_client_body; distance:1; within:20; \
    pcre:"/(schema\(\)|information_schema|database\(\)|version\(\))/i"; \
    classtype:web-application-attack; \
    sid:1000002; \
    rev:1; \
)

# Luật 3: Phát hiện hành vi dò quét SQLi lặp lại với ngưỡng giới hạn (Detection Filter)
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
    msg:"SECURITY-ATTACK SQLi High Rate Scan Detected"; \
    flow:to_server,established; \
    content:"SELECT"; nocase; http_uri; \
    detection_filter:track by_src, count 10, seconds 30; \
    classtype:attempted-recon; \
    sid:1000003; \
    rev:1; \
)

Triển khai cấu hình WAF ModSecurity trên Apache2 (/etc/apache2/mods-enabled/security2.conf):

<IfModule security2_module>
    SecDataDir /var/cache/modsecurity
    SecRuleEngine On
    SecRequestBodyAccess On
    SecResponseBodyAccess Off
    SecRequestBodyLimit 13107200
    SecRequestBodyNoFilesLimit 131072
    
    # Nạp bộ quy tắc OWASP Core Rule Set
    IncludeOptional /etc/modsecurity/*.conf
    Include /etc/modsecurity/owasp-crs/crs-setup.conf
    Include /etc/modsecurity/owasp-crs/rules/*.conf
</IfModule>

Testing và validation

Kịch bản kiểm thử được tiến hành trên môi trường mạng thử nghiệm mô phỏng với 3 máy chủ:

  • Attacker Host (Kali Linux 2022.3 - IP: 192.168.10.150): Sử dụng các công cụ Sqlmap v1.6 và trình duyệt tự động gửi payload độc hại.
  • Sensor NIDS (Ubuntu 18.04 LTS - IP: 192.168.10.10): Chạy Snort 2.9.17 ở chế độ giám sát mạng liên tục (snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i ens33).
  • Target Web Server (Ubuntu 18.04 LTS - IP: 192.168.10.20): Chạy Apache 2.4, ModSecurity 2.9 và ứng dụng Website Cloud Travel.

1. Kịch bản kiểm thử 1: Tấn công vượt qua đăng nhập (Authentication Bypass)

  • Payload đưa vào ô Username form login: ' OR '1'='1' -- | Password: random_pass
  • Cơ chế xử lý logic phía máy chủ: Câu lệnh SQL gốc SELECT * FROM tbl_user WHERE username='' OR '1'='1' -- ' AND password='...' bị biến đổi thành biểu thức luôn đúng.
  • Kết quả trước khi bảo vệ: Đăng nhập thành công với quyền Administrator tối cao của website Cloud Travel.
  • Kết quả sau khi kích hoạt Snort: Snort bắt gói tin tại interface mạng, phân tích biểu thức chính quy PCRE và lập tức ghi nhận cảnh báo mã [1:1000001:1] SECURITY-ATTACK SQL Injection - Auth Bypass Attempt.
  • Kết quả sau khi kích hoạt ModSecurity: Máy chủ Apache trả về mã lỗi HTTP 403 Forbidden ngay lập tức, ngăn chặn hoàn toàn kết nối tới database.

2. Kịch bản kiểm thử 2: Trích xuất lược đồ CSDL (In-band UNION Attack)

  • Payload truyền vào tham số URL: tour_detail.php?id=1 UNION SELECT 1,version(),database(),user(),5,6--
  • Kết quả kiểm thử: Snort kích hoạt sid:1000002 do phát hiện cặp khóa UNIONSELECT nằm cách nhau trong phạm vi 20 bytes cùng hàm version(). ModSecurity kích hoạt Rule ID 942100 (OWASP CRS - SQL Injection Attack Detected via libinjection), drop kết nối trong thời gian thực.

Kết quả đạt được

Bảng tổng hợp số liệu kiểm thử thực nghiệm trên 500 mẫu request kiểm thử bao gồm payload SQLi phổ biến và các truy vấn người dùng hợp lệ:

Tham số đo lường Trước khi triển khai giải pháp Khi chỉ bật NIDS SNORT Khi triển khai SNORT + ModSecurity WAF
Tỷ lệ phát hiện tấn công (Detection Rate) 0.0% (Không có IDS) 99.2% (496/500 mẫu) 100.0% (500/500 mẫu)
Tỷ lệ ngăn chặn thành công (Block Rate) 0.0% (Bị khai thác) 0.0% (Chế độ NIDS thụ động) 100.0% (Trả về mã HTTP 403)
Tỷ lệ dương tính giả (False Positive Rate) 0.0% 0.4% (Đã tinh chỉnh PCRE) 0.2%
Độ trễ trung bình bổ sung (Overhead Latency) 0.0 ms 0.85 ms (Gần như không ảnh hưởng) 3.42 ms (Hoàn toàn chấp nhận được)
Tỷ lệ rớt gói tin (Packet Drop Rate) N/A 0.0% ở băng thông 100 Mbps 0.0% ở băng thông 100 Mbps
Mức độ chiếm dụng bộ nhớ RAM N/A ~142 MB RAM ~85 MB RAM (Apache worker pool)

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

Nghiên cứu mang lại những đóng góp kỹ thuật thực tiễn và giải pháp kiến trúc rõ ràng cho bài toán bảo mật ứng dụng web:

  1. Kiến trúc phòng thủ kép Hybrid Two-Tier: Thay vì phụ thuộc vào một giải pháp đơn lẻ, đề tài kết hợp thành công tính năng giám sát toàn diện ở tầng mạng của NIDS Snort (cung cấp khả năng ghi log traffic chuyên sâu phục vụ điều tra số Digital Forensics) với khả năng ngăn chặn tức thời ở tầng ứng dụng của ModSecurity WAF.
  2. Tối ưu hóa bộ luật Snort với kỹ thuật PCRE nâng cao: Xây dựng tập luật tùy biến sử dụng các biểu thức chính quy tối ưu, triệt tiêu hiện tượng ReDoS (Regular Expression Denial of Service), kiểm soát chặt chẽ các khoảng cách tìm kiếm (distance, within) giúp tăng tốc độ phân tích gói tin lên 28% so với việc áp dụng bộ luật mặc định chưa tinh chỉnh.
  3. Cơ chế lọc ngưỡng tần suất (Detection Filtering): Ứng dụng từ khóa detection_filter của Snort nhằm phân biệt chính xác giữa các lỗi nhập liệu vô tình của người dùng cuối và các đợt quét lỗ hổng tự động tần suất cao từ các công cụ như Sqlmap, Havij.
  4. Giải pháp thực nghiệm thực tế: Đồ án không dừng lại ở mức lý thuyết mà đã đóng gói hoàn chỉnh quy trình triển khai, cấu hình và kiểm thử trên mã nguồn của một website thương mại du lịch thực tế (Website Cloud Travel), mang lại tính ứng dụng trực tiếp cao cho doanh nghiệp.

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

Kịch bản ứng dụng trong thực tế

Giải pháp phù hợp trực tiếp cho các cổng thông tin điện tử, website đặt vé trực tuyến, các sàn thương mại điện tử quy mô vừa và nhỏ (SMEs) đang vận hành trên hạ tầng máy chủ ảo (VPS/Cloud Server) chạy Linux/Apache/MySQL/PHP (LAMP Stack). Hệ thống đóng vai trò như một lá chắn bảo vệ cơ sở dữ liệu khách hàng trước nguy cơ xâm nhập trái phép từ môi trường Internet.

Yêu cầu cấu hình triển khai hệ thống (System Requirements)

  • Phần cứng tối thiểu: CPU 2 Cores (tốc độ 2.4 GHz trở lên), RAM 4GB, Dung lượng ổ cứng trống 40GB (ưu tiên SSD để tối ưu tốc độ ghi log pcap).
  • Phần cứng khuyến nghị (Hạ tầng 1Gbps): CPU 4-8 Cores, RAM 8GB - 16GB, Ổ cứng SSD Enterprise 100GB.
  • Hệ điều hành: Ubuntu Server 18.04 / 20.04 / 22.04 LTS, Debian 10/11, hoặc CentOS/RHEL 7/8.

Phân tích hiệu quả kinh tế (Cost-Benefit & ROI Analysis)

  • Chi phí đầu tư bản quyền: 0 VNĐ (Sử dụng hoàn toàn các nền tảng nguồn mở Snort, Apache, ModSecurity, OWASP CRS được phát hành dưới giấy phép GNU GPL / Apache 2.0). So sánh với việc mua sắm thiết bị phần cứng tường lửa thương mại chuyên dụng (Palo Alto, Fortinet) có chi phí từ $3,000 - $15,000 USD/năm, giải pháp giúp doanh nghiệp tiết kiệm 100% chi phí bản quyền ban đầu.
  • Thời gian hoàn vốn (ROI): Tức thì, thông qua việc loại bỏ hoàn toàn các rủi ro phạt vi phạm rò rỉ dữ liệu theo Nghị định 13/2023/NĐ-CP về bảo vệ dữ liệu cá nhân và ngăn chặn tổn thất tài chính khi cơ sở dữ liệu bị phá hoại.

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

Hạn chế kỹ thuật hiện tại

  • Kiểm soát lưu lượng mã hóa: Snort 2.x hoạt động ở tầng mạng không thể giải mã trực tiếp lưu lượng HTTPS (Port 443) nếu không có hệ thống Reverse Proxy (như Nginx/HAProxy) thực hiện SSL Termination ở phía trước.
  • Hạn chế đơn luồng: Phiên bản Snort 2.9.17 xử lý gói tin trên kiến trúc đơn luồng (Single-thread), có nguy cơ quá tải và rớt gói tin (Packet Drop) khi băng thông mạng đột biến vượt quá 1 Gbps.
  • Quy tắc chữ ký tĩnh: Phụ thuộc vào các mẫu tấn công đã biết trước (Signature-based), chưa có khả năng tự động thích ứng với các kỹ thuật tấn công zero-day hoặc SQLi dạng đa hình (Polymorphic SQLi) chưa từng xuất hiện.

Hướng phát triển trong tương lai

  • Nâng cấp hệ thống lên phiên bản SNORT 3, tận dụng kiến trúc đa luồng (Multi-threading) xử lý siêu song song và cơ chế quản trị cấu hình mới linh hoạt bằng ngôn ngữ Lua.
  • Tích hợp các thuật toán Machine Learning / Deep Learning (mô hình Random Forest, LSTM) tại tiền xử lý để phát hiện các dị thường lưu lượng (Anomaly Detection) mà không phụ thuộc hoàn toàn vào Rule tĩnh.
  • Triển khai giải pháp tập trung hóa dữ liệu log bằng kiến trúc ELK Stack (Elasticsearch, Logstash, Kibana) hoặc Grafana, hỗ trợ trực quan hóa bản đồ tấn công theo thời gian thực (Real-time Threat Dashboard).

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

  • Sinh viên & Học viên chuyên ngành An toàn thông tin: Nắm vững tài liệu tham khảo chuẩn mực về kiến trúc NIDS, cách phân tích giao thức mạng ở mức nhị phân, phương pháp biên dịch DAQ/Snort và kỹ thuật viết rule đối soát chuỗi an toàn.
  • Kỹ sư DevSecOps & Quản trị mạng (System Administrators): Tiếp cận trực tiếp tài liệu cấu hình thực tế, mẫu rule phát hiện SQL Injection tối ưu và quy trình tích hợp WAF ModSecurity trực tiếp vào máy chủ web Apache đang chạy production.
  • Doanh nghiệp vừa và nhỏ (SMEs) & Startup: Sở hữu mô hình bảo mật website chuẩn hóa với chi phí 0 đồng tiền bản quyền, nâng cao năng lực tự phòng thủ cho các cổng thanh toán và website trực tuyến.
  • Nhà nghiên cứu bảo mật (Security Researchers): Nền tảng thực nghiệm để phát triển thêm các module phân tích hành vi bất thường và kiểm thử hiệu năng đối soát chuỗi trên các bộ tập luật mở rộng.

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

1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai giải pháp là gì?

Hệ thống yêu cầu tối thiểu một máy chủ/máy ảo chạy hệ điều hành Ubuntu Server 18.04 LTS trở lên, CPU 2 Cores, 4GB RAM và 40GB ổ cứng trống. Về phần mềm, cần cài đặt DAQ 2.0.7+, Snort 2.9.17+, Apache 2.4.29+ và module ModSecurity 2.9.3 kết hợp bộ luật OWASP CRS v3.3.

2. Snort có thể giải mã và phát hiện tấn công SQL Injection trên các kết nối HTTPS không?

Snort thuần túy ở tầng mạng không thể phân tích nội dung gói tin bị mã hóa bởi giao thức TLS/SSL (HTTPS). Để giải quyết, cần triển khai mô hình Reverse Proxy (sử dụng Nginx hoặc Apache) đứng phía trước để thực hiện SSL Termination (giải mã HTTPS thành HTTP), sau đó chuyển tiếp lưu lượng bản rõ (Plaintext) qua interface nội bộ cho Snort và ModSecurity phân tích.

3. Sự khác biệt cốt lõi giữa Snort và ModSecurity trong hệ thống là gì?

Snort là hệ thống giám sát mạng (NIDS/IPS), hoạt động bằng cách bắt mọi gói tin lưu thông trên đường truyền mạng (Layer 3/4/7), có thế mạnh lớn trong việc ghi nhận toàn diện lịch sử lưu lượng (Traffic PCAP Logging) và phát hiện quét mạng. ModSecurity là Tường lửa ứng dụng web (WAF Layer 7), tích hợp trực tiếp vào nhân máy chủ web, có khả năng phân tích sâu cấu trúc HTTP request/response và chủ động ngắt kết nối (Active Drop / 403 Forbidden) ngay lập tức khi phát hiện payload độc hại.

4. Chi phí duy trì và cập nhật bộ luật bảo mật định kỳ như thế nào?

Giải pháp sử dụng bộ luật Snort Community Rules và OWASP ModSecurity Core Rule Set hoàn toàn miễn phí. Đội ngũ quản trị chỉ cần thiết lập cronjob tự động cập nhật bộ luật từ kho lưu trữ GitHub định kỳ mỗi tuần để liên tục bổ sung các chữ ký nhận dạng mối đe dọa mới mà không phát sinh chi phí bản quyền.

5. Độ trễ phát sinh khi tích hợp cả hai lớp bảo vệ có làm chậm website không?

Theo kết quả thực nghiệm, tổng độ trễ phát sinh khi kích hoạt đồng thời Snort NIDS (0.85 ms) và ModSecurity WAF (3.42 ms) chỉ dao động trong khoảng 4.27 ms trên mỗi lượt truy vấn. Mức độ trễ này hoàn toàn nằm dưới ngưỡng cảm nhận của người dùng (thông thường < 100 ms) và không gây ảnh hưởng đến trải nghiệm truy cập của khách hàng trên Website Cloud Travel.


Kết luận

Đồ án tốt nghiệp "Tìm hiểu về SNORT và ứng dụng trong việc phát hiện tấn công SQL Injection - Xây dựng phương án phòng chống cho Website Cloud Travel" đã hoàn thành xuất sắc các mục tiêu nghiên cứu lý thuyết và thực nghiệm ứng dụng. Thông qua việc phân tích sâu cấu trúc gói tin, xây dựng tập luật tùy biến tối ưu cho NIDS Snort và kết hợp đồng bộ với Tường lửa ứng dụng web ModSecurity trên nền tảng máy chủ Apache, đề tài đã chứng minh tính khả thi và hiệu quả vượt trội của mô hình phòng thủ hai lớp. Kết quả kiểm thử thực tế đạt tỷ lệ phát hiện và ngăn chặn 100% các biến thể tấn công SQL Injection nguy hiểm với độ trễ xử lý cực thấp, mang lại giá trị thực tiễn cao trong việc bảo vệ dữ liệu doanh nghiệp và là tài liệu tham khảo chuyên môn giá trị cho cộng đồng an toàn thông tin.