Knockd (bate, bate, bate na porta do céu)

Knockd é um servidor port-knock. Ele escuta todo o tráfego em uma interface Ethernet (ou PPP), procurando por "batidas" sequências de requisições. Um cliente faz requisições para o servidor enviando um pacote TCP (ou UDP) para uma porta no servidor.

[ Hits: 9.920 ]

Por: Bruno Viana em 08/05/2017 | Blog: https://myshell.blog


Configurações iniciais



Esta porta não precisa estar aberta, já que knockd escuta o nível da camada de link. Ele vê todo o tráfego, mesmo que seja destinado a uma porta fechada. Quando o servidor detecta uma sequência específica de tentativas de acesso à porta, ele executa um comando definido em seu arquivo de configuração. Isso pode ser usado para abrir furos em um Firewall para acesso rápido.

Em resumo, você envia uma sequência de requisições TCP/UDP e essa combinação aciona um comando predeterminado.

Mais informações, visite o site do projeto:
Linux: Knockd, bate, bate, bate na porta do Céu

Configuração do servidor

Instale das dependências:

# yum install libpcap*

Baixe o RPM:

# wget http://li.nux.ro/download/nux/dextop/el7/x86_64//knock-server-0.5-7.el7.nux.x86_64.rpm

Instale:

# rpm -ivh knock-server-0.5-7.el6.nux.i686.rpm

Como estou logado via SSH, vou criar uma regra pra bloquear outra porta SSH, por enquanto que configuro, então:

# echo "Port 2222" >> /etc/ssh/sshd_config && service sshd restart

Vamos ao arquivo de configuração. O primeiro passoée escolher as portas das batidas, escolhi para a abertura: 6390 7832 6276 e para fechar a conexão: 5232 2984 6253. E editei o arquivo de configuração:

# cp /etc/knockd.conf{,.orig}
# echo > /etc/knockd.conf
# cat /etc/knockd.conf

[options]
        logfile = /var/log/knockd.log

[SSH]
        sequence = 6390 7832 6276
        seq_timeout = 30
        tcpflags = syn
        Start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 2222 -j ACCEPT
        cmd_timout = 1800
        stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 2222 -j ACCEPT

Explicando o arquivo:
  • sequence: são passadas as portas para a conexão.
  • seq_timeout: tempo para a sequência ser completada, se o tempo acabar antes da sequência ser completa, o comando é descartado.
  • tcpflags: quais flags serão usadas.
  • start_command: comando que será usado quando a sequência for feita corretamente.
  • cmd_timeout: determina os segundos que o Knockd vai demorar para executar o stop_command.
  • stop_command: comando que será executado após o cmd_timeout.

Podem ser feitas várias sessões, com vários outros protocolos, mas a minha necessidade e apenas o SSH.

Iniciei o serviço:

# service knockd start

Fechei a porta 2222, com o IPtables:

# iptables -A INPUT -p tcp --dport 2222 -j REJECT

    Próxima página

Páginas do artigo
   1. Configurações iniciais
   2. Configurações do cliente
   3. Poc
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Usando HTTP autenticado no Apache

Tripwire - Checando a integridade do sistema

Implementando a segurança em servicos de acesso remoto

Configurando um servidor Freeradius + openLDAP

Transportando dados com segurança - encripte seu pendrive em 5 passos

  
Comentários
[1] Comentário enviado por wagnerfs em 12/05/2017 - 11:27h

Descobri esse recurso um dia desses e por coincidência vi esse artigo. Bem interessante e útil.
_________________________
"GNU/Linux for human beings."

ºvº "Software Livre: não é pelo dinheiro.
/( _ ) É uma questão de consciência."
^ ^



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts