UNIX ctime: como manter esta informação preciosa em backups (tar)?

1

Eu tenho três perguntas relacionadas à informação "ctime" de um arquivo. Eles estão em negrito (se você não tiver tempo, pode ir diretamente para eles).

Um site no meu servidor dedicado foi invadido. Muitos arquivos foram editados. Notei que alguns hackers eram espertos o suficiente para resetar o mtime (alguns não).

atime e mtime podem ser alterados com funções PHP. ctime também pode ser alterado usando a função chmod. Mas o ctime é manipulado pelo kernel, portanto, só é possível configurá-lo para a data / hora atual do sistema. É impossível voltar ao passado.

Encontrei alguns backdoors cujo mtime havia sido redefinido para o ctime (data no passado, como 1 ou 2 anos atrás), de modo que não consigo encontrá-lo usando a ferramenta de pesquisa recursiva com base nessas informações.

A chave para encontrar rapidamente todos os arquivos infestados é, obviamente, a informação do ctime. O problema é que eu não pensei nisso em primeiro lugar, então eu primeiro "chmoded" recursivamente todos os arquivos para que o site em si não tenha mais permissões de gravação. Ao fazer isso, perdi a preciosa informação do horário.

Eu tenho muitos backups, na forma de arquivos .tar.gz. Eu quero saber se existe uma maneira de extrair do arquivo tar.gz o ctime dos arquivos do momento em que eles foram adicionados o tar.

Eu li toda a documentação do GNU tar, e descobri que o formato "GNU" do tar (que é o padrão usado pelo meu servidor Linux) armazena o ctime de seus arquivos arquivados. Eu tentei seguir o caminho para extraí-lo:

tar -zxf Friday.tar.gz --to-command=./script

./ script é um script bash e se parece com isso:

#!/bin/bash
echo $TAR_CTIME

O problema é que isso fornece a data e a hora atuais, talvez porque o tar forneça as informações do arquivo que ele próprio criaria se eu não tivesse usado --to-command

Se o tar não puder lidar com isso, existem ferramentas de backup que possam manter as informações originais do ctime?

Como listar todos os arquivos cujo mtime e ctime diferem? Eu li o manual de busca, mas só descobri o -newerXY , que (se bem entendi), só pode comparar um ctime com um ctime, um mtime com um mtime, etc. Existe uma maneira de comparar um ctime e um mtime do mesmo arquivo?

    
por Fox 02.07.2013 / 22:16

2 respostas

1

Você já pensou em usar a opção de comparação de tar para ver quais arquivos são alterados? Isso deve fornecer uma lista rápida de candidatos.

    
por 03.07.2013 / 07:18
0

A ctime é controlada pelo kernel, não por qualquer ferramenta de espaço do usuário, tar ou qualquer outro programa, porque para fazer backup e restaurar, eles precisam criar um novo inode que deve ter um novo ctime. Uma maneira conhecida de preservá-lo é criar uma imagem do seu sistema de arquivos em um arquivo de loopback e salvar essa imagem. a menos que seu sistema de arquivos esteja cheio e você queira salvar tudo, é um desperdício.

existem programas mais eficientes, como partimage, mas eu não verifiquei se eles preservam ctime de inodes.

    
por 02.07.2013 / 22:33