Como impedir a alteração do tempo de modificação do arquivo para usuários não root

2

Não quero que ninguém crie um arquivo e altere a data de criação para a data de retrocesso (por exemplo, usando toque ou chamada de sistema).

Na minha conta de hospedagem do Ubuntu, estou recebendo muitos códigos php hackeados.

Não permitir que eles alterem o horário do arquivo quando ele chegar me ajudará a localizar novos arquivos com facilidade.

Qual é o caminho para alcançá-lo? Eu não encontrei resposta em nenhum lugar!

    
por user5858 28.10.2014 / 06:36

2 respostas

2

Você pode impedir que hackers usem código PHP para alterar o tempo de modificação ( mtime ) dos arquivos que podem ser gravados pelo seu servidor web desabilitando as funções PHP (como touch ) usando a opção [disable_functions][1] em php.ini arquivo de configuração.

No entanto, o tempo de modificação de acompanhamento não é a abordagem correta porque o tempo de modificação dos arquivos não é alterado quando são enviados para o servidor (ou seja, esse tempo pode ser muito mais cedo do que o tempo em que o sistema é violado). Uma abordagem melhor é controlar o tempo alterado do status ( ctime ) do arquivo inode. Para demonstrar o que quero dizer:

$ touch test.txt
$ stat test.txt
  File: ‘test.txt’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
...
Access: 2014-10-28 05:51:10.329081380 +0000
Modify: 2014-10-28 05:51:10.329081380 +0000
Change: 2014-10-28 05:51:10.329081380 +0000

$ touch -t 10011234 test.txt 
$ stat test.txt
  File: ‘test.txt’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
...
Access: 2014-10-01 12:34:00.000000000 +0000
Modify: 2014-10-01 12:34:00.000000000 +0000
Change: 2014-10-28 05:52:57.669657564 +0000 <= unadulterated by touch

Sem acesso root, acho que é impossível modificar ctime .

    
por 28.10.2014 / 09:04
3

Até onde eu sei, não há como impedir que um usuário altere o tempo de modificação de um arquivo. Alterar a hora da modificação é um recurso normal, use, por exemplo, ao extrair arquivos de um arquivo ou copiá-los de outra máquina.

Em vez de observar a hora da modificação, observe o tempo de alteração do inode (ctime). Passe a opção -c para ls para listar o ctime em vez do mtime.

Listar o ctime permite detectar quais arquivos foram modificados ou movidos recentemente. Pode aparecer falsos positivos, é claro. Se o atacante tiver acesso root, todas as apostas serão perdidas.

Isso é mais útil para análise forense do que para reparo. Apenas os ataques mais básicos podem ser neutralizados por um reparo simples, como remover o arquivo infectado de maneira óbvia: geralmente há mais coisas do que você pode encontrar. Se você detectar um ataque:

  1. Coloque o sistema offline. Faça uma cópia disso.
  2. Reinstale todo o sistema de boas fontes conhecidas . Não reutilize nada do sistema infectado: você não pode confiar nele. Certifique-se de instalar as versões mais recentes de todos os softwares, sem falhas de segurança conhecidas.
  3. Restaure seus dados de um backup válido conhecido . Novamente, você não pode confiar nos dados produzidos pelo sistema infectado.
  4. Estude a cópia do sistema infectado para descobrir como os invasores entraram. Observe que o modo como os invasores entraram (a vulnerabilidade) é muito diferente do que os invasores fizeram posteriormente (a carga útil). Você precisa rastrear a causa raiz, não o sintoma. Esta parte pode exigir um profissional.
  5. Depois de estabelecer que a causa raiz não está mais presente (a configuração incorreta ou o bug de segurança foi corrigido), coloque o novo sistema on-line.
por 29.10.2014 / 02:35