Princípios de Segurança Aplicados¶
A segurança é uma preocupação primordial em qualquer servidor, especialmente um que pode expor serviços à internet. Esta arquitetura foi projetada com vários princípios e camadas de segurança em mente.
Defesa em Camadas (Defense in Depth)¶
A estratégia de segurança aqui não depende de uma única solução, mas de múltiplas camadas de proteção. Se uma camada falhar ou for contornada, outras ainda estarão em vigor.
graph TD
subgraph Externa
Internet[Internet]
end
subgraph Camada_Cloudflare [1. Perímetro Cloudflare]
CF_Firewall[WAF/DDoS Protection]
CF_Tunnel_Endpoint[Cloudflare Tunnel Endpoint]
end
subgraph Camada_Rede_Local_Segura [2. Rede Local Segura (Sem Portas Abertas)]
Roteador[Roteador Doméstico (Firewall Ativo)]
CFT_Agent[cloudflared Agent (Conexão de Saída)]
end
subgraph Camada_Proxy_Autenticacao [3. Proxy Reverso e Autenticação (core-services-vm)]
Traefik[Traefik (HTTPS, Roteamento)]
Authelia[Authelia (2FA)]
end
subgraph Camada_Host_Proxmox [4. Segurança do Hypervisor]
PVE_Firewall[Proxmox VE Firewall]
SSH_Hardening_Host[SSH Hardening (Host)]
ZFS_Integrity[ZFS (Integridade de Dados)]
end
subgraph Camada_VM [5. Segurança das Máquinas Virtuais]
UFW_VM[UFW Firewall (VMs)]
Atualizacoes_VM[Atualizações SO VM]
User_Isolation_VM[Isolamento de Usuários (VMs)]
end
subgraph Camada_Container_Aplicacao [6. Segurança de Containers e Aplicações]
Docker_Isolation[Isolamento de Containers]
MinPriv_Container[Princípio Menor Privilégio (PUID/PGID)]
App_Passwords[Senhas Fortes de Aplicação]
App_Updates[Atualizações de Imagens/Apps Docker]
end
Internet --> CF_Firewall
CF_Firewall --> CF_Tunnel_Endpoint
CF_Tunnel_Endpoint -.-> CFT_Agent
CFT_Agent --> Traefik
Traefik <--> Authelia
Traefik --> Camada_Container_Aplicacao
Proxmox --> PVE_Firewall
Proxmox --> SSH_Hardening_Host
Proxmox --> ZFS_Integrity
Proxmox -- Hospeda --> Camada_VM
Camada_VM -- Contém --> Camada_Proxy_Autenticacao
Camada_VM -- Contém --> Camada_Container_Aplicacao
Camada_VM --> UFW_VM
Camada_VM --> Atualizacoes_VM
Camada_VM --> User_Isolation_VM
-
Camada de Perímetro (Cloudflare):
- Ocultação de IP: Seu IP doméstico não é exposto publicamente.
- Proteção DDoS: Cloudflare absorve ataques DDoS em sua borda.
- Web Application Firewall (WAF): Regras básicas do WAF da Cloudflare podem bloquear tráfego malicioso comum.
- Cloudflare Tunnel: Garante que apenas tráfego autenticado e roteado pela Cloudflare chegue à sua rede interna via uma conexão de saída segura. Nenhuma porta de entrada precisa ser aberta no seu roteador.
-
Camada de Proxy Reverso e Autenticação (na
core-services-vm):- Traefik:
- Força HTTPS para todo o tráfego externo.
- Gerencia certificados SSL/TLS automaticamente via Let's Encrypt.
- Atua como um único ponto de entrada, dificultando o acesso direto aos containers de aplicação.
- Authelia:
- Fornece autenticação forte (usuário/senha + 2FA) para todos os serviços configurados.
- Protege contra ataques de força bruta nas credenciais.
- Oferece um portal de login centralizado.
- Traefik:
-
Camada de Segurança do Host Proxmox VE:
- Proxmox VE Firewall (PVE Firewall): Configurado para
DROPpor padrão no tráfego de entrada, permitindo apenas SSH e a UI web do Proxmox a partir de CIDRs específicos da sua rede local. - SSH Hardening no Host Proxmox:
- Login como
rootvia SSH desabilitado (apenasprohibit-password). - Autenticação por senha desabilitada (
PasswordAuthentication no), forçando o uso de chaves SSH.
- Login como
- Atualizações Regulares do Host: Manter o Proxmox VE e o Debian subjacente atualizados.
- Proxmox VE Firewall (PVE Firewall): Configurado para
-
Camada de Segurança das Máquinas Virtuais (VMs):
- UFW (Uncomplicated Firewall): Habilitado nas VMs (
core-services-vmeai-desktop-vmse tiver GUI) para controlar o tráfego de entrada para as próprias VMs, permitindo apenas as portas necessárias (e.g., 80/443 para Traefik, 22 para SSH, 9100 para Node Exporter). - Atualizações Automáticas (
unattended-upgrades): Configuradas nas VMs Ubuntu para aplicar patches de segurança automaticamente. - Isolamento: As VMs são naturalmente isoladas umas das outras e do host pelo hypervisor.
- UFW (Uncomplicated Firewall): Habilitado nas VMs (
-
Camada de Segurança de Containers e Aplicações:
- Isolamento de Containers Docker: Docker fornece isolamento entre containers.
- Princípio do Menor Privilégio para Containers:
- Muitos containers (especialmente os da linuxserver.io) são configurados para rodar com um usuário não-root dentro do container, usando as variáveis de ambiente
PUID(User ID) ePGID(Group ID). - Esses
PUID/PGIDcorrespondem ao usuáriodockerusere grupodockergroupcriados nas VMs, que por sua vez são os "donos" dos arquivos nos volumes NFS devido às opções deanonuid/anongidno export NFS.
- Muitos containers (especialmente os da linuxserver.io) são configurados para rodar com um usuário não-root dentro do container, usando as variáveis de ambiente
- Senhas Fortes para Aplicações: Usar senhas únicas e fortes para as contas de administrador de cada aplicação (Nextcloud, Grafana, etc.).
- Atualizações de Imagens Docker: Usar Watchtower (ou um processo manual regular) para manter as imagens Docker atualizadas para suas versões mais recentes e seguras.
security_opt: [no-new-privileges:true]: Usado em algunsdocker-compose.ymlpara impedir que um container ganhe mais privilégios.
Gerenciamento de Segredos¶
- Ansible Vault: Todas as senhas, tokens de API e outros dados sensíveis usados pela automação Ansible são armazenados de forma criptografada no arquivo
ansible/inventories/home/group_vars/all/vault.yml. - Secrets no Portainer: Senhas específicas de aplicações que não são gerenciadas diretamente pelo Ansible (como
PLEX_CLAIM_TOKEN) são adicionadas como variáveis de ambiente diretamente na UI do Portainer ao implantar uma stack.
Resiliência de Dados e Backups¶
Embora não seja estritamente um princípio de segurança contra intrusão, a capacidade de recuperar dados após uma falha (de hardware, software, ou mesmo um ataque de ransomware) é uma parte crucial da postura geral de segurança e disponibilidade.
- ZFS: Oferece integridade de dados, snapshots e RAID para o pool
/data. - Estratégia de Backup 3-2-1: Implementada para configurações do Proxmox, VMs e dados de aplicações (detalhada na Seção de Manutenção e Recuperação).
A segurança é um processo contínuo, não um estado final. É importante manter-se informado sobre novas vulnerabilidades, revisar suas configurações periodicamente e adaptar suas defesas conforme necessário.