Pular para o conteúdo
Secret Knock

Configure um servidor fwknop

A Autorização de Pacote Único do fwknop mantém SSH fechado até que um pacote UDP criptografado e autenticado chegue. Estas etapas fazem a configuração em um servidor Debian ou Ubuntu; primeiro, teste a partir de um computador e, depois, adicione as mesmas chaves ao Secret Knock.

1. Instale e gere chaves

Instale o servidor e o cliente e, em seguida, gere um par de chaves. Guarde a saída: as mesmas duas chaves são inseridas no access.conf e no Secret Knock.

sudo apt install fwknop-server fwknop-client
fwknop --key-gen          # prints KEY_BASE64 and HMAC_KEY_BASE64
Debian / Ubuntu

2. Permita SSH para pacotes SPA

O access.conf define o que um pacote válido pode abrir e por quanto tempo.

SOURCE              ANY
OPEN_PORTS          tcp/22
KEY_BASE64          <output of fwknop --key-gen>
HMAC_KEY_BASE64     <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT   30
/etc/fwknop/access.conf

3. Informe ao fwknopd onde escutar

O fwknopd captura pacotes em uma interface; ele não precisa de uma porta aberta. Defina a interface usada pelo servidor.

# /etc/fwknop/fwknopd.conf
PCAP_INTF               eth0;
PCAP_FILTER             udp port 62201;
MAX_SPA_PACKET_AGE      120;
/etc/fwknop/fwknopd.conf

4. Feche SSH por padrão

Mantenha uma sessão SSH aberta enquanto faz isso e teste em uma segunda conexão antes de encerrar a sessão. O fwknopd insere sua própria cadeia no topo de INPUT e adiciona nela um ACCEPT temporizado para cada pacote válido.

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
iptables

5. Teste e adicione a porta

Reinicie o fwknop-server, envie um pacote de outra máquina e conecte-se:

# from another machine: request SSH for the address the server sees (-R)
fwknop -A tcp/22 -R -D server.example.com \
    --key-base64-rijndael "<KEY_BASE64>" --key-base64-hmac "<HMAC_KEY_BASE64>"
ssh [email protected]
De um computador com fwknop-client
  1. 1No Secret Knock: Nova porta › Começar com um modelo › fwknop, insira o host e cole a saída de fwknop --key-gen usando Colar chaves.
  2. 2Bata; a porta mostra Porta entreaberta quando a porta 22 responde.
  3. 3Execute fwknopd -f -v no servidor caso isso não aconteça — o guia de solução de problemas lista as causas mais comuns.

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

O fwknopd precisa de uma porta aberta?

Não. Ele lê pacotes da interface de rede, portanto a porta SPA pode permanecer fechada no firewall; o pacote só precisa chegar ao servidor.

Guias para sua configuração