Entrar ou criar conta

Laboratório em bancada

Laboratório: Servidor SSH Seguro no Ubuntu Server

Você vai instalar e configurar um servidor SSH seguro no Ubuntu Server, com autenticação por chave, restrição de acesso e hardening básico. Em cerca de 2 horas, terá um ambiente funcional para acesso remoto seguro.

Servidores Linux do zero com Ubuntu Server
Ligado ao treinamento Servidores Linux do zero com Ubuntu Server
Duração estimada
120 min
Passos
12
Validações
4
Objetivo

Este laboratório ensina a instalar o OpenSSH Server em um Ubuntu Server, configurar autenticação por chave pública, limitar o acesso remoto, aplicar hardening básico e validar o funcionamento. O objetivo é garantir acesso remoto seguro, minimizando riscos comuns em ambientes de produção.

Topologia

Uma máquina Ubuntu Server (192.168.56.10) atuando como servidor SSH. Outra máquina (Ubuntu Desktop ou Windows com cliente SSH) na mesma rede privada (192.168.56.20), acessando remotamente o servidor via SSH.

┌───────────────┐        SSH        ┌───────────────┐
│ Cliente SSH   │ <--------------> │ Ubuntu Server │
│ 192.168.56.20 │                 │ 192.168.56.10 │
└───────────────┘                 └───────────────┘

Equipamentos e software

ItemRequisito, licença ou versão
Máquina virtual Ubuntu Server1 vCPU, 1 GB RAM, 1 interface de rede, Ubuntu Server 22.04 LTS ou superior
Máquina cliente (Ubuntu Desktop ou Windows)1 vCPU, 1 GB RAM, SSH client instalado
OpenSSHBSD · a versão estável atual
Ubuntu ServerGPLv2 e outras · 22.04 LTS

Roteiro

  1. Preparar o Ubuntu Server

    Garanta que o Ubuntu Server está instalado, atualizado e com acesso à rede. Isso minimiza falhas de dependências e vulnerabilidades conhecidas.

    sudo apt update && sudo apt upgrade -y

    O que você deve ver: Sistema atualizado, sem erros.

  2. Instalar o OpenSSH Server

    O OpenSSH é o padrão para acesso remoto seguro em servidores Linux. Instale o pacote.

    sudo apt install openssh-server -y

    O que você deve ver: Pacote openssh-server instalado.

  3. Verificar status do serviço SSH

    Confirme que o serviço está ativo e habilitado no boot.

    sudo systemctl status ssh

    O que você deve ver: Status: active (running)

  4. Criar um usuário administrativo dedicado

    Nunca use root direto em produção. Crie um usuário para administração remota.

    sudo adduser adminssh && sudo usermod -aG sudo adminssh

    O que você deve ver: Usuário adminssh criado e adicionado ao grupo sudo.

  5. Gerar par de chaves SSH no cliente

    A autenticação por chave é mais segura que senha. Gere um par de chaves no cliente.

    ssh-keygen -t ed25519 -C "adminssh@lab"

    O que você deve ver: Arquivo id_ed25519 e id_ed25519.pub criado em ~/.ssh/

  6. Copiar chave pública para o servidor

    A chave pública autoriza o acesso sem senha. Use ssh-copy-id.

    ssh-copy-id adminssh@192.168.56.10

    O que você deve ver: Mensagem de sucesso indicando que a chave foi copiada.

  7. Restringir login SSH apenas por chave

    Desative autenticação por senha para evitar ataques de força bruta. Edite o arquivo de configuração.

    sudo nano /etc/ssh/sshd_config

    O que você deve ver: Arquivo aberto para edição.

  8. Configurar parâmetros de segurança no SSH

    Altere ou adicione as linhas abaixo para reforçar a segurança.

    PermitRootLogin no
    PasswordAuthentication no
    AllowUsers adminssh
    MaxAuthTries 3

    O que você deve ver: Parâmetros salvos em /etc/ssh/sshd_config.

  9. Reiniciar o serviço SSH

    As alterações só têm efeito após reiniciar o serviço.

    sudo systemctl restart ssh

    O que você deve ver: Serviço ssh reiniciado sem erros.

  10. Testar acesso SSH com chave

    Valide que o acesso funciona apenas via chave e com o usuário permitido.

    ssh adminssh@192.168.56.10

    O que você deve ver: Acesso concedido sem pedir senha.

  11. Testar bloqueio de root e senha

    Tente acessar como root ou com senha para garantir que está bloqueado.

    ssh root@192.168.56.10

    O que você deve ver: Acesso negado.

  12. Revisar logs de autenticação

    Verifique os logs para identificar tentativas de acesso não autorizado.

    sudo tail /var/log/auth.log

    O que você deve ver: Registros de tentativas de login, sucesso ou falha.

Como saber que funcionou

TesteComandoCritério
Acesso SSH com chavessh adminssh@192.168.56.10Login sem senha, acesso ao shell do servidor.
Tentativa de login como rootssh root@192.168.56.10Acesso negado pelo servidor.
Tentativa de login com senhassh adminssh@192.168.56.10Acesso negado se não houver chave.
Verificar logs de acessosudo grep sshd /var/log/auth.logRegistros mostrando conexões e bloqueios.

Troubleshooting

SintomaCausa provávelCorreção
Não consegue conectar via SSHServiço SSH não está rodandoExecute 'sudo systemctl start ssh'
Acesso por senha ainda permitidoParâmetro PasswordAuthentication não está 'no' ou serviço não foi reiniciadoEdite o sshd_config e reinicie o serviço
Acesso root ainda permitidoPermitRootLogin não está definido corretamenteAjuste para 'PermitRootLogin no' e reinicie o SSH
Chave SSH não aceitaPermissões erradas no ~/.ssh ou authorized_keysAjuste permissões: 'chmod 700 ~/.ssh' e 'chmod 600 ~/.ssh/authorized_keys'
Múltiplas tentativas de login bloqueiam o acessoMaxAuthTries muito baixoAumente o valor em /etc/ssh/sshd_config se necessário

Segurança e hardening

  • Nunca permita login direto de root via SSH
  • Use autenticação por chave, nunca só senha
  • Restrinja usuários autorizados com AllowUsers
  • Monitore logs de autenticação regularmente
  • Mantenha o OpenSSH sempre atualizado

Checklist final

Referências

  1. Ubuntu Server Guide: OpenSSH
  2. OpenSSH Manual