Chuyển đến nội dung
Secret Knock

Ẩn SSH sau port knocking

Một cổng SSH mở sẽ nhận các lượt thử đăng nhập từ khắp internet. Port knocking giữ cổng đóng cho đến khi bạn chứng minh mình biết một bí mật — rồi chỉ mở cổng cho địa chỉ của bạn trong vài giây.

Với knockd và nftables

Theo mặc định, chặn SSH và chỉ chấp nhận từ các địa chỉ trong một tập hợp có thời hạn. knockd thêm địa chỉ đang gõ vào tập hợp đó; nftables xóa địa chỉ khi hết thời hạn, trong khi phiên SSH đã được thiết lập vẫn tiếp tục hoạt động.

table inet filter {
    set knocked4 {
        type ipv4_addr
        flags timeout
    }
    chain input {
        type filter hook input priority 0; policy drop;
        ct state established,related accept
        iif "lo" accept
        tcp dport 22 ip saddr @knocked4 accept
    }
}
/etc/nftables.conf (trích đoạn)

Phần knockd điền vào tập hợp:

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s }
/etc/knockd.conf

Tách riêng quyền truy cập vĩnh viễn

Nếu bạn cũng cho phép một số địa chỉ vĩnh viễn, hãy giữ chúng trong một tập hợp riêng không có thời hạn. Việc thêm một địa chỉ đã nằm trong tập hợp có thời hạn sẽ không đặt lại thời hạn đó, vì vậy việc trộn cả hai loại mục trong cùng một tập hợp có thể khiến bạn bị khóa truy cập khi bộ hẹn giờ kết thúc.

Hoặc dùng fwknop

fwknop SPA mạnh hơn một chuỗi: một gói được mã hóa, xác thực và không thể phát lại. Xem hướng dẫn fwknop.

Từ iPhone đến SSH

  1. 1Nhấn giữ bộ gõ cửa bằng đồng thau. Secret Knock kiểm tra xem cổng 22 có phản hồi hay không và hiển thị thời gian cổng còn mở.
  2. 2Mở SSH sẽ mở ứng dụng SSH của bạn bằng liên kết ssh:// dành cho máy chủ.
  3. 3Tùy chọn “Giữ cửa mở khi trang của cửa đang hiển thị” sẽ gõ lại ngay trước khi khoảng thời gian mở kết thúc, trong lúc cửa đang hiển thị trên màn hình.

Tất cả ví dụ trên GitHub → Mọi cấu hình trên trang này, sẵn sàng để sao chép: github.com/mobilcomm/secretknock-examples (phạm vi công cộng).

Câu hỏi

Đây có phải là giải pháp thay thế cho khóa SSH không?

Không. Port knocking ẩn dịch vụ; bạn vẫn nên dùng khóa SSH mạnh và cũng tắt đăng nhập bằng mật khẩu.

Hướng dẫn cho thiết lập của bạn