Перейти к содержимому
Secret Knock

Скрыть SSH за порт-нокингом

Открытый порт SSH собирает попытки входа со всего интернета. Порт-нокинг держит порт закрытым, пока вы не докажете, что знаете секрет, — затем открывает его только для вашего адреса и всего на несколько секунд.

С knockd и nftables

По умолчанию отклоняйте SSH и принимайте его только с адресов из набора с тайм-аутом. knockd добавляет стучащийся адрес в этот набор; nftables удаляет его по истечении тайм-аута, а уже установленное SSH-соединение продолжает работать.

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 (фрагмент)

Раздел knockd, который заполняет набор:

[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

Отделите постоянный доступ

Если вы также постоянно разрешаете доступ с некоторых адресов, храните их в отдельном наборе без тайм-аута. Добавление адреса, уже находящегося в наборе с тайм-аутом, не сбрасывает его тайм-аут, поэтому смешивание обоих типов записей в одном наборе может лишить вас доступа по истечении таймера.

Или используйте fwknop

SPA fwknop надёжнее последовательности: это один зашифрованный и аутентифицированный пакет, который нельзя воспроизвести повторно. См. руководство по fwknop.

С iPhone к SSH

  1. 1Удерживайте латунный дверной молоток. Secret Knock проверяет, что порт 22 отвечает, и показывает, как долго он остаётся открытым.
  2. 2«Открыть SSH» открывает ваше SSH-приложение со ссылкой ssh:// для сервера.
  3. 3«Держать дверь открытой, пока отображается её экран» автоматически повторяет стук незадолго до окончания окна доступа, пока дверь отображается на экране.

Все примеры на GitHub → Все конфигурации с этой страницы, готовые к копированию: github.com/mobilcomm/secretknock-examples (общественное достояние).

Вопросы

Это замена ключам SSH?

Нет. Порт-нокинг скрывает службу; также используйте надёжные ключи SSH и отключите вход по паролю.

Руководства по настройке