Introdução à Segurança SSH no VyOS
O VyOS é um sistema operacional de roteamento baseado em Debian Linux, amplamente utilizado por provedores de internet, empresas e entusiastas de redes para gerenciar infraestrutura de roteamento de alto nível. Por ser essencialmente um Linux com uma interface de configuração hierárquca (CLI), o VyOS herda os mesmos vetores de ataque que qualquer servidor Unix/Linux. O serviço SSH (Secure Shell) é, frequentemente, a porta de entrada primária para administração remota. Se mal configurado, ele se torna um alvo prioritário para bots de varredura global, scripts de força bruta e ataques de exploração de vulnerabilidades.
Neste tutorial técnico, detalhamos o processo de hardening (reforço de segurança) do serviço SSH no VyOS. O objetivo é migrar de uma autenticação baseada em senha — que é inerentemente fraca contra ataques de dicionário — para um modelo baseado em chaves criptográficas assimétricas, além de restringir o acesso a endereços IP específicos e desativar recursos desnecessários. Seguir estes passos garantirá que apenas administradores autorizados com chaves privadas válidas possam acessar o roteador, reduzindo drasticamente a superfície de ataque.
Atenção: Antes de iniciar qualquer modificação na configuração do VyOS, certifique-se de ter acesso físico ou console ao dispositivo. Caso bloqueie seu próprio acesso durante a configuração, a recuperação exigirá intervenção local via porta serial ou console. Recomendamos realizar estas alterações em um horário de manutenção planejado.
Etapa 1: Gerenciamento de Usuários e Grupos
No VyOS, os usuários não são criados isoladamente; eles devem pertencer a grupos que definem seus privilégios. Para fins de administração segura, é uma boa prática criar um usuário dedicado para o SSH em vez de usar a conta vyos ou root diretamente.
Comece entrando no modo de configuração do VyOS via terminal:
configure
Agora, vamos criar um novo usuário (substitua adminuser por um nome de usuário real) e adicioná-lo ao grupo sudo. O grupo sudo permite que o usuário execute comandos com privilégios de superusuário após a autenticação, mantendo o rastro de auditoria individual.
set system login user adminuser authentication encrypted-password 'SuaSenhaForte123!'
set system login user adminuser groups sudo level 10
É crucial definir uma senha forte como fallback, mesmo que o acesso por senha seja desativado posteriormente. Isso serve como medida de segurança caso a chave falhe ou para recuperação de emergência.
Etapa 2: Geração e Upload da Chave Pública SSH
A segurança robusta depende da qualidade da chave privada armazenada no seu computador cliente e da chave pública instalada no VyOS. Utilize o comando ssh-keygen em seu sistema operacional local (Linux, macOS ou Windows com WSL/OpenSSH).
Gere uma chave Ed25519, que é atualmente considerada superior em segurança e performance às chaves RSA para uso geral:
ssh-keygen -t ed25519 -C "admin@vyos-server"
O comando solicitará um local para salvar a chave (padrão: ~/.ssh/id_ed25519) e uma frase secreta (passphrase). Recomendamos fortemente o uso de uma passphrase. Isso adiciona uma segunda camada de proteção; mesmo que seu computador seja roubado, o atacante não poderá usar sua chave privada sem a senha.
Após gerar a chave, você precisará do conteúdo do arquivo .pub (o final público da chave). No Linux/macOS:
cat ~/.ssh/id_ed25519.pub
Copie toda a linha resultante. Agora, retorne ao terminal do VyOS e adicione essa chave pública ao perfil do usuário criado na Etapa 1:
set system login user adminuser authentication public-keys my-vyos-key key 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... (cole sua chave aqui)'
Note que o nome da chave (my-vyos-key) é um identificador local para você gerenciar múltiplas chaves no futuro. Certifique-se de remover espaços extras ao colar a chave.
Etapa 3: Configuração do Serviço SSH
Agora que o usuário e a chave estão configurados, precisamos instruir o daemon SSH do VyOS a aceitar conexões usando esse método. Por padrão, o VyOS pode estar configurado para aceitar senhas ou não ter o SSH habilitado em todas as interfaces.
set service ssh port '22'
set service ssh authentication public-key user adminuser
Se você desejar mudar a porta padrão do SSH (por exemplo, para 2222) como uma medida de segurança através da obscuridade (security through obscurity), altere a linha acima:
set service ssh port '2222'
Lembre-se: se mudar a porta, você precisará atualizar seu cliente SSH e as regras de firewall subsequentes. Para este tutorial, manteremos a porta padrão 22 para simplificar, mas o princípio é o mesmo.
Etapa 4: Restrição de Acesso via Firewall
A configuração do SSH está pronta, mas se deixarmos a porta aberta para a internet pública (WAN), seu roteador será varrido por bots em questão de minutos. A solução definitiva é restringir quem pode conectar ao serviço SSH através das regras de firewall.
O VyOS utiliza firewalls baseados em zonas e scripts. Vamos assumir que sua conexão WAN está na interface eth0 e sua LAN interna na eth1. Queremos permitir o SSH apenas da rede local (LAN) ou de um IP específico de administração.
Crie uma nova regra de firewall. No VyOS, isso é feito dentro da configuração do firewall:
set firewall name WAN_IN rule 50 description 'Allow SSH from Management LAN'
set firewall name WAN_IN rule 50 action 'accept'
set firewall name WAN_IN rule 50 destination port '22'
set firewall name WAN_IN rule 50 protocol 'tcp'
set firewall name WAN_IN rule 50 source address '192.168.1.0/24'
Neste exemplo, a regra 50 da zona WAN_IN (que controla o tráfego entrando na interface WAN) aceita pacotes TCP na porta 22 apenas se vierem do sub-rede 192.168.1.0/24. Se você tiver um IP fixo de escritório, substitua a rede por esse IP específico (ex: set firewall name WAN_IN rule 50 source address '10.0.0.5/32').
Se sua arquitetura for mais simples e você quiser liberar o SSH apenas para uma interface específica sem usar zonas complexas, você pode aplicar a regra diretamente na interface:
set interfaces ethernet eth0 firewall in name 'WAN_IN'
Dica de Segurança: Nunca exponha a porta SSH à internet pública sem um sistema de detecção de intrusão como o fail2ban ou um proxy reverso com autenticação. O VyOS não vem com fail2ban habilitado por padrão.
Etapa 5: Desabilitar Autenticação por Senha e Root Login
Com as chaves públicas instaladas e o firewall configurado, podemos agora endurecer a configuração do SSH para rejeitar qualquer tentativa de login que não use a chave. Isso elimina a vulnerabilidade de ataques de força bruta de senhas.
set service ssh authentication password-authentication 'disable'
set service ssh authentication public-key 'enable'
Além disso, é uma prática recomendada de segurança não permitir login direto como root. Isso força o administrador a logar com seu usuário pessoal e usar sudo quando necessário, criando um log auditável de quem executou comandos privilegiados.
set service ssh root-login 'disable'
Agora, mesmo que alguém tenha a senha do usuário root (o que não deve acontecer se você tiver boas práticas de senhas), ele não conseguirá entrar via SSH. Ele precisará logar como adminuser e executar sudo su -.
Etapa 6: Configurações Adicionais de Hardening
Para um nível avançado de segurança, considere ajustar os timeouts e a criptografia permitida. O VyOS geralmente vem com configurações razoáveis, mas é bom verificar.
Defina um tempo de inatividade para a sessão SSH para evitar sessões órfias que possam ser exploradas se o terminal for deixado aberto:
set service ssh login-timeout '60'
set service ssh client-alive-interval '300'
O login-timeout define quantos segundos o usuário tem para autenticar antes da conexão ser fechada. O client-alive-interval envia um pacote nulo ao cliente a cada 300 segundos (5 minutos) para verificar se a conexão ainda está viva.
Também é possível restringir os algoritmos de criptografia permitidos, forçando o uso de cifras modernas e descartando as antigas e inseguras (como AES-CBC antigo ou SHA1). No entanto, o VyOS moderno já tende a usar configurações seguras por padrão. Se precisar ajustar:
set service ssh ciphers 'chacha20-poly1305@openssh.com,aes256-gcm@openssh.com'
Etapa 7: Aplicar e Validar a Configuração
Após inserir todos os comandos acima, é hora de aplicar as mudanças. No VyOS, as configurações são salvas em memória e devem ser confirmadas.
commit
save
O comando commit valida a sintaxe e aplica as regras ativas. O save persiste a configuração no disco, garantindo que ela sobreviva a reinicializações.
Agora, teste a conexão. No seu computador cliente, tente conectar usando a chave privada:
ssh -i ~/.ssh/id_ed25519 adminuser@seu-vyos-ip
Se tudo estiver correto, você será solicitado pela passphrase da sua chave (se definida) e, em seguida, terá acesso ao prompt do VyOS. Se tentar conectar sem a chave ou tentar usar senha:
ssh adminuser@seu-vyos-ip
O servidor deve rejeitar imediatamente a conexão com uma mensagem como Permission denied (publickey). Isso confirma que o hardening foi bem-sucedido.
Conclusão e Boas Práticas Contínuas
A segurança de um roteador VyOS não é um evento único, mas um processo contínuo. Ao migrar para autenticação por chaves e restringir o acesso via firewall, você eliminou os vetores de ataque mais comuns contra dispositivos de rede.
Mantenha as seguintes práticas em mente:
- Rotação de Chaves: Revogue e regenere chaves periodicamente, especialmente se um funcionário sair da equipe ou se houver suspeita de comprometimento.
- Backups de Configuração: Certifique-se de ter backups externos da configuração do VyOS. Se você perder acesso acidentalmente, o backup facilita a restauração via consola.
- Atualizações: Mantenha o VyOS atualizado com os patches de segurança mais recentes através do repositório oficial. Vulnerabilidades zero-day em componentes base como OpenSSH podem comprometer toda a infraestrutura.
- Auditoria: Monitore os logs do sistema (
/var/log/auth.log) regularmente para detectar tentativas de login falhas, mesmo com o firewall ativo.
Seguir este guia estabelece uma linha de defesa sólida (Defense in Depth) para sua infraestrutura de rede, garantindo que o VyOS permaneça um componente confiável e seguro do seu ambiente corporativo ou residencial.