Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn sử dụng Port Knocking để bảo vệ dịch vụ SSH trên Linux

    Nguyễn Hưng

    Ngày đăng:

    08/01/2026

    Cập nhật lần cuối:

    08/01/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    08/01/2026

    Cập nhật lần cuối:

    08/01/2026

    Mục lục

    Port Knocking là kỹ thuật bảo mật thông minh giúp bảo vệ cổng SSH khỏi các cuộc tấn công dò quét bằng cách chỉ mở cổng khi người dùng gửi đúng chuỗi đã định sẵn. Trong hướng dẫn này, mình sẽ hướng dẫn bạn cách cấu hình port knocking trên Ubuntu 22.04 LTS để bảo vệ dịch vụ SSH một cách an toàn.

    Những điểm chính

    • Định nghĩa Port Knocking: Hiểu rõ Port Knocking là kỹ thuật bảo mật giúp ẩn dịch vụ bằng cách chỉ mở cổng khi nhận được một chuỗi truy cập bí mật.
    • Những lợi ích khi sử dụng: Nắm được các lợi ích chính như vô hiệu hóa công cụ dò quét, chặn tấn công brute-force và làm sạch log hệ thống.
    • Các bước cài đặt và sử dụng: Thành thạo quy trình 4 bước để cài đặt và cấu hình knockd trên server, đồng thời biết cách gửi knock từ máy khách để mở và đóng cổng.
    • Lưu ý khi sử dụng: Nắm được các rủi ro và hạn chế của Port Knocking, từ nguy cơ mất quyền truy cập, tấn công phát lại đến việc cản trở quy trình tự động hóa.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề thực tế như liệu Port Knocking có thay thế được SSH key, có nên dùng chung chuỗi knock và cách xử lý khi bị quét trúng ngẫu nhiên

    Port Knocking là gì?

    Port Knocking là kỹ thuật bảo mật mạng cho phép bạn ẩn các dịch vụ sau tường lửa và chỉ mở cổng khi client gửi đúng một chuỗi truy cập bí mật tới các cổng đang đóng. Khi firewall phát hiện chính xác chuỗi gõ cổng này, Port Knocking sẽ tạm thời thay đổi rule để mở cổng dịch vụ cho đúng địa chỉ IP đó, giúp giảm nguy cơ bị quét cổng và truy cập trái phép.​

    Port Knocking là kỹ thuật bảo mật mạng
    Port Knocking là kỹ thuật bảo mật mạng

    Những lợi ích khi sử dụng Port Knocking

    Dưới đây là 4 lợi ích chính khi sử dụng kỹ thuật Port Knocking:

    • Vô hiệu hóa các công cụ dò quét: Port Knocking sẽ đóng các cổng dịch vụ như SSH port 22, do đó các công cụ rà quét phổ biến như Nmap hay Shodan sẽ không thể phát hiện ra dịch vụ đang chạy.
    • Chặn tấn công Brute-force: Vì cổng kết nối bị đóng, kẻ tấn công không thể thiết lập kết nối TCP để bắt đầu thử tài khoản/mật khẩu. Điều này loại bỏ hoàn toàn nguy cơ từ các cuộc tấn công dò mật khẩu tự động.
    • Bảo vệ trước lỗ hổng phần mềm: Ngay cả khi dịch vụ SSH hoặc dịch vụ khác có lỗ hổng bảo mật chưa được vá, hacker cũng không thể khai thác lỗ hổng đó vì không thể giao tiếp được với tiến trình daemon.
    • Làm sạch Log hệ thống: Do ngăn chặn được các kết nối rác ngay từ tường lửa, file nhật ký xác thực (/var/log/auth.log) sẽ không còn bị spam bởi hàng ngàn dòng thông báo “Failed password” mỗi ngày, giúp quản trị viên dễ dàng theo dõi các truy cập hợp lệ.
    Những lợi ích khi sử dụng Port Knocking
    Những lợi ích khi sử dụng Port Knocking

    Bước 1: Cài đặt knockd

    Đầu tiên, bạn cần cài đặt gói phần mềm knockd từ kho lưu trữ chính thức của Ubuntu. Bạn thực hiện các lệnh sau để cập nhật hệ thống và cài đặt:

    $ sudo apt update
    $ sudo apt install knockd
    $ knockd --version
    Cài đặt knockd
    Cài đặt knockd

    Bước 2: Cấu hình knockd

    1. Cấu hình file /etc/knockd.conf

    Tiếp theo, bạn mở file cấu hình bằng lệnh sau:

    $ sudo nano /etc/knockd.conf

    Bạn hãy chỉnh sửa nội dung file như bên dưới. Cấu hình này định nghĩa 2 hành động đó là openSSH (mở cổng) và closeSSH (đóng cổng).

    [openSSH]
    sequence    = 10005,10006,10007
    seq_timeout = 15
    command     = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags    = syn
    
    [closeSSH]
    sequence    = 10007,10006,10005
    seq_timeout = 15
    command     = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags    = syn
    
    Cấu hình file /etc/knockd.conf
    Cấu hình file /etc/knockd.conf

    Giải thích thông số:

    • sequence: Chuỗi các cổng bạn cần gõ để kích hoạt. (Ví dụ: Gõ lần lượt 10005 -> 10006 -> 10007 để mở). Bạn nên thay đổi các số này để đảm bảo bí mật.
    • seq_timeout: Thời gian tối đa (giây) để hoàn thành chuỗi gõ.
    • command: Lệnh hệ thống sẽ chạy khi gõ đúng. Ở đây bạn dùng iptables để thêm (-I) hoặc xóa (-D) quy tắc cho phép IP của người gõ (%IP%) truy cập port 22.

    Lưu ý

    Trên Ubuntu 22.04, đường dẫn tuyệt đối thường là /usr/sbin/iptables, do đó bạn cần đảm bảo đường dẫn này chính xác để tránh lỗi service không chạy được.

    2. Cấu hình file /etc/default/knockd

    Để knockd hoạt động, bạn cần kích hoạt và chỉ định giao diện mạng sẽ lắng nghe tín hiệu. Đầu tiên bạn mở file cấu hình mặc định:

    $ sudo nano /etc/default/knockd

    Sau đó bạn chỉnh sửa các dòng sau, thay <tên_giao_diện_mạng> bằng tên interface của bạn, ví dụ eth0 hoặc ens33. Bạn có thể dùng lệnh ip a để xem tên này:

    START_KNOCKD=1
    KNOCKD_OPTS="-i <tên_giao_diện_mạng>"
    Cấu hình file /etc/default/knockd
    Cấu hình file /etc/default/knockd

    3. Khởi động dịch vụ

    Sau khi cấu hình xong, hãy khởi động dịch vụ và kiểm tra trạng thái:

    $ sudo systemctl enable knockd
    $ sudo systemctl start knockd
    $ sudo systemctl status knockd
    

    Nếu kết quả trả về Active: active (running) nghĩa là dịch vụ đã hoạt động tốt.

    Khởi động dịch vụ
    Khởi động dịch vụ

    Bước 3: Đóng Port SSH 22 trên UFW

    Để Port Knocking có tác dụng, cổng SSH (22) mặc định phải ở trạng thái đóng. Nếu cổng này đang mở cho tất cả mọi người, việc cài knockd sẽ trở nên vô nghĩa. Bạn kiểm tra trạng thái các quy tắc tường lửa hiện tại bằng lệnh sau:

    $ sudo ufw status numbered

    Lưu ý

    Hãy đảm bảo bạn đã có quy tắc chặn (deny), từ chối (reject) port 22 từ bên ngoài hoặc xóa quy tắc allow 22 hiện có.
    Đóng Port SSH 22 trên UFW
    Đóng Port SSH 22 trên UFW

    Bước 4: Gửi Knock từ máy khách

    Trên máy Client (Ubuntu/Linux), bạn cài đặt knockd bằng lệnh sau:

    $ sudo apt install knockd

    Nếu dùng Windows/macOS, bạn có thể dùng các phần mềm Port Knocking client tương ứng.

    Cài đặt knockd
    Cài đặt knockd

    Để mở cổng SSH, gửi chuỗi 10005, 10006, 10007 như đã cấu hình ở phần [openSSH], bạn thực hiện lệnh sau:

    $ knock -v <IP_Server> 10005 10006 10007
    Bạn mở cổng SSH
    Bạn mở cổng SSH

    Ngay sau khi gõ thành công, cổng 22 sẽ mở riêng cho IP của bạn. Sau đó bạn hãy kết nối và đăng nhập SSH:

    $ ssh user@<IP_Server>
    Bạn hãy kết nối và đăng nhập SSH
    Bạn hãy kết nối và đăng nhập SSH

    Sau khi hoàn tất công việc và đăng xuất khỏi Server, bạn nên đóng cổng lại để đảm bảo an toàn bằng cách gửi chuỗi ngược lại:

    knock -v <IP_Server> 10007 10006 10005
    Bạn nên đóng cổng lại để đảm bảo an toàn
    Bạn nên đóng cổng lại để đảm bảo an toàn

    Bạn có thể kiểm tra lại bằng lệnh ssh, kết nối sẽ bị từ chối hoặc time-out:

    Bạn tiến hành kiểm tra lại bằng lệnh ssh
    Bạn tiến hành kiểm tra lại bằng lệnh ssh

    Những lưu ý khi sử dụng Port Knocking

    Dưới đây là nhưng lưu ý kỹ thuật quan trọng bạn cần quan tâm khi triển khai Port Knocking:

    • Nguy cơ mất quyền truy cập: Nếu dịch vụ knockd ngừng hoạt động đột ngột hoặc cấu hình sai, cổng SSH sẽ bị khóa vĩnh viễn. Do đó bạn bắt buộc phải duy trì phương thức truy cập dự phòng Out-of-Band như VNC Console, KVM hoặc IPMI.
    • Rủi ro tấn công phát lại: Do tín hiệu gõ cửa thường không được mã hóa, kẻ tấn công trong cùng mạng có thể nghe lén chuỗi bí mật và thực hiện lại để mở cổng trái phép.
    • Dễ bị ảnh hưởng với chất lượng mạng: Trong điều kiện mạng có độ trễ cao hoặc mất gói tin, các gói tin trong chuỗi knock có thể đến sai thứ tự quy định, dẫn đến thất bại khi mở cổng.
    • Cản trở quy trình tự động hóa: Kỹ thuật Port Knocking tạo ra rào cản lớn cho các công cụ quản trị cấu hình như Ansible, Terraform hoặc các luồng CI/CD yêu cầu kết nối SSH trực tiếp và ổn định.
    • Không thể thay thế biện pháp bảo mật cốt lõi: Port Knocking là giải pháp che giấu dịch vụ, không phải là cơ chế xác thực nên bạn không dùng Port Knocking để thay thế cho các biện pháp bảo mật cốt lõi như SSH Key.
    Port Knocking không thể thay thế cho các biện pháp bảo mật cốt lõi như SSH Key
    Port Knocking không thể thay thế cho các biện pháp bảo mật cốt lõi như SSH Key (Nguồn: Internet)

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

    Port Knocking có thay thế hoàn toàn các biện pháp bảo mật khác như SSH key, Fail2ban hoặc VPN không?

    Không, Port Knocking chỉ là một lớp ẩn dịch vụ, giúp giảm bề mặt tấn công, chứ không thay thế được xác thực bằng SSH key, giới hạn đăng nhập qua Fail2ban hoặc việc đặt SSH phía sau VPN. Bạn nên dùng Port Knocking kết hợp SSH key và tắt mật khẩu, đặt SSH sau VPN đối với các hệ thống quan trọng.

    Có nên dùng cùng một chuỗi Port Knocking cho nhiều server hay môi trường không?

    Không nên dùng chung vì nếu chuỗi bị lộ ở một môi trường ít quan trọng, kẻ tấn công có thể tái sử dụng nó để tiếp cận môi trường production. Thay vào đó, bạn hãy dùng chuỗi khác nhau cho từng nhóm server, thay đổi định kỳ nếu nghi ngờ lộ thông tin và lưu trữ chuỗi một cách an toàn.

    Nếu kẻ tấn công quét trúng đúng các port trong chuỗi knock một cách ngẫu nhiên thì sao?

    Xác suất quét trúng đầy đủ và đúng thứ tự một chuỗi nhiều cổng là rất thấp, đặc biệt nếu bạn chọn port ngẫu nhiên, không trùng với các port dịch vụ phổ biến. Tuy vậy, để an toàn hơn, bạn có thể dùng chuỗi dài hơn, bật one-time sequence hoặc kết hợp thêm kiểm tra khác như IP, thời gian, hoặc xác thực ở lớp ứng dụng.

    Trên Ubuntu 22.04, Port Knocking là một lớp bảo mật bổ sung hiệu quả, giúp ẩn dịch vụ SSH khỏi các đợt rà quét tự động. Tuy nhiên, để tối ưu hóa an toàn cho hệ thống, bạn nên kết hợp sử dụng SSH key pair và tắt xác thực bằng mật khẩu. Chúc bạn thao tác lệnh thành công và hẹn gặp lại bạn trong các bài viết tiếp theo.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Các lệnh tìm file trong Linux mới tạo hoặc mới chỉnh sửa gần đây
    Các lệnh tìm file trong Linux mới tạo hoặc mới chỉnh sửa gần đây

    Các lệnh tìm file trong Linux sẽ liệt kê các file vừa được tạo hoặc thay đổi từ đầu ngày đến thời điểm hiện tại, thường được ứng dụng cho thao tác kiểm tra hoặc tự động hóa trên Linux. Trong bài viết này, mình sẽ giới thiệu hai phương pháp hiệu quả và phổ…

    16/01/2026

    Enterprise Cloud là gì? Những tính năng và lợi ích khi sử dụng Enterprise Cloud cho doanh nghiệp
    Enterprise Cloud là gì? Những tính năng và lợi ích khi sử dụng Enterprise Cloud cho doanh nghiệp

    Enterprise Cloud là mô hình hạ tầng điện toán đám mây được thiết kế riêng cho doanh nghiệp, kết hợp độ linh hoạt của đám mây công cộng với mức độ kiểm soát, bảo mật và tùy biến giống hạ tầng riêng. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu về khái…

    16/01/2026

    Tổng hợp thông tin về Amazon S3 và những lợi ích khi sử dụng
    Tổng hợp thông tin về Amazon S3 và những lợi ích khi sử dụng

    S3 là dịch vụ lưu trữ đối tượng trên đám mây của Amazon, có tên đầy đủ là Amazon Simple Storage Service (Amazon S3). Dịch vụ này cho phép lưu trữ, truy xuất dữ liệu qua Internet với khả năng mở rộng rất lớn, độ sẵn sàng và bảo mật cao. Trong bài viết này,…

    16/01/2026

    Cách sử dụng lệnh mkdir để quản lý thư mục và tự động hóa hiệu quả
    Cách sử dụng lệnh mkdir để quản lý thư mục và tự động hóa hiệu quả

    Lệnh mkdir là lệnh dùng để tạo thư mục mới trong hệ thống file trên Linux/Unix. Đây là công cụ cơ bản để xây dựng và tổ chức cấu trúc thư mục, đặc biệt quan trọng trong các script cài đặt, deploy và tự động hóa. Trong bài viết này, mình sẽ hướng dẫn cách…

    14/01/2026