Não entendo como resolver o problema do ovo ou da galinha ao automatizar a instalação dos servidores.
Tenho uma série de servidores que podem ser reconstruídos através do PXE. Quando uma máquina está sendo reconstruída, ela carrega todas as configurações necessárias – incluindo seu certificado privado que usará para se autenticar ao usar serviços diferentes posteriormente – de um servidor Apache. Este servidor Apache identifica os clientes por seus endereços IP para fornecer-lhes a configuração ou o certificado destinado a um determinado servidor, ou recusar-se a servi-lo.
No entanto, o endereço IP de um cliente pode ser falsificado. O mesmo para o endereço MAC, se em algum momento eu adicionar esse tipo de verificação também.
Para obter sua configuração e seu certificado privado com segurança, a máquina que inicializa através do PXE já deve ter um certificado que possa utilizar na comunicação com o servidor Apache. Isso, no entanto, não parece possível, já que uma máquina que inicializa a partir do PXE é nova ou formatará seu disco de qualquer maneira durante a instalação.
Estou esquecendo de algo? Como posso identificar uma máquina nova sem o risco de falsificação?
Devo usar uma chave USB sempre conectada que contenha a chave privada? Ou existem outras opções?
Responder1
Usamos o capatazplugin de disco de inicializaçãopara este propósito. Não quero dizer que seja a forma correta ou única, é a que usamos com sucesso.
Sempre que um host precisa ser (re)provisionado, um token de curta duração é gerado e mantido no banco de dados acoplado ao host. Esse token vai para um arquivo iso com o binário ipxe e um script que baixa o arquivo kicstart do host de provisionamento somente se ele oferecer o token correto como identificador. Depois que o host for provisionado, o token será excluído. Após um período específico (ajustável, o padrão é 60 minutos), o token é invalidado.
Isso funciona tanto com BIOS quanto com firmware uefi e não há necessidade de pxe, apenas http(s) para que você possa realmente ter implantações na Internet com poucas modificações (útil para implantar hardware em locais remotos).