Pular para o conteúdo
Secret Knock

exemplos de knockd.conf

O knockd lê /etc/knockd.conf: uma seção [options] e uma seção para cada porta. Cada seção tem uma sequência, um limite de tempo e o comando a executar para o endereço que está batendo, %IP%. Escolha suas próprias portas — nunca reutilize as dos exemplos.

Abra SSH por alguns segundos

A configuração mais comum: uma batida abre SSH, e o knockd o fecha novamente após cmd_timeout. As sessões que você já abriu continuam funcionando se o firewall aceitar conexões estabelecidas.

[options]
    UseSyslog

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    cmd_timeout   = 10
    stop_command  = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf

Sequências separadas para abrir e fechar

Sem um temporizador, a porta permanece aberta até você bater a sequência de fechamento. É prático, mas fácil de esquecer — prefira a versão temporizada.

[options]
    UseSyslog

[openSSH]
    sequence    = 7311:tcp,8822:tcp,9133:udp
    seq_timeout = 10
    tcpflags    = syn
    command     = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

[closeSSH]
    sequence    = 9133:udp,8822:tcp,7311:tcp
    seq_timeout = 10
    tcpflags    = syn
    command     = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf

Sequências de uso único

Em vez de uma sequência fixa, o knockd pode ler um arquivo de sequências e aceitar cada uma apenas uma vez, para que uma batida gravada não possa ser repetida. O Secret Knock mantém a mesma lista e avança para a próxima sequência após uma batida que abriu a porta.

[openSSH]
    one_time_sequences = /etc/knockd/ssh_sequences
    seq_timeout        = 10
    tcpflags           = syn
    start_command      = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    cmd_timeout        = 10
    stop_command       = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

# /etc/knockd/ssh_sequences — one sequence per line, each used once
2222:udp,3333:tcp,4444:udp
5555:tcp,6666:udp,7777:tcp
8888:udp,9999:tcp,1111:tcp
/etc/knockd.conf e o arquivo de sequências

Com nftables

Em sistemas com nftables, deixe o knockd adicionar o endereço a um conjunto com tempo limite; o guia para ocultar SSH mostra a tabela nftables correspondente.

[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

Após editar

  1. 1No Debian e no Ubuntu, defina a interface em que o knockd escuta em /etc/default/knockd (KNOCKD_OPTS="-i eth0") e reinicie o knockd.
  2. 2Acompanhe o funcionamento com journalctl -u knockd -f enquanto você bate.
  3. 3No Secret Knock, + › Importar de arquivo transforma cada seção com uma sequência em uma porta; insira listas de sequências de uso único manualmente.

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

Devo usar etapas TCP ou UDP?

Ambas funcionam. Misturar as duas torna uma sequência mais difícil de adivinhar a partir de uma varredura de portas. As etapas UDP podem incluir uma carga útil no Secret Knock se a sua configuração a verificar.

Guias para sua configuração