10 min de leitura · Guia técnico
Configurar acesso SSH apenas para IPs específicos é uma medida essencial de segurança que restringe conexões remotas a endereços autorizados. Para implementar essa proteção no Ubuntu 22.04, siga estes passos:
- Faça backup da configuração atual do SSH
- Configure restrições no arquivo /etc/ssh/sshd_config
- Implemente regras de firewall com iptables
- Teste as configurações antes de aplicar permanentemente
- Reinicie o serviço SSH para ativar as mudanças
- Configure persistência das regras de firewall
Pré-requisitos
- Servidor Ubuntu 22.04 LTS com acesso root ou sudo
- Acesso físico ou console VNC/KVM como backup de emergência
- Lista dos IPs autorizados para conexão SSH
- Conhecimento básico de linha de comando Linux
- Cliente SSH configurado para teste das conexões
Método 1: Configuração via arquivo sshd_config
A primeira abordagem para restringir SSH por IP específico utiliza as diretivas nativas do OpenSSH. Este método oferece controle granular sobre quais usuários podem conectar de quais endereços.
Primeiro, crie um backup da configuração atual:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
Abra o arquivo de configuração do SSH:
sudo nano /etc/ssh/sshd_config
Adicione as seguintes diretivas ao final do arquivo para permitir apenas IPs específicos:
# Permitir apenas IPs específicos
AllowUsers [email protected]
AllowUsers [email protected]
AllowUsers [email protected]
# Negar todos os outros
DenyUsers *
Para permitir uma faixa de IPs, use a diretiva Match:
Match Address 192.168.1.0/24
AllowUsers usuario admin
Match Address !192.168.1.0/24
DenyUsers *
Teste a configuração antes de aplicar:
sudo sshd -t
Output esperado se a configuração estiver correta:
# Sem output indica configuração válida
Reinicie o serviço SSH para aplicar as mudanças:
sudo systemctl restart ssh
Método 2: Implementação com iptables para máxima segurança
O iptables oferece controle mais robusto sobre conexões SSH, permitindo bloqueio completo da porta 22 exceto para IPs autorizados. Esta abordagem funciona independentemente da configuração do SSH.
Primeiro, verifique as regras atuais do iptables:
sudo iptables -L -n
Crie regras para permitir SSH apenas de IPs específicos:
# Permitir SSH do IP específico
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
# Permitir SSH de uma faixa de IPs
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
# Bloquear SSH de todos os outros IPs
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
Para múltiplos IPs específicos, adicione uma regra para cada:
sudo iptables -A INPUT -p tcp -s 203.0.113.50 --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -s 10.0.0.5 --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
Verifique se as regras foram aplicadas corretamente:
sudo iptables -L INPUT -n --line-numbers
Output esperado mostrando as regras ativas:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 192.168.1.100 0.0.0.0/0 tcp dpt:22
2 ACCEPT tcp -- 192.168.1.0/24 0.0.0.0/0 tcp dpt:22
3 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Configuração de persistência das regras iptables
Por padrão, as regras do iptables são temporárias e desaparecem após reinicialização. Para torná-las permanentes no Ubuntu 22.04, instale o pacote iptables-persistent:
sudo apt update
sudo apt install iptables-persistent
Durante a instalação, escolha "Yes" para salvar as regras atuais. Para salvar regras manualmente posteriormente:
sudo iptables-save > /etc/iptables/rules.v4
Para restaurar as regras após modificações:
sudo iptables-restore < /etc/iptables/rules.v4
Verifique se o serviço está ativo para carregar regras automaticamente:
sudo systemctl enable netfilter-persistent
sudo systemctl status netfilter-persistent
Combinando autenticação por chave SSH com restrição de IP
Para máxima segurança, combine a restrição por IP com autenticação por chave SSH. Esta configuração implementa segurança em camadas, exigindo tanto IP autorizado quanto chave válida.
Primeiro, desabilite autenticação por senha no arquivo sshd_config:
sudo nano /etc/ssh/sshd_config
Adicione ou modifique estas linhas:
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Configure as chaves SSH autorizadas para o usuário:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
Adicione sua chave pública ao arquivo authorized_keys e defina permissões corretas:
chmod 600 ~/.ssh/authorized_keys
Teste a conexão SSH com chave antes de reiniciar o serviço:
ssh -i /caminho/para/chave_privada usuario@IP_SERVIDOR
Reinicie o SSH para aplicar todas as configurações:
sudo systemctl restart ssh
Problemas comuns e como resolver
Sintoma: Bloqueio completo do acesso SSH após aplicar regras
Causa: Configuração incorreta das regras ou IP próprio não incluído na lista de autorizados.
Solução: Acesse via console físico ou VNC, remova as regras com sudo iptables -F ou restaure o backup do sshd_config. Sempre teste com uma segunda sessão SSH ativa antes de aplicar mudanças definitivas.
Sintoma: Regras do iptables não persistem após reboot
Causa: Pacote iptables-persistent não instalado ou regras não salvas corretamente.
Solução: Instale o iptables-persistent com sudo apt install iptables-persistent e salve as regras com sudo iptables-save > /etc/iptables/rules.v4. Verifique se o serviço netfilter-persistent está habilitado.
Sintoma: SSH funciona localmente mas falha remotamente
Causa: Regras de firewall bloqueando conexões externas ou configuração de rede incorreta.
Solução: Verifique se o IP externo real está na lista de autorizados usando curl ifconfig.me para descobrir seu IP público. Confirme que não há outros firewalls (como UFW) interferindo com as regras do iptables.
Sintoma: Erro "Permission denied" mesmo com IP autorizado
Causa: Configuração incorreta do AllowUsers ou problemas com chaves SSH.
Solução: Verifique a sintaxe do AllowUsers no sshd_config, confirme que o usuário existe no sistema e teste a configuração com sudo sshd -t. Para autenticação por chave, verifique permissões do diretório .ssh (700) e arquivo authorized_keys (600).
Monitoramento e logs de acesso SSH
Após configurar as restrições de IP, é importante monitorar tentativas de acesso para identificar possíveis ataques. O Ubuntu 22.04 registra eventos SSH no arquivo /var/log/auth.log.
Para visualizar tentativas de conexão SSH em tempo real:
sudo tail -f /var/log/auth.log | grep ssh
Para analisar tentativas de acesso negadas:
sudo grep "Failed password" /var/log/auth.log | tail -20
Configure alertas automáticos para tentativas de acesso suspeitas instalando o fail2ban:
sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
O fail2ban complementa as restrições de IP bloqueando automaticamente endereços que fazem múltiplas tentativas de login falhadas, oferecendo uma camada adicional de proteção contra ataques de força bruta.
Perguntas frequentes sobre configurar acesso SSH apenas para IPs específicos
Como permitir SSH apenas para um IP específico no Ubuntu?
Configure o arquivo /etc/ssh/sshd_config com a diretiva AllowUsers usuario@IP_AUTORIZADO ou use iptables para bloquear a porta 22 exceto para IPs específicos. Reinicie o serviço SSH após as alterações para aplicar as configurações.
É possível restringir SSH por faixa de IPs?
Sim, use a notação CIDR no iptables (exemplo: 192.168.1.0/24) ou configure múltiplas entradas AllowUsers no sshd_config. O iptables oferece mais flexibilidade para ranges de IPs e permite configurações mais granulares.
O que acontece se eu me bloquear do SSH?
Você perderá acesso remoto ao servidor. Por isso é essencial ter acesso físico ou console VNC/KVM antes de aplicar restrições. Sempre teste as regras com uma segunda sessão SSH ativa antes de torná-las permanentes.
Posso combinar restrição por IP e autenticação por chave?
Sim, é uma prática recomendada de segurança em camadas. Configure primeiro a restrição por IP, depois desabilite autenticação por senha e use apenas chaves SSH para máxima proteção contra acessos não autorizados.
As regras do iptables persistem após reinicialização?
Não, por padrão as regras do iptables são temporárias. Use iptables-persistent ou salve as regras em /etc/iptables/rules.v4 para mantê-las após reboot do sistema. O serviço netfilter-persistent carrega as regras automaticamente na inicialização.
Conclusão
A configuração de acesso SSH restrito por IP no Ubuntu 22.04 é uma medida fundamental de segurança que deve ser implementada em todos os servidores expostos à internet. A combinação de métodos - configuração do sshd_config e regras de iptables - oferece proteção robusta contra acessos não autorizados.
- Sempre mantenha acesso de emergência via console antes de aplicar restrições SSH
- Combine restrição por IP com autenticação por chave SSH para segurança máxima
- Configure monitoramento de logs e fail2ban para detectar tentativas de acesso suspeitas
Leia também
- Instalando painel de gerenciamento de hospedagem VirtualMin.
- Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular
- Como acessar o painel de gerenciamento dos meus Serviços.
Precisa de ajuda com segurança SSH no seu servidor?
A AviraHost oferece servidores VPS Linux com Ubuntu 22.04 pré-configurados e suporte especializado para implementação de medidas de segurança avançadas. Nossa equipe pode auxiliar na configuração adequada de firewalls e políticas de acesso SSH.