17 min de leitura · Guia técnico
Checklist para Segurança de VPS Linux é um conjunto de medidas essenciais para proteger seu servidor virtual contra ameaças cibernéticas. Um VPS Linux desprotegido pode ser comprometido em minutos após ser conectado à internet. Este guia completo apresenta as etapas fundamentais para fortalecer a segurança do seu servidor, desde a configuração inicial até o monitoramento contínuo.
Pré-requisitos
- Acesso root ou sudo ao seu VPS Linux
- Terminal SSH para conexão remota
- Conhecimentos básicos de linha de comando Linux
- Sistema operacional Linux (Ubuntu, Debian, CentOS ou similar)
- Backup recente do seu sistema antes de implementar mudanças
Atualizando o Sistema Operacional
A primeira e mais fundamental etapa na proteção do seu VPS Linux é manter o sistema operacional e todos os pacotes instalados atualizados. Vulnerabilidades de segurança são descobertas regularmente, e os desenvolvedores lançam patches para corrigi-las. Um sistema desatualizado é um alvo fácil para invasores.
Para sistemas baseados em Debian/Ubuntu:
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y
Para sistemas baseados em CentOS/RHEL:
sudo yum update -y
sudo yum autoremove -y
Após a execução desses comandos, você verá uma lista de pacotes atualizados e o sistema solicitará reinicializações quando necessário. É recomendável configurar atualizações automáticas para garantir que patches de segurança sejam aplicados regularmente.
Para configurar atualizações automáticas no Ubuntu/Debian:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
Para CentOS/RHEL:
sudo yum install yum-cron
sudo systemctl enable yum-cron
sudo systemctl start yum-cron
Fortalecendo a Segurança do SSH
O Secure Shell (SSH) é o principal método de acesso remoto ao seu VPS Linux, tornando-o um alvo prioritário para atacantes. Fortalecer a configuração SSH é crucial para a segurança do servidor. Vamos implementar várias camadas de proteção.
Primeiro, edite o arquivo de configuração SSH:
sudo nano /etc/ssh/sshd_config
Implemente as seguintes alterações:
- Altere a porta padrão (22) para um número não padrão entre 1024 e 65535:
# Altere a porta padrão Port 2222 - Desabilite o login direto como root:
# Impedir login direto como root PermitRootLogin no - Limite o número de tentativas de autenticação:
# Limitar tentativas de login MaxAuthTries 3 - Defina um tempo limite para sessões inativas:
# Tempo limite para sessões inativas ClientAliveInterval 300 ClientAliveCountMax 2 - Restrinja os usuários que podem acessar via SSH:
# Permitir apenas usuários específicos AllowUsers seu_usuario admin - Desabilite a autenticação por senha e use apenas chaves SSH:
# Usar apenas autenticação por chave PasswordAuthentication no PubkeyAuthentication yes
Após fazer essas alterações, reinicie o serviço SSH:
sudo systemctl restart sshd
Atenção: Antes de desabilitar a autenticação por senha, certifique-se de que sua chave SSH está configurada corretamente, ou você poderá perder o acesso ao servidor. Mantenha uma sessão SSH ativa enquanto testa as novas configurações.
Para configurar a autenticação por chave SSH:
- No seu computador local, gere um par de chaves SSH:
ssh-keygen -t ed25519 -C "[email protected]" - Copie a chave pública para o servidor:
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@seu_servidor - Teste o login com a chave antes de desabilitar senhas:
ssh -i ~/.ssh/id_ed25519 usuario@seu_servidor
Implementando um Firewall
Um firewall bem configurado é uma barreira essencial contra acessos não autorizados ao seu VPS Linux. O UFW (Uncomplicated Firewall) é uma interface amigável para o iptables, tornando a configuração do firewall mais simples.
Para instalar o UFW:
sudo apt install ufw
Configure regras básicas de firewall:
# Bloquear todas as conexões de entrada por padrão
sudo ufw default deny incoming
# Permitir todas as conexões de saída
sudo ufw default allow outgoing
# Permitir SSH (substitua 2222 pela porta SSH que você configurou)
sudo ufw allow 2222/tcp
# Se você estiver executando um servidor web
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Ativar o firewall
sudo ufw enable
Verifique o status do firewall:
sudo ufw status verbose
Output esperado:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
2222/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
2222/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
Para sistemas baseados em CentOS/RHEL, você pode usar firewalld:
sudo yum install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
# Configurar regras similares
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Instalando e Configurando Fail2ban
O Fail2ban é uma ferramenta de segurança que monitora logs de serviços e bloqueia temporariamente endereços IP que mostram comportamento malicioso, como múltiplas tentativas de login falhas. Esta proteção contra ataques de força bruta é essencial para qualquer VPS exposto à internet.
Para instalar o Fail2ban:
sudo apt install fail2ban
Crie um arquivo de configuração local para personalizar as configurações:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Configure a proteção básica para SSH:
[DEFAULT]
# Banir endereço IP por 1 hora (3600 segundos)
bantime = 3600
# Intervalo de tempo para considerar falhas (10 minutos)
findtime = 600
# Número de falhas antes de banir
maxretry = 3
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
Se você estiver executando outros serviços, como um servidor web, adicione configurações para eles também:
[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 5
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 5
Inicie e habilite o Fail2ban:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Verifique o status do Fail2ban:
sudo fail2ban-client status
Para verificar o status de uma "jail" específica:
sudo fail2ban-client status sshd
Configurando Usuários e Permissões
A gestão adequada de usuários e permissões é fundamental para a segurança do VPS Linux. O princípio do menor privilégio deve ser aplicado, garantindo que cada usuário tenha apenas as permissões necessárias para suas tarefas.
- Crie um usuário não-root com privilégios sudo:
sudo adduser nome_usuario sudo usermod -aG sudo nome_usuario - Configure senhas fortes para todos os usuários:
sudo passwd nome_usuario - Defina políticas de senha mais rigorosas editando o arquivo PAM:
Adicione ou modifique a linha para incluir requisitos de complexidade:sudo apt install libpam-pwquality sudo nano /etc/pam.d/common-passwordpassword requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 reject_username enforce_for_root - Revise e ajuste permissões de arquivos críticos:
sudo find /etc/ssh -type f -name "*.pub" -exec chmod 644 {} \; sudo find /etc/ssh -type f -name "id_*" -exec chmod 600 {} \; sudo chmod 700 /root sudo chmod 700 /home/*
Audite regularmente os usuários do sistema e remova contas desnecessárias:
sudo awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd
Para remover um usuário:
sudo deluser --remove-home nome_usuario
Implementando Ferramentas de Monitoramento e Detecção de Intrusões
O monitoramento contínuo é crucial para detectar e responder rapidamente a tentativas de invasão. Várias ferramentas podem ajudar a identificar atividades suspeitas no seu VPS Linux.
Instalando e Configurando o Rootkit Hunter (rkhunter)
O rkhunter verifica seu sistema em busca de rootkits, backdoors e possíveis exploits locais:
sudo apt install rkhunter
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
Configure verificações automáticas:
sudo nano /etc/default/rkhunter
Defina:
CRON_DAILY_RUN="yes"
CRON_DB_UPDATE="yes"
APT_AUTOGEN="yes"
Instalando e Configurando o ClamAV
O ClamAV é um antivírus de código aberto que pode detectar malware:
sudo apt install clamav clamav-daemon
sudo freshclam
sudo systemctl enable clamav-daemon
sudo systemctl start clamav-daemon
Configure verificações regulares:
sudo nano /etc/cron.daily/clamscan
Adicione:
#!/bin/bash
freshclam
clamscan -r /home /var/www /etc --move=/var/quarantine --log=/var/log/clamav/scan.log
Torne o script executável:
sudo chmod +x /etc/cron.daily/clamscan
sudo mkdir -p /var/quarantine
sudo mkdir -p /var/log/clamav
Configurando o AIDE (Advanced Intrusion Detection Environment)
O AIDE monitora alterações em arquivos do sistema para detectar modificações não autorizadas:
sudo apt install aide
sudo aideinit
A inicialização pode levar algum tempo. Após a conclusão, mova o banco de dados:
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Configure verificações diárias:
sudo nano /etc/cron.daily/aide
Adicione:
#!/bin/bash
/usr/bin/aide --check > /var/log/aide/aide.log
Torne o script executável:
sudo chmod +x /etc/cron.daily/aide
sudo mkdir -p /var/log/aide
Configurando o Logwatch
O Logwatch analisa logs do sistema e envia relatórios por e-mail:
sudo apt install logwatch
sudo nano /etc/cron.daily/00logwatch
Modifique para enviar relatórios para seu e-mail:
#!/bin/bash
/usr/sbin/logwatch --output mail --mailto [email protected] --detail high
Protegendo Serviços Web
Se você estiver executando serviços web no seu VPS Linux, é essencial implementar medidas de segurança adicionais para proteger suas aplicações e dados.
Configurando HTTPS com Let's Encrypt
O HTTPS é fundamental para proteger a comunicação entre seus usuários e o servidor:
sudo apt install certbot
# Para Apache
sudo apt install python3-certbot-apache
sudo certbot --apache -d seu-dominio.com -d www.seu-dominio.com
# Para Nginx
sudo apt install python3-certbot-nginx
sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
Configure a renovação automática de certificados:
sudo certbot renew --dry-run
Configurando ModSecurity (WAF)
O ModSecurity é um firewall de aplicação web (WAF) que protege contra ataques comuns:
Para Apache:
sudo apt install libapache2-mod-security2
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo nano /etc/modsecurity/modsecurity.conf
Altere:
SecRuleEngine DetectionOnly
Para:
SecRuleEngine On
Reinicie o Apache:
sudo systemctl restart apache2
Para Nginx:
sudo apt install nginx-extras
sudo nano /etc/nginx/nginx.conf
Adicione dentro do bloco http:
modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity/main.conf;
Reinicie o Nginx:
sudo systemctl restart nginx
Problemas comuns e como resolver
Sintoma: Bloqueio acidental por Fail2ban
Causa: Múltiplas tentativas de login com credenciais incorretas podem fazer com que seu próprio IP seja bloqueado pelo Fail2ban.
Solução: Adicione seu IP à lista de exceções editando /etc/fail2ban/jail.local e adicionando ignoreip = 127.0.0.1/8 seu_ip_aqui. Depois, reinicie o Fail2ban com sudo systemctl restart fail2ban.
Sintoma: Perda de acesso SSH após alterações na configuração
Causa: Erros na configuração do SSH, como alterar a porta ou desabilitar a autenticação por senha sem configurar corretamente as chaves SSH.
Solução: Acesse o console de emergência do VPS através do painel de controle do seu provedor. Reverta as alterações no arquivo /etc/ssh/sshd_config e reinicie o serviço SSH.
Sintoma: Servidor lento ou com alta carga de CPU/memória
Causa: Pode indicar um ataque em andamento, como DDoS, mineração de criptomoedas ou comprometimento do sistema.
Solução: Verifique processos suspeitos com htop ou ps aux | grep -i suspicious_term. Analise conexões de rede com netstat -tuln. Utilize ferramentas como lsof -i para identificar programas usando portas específicas. Em caso de comprometimento confirmado, considere restaurar de um backup limpo.
Sintoma: Arquivos modificados inesperadamente
Causa: Possível invasão do sistema ou malware que modificou arquivos críticos.
Solução: Execute verificações com AIDE (sudo aide --check) para identificar alterações não autorizadas. Compare os hashes de arquivos importantes com versões conhecidas. Isole o servidor da rede, faça backup dos dados e considere uma reinstalação limpa do sistema.
Sintoma: Alertas de tentativas de login de países estrangeiros
Causa: Bots automatizados varrem constantemente a internet em busca de servidores vulneráveis.
Solução: Implemente restrições geográficas com iptables ou módulos como GeoIP para o Nginx/Apache. Exemplo com iptables: sudo apt install xtables-addons-common && sudo iptables -A INPUT -m geoip --src-cc CN,RU -j DROP (bloqueia tráfego da China e Rússia).
Perguntas frequentes sobre checklist para segurança de VPS Linux
Qual é o primeiro passo para proteger um VPS Linux?
O primeiro passo é atualizar completamente o sistema operacional e todos os pacotes instalados. Execute 'apt update && apt upgrade -y' (Debian/Ubuntu) ou 'yum update -y' (CentOS/RHEL) para aplicar todas as correções de segurança disponíveis.
Como configurar corretamente o SSH para maior segurança?
Configure o SSH para maior segurança alterando a porta padrão (22), desabilitando o login root, implementando autenticação por chave pública em vez de senha, e limitando os usuários que podem acessar o servidor. Edite o arquivo /etc/ssh/sshd_config e reinicie o serviço após as alterações.
O que é Fail2ban e por que devo instalá-lo no meu VPS?
Fail2ban é uma ferramenta de segurança que monitora logs de serviços como SSH e automaticamente bloqueia endereços IP que mostram comportamento malicioso, como múltiplas tentativas de login falhas. Ele protege contra ataques de força bruta, reduzindo significativamente o risco de invasões.
Quais ferramentas de monitoramento devo usar para detectar invasões no meu VPS Linux?
Recomenda-se usar uma combinação de ferramentas como Logwatch para análise de logs, Rkhunter e ClamAV para detecção de rootkits e malware, e ferramentas de monitoramento de integridade como AIDE ou Tripwire para detectar alterações não autorizadas em arquivos do sistema.
Com que frequência devo verificar as atualizações de segurança no meu VPS Linux?
Você deve verificar e aplicar atualizações de segurança pelo menos uma vez por semana. O ideal é configurar atualizações automáticas para patches de segurança críticos usando ferramentas como unattended-upgrades no Ubuntu/Debian ou yum-cron no CentOS/RHEL, complementadas por verificações manuais regulares.
Conclusão
A segurança de um VPS Linux é um processo contínuo que requer vigilância constante e atualizações regulares. Seguindo este checklist completo, você estabeleceu uma base sólida para proteger seu servidor contra a maioria das ameaças comuns.
- Mantenha seu sistema sempre atualizado e configure atualizações automáticas para patches de segurança
- Implemente múltiplas camadas de proteção, incluindo firewall, Fail2ban e ferramentas de detecção de intrusão
- Realize auditorias de segurança regulares e monitore logs do sistema para identificar comportamentos suspeitos
Lembre-se de que a segurança é um equilíbrio entre proteção e usabilidade. Avalie regularmente suas configurações de segurança e ajuste-as conforme necessário para atender às necessidades específicas do seu ambiente.
Precisa de ajuda com a segurança do seu VPS Linux?
A AviraHost oferece servidores VPS Linux pré-configurados com medidas de segurança robustas e suporte técnico especializado para ajudar a proteger seu ambiente contra ameaças cibernéticas.