![Red Hat Developer Hub: um IDP pronto para empresas](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706052423_Red-Hat-Developer-Hub-um-IDP-pronto-para-empresas-150x150.jpg)
Red Hat Developer Hub: um IDP pronto para empresas
23 de janeiro de 2024![ScaleOps dimensiona contêineres dinamicamente corretamente em tempo de execução](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706052560_ScaleOps-dimensiona-conteineres-dinamicamente-corretamente-em-tempo-de-execucao-150x150.png)
ScaleOps dimensiona contêineres dinamicamente corretamente em tempo de execução
23 de janeiro de 2024Você provavelmente já leu as coisas comuns que os administradores fazem com o Secure Shell (SSH), como alterar a porta, impedir logins root, usar fail2ban, usar autenticação de chave SSH, etc. Mas há outra técnica que você pode empregar e que faz um ótimo trabalho ao proteger seus servidores contra logins SSH indesejados.
Essa técnica é chamada de port knocking e pode ser habilitada com a ajuda do knockd, um servidor Linux port-knock. Isso funciona fechando todas as portas e abrindo-as apenas “sob demanda”, de acordo com uma sequência pré-determinada de pings. Embora você não use a batida de porta para cada servidor ou implantação (e não dependa apenas disso), é uma maneira muito nova de adicionar segurança ao SSH.
É claro que, junto com a batida de porta, você deve sempre manter o SSH atualizado, garantir seu /etc/ssh/sshd_config O arquivo está configurado com as práticas recomendadas e considere empregar a autenticação de chave SSH.
Mas se você quiser adicionar essa camada extra ao sistema, continue lendo e mostrarei como isso é feito.
O que você precisará
As únicas coisas que você precisa para isso são uma instância em execução do Ubuntu Server (de preferência uma versão recente), uma segunda máquina Ubuntu (que pode ser a versão servidor ou desktop) para servir como cliente, um usuário com sudo privilégios e uma conexão de rede. É isso. Vamos bater.
Instalando o knockd
Você precisará instalar o knockd no servidor e no cliente. Faça login em seu servidor e instale o software com o comando:
sudo apt-get install knockd -y
Quando a instalação for concluída, faça login na máquina cliente e execute o mesmo comando.
Acredite ou não, a instalação é tudo. Você vai querer ter certeza de que o serviço knockd está sendo executado com o comando:
systemctl status knockd
Você provavelmente descobrirá que o serviço não está em execução e não conseguirá executá-lo imediatamente. Por que? Porque o padrão do knockd é a convenção de nomenclatura de dispositivos de rede tradicional. Temos que alterar o arquivo de configuração para se adequar ao esquema de nomenclatura de dispositivos mais recente. Abra a configuração padrão com:
sudo nano /etc/default/knockd
Na parte inferior do arquivo você verá a linha:
#KNOCKD_OPTS="-i eth1"
Localize o nome do seu dispositivo de rede com o comando:
ip -a
Pode ser algo como enp0s3. Se for esse o caso, você alteraria a linha para:
KNOCKD_OPTS="-i enp0s3"
Salve e feche o arquivo.
Agora você pode iniciar e ativar o serviço com:
sudo systemctl enable --now knockd
Configurar o knockd
O serviço knockd está configurado no arquivo /etc/knockd.conf. Abra-o para edição com o comando:
sudo nano /etc/knockd.conf
Na seção (openSSH), a primeira linha é:
sequence = 7000, 8000, 9000
Essa é uma sequência de batida de porta e você pode alterá-la para o que quiser. Por exemplo, você pode reverter com:
sequence = 9000, 8000, 7000
Vá para a linha de comando (que fica duas linhas abaixo da linha de sequência) e altere -A para -I, o que garante que será a primeira linha na nova cadeia iptables.
Salve e feche o arquivo.
Reinicie batido com:
sudo systemctl restart knockd
Fechar uma porta
A seguir, fecharemos a porta 22, para que o tráfego de entrada não consiga contornar o sistema bloqueado. Faremos com que o UFW liste nossas regras em uma sequência numerada, para que sejam mais fáceis de excluir. Emita o comando:
sudo ufw status numbered
Se você tiver uma regra SSH que permita tráfego de entrada para a porta 22, ela aparecerá e terá um número associado. Digamos que a regra seja a número 1. Para excluir essa regra, emita o comando:
sudo ufw delete 1
Se você tiver mais de uma regra referente ao SSH, exclua todas elas.
Usando knockd
Agora fica divertido. Volte para sua máquina cliente, onde você enviará a sequência de batida configurada no arquivo knockd.conf. Portanto, se você configurou uma sequência de batidas de 8.000, 7.000, 9.000, você emitiria o comando open:
knock -v SERVER 8000 7000 9000
Onde SERVER é o endereço IP do servidor no qual você deseja fazer login. A saída do comando acima deve ser semelhante a esta:
hitting tcp 192.168.1.100:8000 hitting tcp 192.168.1.100:7000 hitting tcp 192.168.1.100:9000
Obviamente, o endereço IP na saída acima refletirá o endereço do seu servidor de destino. Depois que a sequência de abertura for concluída, você poderá fazer o SSH nesse servidor como faria normalmente.
Depois de ter certeza de que funciona, saia do servidor (com o comando exit). Depois de sair do servidor remoto, você deve enviar a sequência de batidas de fechamento, o que é feito invertendo a ordem da sequência de batidas de abertura. Então, se sua sequência de batidas for 8.000 7.000 9.000, a sequência de fechamento será 9.000 7.000 8.000. Você fecharia com:
knock -v SERVER 9000 7000 8000
Onde SERVER é o endereço IP do servidor remoto.
Depois que a sequência de fechamento for bem-sucedida, você não poderá fazer o SSH de volta ao servidor até enviar a sequência de abertura.
Parabéns, você acabou de bloquear o SSH com a ajuda do knockd. Como eu disse, este sistema não será ideal para todas as aplicações, mas certamente pode ser útil para determinados casos de uso. Experimente e veja se não funciona para ajudar a proteger algumas de suas implantações.
A postagem Port Knocking Ubuntu Servers (ou Containers) para SSH mais seguro apareceu pela primeira vez em The New Stack.