OpenSSH

Configurações do OpenSSH que podem fazer toda a diferença

Para quem possui algum servidor, ou até para em seu computador pessoal, algumas configurações padrão do servidor SSH são extremamente permissivas, vulneráveis a ataques, e quem sabe até invasão com técnicas de força bruta.

Entre algumas dicas mais simples para aumentar a segurança estão configurar o seu firewall corretamente ou até desabilitar o acesso SSH. Para servidores, esta última opção não é válida. Sendo assim vamos conferir algumas configurações que podem fazer toda a diferença na hora de algum espertinho tentar invadir seu servidor.

As configurações do sshd,daemon SSH, estão por padrão no arquivo /etc/ssh/sshd_config. Então, escolha o seu editor favorito para alterar este arquivo.

Alterando a porta padrão

Por padrão o SSH utiliza a porta 22, uma boa prática é mudar este valor pois a maioria dos ataques são executados diretamente nesta porta. Dê preferência às portas altas, pois em uma varredura rápida de um atacante sem alvo específico com NMAP, não será mapeada.

Port 22222

Versão do protocolo

A versão 1 do protocolo SSH possui várias falhas de criptografia e não deve ser utilizada.

Protocol 2

Login apenas por chave SSH

Uma boa prática é permitir apenas login com chaves SSH, isto garante a autenticidade do cliente. Login através de senha é suscetível a força bruta, utilizando de dicionários com senhas junto com programas como o john the ripper, utilizar certificados você mitiga este risco.

PasswordAuthentication no

Login sem senha

Quando login através de senha está habilitado, uma boa prática é não permitir login de usuário que não possui senha.

PermitEmptyPasswords no

Login root

Permitir o login SSH através do usuário root é desaconselhável, prefira usar uma conta de usuário e após conectado faça login como superusuário.

PermitRootLogin no

Tempo máximo para login

Indica o tempo máximo em segundos que o cliente SSH tem para se logar com sucesso ao servidor.

LoginGraceTime 30

Tempo máximo sem atividade

Permitir que um usuário fique horas conectados a uma sessão SSH sem executar nenhum comando é desaconselhável. É recomendado definir um tempo máximo em segundos para desconectar o usuário sem atividade.

ClientAliveInterval 300

Testando as alterações

Sempre que uma alteração é feita no arquivo é aconselhável executar um teste para verificar se a sintaxe está correta, sendo assim execute o comando:

/usr/sbin/sshd -t

Se nenhuma mensagem foi exibida tudo está correto.

Reiniciando o sshd

Reiniciar o serviço irá variar de distribuição para distribuição, pois tudo depende do init system utilizado por ela. No Systemd você pode executar o comando systemctl restart sshd, no Upstart service sshd restart e por fim no SysV o /etc/init.d/sshd restart.

Consideração final

Essas configurações são simples, mas podem evitar uma dor de cabeça no futuro. Para saber mais sobre as demais configurações do OpenSSH confira a referência.

Dica especial 😀

E se eu tiver suspeitas de que meu servidor está sendo invadido? ou, sou paranóico com a segurança do meu servidor. O que eu posso fazer? tcp_wrapper, fail2ban? Ou porque não receber um e-mail toda vez que alguém logar via ssh no meu servidor?

Existe um arquivo que você pode alterar chamado sshrc que fica no diretório padrão da sua pasta de configuração do ssh, por exemplo /etc/ssh/sshrc. Neste exemplo vamos enviar um email através programa chamado sendEmail, confira.

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`

logger -t ssh-wrapper $USER login from $ip
mensagem=`echo "User $USER just logged in from $ip"`
echo $mensagem | sendEmail -o tls=yes -f [email protected] -t [email protected] -s "smtp.gmail.com:587" -m "$mensagem" -u "$mensagem" -xu [email protected]' -xp 'minha_senha'

Nota, caso use o Gmail, é necessário desabilitar uma funcionalidade de segurança que permite aplicativos menos seguros acessar sua conta, para saber mais clique aqui.

Referência

sshd — OpenSSH SSH daemon
sshd_config — OpenSSH SSH daemon configuration file

  • Guilherme

    Pergunta noob de quem quase nunca usa SSH: A chave que eu gero pra logar pode ser copiada de um PC para outro? Ou só vai funcionar exclusivamente no PC em que foi gerada? Valeu

    • Alexandre Vicenzi

      A chave é sua, você pode usá-la para vários fins, inclusive compartilhar entre máquinas 🙂

      • Guilherme

        Valeu! Mas se por um acaso minha máquina for comprometida, o cara vai poder copiar a minha chave e ter acesso ao SSH sem ter a senha? Será que é sempre uma boa ideia logar só com a chave? Só tô pensando mesmo, não manjo muito kkkk

        • Alexandre Vicenzi

          Se alguém conseguir sua chave SSH privada já era, é igual descobrirem a senha do seu email. Eu não costumo usar a mesma em várias máquinas, mas conheço quem faz. 🙂

          • Guilherme

            Bom saber. Vlw

          • wanderson

            Guilherme, quando você cria uma chave para acessar outra máquina através dela, você tem que entender que está criando um relação de confiança entre as máquinas. Por isso, você deve criar uma chave com uma senha seguindo os padrões de segurança de criação de senha.
            Se alguém comprometer a sua máquina e copiar a sua chave, ainda precisar saber a senha para utilizá-la.
            É a senha que irá proteger a sua chave de uso indevido.

            Se você compartilha o micro com outra pessoa, é uma má idéia usar chave para acessar outras máquinas ou servidores.
            Outro dele, é mudar o local para guardar suas chaves.
            Chamais acesse servidor com a conta de root.
            Configure o ssh server para não aceitar conexão com a conta de root.

          • Guilherme

            Saquei wanderson, valeu!!

  • Guilherme

    Pergunta noob de quem quase nunca usa SSH: A chave que eu gero pra logar pode ser copiada de um PC para outro? Ou só vai funcionar exclusivamente no PC em que foi gerada? Valeu

    • Alexandre Vicenzi

      A chave é sua, você pode usá-la para vários fins, inclusive compartilhar entre máquinas 🙂

      • Guilherme

        Valeu! Mas se por um acaso minha máquina for comprometida, o cara vai poder copiar a minha chave e ter acesso ao SSH sem ter a senha? Será que é sempre uma boa ideia logar só com a chave? Só tô pensando mesmo, não manjo muito kkkk

        • Alexandre Vicenzi

          Se alguém conseguir sua chave SSH privada já era, é igual descobrirem a senha do seu email. Eu não costumo usar a mesma em várias máquinas, mas conheço quem faz. 🙂

          • Guilherme

            Bom saber. Vlw

          • wanderson

            Guilherme, quando você cria uma chave para acessar outra máquina através dela, você tem que entender que está criando um relação de confiança entre as máquinas. Por isso, você deve criar uma chave com uma senha seguindo os padrões de segurança de criação de senha.
            Se alguém comprometer a sua máquina e copiar a sua chave, ainda precisar saber a senha para utilizá-la.
            É a senha que irá proteger a sua chave de uso indevido.

            Se você compartilha o micro com outra pessoa, é uma má idéia usar chave para acessar outras máquinas ou servidores.
            Outro dele, é mudar o local para guardar suas chaves.
            Chamais acesse servidor com a conta de root.
            Configure o ssh server para não aceitar conexão com a conta de root.

          • Guilherme

            Saquei wanderson, valeu!!

  • Guilherme

    Pergunta noob de quem quase nunca usa SSH: A chave que eu gero pra logar pode ser copiada de um PC para outro? Ou só vai funcionar exclusivamente no PC em que foi gerada? Valeu

    • Alexandre Vicenzi

      A chave é sua, você pode usá-la para vários fins, inclusive compartilhar entre máquinas 🙂

      • Guilherme

        Valeu! Mas se por um acaso minha máquina for comprometida, o cara vai poder copiar a minha chave e ter acesso ao SSH sem ter a senha? Será que é sempre uma boa ideia logar só com a chave? Só tô pensando mesmo, não manjo muito kkkk

        • Alexandre Vicenzi

          Se alguém conseguir sua chave SSH privada já era, é igual descobrirem a senha do seu email. Eu não costumo usar a mesma em várias máquinas, mas conheço quem faz. 🙂

          • Guilherme

            Bom saber. Vlw

          • wanderson

            Guilherme, quando você cria uma chave para acessar outra máquina através dela, você tem que entender que está criando um relação de confiança entre as máquinas. Por isso, você deve criar uma chave com uma senha seguindo os padrões de segurança de criação de senha.
            Se alguém comprometer a sua máquina e copiar a sua chave, ainda precisar saber a senha para utilizá-la.
            É a senha que irá proteger a sua chave de uso indevido.

            Se você compartilha o micro com outra pessoa, é uma má idéia usar chave para acessar outras máquinas ou servidores.
            Outro dele, é mudar o local para guardar suas chaves.
            Chamais acesse servidor com a conta de root.
            Configure o ssh server para não aceitar conexão com a conta de root.

          • Guilherme

            Saquei wanderson, valeu!!

  • wanderson

    É uma ótima idéia configura o número de tentativa de login não permitindo mais que três tentativas.
    O número de sessão.
    Instalar o fail2ban para bloquear origem que esteja tentando acesso via força bruta.
    Veja no logs e poderá ver várias mensagens de acesso negado serviço ssh. Pelo tempo de repetição, poderá ver se trata-se de um robô.

  • wanderson

    É uma ótima idéia configura o número de tentativa de login não permitindo mais que três tentativas.
    O número de sessão.
    Instalar o fail2ban para bloquear origem que esteja tentando acesso via força bruta.
    Veja no logs e poderá ver várias mensagens de acesso negado serviço ssh. Pelo tempo de repetição, poderá ver se trata-se de um robô.

  • wanderson

    É uma ótima idéia configura o número de tentativa de login não permitindo mais que três tentativas.
    O número de sessão.
    Instalar o fail2ban para bloquear origem que esteja tentando acesso via força bruta.
    Veja no logs e poderá ver várias mensagens de acesso negado serviço ssh. Pelo tempo de repetição, poderá ver se trata-se de um robô.

  • Flavio

    uma dica que é pouca conhecida: não se preocupe com nada disso! Brincadeira, uma opção interessante é esconder o ssh atrás de firewall e usar o FWKNOP para permitir a conexão ssh só quando você quiser e a porta só fica aberta para o IP que se autenticou e pelo tempo configurado. Recomendo fortemente ler sobre o fwknop, funciona muito bem.

  • Flavio

    uma dica que é pouca conhecida: não se preocupe com nada disso! Brincadeira, uma opção interessante é esconder o ssh atrás de firewall e usar o FWKNOP para permitir a conexão ssh só quando você quiser e a porta só fica aberta para o IP que se autenticou e pelo tempo configurado. Recomendo fortemente ler sobre o fwknop, funciona muito bem.

  • Flavio

    uma dica que é pouca conhecida: não se preocupe com nada disso! Brincadeira, uma opção interessante é esconder o ssh atrás de firewall e usar o FWKNOP para permitir a conexão ssh só quando você quiser e a porta só fica aberta para o IP que se autenticou e pelo tempo configurado. Recomendo fortemente ler sobre o fwknop, funciona muito bem.

  • Nuno

    Muito bacana essas dicas!

    Uma alternativa as chaves seria usar o google authenticator, funciona bem e até o momento não tivemos nenhum problema.

  • Nuno

    Muito bacana essas dicas!

    Uma alternativa as chaves seria usar o google authenticator, funciona bem e até o momento não tivemos nenhum problema.

  • Nuno

    Muito bacana essas dicas!

    Uma alternativa as chaves seria usar o google authenticator, funciona bem e até o momento não tivemos nenhum problema.