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.
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
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 ^ _ ^
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
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.
Ó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
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 ^ _ ^
Adicionado aos favoritos! : D!
Thanks!
Obrigado 😀
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.
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?
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.
Na verdade, devemos abrir as portas e redirecioná-las para o computador que estamos chamando.
Pena.
Ó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
Aprendi muito ao longo dos anos com a comunidade Linux global ... por alguns anos também quis contribuir, é exatamente por isso que escrevo 😀
Muito obrigado, você não sabe como isso me ajuda, estou prestes a configurar um servidor e isso está ótimo para mim.
lembranças
É para isso que servimos, para ajudar 😉
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.
Obrigado por comentar 🙂
Como sempre, From Linux nos traz excelentes postagens com tutoriais que são realmente úteis para colocar em ação, obrigado por compartilhar! 🙂
Obrigado pelo seu comentário 🙂
Sim, procuramos sempre saciar aquela sede de conhecimento que nossos leitores têm 😀
Interessante, não sabia a opção.
Vá direto para engordar minha biblioteca de costeletas.
Thanks!
Um prazer para mim 😀
lembranças
Saudações KZKG ^ Gaara !!! Você apertou. Artigo tremendo para proteger servidores. Nenhuma @% * & ^ ideia de que tal coisa exista. Vou tentar Obrigado
isso é ótimo…. ^ - ^
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?
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%
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.
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