Controle de alterações de permissões de arquivos em um servidor Windows

3

Alguma coisa ou Alguém está alterando as permissões de arquivos ocasionalmente em arquivos no meu Controlador de Domínio do Windows Server 2003.

Gostaria de acompanhar essas alterações. Inicialmente, achei que seria possível fazer isso com a Auditoria por meio da Diretiva de Controladores de Domínio Padrão, mas, embora haja auditoria de Acesso a Arquivos, não consigo encontrar nenhum tipo de rastreamento para alterações de permissões.

Gostaria de saber se as alterações nas permissões acontecem em um determinado conjunto de arquivos e diretórios, independentemente de um problema humano ou de aplicativo / serviço ou até mesmo um disco ter ocorrido. Eu gostaria de ver o que mudou, quando mudou e, possivelmente, o que aconteceu.

Isso é possível?

    
por tcv 16.07.2010 / 19:45

3 respostas

4

A auditoria interna para alterações de permissão é tratada por meio de "Acesso a objeto de auditoria". Se você observar os tipos de auditoria que pode configurar em um objeto do sistema de arquivos, verá que "Alterar Permissões" é um dos itens auditáveis.

Você descobrirá que os dados de log gerados pelo "Acesso ao objeto de auditoria" são dolorosamente verbosos e difíceis de analisar. As permissões reais são alteradas (um evento "WRITE_DAC" - DAC significa "Controle de Acesso Discricionário") fará referência apenas a um identificador de identificador, portanto, será necessário analisar o WRITE_DAC para encontrar o evento open do identificador. Esse evento informará o nome do objeto que está sendo modificado pelo WRITE_DAC. Bastante cansativo ...

Eu tive um cliente que explorou o uso do utilitário Trilhas de auditoria do sistema de arquivos CPTRAX para Windows para uma situação semelhante. Eu não acredito que eles realmente o tenham implementado, mas como parte de sua exploração eu revisei a documentação e descobri que ela parecia ser "sã", pelo menos. Eu não posso dar qualquer tipo de recomendação pessoal para isso, mas parecia que faria o que o fabricante alegou.

Editar:

Eu tive alguns minutos hoje, então escrevi um roteiro CMD louco e doloroso para rastrear as mudanças de permissão. Analisando o log de eventos é doloroso (e realmente requer uma máquina de estado para acertar), então esta é uma segunda tentativa.

O script espera receber o nome do arquivo de um arquivo para rastrear as permissões, e um caminho e um nome de arquivo "base" de um arquivo para armazenar as permissões observadas. Suponhamos um conjunto falso de argumentos: perm-track.cmd "C:\Program Files\Some Application\File To Track.exe" "C:\Permission Tracker\File to Track.exe"

Na primeira vez que o script for executado (às 12:51:30 de 18 de julho de 2010), as permissões definidas em "C: \ Arquivos de Programas \ Alguns Aplicativos \ Arquivo para Rastrear.exe" serão armazenadas no arquivo "C: \ Permission Tracker \ File para Track.exe.20100718_125130.permissions.txt".

Na próxima vez que o script for executado, com os mesmos argumentos, as permissões armazenadas no arquivo "C: \ Permission Tracker \ Arquivo para Track.exe. *. permissions.txt" criado mais recentemente serão comparadas permissões atuais em "C: \ Arquivos de programas \ Some Application \ File To Track.exe". Se houver uma alteração, as novas permissões serão armazenadas em um arquivo apropriadamente chamado "File to Track.exe.ISODATE.permissions.txt" em "C: \ Permission Tracker".

Conectar isso para enviar e-mails seria bem fácil. Executá-lo como uma tarefa agendada ou em um loop seria muito fácil também.

Isso definitivamente é rápido e sujo, e provavelmente tem erros, mas esse script pode fazer o que você precisa.

@echo off

if "%~1"=="" goto syntax
if not exist "%1" goto syntax

if "%~2"=="" goto syntax

rem Get an ISO date (working around shell silliness re: hours earlier than 10:00)
SET YEAR=%DATE:~10,4%
SET MONTH=%DATE:~4,2%
SET DAY=%DATE:~7,2%
SET /A HOUR=%TIME:~0,2%
SET HOUR=0%HOUR%
SET HOUR=%HOUR:~-2%
SET MINUTE=%TIME:~3,2%
SET SECOND=%TIME:~6,2%
SET ISODATE=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%

SET TEMPFILE="%TEMP%\%RANDOM%.TXT"

rem Save current permissions into a temporary file
cacls %1 >%TEMPFILE%

rem Get filename of last set of permissions reported
set LASTFILE=
for /f "usebackq delims=" %%f in ('dir /od /b /s "%~2*.permissions.txt"') do SET LASTFILE=%%f

rem Was there no last file? If so, put current temp file in place
if "%LASTFILE%"=="" (
  move %TEMPFILE% "%~2.%ISODATE%.permissions.txt"
) else (
  rem Compare current permission to last permission-- if it's different, annotate current permission
  fc %TEMPFILE% "%LASTFILE%"
  if errorlevel 1 move %TEMPFILE% "%~2.%ISODATE%.permissions.txt"
)

goto end

:syntax
echo Really, really poor man's permission change tracker.
echo.
echo Call with path of file to monitor on command-line as first argument,
echo path and base filename to store "report" files of permission changes
echo as the second argument.
echo.
echo example:
echo.
echo   perm-track.cmd "C:\Program Files\Some Application\File To Track.exe" "C:\Permission Tracker\File to Track"
echo.

:end
    
por 16.07.2010 / 20:33
2

Use um IDS baseado no host , que às vezes é chamado de IDS do sistema de arquivos. Eu usei AIDE com sucesso no Windows antes. Pode ser compilado com o cygwin.

Uma alternativa ao AIDE é o OSSEC, que parece ter uma porta do Windows .

    
por 16.07.2010 / 20:33
1

O Varonis DatAdvantage para Windows é uma ótima maneira de resolver esse problema. Ele monitora todos os eventos do sistema de arquivos (criar, abrir, excluir, mover, modificar, alteração de permissão) e cria uma trilha de auditoria pesquisável. Você pode configurar relatórios recorrentes ou alertas em tempo real com base em critérios de acionamento, como uma alteração de permissão em seu controlador de domínio ou quando alguém é elevado ao administrador de domínio.

Talvez a melhor parte seja que o DatAdvantage não exige auditoria nativa (que pode ser lenta e cansativa) e nunca grava em disco nos servidores que você monitora, portanto é uma sobrecarga super baixa.

(Divulgação: Eu trabalho para Varonis, mas não postaria isso se não achasse que fosse um ajuste).

    
por 20.10.2014 / 15:57