Escrito em por arquivado em Blog, Debian, Segurança, SSH. Total de Acessos:441.

Com a popularização e baixo custo dos VPS, muita gente tem montado servidores de hospedagem para blogs, clouds, labs e uma infinidade de outros projetos. Acompanhando alguns grupos de TI no Telegram e algumas listas de e-mail, sempre vejo gente perguntando se deve mudar a porta padrão do SSH, e nesse artigo eu vou tentar mostrar a minha versão do porquê não se deve fazer isso.

O SSH é um dos protocolos que mais sofre com ataques de bruteforce e eu nem preciso explicar o motivo.

Muita gente acha que mudar a porta padrão vai deixar o seu host super seguro, mas não é bem assim. Praticamente 95% das tentativas de acesso vão diminuir ao mudar a porta, porém os 5% restantes são os mais perigosos, isso porque esses 95% são basicamente script kiddies que baixaram um script na internet e nem se dão ao trabalho de ler.

Os 5% que estão tentando acessar após mudar a porta, na maioria das vezes, sabe muito bem o que está fazendo, e é aí que mora o perigo.

“Então com eu faço pra deixar o meu servidor mais seguro de verdade?

O primeiro passo é limitar o acesso ao SSH apenas via chave DSA, isso faz com que mesmo que o atacante ache a porta aberta, não consiga logar.

O segundo mas não menos importante, é deixar a porta fechada “pra todo mundo”.

“Mas se tá fechada, como vou acessar?”

Sim, eu sei que é difícil no Brasil ter um IP fixo, mas isso pode ser resolvido com uma técnica chamada “Portknocking” que é manter a porta do serviço desejado fechada até que uma sequência de portas predefinidas recebam pacotes ordenados do endereço IP do sysadmin, para que aí sim o acesso seja liberado apenas para esse IP e por um período de tempo predefinido.

Uma solução muito utilizada para Portknocking é o Knockd, que é um Daemon simples para Portknocking. Mas caso você não queria instalar mais um pacote e/ou seja fã do Iptables/Ip6tables você pode dar uma olhada nesse arquivo que implementa um PortKnocking, que neste caso, utilizo apenas para conexões de entrada de SSH, mas com pouco esforço, é fácil utilizar para qualquer qualquer outro tipo de conexão ou serviço.

—- Update – 2016-01-12 08:02:38 (-2)

Após executar o arquivo “knocking_server”, no host do ssh server, é necessário executar uma sequencia de knocks nas portas configuradas. Isso pode ser feito de várias formas, a primeira é utilizando o arquivo “knocking_client” que está no mesmo repositório do server, lembrando de configurar as mesmas portas no client, pode mandar via navegador “http://server:1000;  http://server:2000; http://server:3000; http://server:4000” ou ainda, caso esteja utilizando um dispositivo android, instalar o “JuiceSSH” com o pluginPort Knocker“.

—- End Update

Outro item para ampliar um pouco a segurança é criar registros SSHFP no seu DNS. o Registro SSHFP ou “SSH Finger Print” faz com que ao efetuar uma tentativa de conexão, o cliente verifique no DNS se a chave é realmente do host, evitando assim uma tentativa de Man in the Middle por exemplo, o que será tema pro próximo texto.

Caso você queira testar a Digital Ocean, ela está dando $10, basta clicar neste link, efetuar o cadastro e cadastrar o cartão de crédito para cobrança e começar a brincadeira. Como a tarifação é por hora, dá pra fazer muitos testes legais por lá utilizando apenas os 10 dólares.