Poupe até 53% em Servidores VPS, escolha agora. Oferta limitada.

Checklist para configurar servidor web seguro usando apenas linha de comando

13 min de leitura  ·  Guia técnico

Checklist para configurar servidor web seguro usando apenas linha de comando é um conjunto de verificações essenciais para proteger servidores contra ataques e vulnerabilidades. Para configurar um servidor web seguro via terminal, siga estes passos:

  1. Alterar porta SSH padrão e desabilitar login root
  2. Configurar firewall UFW com regras restritivas
  3. Instalar e configurar fail2ban para proteção contra ataques
  4. Implementar certificado SSL Let's Encrypt
  5. Configurar backup automatizado e monitoramento
  6. Aplicar atualizações de segurança e hardening do sistema

Pré-requisitos

  • Servidor VPS ou dedicado com Ubuntu 22.04 LTS ou superior
  • Acesso root via SSH com credenciais válidas
  • Domínio apontado para o IP do servidor (para SSL)
  • Conhecimento básico de comandos Linux
  • Cliente SSH configurado (PuTTY, Terminal ou similar)

Configuração inicial de segurança SSH

A primeira etapa do checklist para configurar servidor web seguro envolve proteger o acesso SSH, que é o ponto de entrada mais visado por atacantes. Altere a porta padrão e desabilite login root direto para reduzir drasticamente tentativas de invasão automatizadas.

Edite o arquivo de configuração SSH:

sudo nano /etc/ssh/sshd_config

Localize e modifique as seguintes linhas:

Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Reinicie o serviço SSH para aplicar as alterações:

sudo systemctl restart sshd

Atenção: Antes de desconectar, teste a nova configuração em uma segunda sessão SSH para evitar bloqueio de acesso.

Configure autenticação por chave SSH para eliminar ataques de força bruta. Gere um par de chaves no cliente:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Copie a chave pública para o servidor:

ssh-copy-id -p 2222 usuario@ip-do-servidor

Implementação de firewall UFW

O firewall UFW (Uncomplicated Firewall) fornece proteção essencial bloqueando portas desnecessárias e permitindo apenas tráfego autorizado. Configure regras restritivas seguindo o princípio de menor privilégio.

Instale e ative o UFW:

sudo apt update
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing

Configure regras básicas para serviços essenciais:

sudo ufw allow 2222/tcp comment 'SSH custom port'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

Ative o firewall e verifique o status:

sudo ufw enable
sudo ufw status verbose

Output esperado:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
2222/tcp                   ALLOW IN    Anywhere                   # SSH custom port
80/tcp                     ALLOW IN    Anywhere                   # HTTP
443/tcp                    ALLOW IN    Anywhere                   # HTTPS

Configuração do fail2ban para proteção dinâmica

O fail2ban monitora logs em tempo real e bloqueia automaticamente IPs que fazem múltiplas tentativas de login falhadas. Esta proteção dinâmica complementa o firewall UFW contra ataques de força bruta.

Instale o fail2ban:

sudo apt install fail2ban -y

Crie arquivo de configuração personalizada:

sudo nano /etc/fail2ban/jail.local

Adicione a configuração básica:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
ignoreip = 127.0.0.1/8 ::1

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 2

[nginx-limit-req]
enabled = true
filter = nginx-limit-req
logpath = /var/log/nginx/error.log
maxretry = 2

Reinicie e verifique o status do fail2ban:

sudo systemctl restart fail2ban
sudo fail2ban-client status

Instalação de certificado SSL Let's Encrypt

O certificado SSL garante criptografia HTTPS e confiança dos usuários. O Let's Encrypt oferece certificados gratuitos com renovação automática via certbot.

Instale o certbot e o plugin do Nginx:

sudo apt install certbot python3-certbot-nginx -y

Configure o Nginx básico antes do SSL. Crie um arquivo de configuração:

sudo nano /etc/nginx/sites-available/default

Adicione a configuração mínima:

server {
    listen 80;
    server_name seu-dominio.com www.seu-dominio.com;
    
    location / {
        root /var/www/html;
        index index.html;
    }
}

Teste e recarregue o Nginx:

sudo nginx -t
sudo systemctl reload nginx

Obtenha o certificado SSL:

sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com

Teste a renovação automática:

sudo certbot renew --dry-run

Configuração de backup automatizado

Backups regulares protegem contra perda de dados e facilitam recuperação após incidentes de segurança. Configure scripts automatizados para backup de arquivos e bancos de dados.

Crie diretório para scripts de backup:

sudo mkdir -p /opt/backup/scripts
sudo mkdir -p /opt/backup/files

Crie script de backup básico:

sudo nano /opt/backup/scripts/backup-daily.sh

Adicione o conteúdo do script:

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/opt/backup/files"

# Backup de arquivos web
tar -czf $BACKUP_DIR/web_$DATE.tar.gz /var/www/

# Backup de configurações
tar -czf $BACKUP_DIR/config_$DATE.tar.gz /etc/nginx/ /etc/ssl/

# Remover backups antigos (manter 7 dias)
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete

echo "Backup concluído: $DATE" >> /var/log/backup.log

Torne o script executável:

sudo chmod +x /opt/backup/scripts/backup-daily.sh

Configure cron para execução automática:

sudo crontab -e

Adicione a linha para backup diário às 2h:

0 2 * * * /opt/backup/scripts/backup-daily.sh

Hardening do sistema e atualizações

O hardening remove serviços desnecessários e aplica configurações de segurança avançadas. Mantenha o sistema atualizado para corrigir vulnerabilidades conhecidas.

Configure atualizações automáticas de segurança:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

Desabilite serviços desnecessários:

sudo systemctl disable bluetooth
sudo systemctl disable cups
sudo systemctl disable avahi-daemon

Configure limites de recursos no sistema:

sudo nano /etc/security/limits.conf

Adicione as linhas:

* soft nofile 65536
* hard nofile 65536
* soft nproc 32768
* hard nproc 32768

Configure parâmetros de kernel para segurança:

sudo nano /etc/sysctl.conf

Adicione configurações de segurança:

# Proteção contra IP spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Desabilitar redirecionamentos ICMP
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# Proteção contra SYN flood
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048

Aplique as configurações:

sudo sysctl -p

Monitoramento e verificação de segurança

Implemente monitoramento contínuo para detectar atividades suspeitas e verificar a efetividade das configurações de segurança. Use ferramentas de linha de comando para análise regular.

Instale ferramentas de monitoramento:

sudo apt install htop iotop nethogs nmap -y

Crie script de verificação de segurança:

sudo nano /opt/backup/scripts/security-check.sh

Adicione verificações automatizadas:

#!/bin/bash
echo "=== Verificação de Segurança - $(date) ===" >> /var/log/security-check.log

# Verificar portas abertas
echo "Portas abertas:" >> /var/log/security-check.log
ss -tuln >> /var/log/security-check.log

# Status do fail2ban
echo "Status fail2ban:" >> /var/log/security-check.log
fail2ban-client status >> /var/log/security-check.log

# Últimos logins
echo "Últimos logins:" >> /var/log/security-check.log
last -n 10 >> /var/log/security-check.log

# Processos suspeitos
echo "Processos com alta CPU:" >> /var/log/security-check.log
ps aux --sort=-%cpu | head -10 >> /var/log/security-check.log

Configure execução semanal do script:

sudo chmod +x /opt/backup/scripts/security-check.sh
echo "0 6 * * 1 /opt/backup/scripts/security-check.sh" | sudo crontab -

Para verificação manual de segurança, execute scan de portas:

nmap -sS -O localhost

Monitore conexões ativas:

netstat -tuln | grep LISTEN

Problemas comuns e como resolver

SSH não conecta após mudança de porta

Causa: Firewall bloqueando nova porta SSH ou configuração incorreta no sshd_config.
Solução: Verifique se a porta está liberada no UFW com sudo ufw status e teste a configuração SSH com sudo sshd -t antes de reiniciar o serviço.

Certificado SSL não renova automaticamente

Causa: Cron do certbot não configurado ou falha na validação do domínio.
Solução: Execute sudo certbot renew --dry-run para testar. Verifique se o domínio aponta corretamente para o servidor e se a porta 80 está acessível.

Fail2ban não bloqueia ataques SSH

Causa: Configuração incorreta da porta SSH no jail.local ou logs não encontrados.
Solução: Verifique se a porta no arquivo /etc/fail2ban/jail.local corresponde à porta SSH configurada. Confirme o caminho dos logs com sudo fail2ban-client get sshd logpath.

Backup automatizado falha silenciosamente

Causa: Permissões insuficientes ou espaço em disco esgotado.
Solução: Verifique permissões do diretório de backup com ls -la /opt/backup/ e espaço disponível com df -h. Adicione logs detalhados ao script de backup.

Firewall UFW bloqueia serviços necessários

Causa: Regras muito restritivas ou ordem incorreta das regras.
Solução: Liste regras ativas com sudo ufw status numbered e adicione exceções específicas. Use sudo ufw insert 1 allow from IP_CONFIAVEL para IPs específicos.

Perguntas frequentes sobre checklist para configurar servidor web seguro

Qual a primeira configuração de segurança que devo fazer em um servidor web novo?

A primeira configuração deve ser alterar a porta padrão do SSH (22) e desabilitar login root direto. Isso reduz drasticamente tentativas de ataques automatizados. Configure também autenticação por chave SSH para eliminar ataques de força bruta.

É necessário configurar firewall mesmo em servidor com poucos acessos?

Sim, o firewall é essencial independente do volume de tráfego. Servidores expostos na internet recebem milhares de tentativas de invasão diariamente. O UFW bloqueia automaticamente portas desnecessárias e permite apenas tráfego autorizado.

Como verificar se meu servidor web está realmente seguro após as configurações?

Execute verificações regulares com nmap para portas abertas, analise logs do fail2ban para tentativas bloqueadas e monitore processos com htop. Teste também acesso SSH de IP externo para confirmar que apenas conexões autorizadas funcionam.

Preciso renovar certificado SSL Let's Encrypt manualmente?

Não, o certbot configura renovação automática via cron. Execute 'certbot renew --dry-run' para testar o processo. A renovação acontece automaticamente 30 dias antes do vencimento, garantindo que seu site nunca fique sem HTTPS válido.

Qual a diferença entre fail2ban e firewall UFW na proteção do servidor?

O UFW controla quais portas ficam abertas ou fechadas permanentemente. O fail2ban monitora logs em tempo real e bloqueia IPs que fazem muitas tentativas de login falhadas. Ambos trabalham juntos: UFW como barreira inicial e fail2ban como proteção dinâmica contra ataques.

Conclusão

Implementar este checklist para configurar servidor web seguro via linha de comando estabelece múltiplas camadas de proteção contra ameaças comuns. A combinação de SSH hardening, firewall UFW, fail2ban e certificados SSL cria uma base sólida de segurança.

  • Execute verificações regulares de segurança usando os scripts automatizados
  • Mantenha backups atualizados e teste a restauração periodicamente
  • Monitore logs do sistema para identificar tentativas de invasão

Para configurações mais avançadas, considere implementar otimizações específicas de performance e explore configurações avançadas para hospedagem de sites.

Leia também

Precisa de ajuda com configuração de servidor seguro?

Nossa equipe especializada pode auxiliar na implementação completa deste checklist de segurança. Oferecemos suporte técnico especializado para configuração e manutenção de servidores VPS com foco em segurança e performance.

Conheça nossos planos de VPS Linux otimizados

  • 0 Os usuários acharam isso útil
  • servidor-web, seguranca, linux, ssh, firewall, ssl, hardening, AviraHost
Esta resposta foi útil?

Artigos Relacionados

Instalando painel de gerenciamento de hospedagem VirtualMin.

O virtualmin é um painel de gerenciamento de hospedagem de sites gratuito, que é suportado por...

Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular

1. Pelo menu Iniciar, acesse os “Acessórios do Windows” e abra o “Conexão de Área de Trabalho...

Como acessar o painel de gerenciamento dos meus Serviços.

Para acessar o painel de gerenciamento do seu serviço basta seguir o passo á passo abaixo.   1....

Compreendendo o Servidor VPS: O que é e Como Funciona!

Um servidor VPS (Virtual Private Server) é uma solução de hospedagem na qual um servidor físico é...

Como trocar a senha do usuário root do servidor VPS ou Dedicado.

Para trocar a senha do usuário root em um servidor VPS da AviraHost, você pode seguir os...