Как сделать файлы защищенными?

24

Как сделать какой-нибудь файл, содержащий важные данные, защищенными? Например, предположим, у меня есть несколько важных файлов, есть ли какой-либо метод или стратегия, чтобы сделать этот тип файлов более защищенным в Ubuntu? Я даже хочу, чтобы некоторые файлы запрашивали пароль всякий раз, когда кто-то пытается его открыть. Влияет ли это на версию Ubuntu с точки зрения политики безопасности? Могу ли я использовать любой алгоритм шифрования извне? С уважением.

Авани Бадхека
источник
что вы подразумеваете под защитой? Вы хотите усложнить изменение или удаление файла?
Занна
Защитный в смысле никто не может получить к нему доступ без моего разрешения или даже легко удалить любые изменения. ИЛИ ему нужен пароль, чтобы открыть его хитрым способом.
Авани Бадхека
ты имеешь ввиду просто chown rootа chmod go-rwx?
njzk2
Чтобы запросить пароль, используйте зашифрованный диск или файл образа диска, который не монтируется автоматически.
Джошуа

Ответы:

32

Лучший метод у вас есть chattr +i {file}. Это устанавливает атрибут immutable, и тогда файл не может быть изменен, удален, переименован или создан жесткой ссылкой кем-либо, включая root.

Единственный человек, который может редактировать файл - это root. (S) он должен отменить это, удалив неизменный бит: chattr -i {file}и затем может делать с файлом все, что угодно. Установка + i снова блокирует файл от любой модификации.

Это не помешает отформатировать раздел, в котором хранится файл. Это предотвратит кражу файла.


Вы даже можете сделать это на полной точке монтирования, если хотите:

chattr +i -R /discworld

сделал бы весь "мир диска" и все, что в нем неизменным ( chattr -i -R /discworldчтобы отменить его;))


Rinzwind
источник
Я хотел бы изменить, удалить, переименовать и т. Д. Может сделать только root. Даже если root не может измениться, он будет читать только для всех, что мне не нужно в моем случае.
Авани Бадхека
Корень @Avanibadheka может выполнить chattr -i перед редактированием, а затем снова выполнить chattr + i, чтобы заблокировать его.
Rinzwind
1
Вы также можете навсегда (до перезагрузки) удалить возможность изменять любой неизменный бит из системы.
rackandboneman
Это даже не может быть скопировано? Так что файл cat> output или dd не работают?
Конерак
1
Неизменяемый файл может быть скопирован (если он не установлен как chmod a-r). Смотрите мой журнал терминала для примера теста.
Руслан
18

Не делая ничего особенного, вы можете затруднить чтение, изменение или удаление файла другими пользователями, удалив разрешения для всех, кроме владельца. Сделайте root владельцем файла и поместите его в каталог, к которому только root имеет доступ ...

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

переместить ( sudo mv file /home/secret) ваш файл туда и сделать

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

chmodи chownпринять несколько аргументов: chmod 600 file1 file2илиchmod 600 file*

кроме этого, используйте шифрование ...

Занна
источник
3
Возможно, это будет легче понять, если вы используете разрешения символов вместо восьмеричных. Так что, например, «chmod go-rwx» удаляет права на чтение, запись и выполнение для группы и других. Смотрите страницу руководства chmod.
jamesqf
12

Довольно безопасный способ защиты документов - шифрование (при условии, что вы уничтожаете оригинал и правильно храните зашифрованную версию).

Разрешения (как подсказывают другие ответы) можно обойти (см. Это ).

Поэтому я рекомендую вам правильно зашифровать файл. Вот как:

(Для метода графического интерфейса, см. Конец этого ответа)

Убедитесь, что вы gpgустановили.

Например, чтобы зашифровать файл с именем Important_File.txt, используйте

$ gpg -c Important_File.txt

Теперь введите пароль (он будет использован позже, когда придется его читать).

Теперь вы получите файл с именем оригинала и .gpgрасширением, например Important_File.txt.gpg.

Удалите оригинальный файл и сохраните .gpgверсию. Может быть легко получить исходный файл с диска, если вы не используете безопасную shredутилиту (которая по-прежнему не будет работать на SSD-дисках или SD-картах):

$ shred Important_File.txt

Теперь мы только Important_File.txt.gpgс нами.

Всякий раз, когда вам нужно прочитать это, просто

$ gpg Important_File.txt.gpg

Затем введите пароль, который вы установили в первой команде. Вы получите оригинал Important_File.txt.

ПРИМЕЧАНИЕ . Это защитит только содержимое зашифрованного .gpgфайла от прочтения кем-либо (с использованием шифрования), но любой может удалить, скопировать или переместить его ! Для базовой защиты от этого используйте методы разрешения других ответов в зашифрованном .gpgфайле.

Метод графического интерфейса (GUI)

Установите приложение Seahorse.

Затем вы можете сделать это из приложения Файлы:

Скриншот шифрования файлов GNOME

UniversallyUniqueID
источник
1
«Единственный безопасный способ защиты документов - это шифрование», я не согласен. Шифрование не является безопасным, что делает его безопасным. Это социальная часть после этого. Если вы создадите файл readme рядом с зашифрованным файлом с надписью «это пароль: 11212324234», вы можете зашифровать все, что хотите, но это не так.
Rinzwind
1
@Rinzwind Отредактировано. Во всяком случае, с таким уровнем глупости ничто не безопасно.
UniversallyUniqueID
Проголосовал в ожидании ;-)
Rinzwind
Обратите внимание, что может быть легко восстановить исходный незашифрованный файл, если вы удалите его ( rmили удалите из файлового менеджера). Вам нужно будет перезаписать его, чтобы сделать его невосстановимым, например, используя shred. Это также бесполезно на SSD и флэш-накопителях ...
Byte Commander
@ByteCommander Спасибо, я добавил это в ответ.
UniversallyUniqueID
9

Просто установите очень строгое разрешение 600, чтобы только владелец мог читать и записывать его (если вам нужны разрешения на выполнение, это будет 700).

Вы также можете сделать это графически - просто кликните правой кнопкой мыши на файле, выберите Properties > Permissions > Setи установите все , но на ownerполе ни к чему.

Смотрите картинку в качестве примера:

изображение

dadexix86
источник
Эй, я думаю, что ваш ответ выиграл бы от скриншота, показывающего, как это сделать с графическим интерфейсом.
Grooveplex
Готово, спасибо :) (но моя система на итальянском языке ...)
dadexix86
@Zanna хорошее наблюдение (я изменил ответ)
dadexix86
8

Если вы являетесь единственным пользователем в системе, и никто не может разумно получить доступ к вашему компьютеру без ваших разрешений, то вы можете просто заблокировать доступ с помощью этой команды, согласно ответу Zanna :

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

В этом случае файл может быть прочитан и / или записан только rootпользователем. Это считается «достаточно безопасным», если никто не может загрузить ваш компьютер без вашего разрешения или поднять ваш жесткий диск. В rootэтом случае мы используем пользователя, потому что rootпользователь всегда может читать файлы, даже если у них нет разрешения. Используя пользователя root, мы обеспечиваем доступ к нему только одному пользователю.

Если вы хотите пометить файл как неизменяемый любым способом, формой или формой, вы можете использовать iатрибут, чтобы пометить файл как неизменяемый . В этом случае права доступа к файлу заблокированы и не могут быть изменены ни при каких обстоятельствах. Таким образом, вы можете выполнить следующую команду, чтобы сделать файл неизменным и защитить его от удаления и изменения разрешений:

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

Если вы хотите изменить его, замените его +iна, -iчтобы временно разблокировать файл. Смотрите ответ Rinzwind для более глубокого обзора.

Теперь, если другие люди имеют доступ к вашему компьютеру (удаленный sudoдоступ или физический доступ в любой форме), это мгновенно разваливается. Злоумышленник может использовать rootполномочия, чтобы прочитать ваш файл, вставить Live USB или просто вытащить ваш жесткий диск.

Поэтому нам нужно зашифровать файл. Лично я предпочитаю использовать «файловые контейнеры», чтобы вы могли больше вставлять и увеличивать их по мере необходимости. chattr +iвсе еще рекомендуется, чтобы файл не был случайно удален (или изменен). Наконец, если вы используете зашифрованное изображение, вы можете установить разрешения, позволяющие другим пользователям получать доступ к очень ограниченному подмножеству файлов при подключении диска, что делает его пригодным для сервера. Это руководство изначально было доступно здесь и было адаптировано для использования здесь.

Прежде всего, вы хотите создать образ диска для вашего использования. В этом примере мы сделаем 5 ГБ.

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

Затем нам нужно сделать ваше изображение зашифрованным:

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

У вас будет выбор здесь, чтобы ввести предпочитаемый пароль шифрования. Как только это будет сделано, нам нужно предоставить необработанное блочное устройство:

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

Прямо сейчас у нас есть расшифрованный файловый контейнер, но нет файловой системы, и это так же бесполезно. Давайте исправим это:

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

Теперь нам нужно место для монтирования нашего нового раздела. В этом случае я буду помещать это в /crypt. Я пользователь 1000, поэтому я собираюсь установить свой раздел, чтобы разрешить мне (и пользователю root) читать / писать с него.

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

Теперь я могу использовать свой инструмент для работы с файлами /cryptи хранить там все свои конфиденциальные файлы. Как только я закончу, мне нужно размонтировать и заново зашифровать мой раздел.

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

Теперь я собираюсь установить соответствующие разделы в моем файле изображения, чтобы только я и root могли получить к нему доступ, и чтобы он больше не мог быть изменен.

chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/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

Мои зашифрованные данные будут доступны по адресу /cryptи будут доступны только для чтения и доступны только для меня и root.

Если я хочу изменить файл, мне нужно изменить разрешения и затем смонтировать:

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

Теперь вам нужно быть осторожным, потому что, если у пользователя есть root в его системе, он может изменить / уничтожить ваш зашифрованный раздел, делая его бесполезным. Они также могут украсть данные с диска, но только когда он открыт. Тем не менее, они не могут украсть данные или даже увидеть, что данные существуют без вашего явного открытия. Таким образом, вы обязаны убедиться, что ваша система достаточно безопасна, чтобы при открытии зашифрованного тома не было никаких пользователей root.


TL; DR :

  1. Сделать хранилище:

    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. Заполните хранилище:

    sudo mkdir /crypt
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
  3. Заблокировать хранилище:

    sudo umount /crypt
    sudo cryptsetup luksClose my-secret-device
    
  4. Заморозить хранилище:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
  5. Откройте хранилище:

    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
    
Каз Вулф
источник
Конечно, пользователь с root-доступом может также заменить cryptsetupчто-то, что регистрирует любые введенные пароли ...
Hagen von Eitzen
@HagenvonEitzen Да, на компьютерах нет ничего, что можно назвать «действительно безопасным». Там есть точка, где вы рисуете линию.
Каз Вулф
7

Вы можете использовать encfs для шифрования каталогов .

В основном вам необходимо создать 2 каталога, в 1 из которых будут храниться зашифрованные данные, а в 1 - доступ к этим данным:

mkdir ~/.encrypted
mkdir ~/private

Затем выполните (вам нужно выполнять эту строку каждый раз, когда вы хотите «смонтировать» ваш каталог):

encfs ~/.encrypted/ ~/private/

Если вы не знаете об этом больше, просто нажмите, ENTERчтобы перейти к стандартным настройкам (спрашивается только в первый раз).

Затем введите свой пароль, и он будет смонтирован.

Ваши данные будут доступны только для вашего пользователя в безопасности ~/private/(вы можете в значительной степени игнорировать ~/.encrypted)

Чтобы размонтировать его:

sudo umount ~/private/

или

fusermount -u ~/private/

Просто как тот.

Лепе
источник
3

Вы можете зашифровать данные, используя cryptkeeper, который действительно является очень хорошим приложением и может обеспечить безопасность вашего файла. Вы можете установить его с помощью:

sudo apt-get update
sudo apt-get install cryptkeeper

Как правило, я рекомендую вам зашифровать папку с именем, начинающимся с, . потому что если поместить его перед именем файла, это будет скрыто Это маленькая хитрость, но она работает.

Чтобы показать папку, используйте Ctrl+ hили наоборот.

SHUBHRANEEL GHOSH
источник
1
Клавиша Ctrl + h применяется для какого приложения? Это точно не сработает ls.
Мелебиус
Ctrl-H по крайней мере работает для Наутилуса (и разветвляется, как Немо). Что касается других файловых менеджеров, я не могу сказать. При использовании lsвы можете использовать -aпереключатель, чтобы показать все (то есть скрытые) файлы.
s3lph