segunda-feira, 6 de agosto de 2012

Instalando e Configurando o PortKnocking


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.... :)

2 comentários:

  1. Boa noite Ricardo, ótima dica.

    Mas 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)?

    ResponderExcluir
    Respostas
    1. 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