01 - Servidor Apache
video: https://youtu.be/... no frontmatter da nota.Servidor Web Apache
1. Definição e Posicionamento Histórico
O Servidor Web Apache (Apache HTTP Server) é um dos softwares mais influentes e maduros da história da Internet. Mantido pela Apache Software Foundation (ASF), o "httpd" foi o servidor dominante por décadas e permanece como a escolha de referência para infraestruturas que exigem máxima flexibilidade, uma vasta biblioteca de módulos e suporte para configurações descentralizadas. Operando sob uma arquitetura modular robusta, o Apache é capaz de servir desde sites estáticos simples até complexas aplicações corporativas integradas a bancos de dados e sistemas de autenticação legados.
Baseado no código do NCSA HTTPd (1995), o Apache foi criado por um coletivo de administradores que aplicavam "patches" ao servidor original — daí o nome "A Patchy Server", posteriormente formalizado como Apache. Sua adoção explodiu na década de 1990 com a popularização da Web, atingindo ~60% de mercado no ano 2000. Hoje mantém cerca de 28% do mercado global, perdendo apenas para o NGINX em cenários de alto tráfego.
Cronologia de Versões
| Versão | Lançamento | Destaque |
|---|---|---|
| 1.3 | 1998 | Suporte a módulos dinâmicos (DSO) |
| 2.0 | 2002 | Novo sistema de MPMs, suporte IPv6 |
| 2.2 | 2005 | mod_proxy_http aprimorado, SSL nativo |
| 2.4 | 2012 | MPM Event estável, suporte HTTP/2 |
| 2.4.x | Em curso | Patch de segurança contínuo, OCSP stapling |
2. Arquitetura MPM (Multi-Processing Modules)
Diferente de servidores baseados em eventos puros, o Apache permite que o administrador escolha como o servidor deve gerenciar conexões e processos.
MPM Prefork (Process-based)
Cada requisição é atendida por um processo individual. É a escolha mais estável para aplicações que não são seguras para threads (como o PHP clássico via mod_php), isolando falhas de um processo dos demais. No entanto, consome muita memória RAM em alta carga (~2-10 MB por processo).
MPM Worker (Hybrid)
Utiliza uma mistura de múltiplos processos, onde cada processo gerencia múltiplas threads. É mais eficiente que o Prefork, mas exige que as bibliotecas da aplicação sejam Thread-Safe. Recomendado para Python (mod_wsgi) e Ruby (Passenger).
MPM Event (Evolução Moderna)
O modelo mais performático do Apache hoje. Ele é similar ao Worker, mas dedica threads específicas para conexões persistentes (Keep-Alive), liberando recursos rapidamente para novas requisições.
Comparativo de Performance
| MPM | Conexões Simultâneas | Memória por Conexão | Thread-Safe Necessário |
|---|---|---|---|
| Prefork | Baixa (~256) | ~2-8 MB | Não |
| Worker | Média (~1024) | ~256 KB-1 MB | Sim |
| Event | Alta (~10000) | ~64-256 KB | Sim |
3. O Poder do Sistema de Módulos (mod_*)
A flexibilidade do Apache reside na sua capacidade de estender funcionalidades através de módulos carregáveis (DSO - Dynamic Shared Object).
Módulos Essenciais
| Módulo | Função | Caso de Uso Típico |
|---|---|---|
mod_rewrite |
Manipulação de URLs | SEO, URLs amigáveis, redirects |
mod_ssl / mod_md |
TLS e renovação automática | Let's Encrypt, certs corporativos |
mod_proxy |
Proxy reverso e forward | Encaminhar para NodeJS, Python |
mod_security |
WAF (firewall de aplicação) | Bloqueio SQLi, XSS, LFI |
mod_evasive |
Anti-DoS | Limitar requisições por IP |
mod_deflate / mod_brotli |
Compressão de respostas | Reduzir banda em texto |
mod_expires |
Cache-Control | Assets estáticos com TTL |
mod_status |
Server-status | Monitoramento em tempo real |
Exemplo de Configuração de Módulo
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
4. Configuração Descentralizada: O Arquivo .htaccess
Uma das características únicas do Apache é permitir que usuários sem acesso administrativo ao servidor (root) alterem configurações de suas pastas através de arquivos .htaccess.
- Flexibilidade: Permite definir regras de segurança, redirecionamentos e caching em nível de diretório.
- Impacto em Performance: O uso excessivo de
.htaccesspode reduzir a velocidade do servidor, pois o Apache deve procurar por esses arquivos em cada subpasta para cada requisição recebida. - Recomendação: Em servidores dedicados, desativar
.htaccessviaAllowOverride Nonee colocar todas as regras nohttpd.confmelhora performance em até 30%.
Diretivas de Controle de Acesso com .htaccess
# Bloquear acesso a arquivos sensíveis
<FilesMatch "^\.">
Require all denied
</FilesMatch>
# Proteger contra hotlinking de imagens
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?meusite\.com/ [NC]
RewriteRule \.(gif|jpg|png)$ - [F]
5. Perspectiva de Cyber Security e Hardening no Apache
ModSecurity (Web Application Firewall - WAF)
O mod_security é o WAF de código aberto mais respeitado do mercado. Ele atua como um filtro entre a Internet e a aplicação, detectando e bloqueando ataques de SQL Injection, Cross-Site Scripting (XSS) e LFI (Local File Inclusion) em tempo real através de regras de assinatura (CRS - Core Rule Set da OWASP).
ModEvasive (Mitigação de DoS)
O mod_evasive monitora padrões de tráfego anônomos. Se um único IP enviar requisições excessivas em um curto intervalo de tempo, o módulo bloqueia temporariamente o atacante (retornando erro 403), protegendo o servidor de ataques de força bruta e DoS de baixa intensidade.
Hardening Checklist
# Ocultar versão do Apache e do SO
ServerTokens Prod
ServerSignature Off
# Desabilitar acesso ao filesystem raiz
<Directory />
Require all denied
Options None
AllowOverride None
</Directory>
# Limitar tamanho de requisição (mitigação de DoS)
LimitRequestBody 10485760
Timeout 45
KeepAliveTimeout 5
# SSL/TLS Hardening
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder on
6. Auditoria Técnica e Diagnóstico de Apache
Administrar o Apache exige o domínio de ferramentas de controle e consulta:
# Verificando a sintaxe dos arquivos de configuração antes de reiniciar
sudo apache2ctl configtest
# Listando todos os módulos carregados no servidor atual
sudo apache2ctl -M
sudo apachectl -M | grep -i ssl
# Recarregando configuração sem derrubar conexões (graceful)
sudo apache2ctl graceful
# Monitorando logs em formato detalhado para identificar IPs agressores
tail -f /var/log/apache2/other_vhosts_access.log
# Stress test com Apache Bench (ab)
ab -n 10000 -c 100 https://www.exemplo.com/
7. VirtualHost: Gerindo Múltiplos Domínios
O Apache brilha na gestão de múltiplos sites através do conceito de VirtualHost. Cada site possui seu próprio arquivo de configuração isolado (geralmente em sites-available/), permitindo que cada domínio tenha seus próprios caminhos de log, certificados SSL e permissões de diretório independentes.
Exemplo de VirtualHost com SSL
<VirtualHost *:443>
ServerName www.empresa.com
ServerAlias empresa.com
DocumentRoot /var/www/empresa/public
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/empresa.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/empresa.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/empresa.com/chain.pem
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
ErrorLog ${APACHE_LOG_DIR}/empresa_error.log
CustomLog ${APACHE_LOG_DIR}/empresa_access.log combined
</VirtualHost>
8. Conclusão: O Servidor de Referência Mundial
O Apache HTTP Server continua sendo o alicerce de milhões de servidores ao redor do globo. Sua arquitetura modular, somada ao poder do .htaccess e à robustez do mod_security, torna-o a escolha ideal para ambientes que prezam pela compatibilidade e personalização extrema. Dominar a gestão de MPMs, entender as regras de reescrita e endurecer a configuração com WAFs garante que a infraestrutura Apache seja não apenas funcional, mas inabalável frente às ameaças da web moderna.