O SSH é uma ferramenta excelente. Permite acessar os arquivos de uma outra máquina conectada à rede sem ter que se deslocar até ele. No entanto, é necessário que ele esteja bem configurado para evitar problemas de segurança.
O primeiro e mais comum ajuste de segurança é usar somente o protocolo Versão 2. Para determinar qual versão a instalação do Linux está usando, acesse o arquivo /etc/ssh/sshd_config e pesquise nele qual é a versão usada:
cat /etc/ssh/sshd_config |grep Protocol
Se ele retornar 1, o arquivo sshd_conf deverá ser editado para utilizar a versão 2 e o serviço reiniciado para carregar a nova configuração.
Outra configuração que recomenda-se alterar é a porta do serviço, que por padrão é a 22.
cat /etc/ssh/sshd_config |grep Port
A menos que isso tenha sido alterado, será a porta 22. Isso garantirá que algum invasor em potencial tenha que escanear as portas em uso, já que não é padrão. No entanto, os usuários terão que ser comunicados da nova porta em uso.
Para conectar após a porta de uso ter sido alterada é necessário usar a flag -p e selecionar a nova porta. Nesse caso selecionarei a porta 58187.
ssh -p 58187 myhost.mynetwork
Ela pode ser especificada usando o scp também:
scp -P 58187
O parâmetro -P é utilizado com letras maiúsculas no scp mas não no comando ssh. Isso porque o scp utiliza a flag -p para preservar as propriedades originais dos arquivos na transferência.
Uma forma de facilitar a utilização dos comandos é usar um apelido para o comando ssh já com a porta utilizada especificada. Só não utilizar esse recurso caso haja máquinas usando outras portas para o serviço.
alias ssh=”ssh -p 58187″
Outra forma de aumentar a segurança do sistema é desabilitar o login do root. Para checar se está habilitado, use o comando:
cat /etc/ssh/sshd_config |grep PermitRootLogin
Se ele estiver habilitado, altere a linha PermitRootLogin do arquivo /etc/ssh/sshd_config, conforme mostrado abaixo. Mas garanta que os outros usuários possam realizar login com o SSH.
PermitRootLogin no
Reinicie o serviço. E quanto às transferências: fique tranquilo. Não serão interrompidas.
Para sistemas Debian, use:
systemctl restart ssh
Para sistemas Red Hat, use:
systemctl restart sshd
Outra boa prática é permitir conexões de grupos e usuários específicos. Para autorizar um usuário adicione a linha abaixo no final do arquivo de configuração:
AllowUsers diegohtg
Se você tem mais de um usuário no sistema é só alterar a linha AllowUsers do arquivo de configuração do SSH e identificá-los:
AllowUsers diegohtg henriquetg
Você pode também habilitar grupos de usuários no SSH. Para isso crie inicialmente um grupo:
groupadd ssh_admins
Depois adicione usuários nesse grupo. Nesse exemplo serão diegohtg e henriquetg:
usermod -aG ssh_admins diegohtg henriquetg
E finalmente só adicionar uma linha no final do arquivo de configuração, autorizando o grupo, e caso mais algum usuário seja criado é só adicionar o ID dele ao grupo (conforme o comando anterior) e estará liberado para realizar conexões.
AllowGroups ssh_admins
E finalmente, para desabilitar a autenticação por senha, e manter apenas a autenticação com o par de chaves, execute o ssh-keygen:
ssh-keygen
Você será questionado diversas vezes, no entanto, a maioria das questões permitirá manter a configuração padrão.
Quanto à frase de segurança, é recomendável fazer uma. No entanto, se for incômodo ter que digitá-la toda vez que for necessário conectar, deixe em branco.
A forma mais fácil de permitir que a sua máquina conecta a um servidor é importar as chaves dele, digitando o comando:
ssh-copy-id -i ~/.ssh/id_rsa.pub myserver.mynetwork.com
Nesse momento o servidor pedirá a sua senha. Nas próximas conexões será utilizado para autenticação o par de chaves mais a frase de segurança (caso tenha criado uma).
Após ter copiado as chaves acesse a última linha do arquivo de configuração do SSH e altere yes para no, desabilitando a autenticação por senha. Após alterar a configuração, reinicie o serviço para carregá-la.
PasswordAuthentication yes
Essa forma de configuração funciona porque ao copiar as chaves com o comando ssh-copy-id, o que você está fazendo é copiando o conteúdo da chave pública (~/.ssh/id_rsa.pub) na sua máquina local ao final do arquivo ~/.ssh/authorized_keys no arquivo de chaves autorizadas da máquina remota. Com isso o SSH checará que as chaves listadas conferem com as chaves públicas (~/.ssh/id_rsa) e permitirá o acesso.
Com essas configurações o OpenSSH terá a segurança devidamente implementada.
Caso não tenha realizado ainda acesse os seguintes tutoriais para garantir que todas as configurações serão implantadas.
- Configurando o nome da máquina (hostname), avance clicando aqui.
- Configurando o Servidor DNS, avance clicando aqui.