Hardening de Servidor Linux: Checklist para Servidor Web
Seu site roda em VPS própria e ninguém é sysadmin? O checklist que aplicamos em todo servidor herdado, com as armadilhas que tiram seu acesso.
por Cleverson Gouvêa

Hardening de servidor linux é o trabalho de reduzir tudo o que um servidor exposto à internet oferece a um atacante: portas, serviços, usuários, versões antigas e permissões sobrando. Se a sua empresa roda site, loja ou sistema em VPS própria e ninguém da equipe é sysadmin, este checklist mostra o que fazer, em que ordem, o que não fazer e quanto custa manter.
TL;DR
- Em 2026, explorar vulnerabilidade virou a principal porta de entrada em violações de dados: 31% dos acessos iniciais no Verizon DBIR 2026, contra 20% no ano anterior. Servidor desatualizado é o alvo mais barato.
- A ordem que funciona: inventário e backup → SSH → firewall → atualizações → PHP e servidor web → banco → logs e monitoramento.
- Várias versões populares já saíram de suporte: PHP 8.1 (31/12/2025), MySQL 8.0 (abril/2026), Debian 11 (31/08/2026). O PHP 8.2 recebe só correção de segurança até 31/12/2026.
- As armadilhas mais caras são silenciosas: o Docker ignora o UFW, o fail2ban atrás da Cloudflare bane a própria Cloudflare e, no Ubuntu 24.04, mudar a porta no sshd_config não muda nada.
- O hardening de servidor linux não é tarefa de um dia: é rotina mensal. Se ninguém na empresa vai fazer essa rotina, contrate quem faça.
Escrevo como desenvolvedor full stack e fundador da Agathas Web, empresa que opera servidores Linux desde 2008. Sustento ambientes Moodle de instituições de ensino, sites e sistemas de clientes em hospedagem gerenciada e a infraestrutura do Voyia, nossa plataforma de atendimento sobre a API oficial do WhatsApp. O checklist de hardening de servidor linux abaixo é o mesmo que aplicamos quando herdamos um servidor.
O que é hardening de servidor linux e por que ficou urgente em 2026
Um servidor recém-criado numa nuvem qualquer vem configurado para funcionar, não para resistir. Aceita login por senha, deixa serviços escutando em todas as interfaces e confia que alguém vai aplicar as atualizações. Hardening de servidor linux é o processo de desligar o que sobra e endurecer o que fica.
O motivo da urgência está nos números. Segundo o Verizon Data Breach Investigations Report 2026, a exploração de vulnerabilidades passou a responder por 31% dos acessos iniciais em violações, à frente de phishing e de credenciais roubadas. O mesmo relatório mostra que as organizações levam uma mediana de 43 dias para corrigir uma falha que já está sendo explorada, e só 26% delas ficam totalmente corrigidas.
Traduzindo para a realidade de uma empresa com um servidor web: sem hardening de servidor linux e rotina de patch, o atacante não precisa escolher você. Ele varre a internet atrás de uma versão vulnerável e entra onde encontrar a porta aberta.
O caso que melhor ilustra isso é o regreSSHion (CVE-2024-6387). Em julho de 2024, a Qualys divulgou uma falha no OpenSSH que permitia execução remota de código como root, sem autenticação, em sistemas Linux com glibc. Afetava as versões 8.5p1 a 9.7p1 e a empresa estimou mais de 14 milhões de instâncias expostas potencialmente vulneráveis. Quem tinha rotina de atualização corrigiu em dias. Quem não tinha, ficou exposto por meses.
Por isso o hardening de servidor linux não é um projeto com começo, meio e fim. É uma configuração inicial bem feita somada a uma rotina que nunca para. Na nossa hospedagem gerenciada, a meta contratual é aplicar patch crítico em até 72 horas após a publicação da CVE — e é essa rotina, não a configuração do primeiro dia, que separa servidor seguro de servidor que foi seguro um dia.
Antes de começar: inventário, backup e acesso de emergência
O erro mais comum de quem faz hardening de servidor linux pela primeira vez é começar pelo SSH e trancar a si mesmo do lado de fora. Antes de mexer em qualquer coisa, garanta três coisas.
1. Um caminho de volta
- Console de emergência do provedor (KVM, console web, "rescue mode"). Teste antes. Se você errar a regra do firewall, é por ali que entra.
- Snapshot do disco tirado imediatamente antes das mudanças. Em VPS custa centavos e desfaz um erro em minutos.
- Uma segunda sessão SSH aberta enquanto altera configuração de acesso. Só feche depois de testar o login numa terceira.
2. Um inventário honesto
Rode ss -tulpn e anote cada serviço escutando. Em servidor herdado, o padrão que mais encontramos é banco de dados escutando em 0.0.0.0, painel de administração esquecido e um serviço de teste que ninguém lembra de ter instalado. Cada item dessa lista precisa de um dono e de um motivo para existir.
3. Quando NÃO aplicar hardening agora
- Sem backup testado. Endurecer um servidor sem restauração garantida troca um risco por outro.
- Na véspera de lançamento, matrícula ou Black Friday. Mudança de segurança tem janela, igual deploy.
- Com script pronto da internet rodado às cegas. Benchmarks como o CIS são referência excelente, mas aplicar todos os itens de uma vez quebra aplicação. Aplique por blocos e teste entre eles.
- Em sistema operacional fora de suporte. Se o servidor roda Ubuntu 20.04 ou Debian 11, o hardening certo é migrar para uma versão suportada, não remendar a antiga.
SSH e usuários: quem entra e como entra
O SSH abre o hardening de servidor linux porque é a porta da frente. É também a primeira coisa que robôs testam, minutos depois de um IP novo aparecer na internet.
O mínimo obrigatório
- Login só por chave.
PasswordAuthentication noeKbdInteractiveAuthentication nonosshd_config. Use chaves ed25519, uma por pessoa, nunca compartilhadas. - Root não entra direto.
PermitRootLogin no. Cada pessoa usa o próprio usuário e sobe privilégio comsudo, o que deixa rastro de quem fez o quê. - Só quem precisa.
AllowUsersouAllowGroupslimita quem pode logar, mesmo que outra conta exista no sistema. - fail2ban para bloquear IPs que insistem em errar. Não substitui a chave, mas tira ruído dos logs e trava ataques de força bruta em outros serviços.
- Desligue contas de quem saiu. Ex-fornecedor com chave ainda autorizada no
authorized_keysé mais comum do que parece.
Armadilha: mudar a porta do SSH no Ubuntu 24.04
Trocar a porta 22 por outra reduz ruído nos logs, mas não é proteção real — um scanner encontra a nova porta em segundos. E há um detalhe que pega muita gente: desde o Ubuntu 22.10, o SSH usa ativação por socket do systemd. No Ubuntu 24.04, alterar Port no sshd_config passa na validação e é simplesmente ignorado, porque quem escuta a porta é o ssh.socket. É preciso ajustar o socket e rodar systemctl daemon-reload. Se o firewall já foi fechado para a porta antiga, é aqui que a pessoa perde o acesso.
Usuários e permissões no sistema
A regra é privilégio mínimo. O processo do servidor web (www-data, nginx ou apache) não pode ser dono dos arquivos da aplicação: se for, qualquer falha no código permite reescrever o próprio código. Deixe o código com um usuário de deploy e dê ao servidor web escrita apenas nas pastas que precisam de escrita, como uploads e cache. No Moodle, por exemplo, o moodledata deve ficar fora da pasta pública, com escrita só para o processo PHP.
Firewall: feche tudo e abra só o necessário
O firewall no hardening de servidor linux segue uma política simples: negar tudo por padrão e liberar só o que o negócio exige. Em geral, isso significa 80 e 443 para o mundo e SSH apenas para IPs conhecidos ou via VPN.
No Ubuntu, o UFW resolve bem: ufw default deny incoming, ufw allow 443/tcp, ufw allow from <seu-ip> to any port 22. Banco de dados, Redis e painéis internos não aparecem nessa lista. Eles escutam em 127.0.0.1 ou numa rede privada.
Armadilha 1: o Docker passa por cima do UFW
Se você roda containers, saiba que ao publicar uma porta com -p 8080:80 o Docker escreve as próprias regras de iptables, que o tráfego percorre antes das regras do UFW. Resultado: um ufw deny 8080 não bloqueia nada. A documentação oficial do Docker explica o comportamento. A correção mais simples é publicar só em localhost (-p 127.0.0.1:8080:80) e deixar o proxy reverso falar com o container.
Armadilha 2: fail2ban atrás da Cloudflare
Com um proxy como a Cloudflare na frente, o servidor enxerga o IP da Cloudflare, não o do visitante. Um fail2ban lendo o log do Nginx sem configurar o IP real vai banir endereços da própria Cloudflare — e derrubar clientes legítimos junto com o atacante. Configure o módulo de IP real com as faixas oficiais da Cloudflare antes de ligar qualquer regra de bloqueio baseada em log.
O que não dá para fechar no firewall
Algumas integrações exigem endpoint público. O webhook da API oficial do WhatsApp é um exemplo que operamos todo dia no Voyia: a Meta precisa chegar ao seu servidor. Aqui a proteção sai do firewall e vai para a aplicação: validar a assinatura X-Hub-Signature-256 de cada requisição, aplicar rate limit e rejeitar o que não for assinado. Com o WAF da Cloudflare na frente, ainda dá para barrar bots e picos antes de chegarem ao servidor.
Atualizações: sistema operacional, PHP e banco de dados
É o item com maior retorno e o mais abandonado do hardening de servidor linux em empresas sem sysadmin. A tabela abaixo mostra por que a versão importa tanto quanto a configuração.
| Componente | Situação em setembro de 2026 | O que fazer |
|---|---|---|
| Ubuntu 20.04 LTS | Suporte padrão encerrado em 31/05/2025 (só ESM pago) | Migrar para 24.04 LTS |
| Ubuntu 22.04 LTS | Suporte padrão até abril de 2027 | Planejar migração para 2027 |
| Debian 11 | LTS encerrado em 31/08/2026 | Migrar já |
| Debian 12 | Em LTS até 30/06/2028 | Suportado, planejar Debian 13 |
| PHP 8.1 | Fim de vida em 31/12/2025 | Atualizar a aplicação |
| PHP 8.2 | Só segurança, até 31/12/2026 | Migrar antes do fim do ano |
| MySQL 8.0 | Fim de vida em abril de 2026 | Migrar para 8.4 LTS |
Fontes: ciclo de lançamentos do Ubuntu, anúncio do fim do Debian 11 LTS e versões suportadas do PHP.
Atualização automática: ligue, mas entenda o limite
No Ubuntu, o unattended-upgrades vem ativo e aplica apenas atualizações de segurança uma vez por dia. É uma boa base. O limite: ele não reinicia o servidor por padrão. Correção de kernel e de bibliotecas como glibc e OpenSSL só vale depois do reboot ou do restart dos serviços. Verifique o arquivo /var/run/reboot-required e agende reinícios numa janela combinada.
Quando NÃO atualizar sozinho
Em hardening de servidor linux vale uma regra: upgrade de versão maior — PHP 8.1 para 8.3, MySQL 8.0 para 8.4, Ubuntu 22.04 para 24.04 — nunca deve ser automático. Plugin, extensão ou código antigo quebra. O caminho seguro é subir um servidor novo em paralelo, validar em staging e virar a chave, como descrevemos no guia para migrar Moodle de servidor sem perder dados. Vale para qualquer sistema, não só para o Moodle.
PHP e servidor web: o que a aplicação expõe
Boa parte das invasões em sites PHP não entra pelo sistema operacional: entra pelo código, por um plugin desatualizado ou por um upload mal validado. O hardening de servidor linux não conserta código ruim, mas limita o estrago.
Configurações de PHP que valem sempre
expose_php = Offedisplay_errors = Offem produção. Mensagem de erro na tela entrega caminho de arquivo, versão e às vezes credencial.allow_url_include = Off. Não há motivo moderno para incluir código por URL.- Um pool PHP-FPM por aplicação, cada um com seu usuário. Se um site cair, o vizinho não cai junto.
- Bloquear execução de PHP na pasta de uploads. É por ali que entra o arquivo
.phpdisfarçado de imagem. open_basedirrestringindo o PHP às pastas da própria aplicação.
Cuidado com o disable_functions copiado da internet
Listas prontas que desligam exec, shell_exec e proc_open aparecem em todo tutorial. Funcionam em site institucional simples, mas quebram recursos reais: o Moodle, por exemplo, chama binários externos para tarefas como conversão de documentos e cálculo de uso de disco. Ajuste a lista à aplicação, não o contrário. Os requisitos, custos e erros da hospedagem Moodle mostram como a stack desse tipo de sistema pede configuração específica.
No servidor web
Remova a assinatura de versão (server_tokens off no Nginx), force HTTPS com HSTS, desligue a listagem de diretórios e bloqueie o acesso a arquivos sensíveis como .env, .git e backups .sql esquecidos na raiz. Certificado SSL renovado automaticamente pelo Let's Encrypt elimina o susto do site "não seguro" numa segunda-feira.
Banco de dados: fora da internet, sempre
Não existe motivo para um MySQL, MariaDB ou PostgreSQL de site ou sistema empresarial aceitar conexão da internet. Mesmo assim, banco exposto é um dos achados mais frequentes quando fazemos hardening de servidor linux em ambiente herdado.
O checklist do banco
- Escutar só em 127.0.0.1 ou na rede privada (
bind-addressno MySQL/MariaDB,listen_addressesno PostgreSQL). - Um usuário por aplicação, com permissão só no próprio banco. A aplicação não usa root do banco.
- Senhas fortes e fora do código versionado. Credencial em repositório Git é credencial vazada.
- Acesso administrativo por túnel SSH, nunca abrindo a porta 3306 "só por um dia".
- Remover usuários anônimos e bancos de teste que algumas instalações criam.
- Backup do banco separado do backup de arquivos, com dump consistente e cópia fora do servidor.
Redis e similares
Redis sem senha escutando em interface pública é um convite. Ele foi desenhado para rede confiável. Deixe em localhost, ative autenticação e desligue comandos perigosos que a aplicação não usa.
Logs, monitoramento e backup: o hardening que prova que funcionou
Um servidor endurecido e sem monitoramento é um servidor em que você só descobre o problema pelo cliente. Esta etapa fecha o ciclo do hardening de servidor linux e mostra se as outras funcionaram.
- Logs centralizados e retidos. Autenticação (
/var/log/auth.logoujournalctl), servidor web e aplicação. Se o servidor for comprometido, log só local pode ser apagado. - Alerta que chega em alguém. Uptime externo, disco acima de 85%, CPU travada, erro 500 em série, login SSH de IP novo. Alerta que vai para um e-mail que ninguém lê não é alerta.
- Backup 3-2-1, criptografado e testado. Três cópias, duas mídias, uma fora do servidor. E a parte que quase ninguém faz: restaurar de verdade, todo mês, num ambiente de teste. Backup que nunca foi restaurado é uma hipótese.
Checklist resumido e esforço estimado
| Etapa | Esforço inicial | Rotina |
|---|---|---|
| Inventário, snapshot e acesso de emergência | 1 a 2 h | A cada mudança grande |
| SSH e usuários | 1 h | Revisão trimestral de chaves |
| Firewall e WAF | 1 a 3 h | A cada serviço novo |
| Atualizações e reboots | 1 h de configuração | Semanal, com janela |
| PHP e servidor web | 2 a 4 h | A cada nova aplicação |
| Banco de dados | 1 a 2 h | Revisão trimestral |
| Logs, alertas e backup testado | 3 a 6 h | Mensal (teste de restore) |
As horas acima são a nossa estimativa de hardening de servidor linux para um servidor web típico com uma ou duas aplicações, feito por quem já conhece o caminho. Para quem está aprendendo, multiplique por três. E o custo real não é o dia da configuração: é a rotina que precisa acontecer toda semana, por anos, sem que ninguém esqueça.
É aqui que a conta muda para quem não tem sysadmin. Contratar um profissional sênior em tempo integral para cuidar de um ou dois servidores raramente se paga. Deixar a rotina com o desenvolvedor da aplicação costuma funcionar até o primeiro mês corrido. Comparamos custo de operar sozinho e terceirizar, com números, em Moodle na AWS vs hospedagem gerenciada — o raciocínio vale para qualquer sistema.
Como a Agathas Web resolve isso
Tudo o que está neste checklist de hardening de servidor linux faz parte do padrão da nossa hospedagem gerenciada. Não é um pacote extra: é o ponto de partida de todo ambiente que assumimos.
O que está incluso
- Hardening do sistema operacional na entrega, com fail2ban, MFA obrigatório e auditoria de logs.
- Cloudflare WAF com regras customizadas, mitigação de DDoS e bloqueio de bots.
- Atualizações de sistema, runtime (PHP, Node, Python), banco e plugins críticos, testadas em staging e aplicadas em janela combinada. Patch crítico em até 72 horas após a CVE pública, em contrato.
- Backup diário e incremental, offsite e criptografado com AES-256, com restore testado mensalmente.
- Monitoramento 24/7 com Grafana, Prometheus, Sentry e UptimeRobot, e alertas no WhatsApp da equipe técnica.
- SSL Let's Encrypt renovado automaticamente em todos os domínios.
- SLA contratual: 99,9% de uptime, resposta em até 15 minutos para incidente crítico e resolução em até 2 horas.
Como funciona na prática
Começamos com um diagnóstico gratuito da infraestrutura atual: em até 3 dias úteis apontamos riscos, versões fora de suporte e custo otimizado. Se fizer sentido seguir, migramos site, banco, e-mails e DNS em até 7 dias úteis, com validação em staging antes da virada e o ambiente antigo mantido por 30 dias como plano de rollback. Quem atende o seu chamado é o mesmo engenheiro que configurou o servidor.
Quanto custa e como contratar
Sites institucionais e blogs ficam entre R$ 250 e R$ 500 por mês; e-commerce e SaaS, entre R$ 600 e R$ 2.500 por mês. O setup inicial vai de R$ 800 a R$ 3.500, conforme a complexidade. O contrato é mensal, sem fidelidade, com 30 dias de aviso para cancelar. Se a sua empresa também precisa de alguém para decidir arquitetura e prioridades de TI, a consultoria com atuação de CTO as a Service complementa a operação.
Conclusão: o checklist só funciona se alguém rodar todo mês
O hardening de servidor linux começa com um dia de configuração e continua com anos de disciplina. Chave no lugar de senha, firewall negando por padrão, banco fora da internet, versões suportadas, logs e backup testado. Nada disso é secreto. O que falta na maioria das empresas é alguém com tempo e responsabilidade para manter a rotina.
Se você tem o servidor e não tem esse alguém, o próximo passo é simples: peça o diagnóstico gratuito da hospedagem gerenciada da Agathas Web. Você recebe o retrato do risco atual do seu servidor e decide, com números na mão, se vale fazer sozinho ou deixar com quem já faz isso todo dia.
Perguntas frequentes
O que é hardening de servidor Linux?
É o conjunto de configurações que reduz a superfície de ataque de um servidor exposto à internet. Na prática: login SSH só por chave e sem root, firewall negando tudo por padrão, banco de dados escutando apenas localmente, sistema operacional e PHP em versões com suporte, permissões mínimas para cada usuário e logs com alerta. Não é um programa que se instala, e sim uma sequência de ajustes feitos em ordem, com backup e acesso de emergência garantidos antes. A parte que mais pesa não é a configuração inicial, e sim a rotina de atualização e revisão que precisa continuar todo mês.
Mudar a porta do SSH deixa o servidor mais seguro?
Pouco. Tirar o SSH da porta 22 reduz o volume de tentativas automáticas nos logs, mas um scanner encontra a porta nova em segundos. O que protege de verdade é desativar o login por senha, bloquear o root, limitar quais usuários podem entrar e, se possível, liberar o SSH só para IPs conhecidos ou VPN. No Ubuntu 22.10 em diante, inclusive o 24.04, o SSH usa ativação por socket do systemd: alterar apenas o sshd_config não muda a porta, e quem fecha o firewall antes de ajustar o ssh.socket pode perder o acesso ao servidor.
Posso ligar a atualização automática no servidor de produção?
Para correções de segurança, sim. No Ubuntu o unattended-upgrades já vem ativo e aplica só pacotes de segurança uma vez por dia, o que é uma base boa. Dois cuidados: ele não reinicia o servidor por padrão, então correções de kernel, glibc e OpenSSL ficam pendentes até um reboot planejado; e upgrades de versão maior, como PHP 8.1 para 8.3 ou MySQL 8.0 para 8.4, nunca devem ser automáticos. Esses exigem teste em staging, porque plugins e código antigo costumam quebrar.
Quanto custa fazer o hardening de um servidor web?
A configuração inicial de um servidor web típico, com uma ou duas aplicações, leva de 10 a 20 horas de um profissional experiente, somando inventário, SSH, firewall, PHP, banco, logs e backup testado. O custo maior vem depois: a rotina semanal de patches, a revisão de acessos e o teste mensal de restauração. Na hospedagem gerenciada da Agathas Web, o hardening e essa rotina estão inclusos, com planos a partir de R$ 250 por mês para sites institucionais e setup inicial entre R$ 800 e R$ 3.500, conforme a complexidade do ambiente.
Meu servidor roda Ubuntu 20.04 ou Debian 11. Ainda dá para endurecer?
Dá para aplicar os ajustes, mas o esforço tem prazo de validade curto. O Ubuntu 20.04 saiu do suporte padrão em 31 de maio de 2025 e só recebe correções pelo ESM pago do Ubuntu Pro; o Debian 11 encerrou o LTS em 31 de agosto de 2026. Sem correção de segurança do sistema, qualquer falha nova fica aberta para sempre. O caminho recomendado é subir um servidor novo em versão suportada, como Ubuntu 24.04 ou Debian 12, aplicar o hardening nele, validar a aplicação em staging e migrar com plano de rollback.
Posts relacionados

WordPress Invadido: o Que Fazer nas Primeiras 24 Horas
O site redireciona para cassino e o Google exibe alerta vermelho. Veja o que fazer hora a hora antes que a invasão vire semanas de prejuízo.

Sistema Próprio ou SaaS: Como Decidir sem se Arrepender
Mensalidade barata hoje, reajuste de dois dígitos amanhã. Veja a conta de 5 anos que separa o SaaS certo do sistema que se paga.

Quanto Custa Desenvolver um Aplicativo iOS e Android em 2026
Faixas de preço reais, o que encarece um app, as regras novas da Apple e do Google em 2026 e quanto reservar por ano de manutenção.