Aumentando a Segurança do Servidor SSH

Blog

SSH (Secure Socket Shell) é normalmente o principal meio para acesso aos servidores, especialmente aqueles ambientes que rodam sistemas Unix-like. Apesar de ter um nível de segurança agradável, é necessário o ajuste de alguns parâmetros.

Backup do arquivo de configuração

Antes de qualquer modificação no arquivo original onde estão os parâmetros de configuração do SSH, vamos realizar uma cópia dele que servirá de backup. Isso evita que tenhamos problema caso ocorra algum erro durante as modificações.

Neste caso para criar uma cópia do arquivo de backup das configurações do SSH, use o comando abaixo.

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Agora que realizamos o backup, vamos continuar.

1 – Crie uma senha segura

Indiscutivelmente o usuário que faz acesso precisa ter uma senha forte, e é recomendado que tenham letras maiúsculas/minúsculas, números e caracteres especiais com tamanho mínimo de 16.

2 – Altere a Porta do SSH

A porta padrão do SSH é a 22 e por conta disso muitos ataques vão direto nela, para mitigar esse problema iremos mudar para a porta 50000 (sugestão, podendo ser qualquer outra porta).

Observação: Essa medida não fará com que a porta nunca seja descoberta, e isso é facilmente demonstrado com um scan. Porém essa alteração já faz com que uma boa parte dos ataques sejam evitados.

Abra o arquivo de configuração.

# nano /etc/ssh/sshd_config

Remova o # da linha que tem o Port 22, fazendo referência a porta padrão do SSH e troque o 22 por 50000.

Está assim:

# Port 22

Ficará assim:

Port 50000

3 – Desative o login como root

Impeça que o usuário root consiga fazer o login via SSH, tome como boa prática a utilização de um usuário sem privilégio administrativo para acessar o servidor. E depois de ter feito o acesso e se for realmente necessário, você altera o privilégio para root.

Procure no arquivo de configuração o parâmetro PermitRootLogin e defina como “no“.

PermitRootLogin no

4 – Definindo o número máximo das tentativas de acesso

Durante um ataque de força bruta é normal que várias tentativas de acesso sejam feitas, para mitigar esse problema vamos definir como 5. Fique à vontade para definir o número de tentativas que quiser.

Procure no arquivo de configuração o parâmetro MaxAuthTries e defina como “5“.

MaxAuthTries 5

5 – Alterando o tempo de espera para login

Configure os tempo de espera em segundos que o usuário tem para ser realizar o acesso quando a conexão SSH é estabelecida no Terminal. Como exemplo defini 30 segundos mas você pode escolher um tempo maior ou menor.

Procure no arquivo de configuração o parâmetro LoginGraceTime e defina como “30“.

LoginGraceTime 30


6 – Defina o Protocol 2 como padrão

Existe uma diferença entre os Protocolos 1 e 2, além de trabalharem de uma forma diferente o Protocolo 2 é mais seguro.

Para saber se o SSH2 é compatível, faça o seguinte:

ssh -2 usuario@IP DO SERVIDOR

Caso seja compatível uma mensagem perguntando se você deseja continuar se conectando vai surgir. Para configurar o Protocolo 2, insira o parâmetro acima do Port onde foi mudada a porta do SSH (passo 1).

Procure no arquivo de configuração o parâmetro Port 50000 e adicione o Protocol 2 acima dele.

Protocol 2

7 – Bloqueando o login de um usuário sem senha

O parâmetro PermitEmptyPasswords especifica se o servidor SSH vai permitir o login de contas com sequências de senha vazias.

Para evitar o acesso remoto do shell por contas que possuem uma senha vazia, é preciso modificar o parâmetro da configuração, reduzindo as chances de acesso não autorizado ao sistema.

Procure no arquivo de configuração o parâmetro PermitEmptyPasswords e defina como “no“.

PermitEmptyPasswords no

8 – Desabilite o X11Forwarding

X11Forwarding permite a execução de programas em modo gráfico via SSH, e dependendo da configuração o acesso com permissão ilimitada pode acontecer, se você não tem necessidade de usar, desabilite.

Procure no arquivo de configuração o parâmetro X11Forwarding e defina como “no“.

X11Forwarding no

9 – Defina um tempo ocioso

Por vezes terminamos as configurações e deixamos o Terminal com SSH conectado, para evitar problemas de acesso não autorizado, limite o tempo máximo em que se não houver interação a conexão será encerrada automaticamente.

No exemplo abaixo o tempo definido foi de 300 segundos, que é equivalente a 5 minutos.

Procure no arquivo de configuração o parâmetro ClientAliveInterval e defina como “30“.

ClientAliveInterval 300

10 – Desabilite totalmente o acesso por senhas

Visto que a descoberta de uma senha é mais fácil, existe a opção de realizar o acesso ao shell somente por meio de uma chave ssh. Esse método é conhecido como autenticação baseada em chave ssh.

O grande problema está em você perder essa chave, por tanto, mantenha um cópia em um local seguro para evitar acessos indevidos. E sempre que possível, dê preferência para a autenticação baseada em chave.

11 – Reinicie o processo do SSH

Finalizada todas as modificações no arquivo de configuração, reinicie o serviço para que elas entrem em vigor.

# systemctl restart sshd

Tags: