Header Ads

Como usar o Knocking de portas no Linux (e por que você não deveria)

Bater à porta é uma maneira de proteger um servidor fechando as portas do firewall — mesmo aquelas que você conhece serão usadas. Essas portas são abertas sob demanda se o — e somente se — a solicitação de conexão fornecer uma batida secreta.

Batida na porta é uma "batida secreta" ”

Na década de 1920, quando a proibição estava em pleno andamento, se você queria entrar em uma conversa, precisava conhecer a batida secreta e tocar nela corretamente para entrar.

Bater à porta é um equivalente moderno. Se você deseja que as pessoas tenham acesso aos serviços no seu computador, mas não deseja abrir o firewall na Internet, pode usar a porta batendo. Permite fechar as portas do firewall que permitem conexões de entrada e abri-las automaticamente quando é feito um padrão previamente combinado de tentativas de conexão.A sequência de tentativas de conexão atua como uma batida secreta. Outra batida secreta fecha a porta.

A batida na porta é uma novidade, mas é importante saber que é um exemplo de segurança através da obscuridade, e esse conceito é fundamentalmente falho.O segredo de como acessar um sistema é seguro, porque somente aqueles de um grupo específico o conhecem. Mas uma vez que esse segredo é revelado, ou porque é revelado, observado, adivinhado ou elaborado, sua segurança é nula.É melhor proteger seu servidor de outras maneiras mais fortes, como exigir logins com base em chaves para um servidor SSH.

As abordagens mais robustas à segurança cibernética são em várias camadas; portanto, talvez seja necessário bater à porta. uma dessas camadas. Quanto mais camadas, melhor, certo?No entanto, você pode argumentar que a batida na porta não adiciona muito (se houver) a um sistema seguro e bem endurecido.

A segurança cibernética é um tópico vasto e complicado, mas você não deve usarporta batendo como sua única forma de defesa.

RELACIONADO: Como criar e instalar chaves SSH a partir do shell Linux

Instalando knockd

Para demonstrar a batida na porta,vamos usá-lo para controlar a porta 22, que é a porta SSH. Usaremos uma ferramenta chamada knockd. Use o apt-get para instalar este pacote no seu sistema se você usar o Ubuntu ou outra distribuição baseada no Debian. Em outras distribuições Linux, use a ferramenta de gerenciamento de pacotes da sua distribuição Linux.

Digite o seguinte:

 sudo apt-get install knockd 

Você provavelmente já possui o firewall iptables instalado no seu sistema, mas pode ser necessário instalar o pacote iptables-persistent. Ele lida com o carregamento automático de regras iptable salvas.

Digite o seguinte para instalá-lo:

 sudo apt-get install iptables-persistent 

Quando a tela de configuração do IPV4 aparecer, pressione a barra de espaço para aceitar o “ Yes ”opção.

Pressione a barra de espaço novamente na tela de configuração do IPv6 para aceitar o “ Yes ”opção e siga em frente.

O comando a seguir diz ao iptables para permitir que conexões estabelecidas e contínuas continuem. Agora, emitiremos outro comando para fechar a porta SSH.

Se alguém estiver conectado pelo SSH quando emitirmos esse comando, não queremos que eles sejam cortados:

 sudo iptables -A INPUT -m conntrack --ctstate ESTABELECIDO, RELACIONADO -j ACEITA 

Este comando adiciona uma regra ao firewall, que diz:

  • -A: anexe a regra à tabela de regras do firewall. Ou seja, adicione-o ao final.
  • INPUT: Esta é uma regra sobre conexões de entrada.
  • -m conntrack: as regras de firewall agem sobre o tráfego de rede (pacotes) que correspondem aos critérios ema regra.O parâmetro -m faz com que o iptables use módulos extras de correspondência de pacotes. Nesse caso, o chamado conntrack funciona com os recursos de rastreamento de conexão de rede do kernel.
  • -j ACEITAR: Se o tráfego corresponder à regra, vá para o destino ACEITAR no firewall. Em outras palavras, o tráfego é aceito e autorizado a passar pelo firewall.

Agora podemos emitir o comando para fechar a porta:

 sudo iptables -A INPUT -p tcp --dport 22 -j REJEITAR 

Este comando adiciona uma regra ao firewall, que diz:

  • -A: Anexe a regra à tabela de regras do firewall, ou seja, adicione-a na parte inferior.
  • ENTRADA: Esta regra é sobre conexões de entrada.
  • -p tcp: Esta regra se aplica ao tráfego que usa o Transmission Control Protocol.
  • & # 8211; dport 22: IssoA regra se aplica especificamente ao tráfego TCP que visa a porta 22 (a porta SSH).
  • -j REJECT: Se o tráfego corresponder à regra, vá para o destino REJECT no firewall. Portanto, se o tráfego for rejeitado, não será permitido pelo firewall.

Precisamos iniciar o daemon persistente do netfilter. Podemos fazer isso com este comando:

 sudo systemctl start netfilter-persistent 

Queremos que o netfilter-persistent passe por um salvamento erecarregar ciclo, para carregar e controlar as regras do iptable.

Digite os seguintes comandos:

 sudo netfilter-persistent save 

 sudo netfilter-persistent recarregar 

Agora você instalou os utilitários e a porta SSH está fechada (felizmente, sem encerrar ninguém) #8217; conexão de s). Agora, é hora de configurar o toque secreto.

Configurando o knockd

Existem dois arquivos que você edita para configurar o knockd.O primeiro é o seguinte arquivo de configuração de bloqueio:

 sudo gedit /etc/knockd. conf[/PREunette

O editor do gedit é aberto com a configuração de bloqueioarquivo carregado.

Editaremos este arquivo para atender às nossas necessidades. As seções nas quais estamos interessados ​​são openSSH ”e “ closeSSH. ”As quatro entradas a seguir estão em cada seção:

  • sequência: a sequência de portas que alguém deve acessar para abrir ou fechar a porta 22. As portas padrão são 7000, 8000 e 9000 para abri-la e9000, 8000 e 7000 para fechá-lo. Você pode alterá-las ou adicionar mais portas à lista. Para nossos propósitos, permaneceremos com os padrões.
  • seq_timeout: o período de tempo em que alguém precisa acessar as portas para acioná-lo para abrir ou fechar.
  • comando: O comando enviado ao firewall do iptables quando a ação de abrir ou fechar é acionada. Esses comandos adicionam uma regra ao firewall (para abrir a porta) ou retiram-na (para fechar a porta).
  • tcpflags: o tipo de pacote que cada porta deve receber na sequência secreta. Um pacote SYN (sincronização) é o primeiro de uma solicitação de conexão TCP, chamada handshake de três vias.

O “ openSSH ”A seção pode ser lida como "uma solicitação de conexão TCP deve ser feita nas portas 7000, 8000 e 9000" nessa ordem e em 5 segundos para que o comando para abrir a porta 22 seja enviado ao firewall. ”

O “ closeSSH ”A seção pode ser lida como "uma solicitação de conexão TCP deve ser feita nas portas 9000, 8000 e 7000" nessa ordem e em 5 segundos para que o comando fechar a porta 22 seja enviado ao firewall. ”

As regras do firewall

O “ comando ”as entradas nas seções openSSH e closeSSH permanecem as mesmas, exceto por um parâmetro.É assim que eles são compostos:

  • -A: Anexe a regra ao final da lista de regras de firewall (para o comando openSSH).
  • -D: Exclua o comando da lista de regras de firewall (para o comando closeSSH).
  • ENTRADA: Esta regra está relacionada ao tráfego de rede recebido.
  • -s% IP%: o endereço IPdo dispositivo que está solicitando uma conexão.
  • -p: Protocolo de rede;nesse caso, é o TCP.
  • & # 8211; dport: A porta de destino;em nosso exemplo, é a porta 22.
  • -j ACEITAR: Pule para o destino de aceitação no firewall. Em outras palavras, deixe o pacote passar pelo restante das regras sem agir de acordo.

O arquivo de configuração inicial edita

As edições que faremospara o arquivo são destacados em vermelho abaixo:

Estendemos o “ seq_timeout ”a 15 segundos. Isso é generoso, mas se alguém disparar manualmente em solicitações de conexão, ele poderá precisar de muito tempo.

No “ openSSH ”Na seção, alteramos a opção -A (acrescentar) no comando para -I (inserir). Este comando insere uma nova regra de firewall no topo da lista de regras de firewall. Se você deixar a opção -A, ela anexa a lista de regras do firewall e a coloca na parte inferior.

O tráfego de entrada é testado em cada regra de firewall da lista, de cima para baixo.Já temos uma regra que fecha a porta 22. Portanto, se o tráfego de entrada for testado com relação a essa regra antes de ver a regra que permite o tráfego, a conexão será recusada;se vir essa nova regra primeiro, a conexão será permitida.

O comando close remove a regra adicionada pelo openSSH das regras do firewall.O tráfego SSH é mais uma vez tratado pela porta 22 pré-existente está fechada ”regra.

Depois de fazer essas edições, salve o arquivo de configuração.

RELACIONADO: Como editar arquivos de texto graficamente no Linux com o gedit

O arquivo de controle imbecilEdições

O arquivo de controle descartável é totalmente mais simples. Antes de mergulharmos e editarmos isso, precisamos saber o nome interno da nossa conexão de rede;para encontrá-lo, digite este comando:

 endereço IP 

A conexão que esta máquina usa para pesquisar este artigo é chamada enp0s3. Anote o nome da sua conexão.

O comando a seguir edita o arquivo de controle knockd:

 sudo gedit / etc / default / knockd 

Aqui está o arquivo final do gedit.

As poucas edições que precisamos fazer são destacadas em vermelho:

Alteramos o “ START_KNOCKD = ”entrada de 0 a 1.

Também removemos o hash # do início do “ KNOCKD_OPTS = ”entrada e substituiu “ eth1 ”com o nome da nossa conexão de rede, enp0s3. Obviamente, se sua conexão de rede for eth1, você não a alterará.

A prova está no pudim

Está na hora de ver se isso funciona. Vamos iniciar o daemon knockd com este comando:

 sudo systemctrl start knockd 

Agora, vamos pularem outra máquina e tente conectar-se. Também instalamos a ferramenta knockd no computador, não porque queremos configurar a porta batendo, mas porque o pacote knockd fornece outra ferramenta chamada knock. Usaremos esta máquina para disparar em nossa sequência secreta e fazer a batida por nós.

Use o comando a seguir para enviar sua sequência secreta de solicitações de conexão para as portas no computador host como endereço IP 192.168.4.24:

 bate em 192.168.4.24 7000 8000 9000 -d 500 

Isso indica ao bater para direcionar o computador ao endereço IP 192.168.4.24 e disparar umsolicitação de conexão às portas 7000, 8000 e 9000, por sua vez, com um -d (atraso) de 500 milissegundos entre elas.

Um usuário chamado “ dave ”em seguida, faz uma solicitação SSH para 192.168.4.24:

 ssh dave@192.168.4.24 

Sua conexão é aceita, ele digita sua senha e a sessão remota é iniciada. Seu prompt de comando muda de dave @ nostromo para dave @ howtogeek. Para sair do computador remoto, ele digita:

 exit 

O prompt de comando retorna ao computador local. Ele usa knock mais uma vez e, desta vez, direciona as portas na ordem inversa para fechar a porta SSH no computador remoto.

 knock 192.168.4.24 9000 8000 7000 -d 500 

É verdade que esta não foi uma sessão remota particularmente proveitosa, mas demonstra a abertura e o fechamento da porta via porta batendo e se encaixa em uma única captura de tela.

Então, como isso foi do outro lado?O administrador do sistema no host batendo na porta usa o seguinte comando para exibir novas entradas que chegam no log do sistema:

 tail -f / var / log / syslog 

  • Você vê três entradas do openSSH. Eles são aumentados à medida que cada porta é direcionada pelo utilitário de batida remota.
  • Quando todos os três estágios da sequência de gatilhos são atingidos, uma entrada que diz "OPEN SESAME", ”está registrado
  • O comando para inserir a regra na lista de regras do iptables é enviado. Permite o acesso via SSH na porta 22 a partir do endereço IP específico do PC que deu a batida secreta correta (192.168.4.23).
  • O usuário “ dave ”conecta apenas por alguns segundos e, em seguida, desconecta.
  • Você vê três entradas closeSSH. Eles são aumentados à medida que cada porta é direcionada pelo utilitário de batida remota - ele informa ao host de batida da porta para fechar a porta 22.
  • Depois que os três estágios são acionados, obtemos o “ OPEN SESAME ”mensagem novamente.O comando é enviado ao firewall para remover a regra.(Por que não "CLOSE SESAME" quando fecha a porta? Quem sabe?)

Agora, a única regra na lista de regras do iptables referente à porta 22 é a que digitamos no início para fechar essa porta. Portanto, a porta 22 agora está fechada novamente.

Bata na cabeça

Essa é a porta que está batendo no truque da sala de estar. Trate-o como uma diversão e não faça isso no mundo real. Ou, se necessário, não confie nele como sua única forma de segurança.

Via: How to Geek

Veja Também:

Nenhum comentário