Ir para o conteúdo

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
  1. 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.
  2. 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.
  3. Camada de Segurança do Host Proxmox VE:

    • Proxmox VE Firewall (PVE Firewall): Configurado para DROP por 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 root via SSH desabilitado (apenas prohibit-password).
      • Autenticação por senha desabilitada (PasswordAuthentication no), forçando o uso de chaves SSH.
    • Atualizações Regulares do Host: Manter o Proxmox VE e o Debian subjacente atualizados.
  4. Camada de Segurança das Máquinas Virtuais (VMs):

    • UFW (Uncomplicated Firewall): Habilitado nas VMs (core-services-vm e ai-desktop-vm se 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.
  5. 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) e PGID (Group ID).
      • Esses PUID/PGID correspondem ao usuário dockeruser e grupo dockergroup criados nas VMs, que por sua vez são os "donos" dos arquivos nos volumes NFS devido às opções de anonuid/anongid no export NFS.
    • 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 alguns docker-compose.yml para 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.