Port Knocking

Em redes de computadores, o port knocking é um método para abrir portas externamente em um firewall, gerando uma tentativa de conexão em um conjunto de portas fechadas predefinidas. Assim que uma sequência correta de tentativas de conexão é recebida, as regras do firewall são modificadas dinamicamente para permitir que o host que enviou as tentativas de conexão se conecte por meio de portas específicas.

Instalando o knockd

No linux, para utilizar o port knocking, você pode utilizar a ferramenta knockd:

sudo pacman -S knockd

Utilizando

Vamos supor que você tem um VPS rodando um Ubuntu Server na nuvem e quer retringir o acesso do servidor apenas à máquinas conectadas a uma determinada VPN que também está configurada no servidor, se por um acaso você precise fazer um acesso de emergência ao servidor para alguma eventual manutenção, como o faria se o aceso é bloqueado pelo firewall a outros endereços IP. Você poderia utilizar o port knocking.

Primeiro, você precisa configurar seu firewall para ouvir as portas que serão utilizadas para o port knocking:

sudo ufw allow 7000/tcp
sudo ufw allow 8000/tcp
sudo ufw allow 9000/tcp

Em seguida, você precisa configurar o knockd para ouvir as portas e executar um comando para abrir a porta de acesso ao servidor:

[options]
    UseSyslog
[openSSH]
    sequence    = 7000,8000,9000
    seq_timeout = 5
    command     = ufw allow from %IP% to any port 22
    tcpflags    = syn

Com isso, quando você fizer uma tentativa de conexão para as portas 7000, 8000 e 9000 na sequência correta, o knockd irá executar o comando para abrir a porta 22 para o endereço IP que fez as tentativas de conexão. Para fazer as tentativas de conexão, você pode utilizar o comando knock:

knock <IP_DO_SERVIDOR> 7000 8000 9000

Após isso, você poderá acessar o servidor via SSH normalmente, e o acesso será permitido apenas para o endereço IP que fez as tentativas de conexão.

Você pode usar esta técnica para proteger outros serviços além do SSH, e também em outros tipos de dispositivos de rede além de servidores, como roteadores e firewalls.