Vamos começar alterando a porta do SSH, aconselho uma porta alta, para fugir dos primeiros “racudos”. Dentro do diretório  /etc/ssh vamos editar o arquivo sshd_conf, na linha Port:

Port 22

Para:

Port xxx

Onde xxx é o numero da porta que você deseja. Permita que apenas um usuário possa acessar o serviço SSH. Edite o arquivo sshd_config novamente e inclua o parâmetro:

AllowUsers nomedousuario

Senhas em branco jamais; ainda no arquivo sshd_config, verifique se o seguinte item encontra-se ativo:

PermitEmptyPasswords no

Outra dica bacana é não perminitir que o root faça login, ao menos não de “cara”, no SSH:

PermitRootLogin no
Agora vamos instalar e configurar o PortKnocking


O Knockd, é um port-knocking que atua ouvindo conexões em portas previamente determinadas e executa comandos quando as sequencias de conexões são enviadas corretamente, assim, seguindo o conceito de, “toc toc” podemos deixar nossas portas fechadas e abrir quando necessário e depois fecha-las novamente; isso é uma mão na roda na segurança de nosso servidor, pois se um possível atacante scanear nosso servidor em busca da porta do SSH, serviço em questão, ele vai dar de cara com CLOSED, isso dificultara bastante o trabalho dele, para utilizar o knockd precisamos instala-lo em nosso servidor e no cliente, mãos a obra:

apt-get install knockd

OBS: ip do meu server de testes é 10.0.0.5
Apos instalar o pacote no servidor vamos a configuração, 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 “Open SSH” e outra “Close SSH”.

[openSSH]
# Define a sequencia das portas para executar o comando.
sequence = 3000,7000,2000
# 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 = /sbin/iptables -A INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
# Tipo da flag para conexão
tcpflags = syn

# A lógica é a mesma das opções acima

[closeSSH]
sequence = 1000,3000,4000
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp –dport 22 -j DROP
tcpflags = syn

Obs: Estou utilizando a porta padrão do ssh, 22, você deve adequar a sua configuração, isso também vale para as sequencias de portas do knockd. Dando sequencia vamos para 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 wlan0”  obs: Altere a interface de acordo com sua configuração.
Feito isso vamos “startar” o serviço

# /etc/init.dknockd start

Com nosso servidor pronto, vamos para nosso cliente, iremos executar os seguintes comandos:

# knock 10.0.0.5 3000:tcp 7000:tcp 2000:tcp

Feito isso execute “iptables -L” no servidor e veja se a regra foi criada. Agora é só se conectar normalmente no ssh:

# ssh user@10.0.0.5

Encerrando a conexão, execute o comando abaixo:

# knock 10.0.0.5 1000:tcp 3000:tcp 4000:tcp

Feito isso nosso servidor já esta com a porta 22 fechada.

Espero que tenha ajudado em caso de alguma duvida, basta deixar o comentário que terei prazer em ajudar.

Oliveira Lima

Oliveira Lima

Oliveira Lima atua na área de segurança da informação há 10 anos, especialista em Pentest, Analise de vulnerabilidades e Hardering. Dedica-se também a pesquisas e analise de malware. Criou o Blog roothc.com.br, com intuito de manter o publico atualizado sobre noticias do mundo Linux e hacking, alem de dividir conhecimentos e propor debates.
Oliveira Lima