Mais segurança no SSH

Este é um tutorial bem legal, ele mostra como proteger um pouco mais o SSH.

Fonte: vivaolinux

Introdução

Na grande maioria das vezes, os administradores de servidores Linux necessitam de acesso remoto à maquina que atua como servidor, seja para proceder verificações de rotina, seja para realizar atualizações, implementar alguma nova solução ou algo do gênero.

Há muito tempo o SSH substituiu o velho telnet nesta tarefa. Porém, tenho certeza de que não é um nem dois administradores que perdem o sono pensando na porta aberta que a utilização desse serviço acarreta. Por mais seguras que sejam as senhas, por mais restritos que sejam os usuários que tem acesso ao serviço, sempre permanece certa inquietação.

O presente artigo tem a intenção de fornecer algumas dicas sobre este assunto. Trata-se, na verdade, do agrupamento de uma série de dicas encontradas na internet com o auxílio do grande guru (www.google.com.br) e de um recentemente descoberto mestre na arte do firewall, que como não poderia deixar de ser, pertence à nossa comunidade. Trata-se do amigo e colaborador melphos, que gentilmente me permitiu o uso de suas regras firewall na composição deste pequeno artigo. Pois bem, principiemos.

Configurações básicas

Inicialmente é necessário que comentemos a respeito da porta padrão do serviço SSH, a porta 22. O melhor a fazer é alterar, pois trata-se de uma porta muito “manjada”. Todo lammer metido a hacker gosta de usar scripts bruteforce para ficar “batendo” nas portas 22 abertas internet à fora. Quando você altera a porta, eles simplesmente não sabem o que fazer. Você já se livra de uma enxurrada de logs.

Para isso, basta editar o arquivo sshd_config, geralmente contido em /etc/ssh e alterar o seguinte parâmetro:

Port 22

Para:
Port xxx

Onde xxx é o numero da porta que você deseja que o serviço responda.

Muito bem, outro pequeno detalhe diz respeito à seus usuários. Evite que eles tenham um shell válido, o que lhes dá direito a uso de SSH. Retire todos os shells que puder e redirecione todos os usuários possíveis para shells falsos. Para reforçar, 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

Com relação à senhas, jamais permita senhas em branco em seu serviço SSH. Mais uma vez, dirija-se ao arquivo sshd_config e verifique se o seguinte item encontra-se ativo:
PermitEmptyPasswords no

Agora outra dica importante: não permita que o root utilize serviço SSH, fazendo isso como o parâmetro:
PermitRootLogin no

Muito bem, nosso SSH encontra-se em uma porta despadronizada, não aceita senhas em branco e não aceita logins de root. Agora, outro ponto que pode ser levado em consideração: não permita que o usuário cadastrado no serviço SSH possa tornar-se root por meio do comando “su” inserindo-o no arquivo /etc/suauth, na seguinte sintaxe:
root:nome_usuário_do_ssh:DENY

Dessa forma, um possível atacante terá que descobrir a porta e quebrar 3 senhas para conseguir o acesso root à maquina.

Até aqui, repasso todos os créditos à Ederson L. Corrêa, que publicou artigo no Dicas-L:
http://www.dicas-l.com.br/dicas-l/20050113.php

Camada extra: utilizando o firewall iptables

Agora entra a participação do amigo melphos, que eu considero a mais importante implementação de segurança para SSH de todo o artigo. Tomemos por acordo que você tenha seu serviço SSH rodando na porta 221. Veja as seguintes regras de iptables:

1) iptables -A INPUT -p tcp -m tcp –dport 221 -m state –state NEW -m recent –rcheck –name SSH –rsource –seconds 60 –hitcount 3 -j ACCEPT

2) iptables -A INPUT -p tcp -m tcp –dport 222 -m state –state NEW -m recent –name SSH –remove -j DROP

3) iptables -A INPUT -p tcp -m tcp –dport 223 -m state –state NEW -m recent –set –name SSH –rsource -j DROP

4) iptables -A INPUT -p tcp -m tcp –dport 224 -m state –state NEW -m recent –name SSH –remove -j DROP

Breves explicações

A primeira regra basicamente diz o seguinte: restrinja o acesso à porta 221 somente aos IPs que tenham registrado 3 tentativas de acesso na lista SSH, contida em /proc/net/ipt_recent/SSH, no tempo máximo de 60 segundos.

A segunda regra diz o seguinte: remova o número de IP do requisitante da porta 222 da lista SSH (/proc/net/ipt_recent/SSH) caso ele lá esteja.

A terceira regra diz o seguinte: adicione o IP do requisitante à lista SSH (/proc/net/ipt_recent/SSH).

A quarta regra tem o mesmo efeito da segunda: remova o número de IP do requisitante da porta 222 da lista SSH (/proc/net/ipt_recent/SSH) caso ele lá esteja.

Resumo da situação: a porta 221, onde roda seu serviço SSH, permite login apenas dos IPs cadastrados na lista chamada SSH que tenham lá registradas 3 tentativas de acesso nos últimos 60 segundos. Portanto, de acordo com as regras, qualquer um que queira acessar o serviço SSH terá que enviar três requisições syn à porta 223, que é a que registra o número de IP no arquivo SSH (/proc/net/ipt_recent/SSH).

Pequeno exemplo e finalização

Agora imagine o seguinte: alguém “batendo” em suas portas de maneira seqüencial, partindo da porta 221:
• A requisição à porta 221 terá como resposta a negação do serviço.
• A requisição à porta 222 terá como resposta a negação do serviço.
• A requisição à porta 223, adicionará o requisitante ao arquivo SSH, liberando para ele, sem que ele o saiba, o acesso à porta 221.
• A requisição à porta 224 retirará o IP do requisitante do arquivo SSH, fechando, dessa forma a porta 221, anteriormente aberta e agora fechada, nos dois casos sem o conhecimento do requisitante.
Como se pode observar, é uma situação muito conveniente no caso de ataques de scannners, que geralmente “batem” nas portas de maneira seqüencial.

Acredito que tudo isso, somado à senhas seguras, eleve a segurança de seu serviço SSH à um nível mediano. : )

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: