Port Knocking: A melhor segurança que você pode ter em seu computador ou servidor (implantação + configuração)

Portos de ataque (em inglês batendo na porta) é sem dúvida uma prática que todos nós que gerenciamos servidores devemos conhecer, aqui explico detalhadamente o que é e como implementar e configurar 

No momento, aqueles de nós que gerenciamos um servidor têm acesso SSH a esse servidor, alguns mudamos a porta padrão do SSH e não usa mais a porta 22 e outras simplesmente deixam assim (algo não recomendado), porém o servidor habilitou o acesso SSH por alguma porta e isso já é uma 'vulnerabilidade'.

Com Batendo na porta podemos alcançar o seguinte:

1. O acesso SSH não está habilitado por nenhuma porta. Se tivermos SSH configurado para a porta 9191 (por exemplo), essa porta (9191) será fechada para todos.
2. Se alguém quiser acessar o servidor por SSH, obviamente, não vai conseguir, pois a porta 9191 está fechada ... mas, se usarmos uma combinação 'mágica' ou secreta, essa porta será aberta, por exemplo:

1. Eu telnet para a porta 7000 do servidor
2. Eu faço outro telnet para a porta 8000 do servidor
3. Eu faço outro telnet para a porta 9000 do servidor
4. O servidor detecta que alguém fez a combinação secreta (toque nas portas 7000, 8000 e 9000 nessa ordem) e abrirá a porta 9191 para que o login seja solicitado por SSH (abrirá apenas para o IP a partir do qual a combinação foi feita número da porta satisfatório).
5. Agora, para fechar o SSH, eu apenas telnet para a porta 3500
6. Vou fazer outro telnet para a porta 4500
7. E finalmente outro telnet para a porta 5500
8. Executar essa outra combinação secreta que o servidor detecta fechará a porta 9191 novamente.

Em outras palavras, explicando isso de forma ainda mais simples ...

Com Batendo na porta nosso servidor pode ter algumas portas fechadas, mas quando o servidor detecta isso de X IP foi feita a combinação de porta correta (configuração previamente definida em um arquivo de configuração) irá executar certo comando em si mesmo obviamente (Comando também definido no arquivo de configuração).

Está entendido certo? 

Como instalar um daemon para Port Knocking?

Eu faço isso com o pacote kockd., o que nos permitirá de uma forma muito simples e rápida implementar e configurar Batida de porta.

Instale o pacote: knockd

Como configurar o Port Knocking com knockd?

Uma vez instalado vamos configurá-lo, para isso editamos (como root) o arquivo /etc/knockd.conf:

nano /etc/knockd.conf

Como você pode ver nesse arquivo, já existe uma configuração padrão:

 Explicar as configurações padrão é muito simples.

- Primeiro, usar syslog significa que para registrar a atividade (log) usaremos / var / log / syslog.
- Em segundo lugar, na seção [abertoSSH] É para onde obviamente irão as instruções para abrir o SSH, primeiro temos a sequência de portas (a combinação secreta) que é configurada por padrão (porta 7000, porta 8000 e finalmente porta 9000). Obviamente as portas podem ser alteradas (aliás eu recomendo) já que não precisam ser 3 necessariamente, podem ser mais ou menos, depende de você.
- Terceiro, seq_timeout = 5 significa o tempo de espera para que a combinação da porta secreta ocorra. Por padrão, ele é definido em 5 segundos, o que significa que assim que começarmos a realizar o batimento de porta (ou seja, quando fizermos telnet para a porta 7000), temos um máximo de 5 segundos para terminar a sequência correta, se 5 segundos se passarem e não tivermos terminado o porta knocking então será simplesmente como se a sequência fosse inválida.
- Quarta, comando não precisa de muita explicação. Este será simplesmente o comando que o servidor executará ao detectar a combinação definida acima. O comando que é definido por padrão, o que ele faz é abrir a porta 22 (mudar esta porta para sua porta SSH) apenas para o IP que fez a combinação correta de portas.
- Quinto, tcpflags = sin Com esta linha, especificamos o tipo de pacotes que o servidor reconhecerá como válidos para a porta de batida.

Depois tem a seção para fechar o SSH, que a configuração padrão nada mais é do que a mesma sequência de portas acima, mas na ordem oposta.

Aqui está uma configuração com algumas modificações:

 Como iniciar o daemon knockd?

Para iniciá-lo, devemos primeiro modificar (como root) o arquivo / etc / default / knockd:

nano /etc/default/knockd

Aí mudamos a linha 12 que diz: «START_KNOCKD = 0»E mudando esse 0 para 1, teríamos:«START_KNOCKD = 1«

Feito isso, simplesmente o iniciamos:

service knockd start

E pronto, ele está configurado e funcionando.

Port Knocking com knockd instalado e funcionando!

Como você pode ver na configuração anterior, se uma batida de porta for feita para a porta 1000, depois para 2000 e finalmente para 3000, então a porta 2222 (meu SSH) será aberta, bem aqui outro computador executando batida de porta:

Assim que pressiono [Enter] no Knock No.1, no No.2 e finalmente no No.3, a porta será aberta, aqui está o log:

Como você pode ver, ao bater na porta 1000, o estágio 1 foi registrado, então 2000 será o estágio 2 e finalmente 3 com 3000, ao fazer isso o comando que declarei no .conf é executado e pronto .

Então para fechar a porta seria só bater 9000, 8000 e finalmente 7000, aqui está o log:

E bem, aqui termina a explicação de uso 

Como você pode ver, o Port Knocking é realmente interessante e útil, porque embora não queiramos simplesmente abrir uma porta após uma certa combinação de portas, o comando ou ordem que o servidor executará pode variar, ou seja ... em vez de abrir uma porta podemos declare para matar um processo, parar um serviço como apache ou mysql, etc ... o limite é sua imaginação.

Port Knocking só funciona quando você tem um servidor físico ou quando o servidor virtual é a tecnologia KVM. Se o seu VPS (servidor virtual) é OpenVZ, então Port Knocking não acho que funcione para você porque você não pode manipular diretamente o iptables

Bem, e até agora o artigo… Não sou de longe um especialista neste assunto, mas gostaria de compartilhar com vocês este processo muito interessante.

Saudações 


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

      Erunamo JAZZ dito

    Excelente artigo, é bastante interessante e eu não sabia que existia ... seria ótimo se você continuasse a publicar artigos para novatos em administradores de sistemas

    Saudações e obrigado ^ _ ^

         KZKG ^ Gaara dito

      Obrigado por comentar.
      Sim ... é que com os artigos sobre DNS do Fico, não quero ficar para trás rsrs !!!

      Nada sério. Há vários meses, ouvi algo sobre Port Knocking e imediatamente me chamou a atenção, mas como pensei que seria muito complexo naquela época, não decidi entrar, ontem revendo alguns pacotes do repo, descobri o knockd e decidi tentar, e aqui está o tutorial.

      Sempre gostei de colocar artigos técnicos, alguns podem não ser suficientemente interessantes mas… espero que outros sejam 😉

      lembranças

         Mario dito

      Olá, sei que este artigo já existe há algum tempo mas mando a minha consulta para ver se alguém consegue resolvê-lo para mim.
      O fato é que implementei porta knocking para meu raspberry para tentar melhorar a segurança quando me conectar a ele de fora da rede local. Para que isso funcionasse eu tive que abrir a faixa de portas no roteador 7000-9990 direcionando para a máquina. É seguro abrir essas portas no roteador ou, ao contrário, ao tentar ter mais segurança, estou fazendo o contrário?

      Saudações e agradecimentos.

      sempre dito

    Ótimo, eu sou um administrador de sistema há anos e não o conhecia.
    Uma pergunta ... como você faz as "batidas"?
    Você faz telnet contra essas portas? O que o telnet responde a você? Ou há algum comando de onda "knock"?
    Legal legal é o artigo. Espetacular. Muito obrigado

         KZKG ^ Gaara dito

      Fiz o teste com telnet e deu tudo certo ... mas, curiosamente, tem um comando 'knock', faça um homem bate então você pode ver 😉

      O telnet não responde realmente a mim, o iptables com a política DROP faz com que ele não responda nada e o telnet permanece lá esperando por alguma resposta (que nunca chegará), mas o daemon knockd reconhecerá a batida mesmo se ninguém responder

      Muito obrigado pelo seu comentário, é um prazer saber que meus artigos ainda gostam de ^ _ ^

      st0rmt4il dito

    Adicionado aos favoritos! : D!

    Thanks!

         KZKG ^ Gaara dito

      Obrigado 😀

      caçador dito

    Ahh segurança, aquela sensação agradável de quando colocamos o pc em segurança e, dias / semanas depois, tentando conectar de algum lugar remoto que não conseguimos acessar porque o firewall está no modo "ninguém para ninguém", isso se chama ficar fora do castelo em termos de administradores de sistemas. 😉

    É por isso que este post é tão útil, com o knockd você pode acessar de qualquer lugar que possa enviar um pacote para sua rede local, e os invasores perdem o interesse ao ver que a porta ssh está fechada, não acho que eles vão bater força bruta para abrir a porta.

      manual dito

    Ei, o artigo é ótimo.

    Uma coisa: serve para se conectar de fora da rede local?

    Digo isso porque tenho o roteador com as portas fechadas menos aquela que corresponde ao ssh que é redirecionado para o servidor.

    Imagino que para que funcione de fora da rede local, será necessário abrir as portas do roteador correspondentes ao Port Knocking e fazer com que elas redirecionem também para o servidor.

    Mmm…

    Não sei como é seguro fazer isso.

    O que opinam?

         KZKG ^ Gaara dito

      Não tenho certeza, não fiz o teste mas acho que sim, você deve abrir portas no roteador, caso contrário você não conseguirá derrubar o servidor.

      Faça o teste sem abrir portas no roteador, se não funcionar para você é uma pena, pois concordo com você, não é aconselhável abrir essas portas no roteador.

           manual dito

        Na verdade, devemos abrir as portas e redirecioná-las para o computador que estamos chamando.

        Pena.

      rabba08 dito

    Ótimo, muito obrigado! Estou começando a estudar redes e esses tutoriais são ótimos para mim! obrigado por reservar um tempo para compartilhar o conhecimento

         KZKG ^ Gaara dito

      Aprendi muito ao longo dos anos com a comunidade Linux global ... por alguns anos também quis contribuir, é exatamente por isso que escrevo 😀

      janeiro981 dito

    Muito obrigado, você não sabe como isso me ajuda, estou prestes a configurar um servidor e isso está ótimo para mim.

    lembranças

         KZKG ^ Gaara dito

      É para isso que servimos, para ajudar 😉

      Jean ventura dito

    Excelente artigo! Eu não tinha conhecimento disso e isso me ajuda muito (estou usando RackSpace que usa KVM, então me serve como uma luva!). Adicionado aos favoritos.

         KZKG ^ Gaara dito

      Obrigado por comentar 🙂

      Alga dito

    Como sempre, From Linux nos traz excelentes postagens com tutoriais que são realmente úteis para colocar em ação, obrigado por compartilhar! 🙂

         KZKG ^ Gaara dito

      Obrigado pelo seu comentário 🙂
      Sim, procuramos sempre saciar aquela sede de conhecimento que nossos leitores têm 😀

      Timbleck dito

    Interessante, não sabia a opção.
    Vá direto para engordar minha biblioteca de costeletas.
    Thanks!

         KZKG ^ Gaara dito

      Um prazer para mim 😀
      lembranças

      Frederick. A. Valdés Toujague dito

    Saudações KZKG ^ Gaara !!! Você apertou. Artigo tremendo para proteger servidores. Nenhuma @% * & ^ ideia de que tal coisa exista. Vou tentar Obrigado

      Branco ^ colar dito

    isso é ótimo…. ^ - ^

      LearnLinux dito

    Olá, você poderia explicar como instalá-lo no CentOS 5.x?

    Eu baixei o rpm:
    http://pkgs.repoforge.org/knock/knock-0.5-3.el5.rf.x86_64.rpm

    Instalado:
    rpm -i knock-0.5-3.el5.rf.x86_64.rpm

    Configure o arquivo de configuração com 15 segundos de tempo e a porta que utilizo para conectar por ssh ao meu vps

    O demônio começa:
    / usr / sbin / knockd &

    Eu telnet e nada a porta não fecha, por padrão a porta está aberta, mas não fecha.

    Estou fazendo algo errado?

      Olá dito

    Mmmm, solicitações telnet para essas portas poderiam ser aprendidas pelo administrador de nossa rede local, ou por nosso provedor de serviços, não? Isso bloquearia pessoas externas, mas não eles, então se eles quiserem ativar nossa porta, eles podem fazer isso porque veja os pedidos que fazemos, mmm vamos dizer que protege, mas não 100%

         Roberto dito

      Pode ser, mas não acho que eles vão imaginar que determinado telnet executa a ação X. A menos que eles vejam que os mesmos padrões de telnet são seguidos.

      Pablo Andrés Diaz Aramburo dito

    Artigo interessante, tenho uma pergunta. Acho que há um erro na imagem do arquivo de configuração, pois se você analisar bem, em ambas as linhas do comando você está usando ACCEPT no Iptables. Eu acho que um deveria ser ACEITAR e outro deveria ser REJEITADO.

    Caso contrário, excelente iniciativa. Muito obrigado por dedicar seu tempo para explicar seu conhecimento a outras pessoas.

    lembranças