Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

04 - Servidor Web

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Servidor Web

O Servidor Web (Web Server) é o componente central da inteligência e do armazenamento no ecossistema HTTP. Trata-se do computador ou processo de software (Servidor de Origem) responsável por hospedar os recursos digitais (HTML, imagens, vídeos, scripts) e entregá-los de forma eficiente e segura aos Clientes Web em todo o mundo. Operando sob o modelo Request-Response, o servidor web é a entidade técnica que interpreta as intenções do usuário e as traduz em acessos a arquivos físicos ou execuções de lógica de backend.


1. Arquitetura de Processamento do Servidor

Diferentes servidores web adotam filosofias distintas para lidar com a carga massiva de milhões de usuários simultâneos.

  • Process-Based (Baseado em Processos): Como o Apache (MPM Prefork). Cada nova conexão gera um novo processo ou thread. É estável e isolado, mas pesado em termos de consumo de memória RAM (cada worker ocupa ~5–8 MB).
  • Thread-Based (Baseado em Threads): Como o Apache (MPM Worker). Cada conexão consome uma thread, mais leve que um processo (~1–2 MB). Suporta milhares de conexões simultâneas por máquina.
  • Event-Driven (Baseado em Eventos): Como o Nginx e o NodeJS. Utiliza um loop de eventos único para gerenciar milhares de conexões simultaneamente com baixíssimo consumo de recursos (cerca de 100 KB por conexão ociosa). É a escolha ideal para conteúdos estáticos e proxies reversos de alta performance.

Comparativo de Modelos de Concorrência

Modelo RAM por Conexão Conexões por Núcleo Latência sob Carga Exemplos
Process 5–8 MB 100–200 Alta Apache Prefork
Thread 1–2 MB 1.000–2.000 Média Apache Worker, IIS
Event 100 KB 10.000–100.000 Baixa Nginx, Node.js, Caddy

2. Conteúdo Estático vs Dinâmico

O servidor web atua como um coordenador de diferentes fluxos de dados.

  • Serviço Estático: O servidor simplesmente localiza um arquivo no disco rígido e o envia diretamente via HTTP. É extremamente rápido e eficiente em termos de caching, sendo otimizado por técnicas como sendfile (cópia direta via syscall do kernel, evitando cópias para o userspace) e mmap (mapeamento do arquivo na memória virtual).
  • Serviço Dinâmico: O servidor delega a requisição para um motor de execução (ex: PHP-FPM, Python/Django, Ruby on Rails, Node.js) através de protocolos como o FastCGI ou SCGI. O conteúdo é gerado em tempo real, frequentemente interagindo com bancos de dados, antes de ser encapsulado em uma resposta HTTP.

Ciclo de Vida de uma Requisição Dinâmica

Cliente → Reverse Proxy (Nginx) → FastCGI → PHP-FPM Worker → MySQL
   ←        (gzip, cache)          ←          ←                 ←

Em stack modernas (ex.: Node.js), o servidor web é o próprio processo de aplicação, eliminando a camada FastCGI mas exigindo que a aplicação cuide do gerenciamento de conexões e cache.


3. Hospedagem Virtual (Virtual Hosting)

Uma das maiores inovações técnicas do servidor web foi a capacidade de hospedar milhares de sites diferentes em um único endereço IP físico.

  • Name-Based Virtual Hosting: O servidor utiliza o cabeçalho Host da requisição HTTP/1.1 para decidir em qual diretória (VirtualHost) deve procurar o arquivo, permitindo uma economia massiva de endereços IPv4.
  • IP-Based Virtual Hosting: Cada site recebe um IP distinto. Necessário para TLS com certificados legados (pré-SNI) e para alguns casos regulatórios.
  • Port-Based Virtual Hosting: Diferentes sites em diferentes portas TCP na mesma máquina. Raramente usado em produção.

Exemplo Apache (Name-Based)

<VirtualHost *:80>
    ServerName www.site1.com.br
    DocumentRoot /var/www/site1
</VirtualHost>

<VirtualHost *:80>
    ServerName www.site2.com.br
    DocumentRoot /var/www/site2
</VirtualHost>

Exemplo Nginx

server {
    listen 80;
    server_name www.site1.com.br;
    root /var/www/site1;
}

server {
    listen 80;
    server_name www.site2.com.br;
    root /var/www/site2;
}

4. Perspectiva de Cyber Security: Protegendo o Núcleo

O servidor web é a porta de entrada para a rede corporativa e, por isso, deve ser rigorosamente protegido através de técnicas de Hardening.

Vazamento de Informações (Banner Grabbing)

Por padrão, muitos servidores expõem sua versão exata (ex: Apache/2.4.41) no cabeçalho Server. Atacantes utilizam isso para buscar exploits específicos. A desativação desses metadados é o primeiro passo para a segurança.

  • Apache: ServerTokens Prod e ServerSignature Off no httpd.conf.
  • Nginx: server_tokens off; no nginx.conf.

Ataques de Negação de Serviço (DoS/DDoS)

Servidores web são vulneráveis a ataques de exaustão de conexões (ex: Slowloris), onde o atacante abre milhares de conexões e envia dados de forma extremamente lenta, ocupando todos os slots do servidor e impedindo o acesso de usuários legítimos. A mitigação exige o uso de Reverse Proxies e limites de tempo de espera (Timeout) rigorosos.

Directory Traversal (Travessia de Diretório)

Uma vulnerabilidade onde o atacante tenta acessar arquivos fora do diretório raiz do site (ex: GET /../../etc/passwd). Configurações de permissões em nível de sistema operacional (como chroot) e ACLs no servidor web são vitais para mitigar este risco.

OWASP Top 10 e Servidor Web

Vulnerabilidade OWASP Mitigação no Servidor Web
Injection (SQLi, XSS) WAF (ModSecurity), validação
Broken Authentication Headers HSTS, cookies HttpOnly
Sensitive Data Exposure TLS 1.3, perfect forward secrecy
XXE Desabilitar entidade externa XML
Broken Access Control Chroot, ACLs, SELinux

5. Módulos e Extensões

Servidores web modernos são modulares, permitindo adicionar funcionalidades sem recompilar:

Apache HTTP Server

  • mod_ssl: TLS/SSL.
  • mod_rewrite: reescrita de URLs (essencial para WordPress).
  • mod_security: Web Application Firewall.
  • mod_deflate: compressão gzip.
  • mod_cache / mod_disk_cache: cache de respostas.
  • mod_evasive: mitigação básica de DDoS.

Nginx

  • Nginx é mais rígido: módulos devem ser compilados estaticamente ou via módulos dinâmicos (desde 1.9.11).
  • Módulos comuns: ngx_http_ssl_module, ngx_http_v2_module, ngx_http_v3_module (HTTP/3).

IIS (Microsoft)

  • Extensões via Web Platform Installer.
  • URL Rewrite Module, Application Request Routing (ARR).

6. Auditoria Técnica e Diagnóstico de Servidor

Validar a saúde e a configuração do servidor web é uma tarefa de rotina crítica:

# Verificando a presenca do cabecalho Server (Auditoria de Hardening)
curl -I https://www.meuservidor.com

# Testando a performance do servidor sob carga simulada
ab -n 1000 -c 10 http://www.meuservidor.com/index.html (Apache Benchmark)

# Testando com wrk (mais realista para alta concorrência)
wrk -t12 -c400 -d30s http://www.meuservidor.com/

# Verificando erros internos e acessos via logs (Standard Log Analysis)
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

# Estatisticas em tempo real com nginx_status
curl http://localhost/nginx_status

Métricas Essenciais de Observabilidade

Métrica Significado Alerta se
Requests per second (RPS) Throughput do servidor Queda > 50%
Response time p50, p95, p99 Latência p95 > 500 ms
Error rate (5xx) % de erros de servidor > 1%
Active connections Conexões simultâneas Próximo do limite worker
CPU / RAM do processo Recursos consumidos > 80% sustentado

7. O Papel do Proxy Reverso e Balanceamento de Carga

Em infraestruturas modernas, o servidor web "real" raramente lida diretamente com a Internet.

  • Terminação SSL: O proxy recebe o tráfego HTTPS (Porta 443), decifra e encaminha o tráfego limpo para o servidor de origem na rede interna, economizando CPU nos servidores de aplicação.
  • Load Balancing: Distribui as requisições entre uma fazenda de servidores (Server Farm), garantindo que nenhum servidor individual seja sobrecarregado.
  • Cache: O proxy pode armazenar respostas cacheáveis (ex.: imagens estáticas) e responder diretamente, sem consultar o backend.
  • Compression: Aplica gzip ou brotli na borda, reduzindo consumo de banda dos backends.

Algoritmos de Balanceamento

Algoritmo Funcionamento Indicação
Round Robin Distribuição circular Backends homogêneos
Least Connections Envia para quem tem menos conexões ativas Backends heterogêneos
IP Hash Mesmo cliente sempre vai para o mesmo backend Sticky sessions
Random Escolha aleatória Distribuição simples
Weighted Pesos por capacidade Backends com CPU distintas

8. Conclusão: O Guardião dos Recursos

O Servidor Web é o guardião final da presença digital de qualquer organização. De sua performance depende a velocidade da experiência do usuário, e de sua segurança depende a integridade dos dados da empresa. Compreender as diferenças arquiteturais entre Apache (process/thread) e Nginx (event-driven), gerenciar com precisão as permissões de diretório, implementar camadas de proxy reverso e CDN, e monitorar continuamente métricas de observabilidade são as bases para construir infraestruturas web resilientes, escaláveis e seguras no cenário dinâmico da internet global.