Pessoal hoje nos iremos abordar a instalação e configuração do Knockd, ele é um port-knocking que atua ouvindo conexões em determinadas portas previamente determinadas e executa comandos quando as sequencias de conexões são enviadas corretamente, assim podemos deixar nossas portas fechadas e abrir quando é conveniente e depois fecha-las novamente, isso ajuda bastante a segurança em nosso servidor, pois se um possível atacante scanear nosso servidor ele só irá ver que esta tudo fechado (Nesse artigo iremos abordar somente a configuração do ssh, mas para os demais serviços a lógica é a mesma), isso dificultara bastante o trabalho dele, para utilizar o knockd precisamos instala-lo em nosso servidor e no cliente, execute o seguinte comando para instalar o knockd no servidor e no cliente:
# aptitude install knockd
OBS: No ambiente de teste o ip do meu servidor é 192.168.0.55
Bem depois de instalar o pacote no servidor precisamos configurar o knockd, para isso entre no arquivo /etc/knockd.conf:
# pico /etc/knockd.conf
O arquivo de configuração do knockd é bem simples de entender, mas para aqueles que não tem muita intimidade segue as linhas comentadas:
[options]
# Define que o Syslog será o responsável pelo log.
UseSyslog
# Aqui temos duas sequencias uma “Open SSH” e outra “Close SSH”.
[openSSH]
# Define a sequencia das portas para executar o comando da linha abaixo.
sequence = 7000,8000,9000
# Define o tempo em segundos que os pacotes não poderão
# ultrapassar para a sequencia ser validada.
seq_timeout = 5
# Comando a ser executado se a sequencia for validada.
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
# Tipo da flag para conexão
tcpflags = syn
# A lógica das opções abaixo é exatamente das opções acima
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
OBS1: Lembrando que aqui estamos usando a porta padrão do ssh, caso você esteja utilizando outra porta para seu ssh mude de acordo com sua configuração.
OBS2: Aqui estamos utilizando as portas que já vem por padrão no knockd, é de suma importância que elas sejam alteradas, e de preferência as portas tem de ser aleatórias e não sequenciais.
Feita as configurações necessárias precisamos alterar o arquivo default do knockd:
# pico /etc/default/knockd
Altere a opção “START_KNOCKD=0” para “=1” e
Altere a opção KNOCKD_OPTS=”-I eth0” OBS: Altere a interface de acordo com sua configuração.
Depois disso podemos iniciar nosso port-knocking:
# /etc/init.dknockd start
Com nosso servidor já configurado é hora de testar, em nosso cliente iremos executar os seguintes comandos:
# knock 192.168.0.55 7000:tcp 8000:tcp 9000:tcp
Feito isso execute “iptables -nL” no servidor e veja se a regra foi criada. Agora é só se conectar normalmente no ssh:
# ssh user@192.168.0.55
Quando encerramos nossa conexão com o ssh não podemos esquecer de fechar a porta do ssh no servidor, para isso execute o comando abaixo:
# knock 192.168.0.55 9000:tcp 8000:tcp 7000:tcp
Feito isso nosso servidor já esta com a porta 22 fechada.
Bem pessoal é isso, esta é uma ótima ferramenta e vale a pena ser usada.... até a próxima.... :)
Boa noite Ricardo, ótima dica.
ResponderExcluirMas como poderia utilizar o knockd em um servidor na nuvem por exemplo, onde tenho vários clientes que utilizam a porta 9090 por exemplo? Eu sei que é uma ferramenta ótima, mas se deixar tudo fechado como um cliente se conectaria a aplicação? ou é só de linux para linux (cliente-servidor)?
Amigo tem clientes do PortKnocking para windows tbm, no seu caso se tu deixar tudo fechado os clientes teriam que bater nas portas configuradas antes para assim abrir as portas e utilizarem, mas essa ferramenta não é indicada para serviços publicos, é mais para serviços privados como ssh por exemplo.
Excluir