Pular para o conteúdo
Secret Knock

Oculte o SSH com port knocking

Uma porta SSH aberta recebe tentativas de login de toda a internet. O port knocking mantém a porta fechada até que você prove conhecer um segredo — então a abre apenas para o seu endereço, por alguns segundos.

Com knockd e nftables

Bloqueie o SSH por padrão e aceite-o apenas de endereços em um conjunto com tempo limite. knockd adiciona o endereço que fez a batida a esse conjunto; nftables o remove quando o tempo limite expira, e a sessão SSH estabelecida continua funcionando.

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 (trecho)

A seção do knockd que preenche o conjunto:

[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

Mantenha o acesso permanente separado

Se você também permitir permanentemente alguns endereços, mantenha-os em um conjunto separado, sem tempo limite. Adicionar um endereço que já está em um conjunto temporizado não reinicia seu tempo limite; portanto, misturar os dois tipos de entrada em um único conjunto pode bloquear seu acesso quando o tempo expirar.

Ou use fwknop

O SPA do fwknop é mais forte do que uma sequência: um pacote criptografado e autenticado que não pode ser reutilizado. Consulte o guia do fwknop.

Do iPhone ao SSH

  1. 1Mantenha pressionada a aldrava de latão. Secret Knock verifica se a porta 22 responde e mostra por quanto tempo ela permanece aberta.
  2. 2Abrir SSH abre seu app SSH com um link ssh:// para o servidor.
  3. 3A opção “Manter a porta aberta enquanto a tela da porta estiver visível” envia outra batida pouco antes de a janela terminar, enquanto a porta está na tela.

Todos os exemplos no GitHub → Todas as configurações desta página, prontas para copiar: github.com/mobilcomm/secretknock-examples (domínio público).

Perguntas

Isso substitui as chaves SSH?

Não. O port knocking oculta o serviço; use também chaves SSH fortes e desative os logins por senha.

Guias para sua configuração