Escondendo dados em sistemas de arquivos

Escondendo dados em sistemas de arquivos

Quero ocultar alguns arquivos de forma que nem ls -aconsiga encontrá-los. Não estou falando sobre adicionar '.' na frente do nome do arquivo. Eu estava pensando se poderia criar chamadas de sistema separadas para acessar esses arquivos. A necessidade real é ocultar alguns arquivos de log do usuário. Estou armazenando os dados MAC de alguns arquivos e não quero que o usuário veja esses arquivos de log. No momento, conheço apenas uma maneira de ocultar dados, ou seja, adicionando '.' na frente do nome do arquivo. Mas o arquivo pode ser visto pelo usuário pela simples chamada ls -a. Então, quero saber se existe alguma outra maneira de ocultar esses dados de log?

Responder1

Como outros observaram, se o objetivo disso é impedir o acesso a um arquivo persistente, ocultá-lo é provavelmente a abordagem errada. Neste caso a utilização de medidas adequadas de controlo de acesso ou mesmo de criptografia, se a aplicação o justificar, poderá ser uma solução. Por outro lado, criar "ocultos"temporáriofiles é um caso de uso perfeitamente legítimo.

No Linux, desde a versão 3.11 do kernel, oopen()a chamada do sistema suporta o O_TMPFILEsinalizador, que pode ser usado para criar arquivos temporários sem nome. Quando este sinalizador é usado, onome do caminhoO argumento to open()é usado para especificar um diretório sob o qual um inode sem nome é criado. No entanto, como o principal caso de uso O_TMPFILEé, como o nome indica, a criação detemporárioarquivos, isso não é adequado para armazenamento persistente, pois o arquivo será perdido quando o último descritor de arquivo do arquivo for fechado, a menos que o arquivo receba um nome. O arquivo pode receber um nome com olinkat()chamada de sistema, a menos que o O_EXCLsinalizador tenha sido especificado além de O_TMPFILE, caso em que a vinculação do arquivo ao sistema de arquivos é evitada.

A funcionalidade adicionada recentemente O_TMPFILEé significativa porque pode ser usada para fornecer as seguintes propriedades aos arquivos temporários:

  1. Criação livre em condições de corrida.
  2. Exclusão automática quando fechado.
  3. Inacessível através de qualquer nome de caminho.
  4. Não sujeito a ataques de links simbólicos.
  5. Não há necessidade de o chamador criar nomes exclusivos.

Além disso, a funcionalidade pode ser usada para criar arquivos que são inicialmente invisíveis, momento em que os atributos apropriados do sistema de arquivos podem ser ajustados no arquivo, antes de vinculá-lo ao sistema de arquivos em uma operação atômica. Isto pode ser usado para evitar certosTOCTOUcondições da corrida.

Uma desvantagem do O_TMPFILEsinalizador é que apenas um subconjunto de sistemas de arquivos fornece suporte para ele. Inicialmente o suporte foi fornecido nos sistemas de arquivos ext2, ext3, ext4, UDF, Minix e shmem. O suporte XFS foi adicionado no Linux 3.15.

Responder2

Não importa qual separação você faça, o root ainda poderá acessá-lo, então você só terá segurança através da obscuridade, o que não é realmente seguro. Se quiser ocultar o acesso de outros usuários, você pode usar permissão para isso. Negar permissões de leitura para arquivo ou diretório realizará o que você deseja.

Responder3

O pesquisador de segurança The Grugq descobriu uma técnica que ele chama de "Punho", "Técnica de inserção de sistema de arquivos e subversão". Suas apresentações parecem que ele colocou sistemas de arquivos em lugares estranhos, como arquivos de diário EXT3, arquivos de diretório e arquivos de "blocos defeituosos". Isso parece recomendar segurança através da obscuridade, mas você pode fazer algo como que?

Responder4

Se quiser impedir que outros usuários (incluindo root) leiam seus arquivos, você pode criptografá-los. Se você também quiser ocultar os nomes dos arquivos, você pode fornecer nomes falsos ou usar um contêiner de arquivos criptografados como TrueCrypt. Nesse caso, os arquivos ainda estarão acessíveis pelo root quando o sistema de arquivos for montado.

informação relacionada