Knock SSH – Adicionando uma camada extra de segurança no servidor

Hoje vamos falar do Knock, uma ferramenta muito interessante para quem precisar acessar seus servidores remotamente. Bom o que o Knock faz, ele adiciona essa camada a mais da seguinte forma, por exemplo se acessamos nosso servidor pela porta 22 do ssh ela deveria estar liberada. Porém com Knock ela pode estar bloqueada, você acertando uma sequência específica de portas ele irá liberar a porta 22, e somente se acertar a sequencia definida.

No servidor

Precisamos instalar somente um pacote em nosso servidor:

O arquivo de configuração fica no /etc/knockd.conf. Eis a configuração padrão que veio no Debian.

Eu alterei para a configuração ficar como no exemplo abaixo, sempre colocando a regra de ACCEPT na primeira linha, pois caso tenha sido bloqueada e seja adiciona no final do arquivo a regra não funcionará.

 

Após editaremos o arquivo /etc/default/knockd para especificar nossa placa de rede:

Feito a configuração reiniciaremos o serviço:

Caso não tenha a porta 22 fechada, vamos fecha-lá. Lembrando que isso deve estar no script firewall do seu servidor.

No cliente

No cliente instalaremos o mesmo utilitário, porém sem precisar fazer as configurações feitas anteriormente.

Agora vamos bater nas portas em sequência conforme configurado no nosso servidor (7000, 8000, 9000)

Com as batidas corretamente executadas, podemos verificar o log do nosso servidor e veremos que o foi passado por 3 estágios e após os mesmos estarem corretos, nosso porta 22 foi liberada pelo firewall

E assim podemos conectar normalmente sem bloqueio nenhum.

Fechando a porta

Depois de fazer tudo que era necessário podemos fechar a porta novamente, acertando a sequência de fechamento que também é incluida no nosso arquivo de configuração do servidor.

E a porta será fechada novamente conforme o log nos informa:

E era isso, acredito que seja uma camada bem interessante para nossos servidores e o mais importante, não colocando portas padrões na configuração, será muito mais dificil acertar a sequência para poder liberar o ssh.

Fonte

Um forte abraço

Reforçando segurança servidor ssh

Restrições de acesso

Caso queria restringir acesso somente a grupos ou usuários específicos, acrescentaremos ou editaremos as opções abaixo no arquivo de configuração do servidor ssh, o /etc/ssh/sshd_config. O mais correto ainda seria criar um grupo somente para acessos ssh.

Podendo usar ou somente restrição por grupo ou somente restrição por usuário.

Não permitir acesso direto como root

Modificar porta padrão

De preferência uma porta  com valor alto.

Bloquear ataques de força bruta com iptables

Logando com chaves de criptografia

Gerar a chave

selecao_009

Copiar para a outra máquina a chave pública

selecao_010

Verificar se o arquivo foi copiado para o destino em .ssh/authorized_keys e modificar a permissão para 600, por questões de segurança

Desabilitar autenticação por senha

 

Deslogar sessão ssh por inatividade

Para deixar a configuração do servidor ssh um pouco mais segura, podemos configurar uma opção para um usuario que ficar inativo por um determinado tempo seja deslogado automaticamente. É uma opção muito útil caso seja esquecido uma sessão aberta, o que é bastante perigoso por sinal.

O arquivo que devemos alterar é o /etc/ssh/sshd_config, adicionando ou alterando os seguintes parametros:

Com isso, caso tenha inatividade na sessão por 30 segundos o usuário será deslogado.

ClientAliveCountMax: Define o numero máximo de envio de pacotes para saber se o cliente está ou não ativo.
ClientAliveInterval: Define um intervalo de tempo em segundos após o qual, se o terminal estiver ocioso, será finalizada a sessão.