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

Chống Scan Port và Brute-Force Nâng Cao Bằng Kỹ Thuật Port Knocking Với NFTables

1 tháng 6, 2026

Giới Thiệu Về Nguy Cơ Từ Quét Cổng (Scan Port) Và Brute-Force

Trong kỷ nguyên số hóa và điện toán đám mây, an ninh mạng đã trở thành yếu tố sống còn đối với mọi doanh nghiệp. Bất kỳ máy chủ nào khi kết nối với Internet đều liên tục đối mặt với hàng ngàn lượt quét tự động mỗi ngày. Các tin tặc thường bắt đầu chiến dịch tấn công bằng bước Scan Port (Quét cổng) nhằm tìm ra các dịch vụ đang mở như SSH (cổng 22), FTP (cổng 21) hoặc RDP (cổng 3389).

Khi một cổng dịch vụ nhạy cảm bị phát hiện, bước tiếp theo của kẻ tấn công sẽ là thực hiện các chiến dịch Brute-Force (Tấn công dò mật khẩu) bằng cách sử dụng các siêu máy tính hoặc mạng lưới botnet để thử hàng triệu tổ hợp tài khoản và mật khẩu. Nếu doanh nghiệp chỉ phụ thuộc vào các phương thức bảo mật truyền thống như đổi cổng mặc định hoặc đặt mật khẩu phức tạp, nguy cơ bị khai thác chiếm quyền điều khiển hệ thống vẫn ở mức rất cao. Để giải quyết triệt để vấn đề này, các chuyên gia an ninh mạng hàng đầu đã áp dụng một kỹ thuật phòng thủ nâng cao mang tên: Port Knocking.

Khái Niệm Port Knocking: Cơ Chế "Gõ Cửa" Bảo Mật

Hãy tưởng tượng bạn có một căn phòng bí mật chứa toàn bộ tài sản giá trị của doanh nghiệp, và cánh cửa vào căn phòng đó hoàn toàn không có tay nắm hay ổ khóa hiển thị ra bên ngoài. Cách duy nhất để cửa xuất hiện và mở ra là bạn phải gõ vào các vị trí bí mật trên bức tường theo một nhịp điệu và thứ tự chính xác được quy định sẵn. Đó chính là nguyên lý hoạt động của Port Knocking.

Về mặt kỹ thuật, Port Knocking là một phương pháp bảo mật hoạt động bằng cách đóng toàn bộ các cổng dịch vụ trên tường lửa (Firewall). Máy chủ sẽ liên tục lắng nghe các gói tin gửi đến (thường là gói SYN) nhưng sẽ âm thầm hủy (Drop) chúng mà không phản hồi. Chỉ khi hệ thống ghi nhận được một chuỗi các gói tin được gửi đến các cổng cụ thể theo đúng thứ tự quy định trước (ví dụ: Cổng 7000 -> Cổng 8000 -> Cổng 9000), tường lửa mới tự động kích hoạt một quy tắc (Rule) mở cổng dịch vụ thực tế (như SSH) riêng cho địa chỉ IP của người dùng đó trong một khoảng thời gian nhất định.

Kỹ thuật Port Knocking biến máy chủ của bạn trở thành một 'hố đen' hoàn toàn vô hình trước các công cụ quét cổng tự động của hacker như Nmap hay Masscan, vì đối với chúng, mọi cổng kết nối đều đang ở trạng thái đóng.

Tại Sao Nên Chọn NFTables Thay Vì IPTables Truy Truyền Thống?

Trước đây, Netfilter/IPTables là công cụ tường lửa tiêu chuẩn trên Linux. Tuy nhiên, kể từ các phiên bản nhân Linux hiện đại, NFTables đã được giới thiệu để thay thế hoàn toàn cho IPTables nhờ những cải tiến vượt bậc về hiệu suất và kiến trúc:

  • Hiệu năng xử lý cao hơn: NFTables sử dụng một máy ảo nội tại (Internal Virtual Machine) tinh gọn để thực thi các quy tắc, giúp giảm thiểu đáng kể độ trễ và tài nguyên CPU khi xử lý hàng triệu gói tin cùng lúc.
  • Cú pháp hợp nhất và tường minh: Không còn sự phân tách phức tạp giữa iptables, ip6tables, arptables hay ebtables. Tất cả được cấu hình chung trong một cú pháp đồng nhất của nftables.
  • Hỗ trợ các cấu trúc dữ liệu nâng cao: NFTables tích hợp sẵn các tính năng như Sets (Tập hợp), Maps (Bản đồ) và đặc biệt là Meter (Bộ đếm thời gian thực). Đây là công cụ cốt lõi giúp chúng ta triển khai Port Knocking một cách mượt mà mà không cần cài đặt thêm các daemon bên thứ ba (như knockd).

Hướng Dẫn Triển Khai Port Knocking Nâng Cao Bằng NFTables

Bước 1: Chuẩn bị môi trường và cài đặt NFTables

Đầu tiên, hãy đảm bảo rằng hệ thống của bạn đã được cập nhật và cài đặt công cụ nftables. Trên các hệ điều hành dựa trên Debian/Ubuntu, bạn sử dụng lệnh:

sudo apt update && sudo apt install nftables -y

Kích hoạt và cho phép nftables khởi động cùng hệ thống:

sudo systemctl enable nftables && sudo systemctl start nftables

Bước 2: Xây dựng bộ quy tắc (Script) cấu hình NFTables

Chúng ta sẽ cấu hình một chuỗi "gõ cửa" gồm 2 bước bảo mật để mở cổng SSH (22). Người dùng cần gửi gói tin đến cổng 1111 trước, sau đó là cổng 2222 trong vòng 10 giây để được cấp quyền truy cập vào cổng 22.

Tạo một file cấu hình mới tại `/etc/nftables.conf` với nội dung kiến trúc như sau:flush ruleset table inet filter { # Định nghĩa các tập hợp lưu trữ IP động set knock_stage1 { type ipv4_addr flags dynamic, timeout timeout 10s } set knock_stage2 { type ipv4_addr flags dynamic, timeout timeout 10s } chain input { type filter hook input priority filter; policy drop; # Cho phép các kết nối đã thiết lập sẵn ct state established,related accept iifname "lo" accept # Bước 1: Gõ vào cổng 1111 -> Thêm IP vào danh sách chờ stage1 tcp dport 1111 tcp flags syn update @knock_stage1 { ip saddr } # Bước 2: Gõ vào cổng 2222 VÀ IP phải nằm trong stage1 -> Chuyển IP sang stage2 tcp dport 2222 tcp flags syn ip saddr @knock_stage1 update @knock_stage2 { ip saddr } # Bước cuối: Mở cổng SSH thực tế (22) nếu IP nằm trong danh sách stage2 tcp dport 22 ip saddr @knock_stage2 accept } }

Bước 3: Áp dụng cấu hình và kiểm tra

Nạp lại bộ quy tắc nftables bằng lệnh:

sudo nft -f /etc/nftables.conf

Lúc này, nếu bạn cố tình kết nối trực tiếp đến cổng SSH từ một máy tính khác thông qua lệnh ssh user@server_ip, kết nối sẽ bị treo và timeout hoàn toàn vì tường lửa đang chặn.

Quy Trình Kiểm Tra Kết Nối Từ Máy Trạm (Client)

Để thực hiện hành động "gõ cửa" từ máy trạm của quản trị viên, chúng ta có thể sử dụng công cụ phổ biến là nc (netcat) hoặc nmap. Quy trình thực hiện tuần tự như sau:

  • Gõ cửa lần 1: Gửi gói tin đến cổng 1111:
    nc -z -w1 server_ip 1111
  • Gõ cửa lần 2 (trong vòng 10 giây): Gửi gói tin đến cổng 2222:
    nc -z -w1 server_ip 2222
  • Kết nối SSH chính thức:
    ssh user@server_ip
  • Nếu thực hiện đúng thứ tự và thời gian, bạn sẽ truy cập được vào màn hình đăng nhập SSH một cách an toàn. Mọi IP khác không thực hiện quy trình này đều thấy cổng SSH đóng hoàn toàn.

    Các Lưu Ý Quan Trọng Khi Vận Hành Trong Doanh Nghiệp

    Mặc dù Port Knocking mang lại mức độ bảo mật cực kỳ cao, doanh nghiệp khi triển khai trong môi trường production cần lưu ý các yếu tố sau để đảm bảo tính sẵn sàng cao của hệ thống:

    • Luôn có phương án dự phòng (Fallback): Đảm bảo bạn giữ ít nhất một phiên kết nối SSH hiện tại đang hoạt động khi tiến hành nạp cấu hình mới, tránh trường hợp cấu hình sai dẫn đến việc tự khóa chính mình ra khỏi máy chủ (Lockout).
    • Bảo mật chuỗi số cổng: Các cổng dùng để gõ cửa (như 1111, 2222 trong ví dụ) cần được thay đổi thành các chuỗi số ngẫu nhiên khó đoán và chỉ phổ biến nội bộ trong đội ngũ kỹ thuật.
    • Đồng bộ thời gian: Kỹ thuật này dựa trên thời gian thực (Timeout). Hãy đảm bảo máy chủ được cấu hình NTP đồng bộ thời gian chính xác để tránh sai lệch trong quá trình tính toán thời gian gõ cửa của các kỹ sư.

    Lời Kết

    Kết hợp Port Knocking và sức mạnh xử lý tối ưu của NFTables là một giải pháp phòng thủ chủ động tuyệt vời, giúp doanh nghiệp loại bỏ đến 99% các cuộc tấn công tự động từ môi trường Internet phức tạp. Bằng cách ẩn giấu hoàn toàn hạ tầng dịch vụ, bạn không chỉ giảm tải cho hệ thống xử lý log mà còn nâng tầm tiêu chuẩn an toàn thông tin của tổ chức lên một vị thế mới vững chắc hơn.

    Chống Scan Port và Brute-Force Nâng Cao Bằng Kỹ Thuật Port Knocking Với NFTables | DPTCloud