Ir para o conteúdo

Uma instalação endurecida, de ponta a ponta

As páginas desta seção são organizadas por assunto, que é a forma certa para consultar e a errada para instalar pela primeira vez. Esta página é o outro eixo: a ordem, num host endurecido com systemd e sem container, e os poucos lugares em que fazer a coisa certa na hora errada equivale a não fazer.

Ela não repete comando nenhum. Cada fase diz para que serve, o que precisa estar verdadeiro antes dela, e qual página tem as instruções. Onde uma fase carrega uma armadilha, a armadilha está aqui, porque ela mora na sequência e não em nenhuma página isolada.

Decida três coisas antes

Elas mudam fases seguintes, e descobri-las tarde costuma significar recomeçar.

Como cada superfície é alcançada. A interna fica na VPN ou rede restrita da consultoria, o portal vai para o cliente. Isso decide dois hostnames, dois certificados, e se algum dos nomes resolve publicamente. Ver TLS e proxy reverso.

Se o volume de dados é cifrado. Se for, muda a ordem de duas fases adiante, e o método de desbloqueio decide se o host consegue bootar sem ninguém. Ver Endurecimento do host.

Instalação nova ou migração. Uma migração carrega uma chave mestra que já existe, e o momento de colocá-la no lugar é a única coisa que não dá para corrigir depois. Ver Mudar de host.

1. O host

Plataforma, pacotes, e o Python de que o sidecar precisa. Pré-requisitos e plataformas.

2. As identidades

São quatro: peart, peart-portal, peart-render, e o grupo peart-work, que não tem usuário. Os usuários e grupos.

Elas vêm antes de qualquer coisa ser criada em disco, porque a árvore de diretórios nasce com dono delas e o install -d não consegue nomear um usuário que ainda não existe.

O peart também é membro de peart-portal. As duas superfícies abrem o mesmo banco, e os arquivos -wal e -shm ao lado dele são criados por quem abrir primeiro, caindo no grupo do diretório. Sem essa filiação a instalação funciona até o primeiro reboot em que o portal calhar de subir antes.

3. Os binários e o sidecar

Instalação direta para o peart e o peart-portal, e depois o sidecar de renderização, que é Python num ambiente virtual próprio, e não um terceiro binário.

4. O volume cifrado, se houver

Antes da árvore de diretórios, não depois. Uma árvore criada enquanto o ponto de montagem ainda é um diretório vazio no sistema de arquivos raiz some embaixo do volume no instante em que ele monta, e o sintoma é dado que estava lá um minuto atrás. Endurecimento do host trata do desbloqueio pela rede e do que ele custa; Se o diretório de dados está num volume separado trata do que as units fazem a respeito.

5. A árvore de diretórios e a configuração

Dono e modos, e depois o arquivo de configuração em si.

O /etc/peart é gravável pelo peart de propósito: numa instalação nova o PEART cria a chave mestra ali no primeiro boot, e um diretório que o serviço só consegue ler faz esse primeiro boot falhar.

6. Só em migração: a chave mestra

Depois de o volume estar montado, e antes do primeiro boot. Mudar de host tem as duas metades e a razão de cada uma morder: uma chave escrita antes da montagem cai no sistema de arquivos raiz e desaparece; um primeiro boot sem chave gera uma nova, e a partir daí a evidência e os backups que você trouxe não podem mais ser lidos.

7. Os segredos

Fora do config.yaml e dentro dos arquivos de ambiente, que o systemd lê como root. O que vai em cada arquivo de ambiente.

8. As units

Rodar como serviço. Habilite o socket do sidecar, não o serviço dele: o sidecar roda sem rede própria e só é alcançável porque a unit de socket abre a porta no namespace do host e entrega o descritor. Habilitar o serviço no lugar produz um sidecar que sobe, parece saudável, e não pode ser alcançado.

9. Primeiro boot, e então o arquivo do banco

Suba os serviços, rode a migração, e só então ajuste dono e modo do arquivo do banco: ele nasce com a umask do processo, e o portal precisa escrevê-lo. O arquivo do banco.

Os arquivos -wal e -shm tiram o modo do banco, então consertar o banco é o conserto inteiro, e consertar os companheiros não é.

10. TLS, um terminador por superfície

TLS e proxy reverso. O tls: true da configuração é o que torna o cookie de sessão Secure e envia HSTS; nenhum cabeçalho encaminhado é lido, então um proxy terminando TLS com tls: false atrás é um rebaixamento silencioso.

11. Verifique, e saiba o que cada conferência provou

O que cada conferência de ponta a ponta prova. Faça as quatro: elas falham por motivos diferentes, e passar numa não diz nada sobre as outras. Se algo falhar de um jeito que cheire a sandbox, Quando a causa é uma diretiva de endurecimento é indexada pela linha de log.

12. Exporte a chave, e prove o backup

Diretório de dados e backups. A chave mestra não está no backup, por desenho, então um backup sem chave guardada à parte não restaura nada legível. Faça isso antes do primeiro trabalho de verdade, não depois.

O que você não deveria ter precisado fazer

Nada nesta sequência pede para afrouxar diretiva do systemd. Se você se pegar escrevendo um drop-in para alguma coisa funcionar, isso é defeito a relatar e não contorno a guardar, e Endurecimento do host declara a postura em que o produto é suportado.