Como tornar os arquivos protegidos?

24

Como criar um arquivo que contenha dados cruciais protegidos? Por exemplo, suponha que eu tenha alguns arquivos importantes, existe algum método ou estratégia para tornar esse tipo de arquivo mais protegido no Ubuntu? Eu até quero fazer com que alguns arquivos solicitem uma senha sempre que alguém tentar abri-la. Isso afeta a versão do Ubuntu em termos de política de segurança? Posso usar algum algoritmo de criptografia externamente? Saudações.

Avani badheka
fonte
o que você quer dizer com protetor? Deseja tornar mais difícil modificar ou excluir o arquivo?
Zanna
protetor no sentido em que ninguém pode acessá-lo sem minha permissão ou nem mesmo fácil excluir qualquer modificação. OU precisa de alguma senha para abri-la de maneira complicada.
Avani badheka
você quer dizer simplesmente chown roote chmod go-rwx?
Njzk2 12/10
Para exigir uma senha, use um disco criptografado ou arquivo de imagem de disco que não seja montado automaticamente.
Joshua

Respostas:

32

O melhor método que você tem é chattr +i {file}. Isso define o atributo imutável e, em seguida, um arquivo não pode ser modificado, excluído, renomeado ou um link físico criado por qualquer pessoa, incluindo o root.

A única pessoa que pode editar o arquivo é raiz. (S) ele precisa desfazer isso removendo o bit imutável: chattr -i {file}e pode fazer o que quiser com o arquivo. Definir o + i novamente bloqueia o arquivo de qualquer modificação.

Isso não impedirá a formatação da partição onde o arquivo está armazenado. Isso impedirá o roubo do arquivo.


Você pode até fazer isso em um ponto de montagem completo, se desejar:

chattr +i -R /discworld

tornaria imutável todo o "mundo do disco" e qualquer coisa nele ( chattr -i -R /discworldpara desfazê-lo;))


Rinzwind
fonte
Gostaria de modificar, excluir, renomear etc só pode ser feito pela raiz. Mesmo que o root não possa mudar, ele será lido apenas para todos, que eu não quero no meu caso.
Avani badheka
A raiz do @Avanibadheka pode executar o chattr -i antes de editá-lo e depois executar o chattr + i novamente para bloqueá-lo.
Rinzwind
1
Você também pode remover permanentemente (até a reinicialização) a capacidade de modificar QUALQUER bit imutável do sistema.
rackandboneman
Nem pode ser copiado? Então, o arquivo cat> output ou dd não funciona?
21416 Konerak #
1
Um arquivo imutável pode ser copiado (a menos que esteja definido como chmod a-r). Veja meu log de terminal, por exemplo, teste.
Ruslan #
18

Sem fazer nada de especial, você pode dificultar a leitura, alteração ou exclusão do arquivo removendo as permissões de todos, exceto o proprietário. Torne o root o proprietário do arquivo e coloque-o dentro de um diretório ao qual somente o root tenha acesso ...

sudo mkdir /home/secret     #this directory will be owned by root, no need to chown
sudo chmod 700 /home/secret

mova ( sudo mv file /home/secret) seu arquivo para lá e faça

sudo chown root: /home/secret/file
sudo chmod 600 /home/secret/file

chmode chownpegue vários argumentos: chmod 600 file1 file2ouchmod 600 file*

fora isso, use criptografia ...

Zanna
fonte
3
Talvez seja mais fácil entender se você usa permissões de caracteres em vez de octal. Portanto, seria, por exemplo, "chmod go-rwx" remover permissões de leitura, gravação e execução do grupo e de outros. Veja a página de manual do chmod.
jamesqf
12

Uma maneira bastante segura de proteger documentos é a criptografia (desde que você destrua o original e armazene a versão criptografada corretamente).

Permissões (como sugerido pelas outras respostas) podem ser contornadas (veja isso ).

Portanto, recomendo que você criptografe corretamente o arquivo. Aqui está como:

(Para um método de interface gráfica, consulte o final desta resposta)

Verifique se você gpginstalou.

Por exemplo, para criptografar um arquivo chamado Important_File.txt, use

$ gpg -c Important_File.txt

Agora digite a senha (isso será usado mais tarde quando for necessário lê-la).

Agora você receberá um arquivo com o nome do original e uma .gpgextensão, por exemplo Important_File.txt.gpg.

Remova o arquivo original e mantenha a .gpgversão. Pode ser fácil obter o arquivo original do disco se você não usar o shredutilitário seguro (que ainda não funcionará em unidades SSD ou cartões SD):

$ shred Important_File.txt

Agora só temos Important_File.txt.gpgconosco.

Sempre que você precisar ler, basta

$ gpg Important_File.txt.gpg

Em seguida, digite a senha que você definiu no primeiro comando. Você receberá o original Important_File.txt.

NOTA : Isso protege apenas o conteúdo do .gpgarquivo criptografado de ser lido por qualquer pessoa (usando criptografia), mas qualquer pessoa pode removê-lo, copiá-lo ou movê-lo ! Para proteção básica contra que , usar os métodos de permissão das outras respostas no criptografado .gpgarquivo.

Método da interface gráfica (GUI)

Instale o aplicativo Seahorse.

Em seguida, você pode fazer isso no aplicativo Arquivos:

Captura de tela da criptografia de arquivos GNOME

UniversallyUniqueID
fonte
1
"A única maneira segura de proteger documentos é a criptografia", eu discordo. O ato de criptografar não é seguro, o que o torna seguro. É a parte social depois disso. Se você criar um leia-me ao lado do arquivo criptografado com "esta é a senha: 11212324234", poderá criptografar tudo o que deseja proteger.
Rinzwind
1
@Rinzwind Editado. De qualquer forma, com esse nível de estupidez, nada está seguro.
UniversallyUniqueID
Upvoted em antecipação ;-)
Rinzwind
Observe que pode ser fácil recuperar o arquivo não criptografado original se você o excluir ( rmou excluir do gerenciador de arquivos). Você precisaria substituí-lo para torná-lo irrecuperável, por exemplo, usando shred. Isso também é inútil em SSDs e pen drives ...
Byte Commander
@ByteCommander Obrigado, adicionei-o à resposta.
UniversallyUniqueID
9

Basta definir uma permissão muito estrita 600, para que somente o proprietário possa ler e gravá-la (se você precisar de permissões de execução, isso seria 700).

Você também pode fazer isso graficamente - basta clicar com o botão direito do mouse no arquivo, selecionar Properties > Permissions > Sete definir tudo, exceto o ownercampo, para nada.

Veja a imagem como um exemplo:

a imagem

dadexix86
fonte
Ei, acho que sua resposta se beneficiaria de uma captura de tela mostrando como fazer isso com a GUI.
grooveplex
Feito, obrigado :) (mas meu sistema é em italiano ...)
dadexix86
Observação boa @Zanna (I modificou a resposta)
dadexix86
8

Se você é o único usuário no sistema e ninguém pode acessar razoavelmente o seu computador sem suas permissões, basta bloquear o acesso usando este comando, conforme resposta de Zanna :

sudo chown root:root /my/secret/file.txt
sudo chmod 600 /my/secret/file.txt

Nesse caso, o arquivo pode ser lido e / ou gravado apenas pelo rootusuário. Isso é considerado "suficientemente seguro" se ninguém puder inicializar o seu computador sem a sua permissão ou levantar o disco rígido. Estamos usando o rootusuário nesse caso, porque rootele sempre pode ler arquivos, mesmo que não tenha permissão. Ao usar o usuário root, reforçamos que apenas um usuário pode acessá-lo.

Se você deseja marcar o arquivo como imutável de qualquer forma, forma ou formulário, use o iatributo para marcar o arquivo como imutável . Nesse caso, as permissões do arquivo estão bloqueadas e não podem ser alteradas sob nenhuma circunstância. Dessa forma, você pode executar o seguinte comando para tornar o arquivo inalterável e protegê-lo contra alterações de exclusão e permissão:

sudo chattr +i /my/secret/file.txt

Se você quiser alterá-lo, substitua por +icom -ipara desbloquear o arquivo temporariamente. Veja a resposta de Rinzwind para uma visão mais aprofundada.

Agora, se outras pessoas tiverem acesso ao seu computador ( sudoacesso remoto ou qualquer forma de acesso físico), isso se desfaz instantaneamente. Um invasor pode usar rootpoderes para ler seu arquivo, inserir um Live USB ou apenas puxar seu disco rígido.

Portanto, precisamos criptografar o arquivo. Pessoalmente, prefiro usar "contêineres de arquivos", para que você possa ficar mais por lá e fazer com que cresça conforme necessário. chattr +iainda é recomendado para que o arquivo não seja excluído acidentalmente (ou alterado). Por fim, se você estiver usando uma imagem criptografada, poderá definir permissões para permitir que outras pessoas acessem um subconjunto muito limitado de arquivos quando o disco estiver montado, o que é bom para um servidor. Este guia estava originalmente disponível aqui e foi adaptado para uso aqui.

Primeiro, você deseja criar uma imagem de disco para seu uso. Neste exemplo, vamos fazer 5 GB.

dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img

Em seguida, precisamos tornar sua imagem criptografada:

sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img

Você terá uma opção aqui para inserir sua senha de criptografia preferida. Feito isso, precisamos expor o dispositivo de bloco bruto:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device

No momento, temos um contêiner de arquivos descriptografado, mas não há sistema de arquivos e é tão bom quanto inútil. Vamos consertar isso:

sudo mkfs.ext4 /dev/mapper/my-secret-device

Agora, precisamos de um local para montar nossa nova partição. Nesse caso, eu vou colocar /crypt. Como sou o usuário 1000, vou definir minha partição para permitir apenas que eu (e o root) leia / grave nela.

sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000

Agora, posso usar minha ferramenta de arquivo para navegar /crypte armazenar todos os meus arquivos confidenciais lá. Quando terminar, precisarei desmontar e criptografar novamente minha partição.

sudo umount /crypt
sudo cryptsetup luksClose my-secret-device

Agora, vou definir partições apropriadas no meu arquivo de imagem, para que somente eu e o root possam acessá-lo e que não possa mais ser alterado.

chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img

Sempre que eu quiser abrir esse arquivo para leitura, só preciso executar estes dois comandos, que eu posso facilmente usar como alias:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Meus dados criptografados estarão disponíveis em /crypte permanecerão somente leitura e acessíveis apenas para mim e para o root.

Se eu quiser alterar o arquivo, preciso alterar as permissões e montar:

sudo chattr -i ~/NSA-Data-Dump-20161012.img
chmod 700 ~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Agora, você precisa ter cuidado aqui, porque se um usuário tiver raiz no sistema, ele poderá modificar / destruir sua partição criptografada, tornando-a inútil. Eles também podem roubar dados da unidade, mas apenas quando estão abertos. No entanto, eles não podem roubar dados ou até ver que existem dados sem que você os abra explicitamente. Portanto, é seu dever garantir que seu sistema seja seguro o suficiente para não ter usuários root online quando você estiver abrindo seu volume criptografado.


TL; DR :

  1. Faça o cofre:

    dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mkfs.ext4 /dev/mapper/my-secret-device
    
  2. Preencha o cofre:

    sudo mkdir /crypt
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
  3. Bloqueie o cofre:

    sudo umount /crypt
    sudo cryptsetup luksClose my-secret-device
    
  4. Congele o cofre:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
  5. Abra o cofre:

    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
    
Kaz Wolfe
fonte
É claro que um usuário com acesso root pode também substituir cryptsetupcom algo que registra todas as senhas entrou ...
Hagen von Eitzen
@HagenvonEitzen Sim, bem, não há nada como "verdadeiramente seguro" nos computadores. Há um ponto em que você desenha a linha.
Kaz Wolfe
7

Você pode usar encfs para criptografia de diretório .

Basicamente, você precisa criar 2 diretórios, 1 no qual os dados criptografados serão armazenados e 1 onde você acessará esses dados:

mkdir ~/.encrypted
mkdir ~/private

Em seguida, execute (você precisa executar esta linha sempre que quiser 'montar' seu diretório):

encfs ~/.encrypted/ ~/private/

A menos que você saiba mais, basta pressionar ENTERpara seguir as configurações padrão (solicitadas apenas na primeira vez).

Em seguida, digite sua senha e ela será montada.

Seus dados serão acessados ​​apenas pelo usuário com segurança ~/private/(você pode praticamente ignorar ~/.encrypted)

Para desmontá-lo:

sudo umount ~/private/

ou

fusermount -u ~/private/

Simples assim.

lepe
fonte
3

Você pode criptografar os dados usando o cryptkeeper, que é realmente um aplicativo muito bom e pode fornecer segurança ao seu arquivo. Você pode instalá-lo com:

sudo apt-get update
sudo apt-get install cryptkeeper

Eu geralmente recomendo que você criptografe a pasta com o nome começando com, . porque colocá-la antes que o nome do arquivo a oculte. É um pequeno truque, mas funciona.

Para reexibir a pasta, use Ctrl+ hou vice-versa.

SHUBHRANEEL GHOSH
fonte
1
O pressionamento de tecla Ctrl + h se aplica a qual aplicativo? lsDefinitivamente não vai funcionar .
Melebius
Ctrl-H pelo menos funciona para o Nautilus (e garfos dele, como o Nemo). Quanto a outros gerenciadores de arquivos, não sei dizer. Ao usar ls, você pode usar a -aopção para mostrar todos os arquivos (incluindo os ocultos).
S3lph