Auditar serviços do Windows
Uma auditoria não é uma lista do que há na máquina. É a diferença entre o que há na máquina e o que deveria haver - e nenhum Windows de fábrica registra a segunda metade.
Três perguntas, e o que as responde
O que mudou desde que esta máquina foi construída?
Um instantâneo feito na implantação e uma comparação com a máquina esta noite. A configuração é informada à parte do que apenas iniciou ou parou, de modo que o único tipo de inicialização que alguém mudou não fique enterrado sob quarenta serviços que por acaso estão em execução.
bws snapshot diff baseline.json --live
Por que a homologação difere da produção?
Faça um instantâneo em cada uma e compare os dois arquivos - em qualquer lugar, sem nenhuma das duas máquinas presente. Os arquivos trazem o nome da máquina e a conta que os fez.
bws snapshot diff staging.json production.json
O que há aqui que não deveria haver?
Consultas que encontram as formas que merecem um olhar: um serviço cujo executável sumiu, um sem assinatura, um em execução embora desabilitado, um que pede direitos de depuração.
file:missing, signed:no, mismatch:running
A forma noturna
# o dia em que a máquina entra em serviço
bws snapshot create C:\baselines\web01.json --note "after the build"
# toda noite, a partir de uma tarefa agendada
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
# 0 - sem deriva de configuração
# 5 - a configuração se desviou, e drift.json diz o quê
# 3 - rodou e não conseguiu ler tudo, então a resposta é parcial
O código de saída 5 é o que faz disto uma auditoria em vez de um relatório que ninguém lê: a tarefa fica em silêncio até a máquina se desviar, e na noite em que isso acontece, alguém é avisado.
Faça a linha de base em uma sessão com privilégios elevados. Sem direitos de administrador o gerenciador lista menos entradas e recusa mais das que lista. O instantâneo registra se a conta que o fez era administradora, de modo que a comparação pode dizer isso em vez de informar como removidas entradas que ninguém removeu - mas uma linha de base sem metade da máquina continua sendo uma linha de base sem metade da máquina.
O que um instantâneo vale como prova
- É JSON com um campo por linha, então cabe em um repositório e o
git diffo lê. Um auditor que não tenha esta ferramenta ainda pode ler o arquivo, e um sistema de controle de versão já responde ao quando. - Guarda o que o snap-in nunca mostrou: o caminho de lançamento e os argumentos, o hash e o signatário do arquivo, as dependências nos dois sentidos, os gatilhos, os privilégios exigidos, o tipo de SID e o descritor de segurança.
- Diz o que não conseguiu ler. Um campo sobre o qual esta sessão não tinha direitos é registrado como não lido - nunca como vazio - de modo que uma comparação posterior pode dizer not compared em vez de chamá-lo, em silêncio, de inalterado.
- É uma descrição da máquina inteira. Arquive-o de acordo: ele é gravado com as permissões que o diretório dele já tem, e a ferramenta não restringe nada.