Pesquisa de site

Como usar o Port Knocking para proteger o serviço SSH no Linux


Port Knocking é uma técnica bacana de controlar o acesso a uma porta, permitindo apenas que usuários legítimos acessem o serviço em execução em um servidor. Funciona de forma que quando é feita a sequência correta de tentativas de conexão, o firewall abre com prazer a porta que foi fechada.

A lógica por trás da batida de porta é proteger seu sistema Linux de scanners de porta automatizados que procuram portas abertas. Neste guia, examinamos como você pode instalar o port knocking e como configurá-lo para proteger o serviço SSH. Para fins de demonstração, usaremos o Ubuntu 18.04.

Etapa 1: instalar e configurar o knockd

Para começar, faça login em seu sistema Linux e instale o daemon knockd conforme mostrado.

sudo apt install knockd

Depois de instalado, abra a configuração do knockd.conf com seu editor de texto preferido. Aqui, estamos usando o editor de texto de linha de comando vim.

sudo vim /etc/knockd.conf

O arquivo de configuração padrão aparece da seguinte forma.

Na seção [openSSH], precisamos alterar a sequência de batidas padrão – 7000,8000,9000 – para outra coisa. Isso porque esses valores já são conhecidos e podem comprometer a segurança do seu sistema.

Para fins de teste, definimos os valores como 10005, 10006, 10007. Esta é a sequência que será usada para abrir a porta SSH de um sistema cliente.

Na terceira linha – começando com command, altere -A para -I logo após /sbin/iptables comando e antes de INPUT.

E por último, na seção [closeSSH], novamente, altere a sequência padrão para sua escolha preferida. Esta é a sequência que será usada para fechar a conexão SSH assim que o usuário terminar e sair do servidor.

Aqui está nossa configuração completa.

Quando terminar, salve as alterações e saia.

Outra configuração que precisamos modificar é a /etc/default/knockd. Mais uma vez, abra-o usando seu editor de texto.

sudo vim /etc/default/knockd

Localize a linha START_KNOCKD=0. Remova o comentário e defina o valor como 1.

Em seguida, vá para a linha KNOCKD_OPTS= ”-i eth1 ” Remova o comentário e substitua o valor padrão eth1 pela interface de rede ativa do seu sistema. Para verificar sua interface de rede, basta executar o comando ip addr ou ifconfig.

Para nosso sistema, enp0s3 é a placa de rede ativa.

A configuração completa é conforme mostrado.

Salve as alterações e saia.

Em seguida, inicie e ative o daemon knockd conforme mostrado.

sudo systemctl start knockd
sudo systemctl enable knockd

Para verificar o status do daemon knockd, execute o comando:

sudo systemctl status knockd

Etapa 2: feche a porta SSH 22 no firewall

Como o objetivo do serviço knockd é conceder ou negar acesso ao serviço ssh, fecharemos a porta ssh no firewall. Mas primeiro, vamos verificar o status do firewall UFW.

sudo ufw status numbered

A partir da saída, podemos ver claramente que a porta SSH 22 está aberta nos protocolos IPv4 e IPv6 numerados 5 e 9 respectivamente.

Precisamos deletar essas duas regras conforme mostrado, começando pelo valor mais alto – que é 9.

sudo ufw delete 9
sudo ufw delete 5

Agora, se você tentar fazer login remotamente no servidor, receberá um erro de tempo limite de conexão, conforme mostrado.

Etapa 3: configurar um cliente knock para conectar-se ao servidor SSH

Na etapa final, configuraremos um cliente e tentaremos fazer o login enviando primeiro a sequência de knock que configuramos no servidor.

Mas primeiro, instale o daemon knockd exatamente como você fez no servidor.

sudo apt install knockd

Assim que a instalação for concluída, envie a sequência de batida usando a sintaxe mostrada

knock -v server_ip knock_sequence

No nosso caso, isso se traduz em:

knock -v 192.168.2.105 10005 10006 10007

Você deve obter uma saída semelhante à que temos, dependendo da sua sequência. Isso mostra que as tentativas de batida foram bem-sucedidas.

Neste ponto, você deve estar em condições de fazer login com êxito no servidor usando SSH.

Quando terminar de fazer seu trabalho no servidor remoto, feche a porta SSH enviando a sequência de fechamento.

knock -v 192.168.2.105 10007 10006 10005

Qualquer tentativa de login no servidor falhará conforme demonstrado.

Considerações finais

Isso conclui este guia sobre como aproveitar a batida de porta para proteger o serviço SSH em seu servidor. Uma abordagem melhor e mais fácil seria configurar a autenticação SSH por senha usando pares de chaves SSH. Isso garante que apenas o usuário com a chave privada possa se autenticar no servidor no qual a chave pública está armazenada.