Introdução
Além de alterar a porta padrão para SSH e usar um par de chaves para autenticação, a batida na porta pode ser usada para proteger ainda mais (ou mais precisamente, ocultar) o servidor SSH. Funciona recusando conexões à sua porta de rede SSH. Isso oculta essencialmente o fato de você estar executando um servidor SSH até que uma sequência de tentativas de conexão seja feita em portas predefinidas. Muito seguro e simples de implementar, o bater à porta é uma das melhores maneiras de proteger seu servidor contra tentativas maliciosas de conexão SSH.
Pré-requisitos
	- Um servidor Vultr executando o Ubuntu 18.04.
- Acesso Sudo.
Antes de seguir as etapas abaixo, se você não estiver logado como usuário root, obtenha um shell raiz temporário executando sudo -ie digitando sua senha. Como alternativa, você pode anexar sudoos comandos mostrados neste artigo.
Etapa 1: instalação do Knockd
Knockd é o pacote usado em combinação com o iptables para implementar a batida de porta no seu servidor. O iptables-persistentpacote ' ' também é necessário.
apt update
apt install -y knockd iptables-persistent
Etapa 2: regras do iptables
Execute os seguintes comandos em ordem:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
iptables-save > /etc/iptables/rules.v4
Esses comandos farão o seguinte, respectivamente:
	- Instrua o iptables para manter as conexões existentes ativas.
- Instrua o iptables a descartar qualquer conexão com a porta tcp / 22 (se o seu daemon SSH estiver escutando em uma porta diferente de 22, você deve modificar o comando acima de acordo.)
- Salve essas duas regras para que elas persistam após uma reinicialização.
Etapa 3: configuração do Knockd
Usando um editor de texto de sua escolha, abra o arquivo /etc/knockd.conf.
Você verá o seguinte:
[openSSH]
sequence    = 7000,8000,9000
seq_timeout = 5
command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags    = syn
Você deve alterar a sequência de portas (escolha os números de porta acima 1024e não utilizados por outros serviços) e armazene-os com segurança. Essa combinação deve ser tratada como uma senha. Se esquecido, você perderá o acesso ao SSH. Vamos nos referir a essa nova sequência como x,y,z.
a seq-timeoutlinha é o número de segundos que o Knockd aguardará pelo cliente para concluir a sequência de batidas na porta. Seria uma boa idéia mudar isso para algo maior, especialmente se a batida na porta for feita manualmente. No entanto, um valor menor de tempo limite é mais seguro. 15É recomendável alterá-lo para, pois estaremos batendo manualmente neste tutorial.
Mude a sequência de abertura para as portas escolhidas:
[openSSH]
sequence    = x,y,z
Altere o valor do comando para o seguinte:
command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Agora altere a sequência de fechamento de acordo:
[closeSSH]
sequence    = z,y,x
Salve suas alterações e saia e abra o arquivo /etc/default/knockd:
	- Substitua START_KNOCKD=0porSTART_KNOCKD=1.
- Adicione a seguinte linha ao final do arquivo: KNOCKD_OPTS="-i ens3"(substituaens3pelo nome da sua interface de rede pública, se for diferente.)
- Salvar e sair.
Agora inicie o Knockd:
systemctl start knockd
Se você agora desconectar de seu servidor, você vai ter que bater em portas x, ye zse conectar novamente.
Etapa 4: Teste
Agora você não poderá se conectar ao seu servidor SSH.
Você pode testar a porta batendo com um cliente de telnet.
Os usuários do Windows podem iniciar o telnet no prompt de comando. Se o telnet não estiver instalado, acesse a seção "Programas" do Painel de controle e localize "Ativar ou desativar os recursos do Windows". No painel de recursos, localize "Telnet Client" e ative-o.
No seu terminal / prompt de comando, digite o seguinte:
telnet youripaddress x
telnet youripaddress y
telnet youripaddress z
Faça tudo isso em quinze segundos, pois esse é o limite imposto na configuração. Agora, tente se conectar ao seu servidor via SSH. Será acessível.
Para fechar o acesso ao servidor SSH, execute os comandos na ordem inversa.
telnet youripaddress z
telnet youripaddress y
telnet youripaddress z
Conclusão
A melhor parte sobre o uso de batimento de porta é que, se ele estiver configurado juntamente com a autenticação de chave privada, não haverá praticamente nenhuma chance de que alguém possa entrar, a menos que alguém conheça sua sequência de batimento de porta e tenha sua chave privada.