Skip to content

security

github-actions[bot] edited this page May 12, 2026 · 1 revision

Segurança

Segredos

Não versionar:

  • .vault_pass
  • chaves em ssh/
  • configs e chaves em artifacts/clients/
  • logs em logs/
  • overrides locais em inventories/*.local.yml
  • overrides locais em group_vars/*/zz-local.yml
  • vaults reais em group_vars/*/vault.yml

group_vars/prod/vault.yml deve permanecer criptografado com Ansible Vault e ignorado pelo Git. Antes de publicar branch, tag ou release, rode:

make security-check

Essa checagem valida padrões ignorados pelo Git, permissões locais, Vault criptografado, host key SSH registrada e marcadores óbvios de segredos em arquivos publicáveis.

SSH host key checking

O Ansible deve validar a identidade SSH do VPS. O projeto usa host_key_checking = True e ssh/known_hosts como arquivo local de host keys, ignorado pelo Git.

make prepare registra a host key observada com ssh-keyscan antes de validar o usuário técnico. Depois disso, deploy.sh falha se a host key do host prod não existir em ssh/known_hosts.

Firewall

A role gerencia UFW, libera 22/tcp antes de habilitar o firewall e libera 51820/udp para WireGuard. Alterações de porta SSH devem ser feitas primeiro em wireguard_server_ssh_port e validadas com dry-run.

Usuário técnico

prepare.sh cria ou valida o usuário ansible sem senha utilizável, com login apenas pela chave dedicada e sudo sem senha em /etc/sudoers.d/ansible. O arquivo sudoers é validado com visudo antes e depois da instalação.

NOPASSWD:ALL é uma decisão pragmática para manter playbooks Ansible gerais compatíveis com tarefas privilegiadas. O risco aceito é que a chave técnica ganha poder administrativo no servidor. As mitigações atuais são chave SSH dedicada, usuário humano separado, senha bloqueada para o usuário técnico, host key checking obrigatório e arquivos locais ignorados/protegidos.

Perfil cliente

Cada arquivo artifacts/clients/*.conf contém a chave privada do respectivo cliente e deve ser tratado como segredo local.

IPv6

O perfil é full-tunnel dual-stack (AllowedIPs = 0.0.0.0/0, ::/0). IPv6 tenta roteamento sem NAT66 primeiro. O fallback auto ativa NAT66 quando o prefixo do túnel é ULA (fd00::/8) ou quando o servidor só tem IPv6 /128.

Clone this wiki locally