Quay lại danh sách
Tin tức công nghệ

Bảo mật mạng VPS: Cấu Hình Chặn Đứt Các Đợt Quét Cổng (Port Scanning) Của Hacker Tầng Kernel Bằng NFTables Raw Table

4 tháng 6, 2026

Giới Thiệu Về Nguy Cơ Từ Port Scanning Và Giới Hạn Của Tường Lửa Thông Thường

Trong kỷ nguyên số, máy chủ ảo cá nhân (VPS) là mục tiêu hàng đầu của các cuộc tấn công mạng. Trước khi thực hiện bất kỳ phương thức xâm nhập chuyên sâu nào, hacker luôn bắt đầu bằng bước thám thính hệ thống (Reconnaissance), trong đó phổ biến nhất là Port Scanning (Quét cổng). Bằng cách gửi hàng loạt gói tin đến các cổng mạng, kẻ tấn công có thể xác định hệ điều hành, các dịch vụ đang chạy và những lỗ hổng bảo mật tiềm ẩn.

Thông thường, các quản trị viên hệ thống sẽ sử dụng các công cụ như UFW, Firewalld hoặc IPTables tiêu chuẩn để chặn các gói tin này. Tuy nhiên, cách tiếp cận truyền thống này tồn tại một điểm yếu chí tử: Netfilter mặc định phải xử lý gói tin qua cơ chế Connection Tracking (Conntrack). Khi hacker thực hiện quét cổng trên quy mô lớn (ví dụ: SYN Flood kết hợp Port Scan), bảng Conntrack sẽ nhanh chóng bị tràn, dẫn đến tình trạng nghẽn cổ chai, tiêu tốn tài nguyên CPU và có thể gây sập toàn bộ dịch vụ của VPS (Từ chối dịch vụ - DoS).

Giải Pháp Đột Phá: NFTables Raw Table Và Sức Mạnh Ở Tầng Kernel

Để giải quyết triệt để bài toán hiệu năng và bảo mật, việc xử lý và drop (loại bỏ) các gói tin quét cổng cần phải được thực hiện càng sớm càng tốt trong vòng đời của gói tin (Packet Lifecycle). Đây chính là nơi NFTables – kiến trúc tường lửa hiện đại của Linux – thể hiện ưu thế vượt trội thông qua tính năng Raw Table.

Cơ chế hoạt động: Bằng cách can thiệp vào hook prerouting với độ ưu tiên (priority) cực cao (thường là mã dịch -300), NFTables Raw Table cho phép hệ thống kiểm tra và loại bỏ gói tin độc hại trước khi cơ chế Connection Tracking kịp kích hoạt. Điều này đồng nghĩa với việc gói tin bị chặn đứng ngay tại tầng Kernel, giải phóng hoàn toàn CPU khỏi việc theo dõi các kết nối rác.

Các ưu điểm vượt trội của NFTables Raw Table:

  • Hiệu năng tối ưu: Giảm thiểu tối đa độ trễ xử lý gói tin, giữ cho mức sử dụng CPU luôn ở mức thấp ngay cả khi bị quét cổng cường độ cao.
  • Tiết kiệm bộ nhớ: Ngăn chặn tình trạng tràn bảng Conntrack (nf_conntrack: table full).
  • Bảo mật chủ động: Khiến VPS trở nên "vô hình" trước các công cụ quét phổ biến như Nmap hoặc Masscan nhờ cơ chế Drop âm thầm không phản hồi.

Hướng Dẫn Chi Tiết Cấu Hình NFTables Chặn Port Scanning Tầng Kernel

Dưới đây là quy trình từng bước để triển khai hệ thống phòng thủ bằng NFTables trên môi trường Linux (Ubuntu/Debian hoặc CentOS/RHEL hiện đại).

Bước 1: Cài đặt và kích hoạt NFTables

Trước tiên, đảm bảo hệ thống của bạn đã gỡ bỏ các tường lửa cũ và kích hoạt NFTables:

sudo apt update && sudo apt install nftables -y (Đối với Debian/Ubuntu)

sudo systemctl enable --now nftables

Bước 2: Xây dựng cấu hình Raw Table ngăn chặn quét cổng

Chúng ta sẽ tạo một file cấu hình hoặc bổ sung trực tiếp vào cấu hình mặc định của NFTables tại đường dẫn /etc/nftables.conf. Đoạn cấu hình dưới đây thiết lập một bộ lọc tại tầng Raw để nhận diện các dấu hiệu quét cổng điển hình (như TCP Flags bất thường) và đưa địa chỉ IP của kẻ tấn công vào một danh sách đen tự động (Blacklist Set) trong một khoảng thời gian nhất định.


table inet raw_protection {
    set port_scanners {
        type ipv4_addr
        flags dynamic, timeout
        timeout 1d
    }

    chain prerouting {
        type filter hook prerouting priority -300; policy accept;

        # Chặn ngay lập tức các IP đã nằm trong danh sách đen
        ip saddr @port_scanners drop

        # Phát hiện TCP Flags bất thường (Xmas scan, Null scan, v.v.)
        tcp flags & (fin|syn|rst|psh|ack|urg) == 0x0 update @port_scanners { ip saddr timeout 1h } drop
        tcp flags & (fin|syn|rst|psh|ack|urg) == (fin|syn|rst|psh|ack|urg) update @port_scanners { ip saddr timeout 1h } drop
        tcp flags & (fin|syn) == (fin|syn) update @port_scanners { ip saddr timeout 1h } drop
        tcp flags & (syn|rst) == (syn|rst) update @port_scanners { ip saddr timeout 1h } drop

        # Giới hạn tốc độ kết nối cổng mới để chặn TCP SYN Scan phổ biến
        tcp flags & (syn|ack) == syn ct state new limit rate over 10/minute burst 5 packets update @port_scanners { ip saddr timeout 1d } drop
    }
}

Giải thích chi tiết đoạn cấu hình:

  1. set port_scanners: Khai báo một danh sách động lưu trữ các địa chỉ IP vi phạm, tự động xóa sau 1 ngày (1d) để tránh lãng phí RAM.
  2. priority -300: Đảm bảo chain này chạy trước bất kỳ module theo dõi kết nối nào của Linux Kernel.
  3. Kiểm tra TCP Flags: Kẻ tấn công thường thao túng các cờ TCP (như Null scan hoặc Xmas scan) để thăm dò hệ thống. Đoạn code trên sẽ bắt bài và khóa các IP này trong 1 giờ.
  4. Limit rate: Nếu một IP gửi quá 10 yêu cầu kết nối TCP SYN mới trong 1 phút, hệ thống sẽ coi đó là hành vi quét cổng hàng loạt và đưa vào danh sách đen tạm thời 1 ngày.

Kiểm Tra Và Đánh Giá Hiệu Quả Hệ Thống Phòng Thủ

Sau khi áp dụng cấu hình bằng lệnh sudo nft -f /etc/nftables.conf, bạn có thể tiến hành kiểm tra tính hiệu quả từ một máy ngoài hệ thống bằng công cụ Nmap:

nmap -sS -Pn [IP_CỦA_VPS]

Kết quả trả về từ Nmap sẽ hiển thị trạng thái các cổng là filtered hoặc không phản hồi. Đồng thời, trên máy chủ VPS, bạn có thể kiểm tra danh sách các IP đang bị khóa bằng lệnh:

sudo nft list set inet raw_protection port_scanners

Mọi nỗ lực quét cổng tiếp theo từ IP đó sẽ bị Kernel từ chối ngay lập tức ở mức phần cứng/giao tiếp mạng thấp nhất, đảm bảo tính ổn định tuyệt đối cho các ứng dụng doanh nghiệp đang chạy trên VPS.

Kết Luận

Bảo mật tầng Kernel bằng NFTables Raw Table không chỉ là một giải pháp phòng thủ an ninh mạng mạnh mẽ mà còn là bài toán tối ưu hóa tài nguyên hệ thống thông minh. Bằng cách chặn đứng các đợt quét cổng của hacker ngay trước khi chúng kịp tiêu tốn tài nguyên xử lý, doanh nghiệp có thể yên tâm duy trì hoạt động liên tục của dịch vụ, giảm thiểu rủi ro bị khai thác lỗ hổng và tối ưu hóa chi phí vận hành hạ tầng VPS.

Bảo mật mạng VPS: Cấu Hình Chặn Đứt Các Đợt Quét Cổng (Port Scanning) Của Hacker Tầng Kernel Bằng NFTables Raw Table | DPTCloud