Esta dica mostra como melhorar a segurança de um servidor utilizando o
Port knocking. É extremamente simples, porém funcional.
Espero que gostem. :)
Instalando e configurando
Pessoal, hoje nós 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 sequências de conexões são enviadas corretamente.
Assim, podemos deixar nossas portas fechadas e abrir quando é conveniente e depois fechá-las novamente. Isso ajuda bastante a segurança em nosso servidor, pois se um possível atacante scanear nosso servidor, ele verá que está tudo fechado (nesta dica, iremos abordar somente a configuração do SSH, mas para os demais serviços, a lógica é a mesma).
Isto dificultará bastante o trabalho dele, para utilizar o knockd, precisamos instalá-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
Obs.1: Lembrando que, aqui estamos usando a porta padrão do SSH, caso você esteja utilizando outra porta para seu SSH mude de acordo com a sua configuração.
Obs.2: 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 a 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ó conectar-se normalmente ao 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. :)
Dica previamente publicada em: