Linux - есть ли способ предотвратить / защитить файл от удаления даже пользователем root?
89
У меня есть очень важный файл, который приложение использует на своем рабочем месте, и мне нужно убедиться, что оно вообще не удаляется, как я могу это сделать?
Сделайте резервную копию, чтобы вы могли ее восстановить ... Кроме того, это chattr +iможет помочь, но сделает файл доступным только для чтения (и может быть перезаписан chattr -i), также вы можете попытаться защитить его с помощью SELInux и т. Д.
Sven
43
Может ли root создать процесс, который даже root не может убить?
Администратор HW может прийти и вынуть диск, порезать его, сжечь остатки и скормить их. Или, что лучше, некоторые программисты на C (++) могут вызывать некоторых носовых демонов. Все, что важно для вас, поддержите это. Дважды.
Павел
Ответы:
133
Да, вы можете изменить атрибуты файла только для чтения.
Файл с iатрибутом не может быть изменен: его нельзя удалить или переименовать, нельзя создать ссылку на этот файл и данные не могут быть записаны в файл. Только суперпользователь или процесс, обладающий CAP_LINUX_IMMUTABLEвозможностью, может установить или очистить этот атрибут.
Обратите внимание, что пользователь с root-доступом может снять этот флаг и затем удалить файл. Это вряд ли произойдет случайно, но это не защищает от преднамеренного удаления.
Грант
6
@ Грант, если уровень безопасности установлен достаточно высоко. Процесс загрузки устанавливает уровень защиты 2, прежде чем сеть будет включена, поэтому для сброса флага требуется доступ с локального компьютера (но это означает, что файлы, используемые в процессе загрузки до этого времени, также должны быть неизменяемыми).
Саймон Рихтер
16
@ Грант Если кто-то хочет довести это до крайности, вы не можете предотвратить удаление раздела или попадание диска в печь или распад протонов через 10 ^ 30 лет ...
Хаген фон Айцен
2
@Itai Ganot человек Я хотел бы прочитать это 4 дня назад. У меня был вопрос на экзамене, который я взял = /
vfbsilva
84
Запишите это на CD. Вставьте компакт-диск в привод CD-ROM и получите к нему доступ оттуда.
+1 за нестандартное мышление. И, на самом деле, он также использовался ранее в некоторых обстоятельствах (черный диск cdrom с компакт-диском в нем доставлен к месту назначения). В любом случае это может быть нецелесообразно, если кто-то может отключить диск.
Алекс Маццариоль
1
ПОЦЕЛУЙ Я люблю это! +1
MonkeyZeus
2
Я думаю, что это правильный ответ на этот вопрос. Изменение атрибута файла (chattr -i) не может предотвратить вредоносные действия.
Бруно фон Париж
7
В наши дни полноразмерная SD-карта во встроенном кард-ридере может быть лучшим решением - более низкое энергопотребление, более быстрый доступ во многих случаях и более долговечный при использовании без записи.
Крис Х
3
@ jpmc26 отсюда привод CD-ROM. Это только для чтения.
Турбьёрн Равн Андерсен
29
Создайте образ файловой системы.
Смонтировать образ.
Скопируйте файл в смонтированный образ.
Размонтируйте изображение и установите его только для чтения.
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
Каз Вулф
3
Принимая это немного дальше, вы можете использовать squashfsили cramfsкоторые являются сжатыми и только для чтения. Для сборки файловой системы нужен специальный инструмент.
Zan Lynx
7
Linux имеет так называемый привязывать монтаж варианта , который является довольно мощным и полезной особенностью , чтобы узнать :
% cd $TMP && mkdir usebindmountluke && cd usebindmountluke
% echo usebindmountluke > preciousfile
% sudo mount -B preciousfile preciousfile
% sudo mount -oremount,ro preciousfile
% echo sowhat > preciousfile
zsh: read-only file system: preciousfile
% rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system
- здесь выполняется привязка файла к себе (да, вы можете сделать это в Linux), затем он монтируется в режиме R / O. Конечно, это можно сделать и с каталогом.
Вы также должны создать несколько жестких ссылок на файл. Они должны находиться в разных местах, к которым обычные пользователи не могут получить доступ.
Таким образом, даже если им удастся переопределить защиту вашего chattr, данные останутся, и вы сможете легко восстановить их там, где их ищет ваше приложение.
Жесткие ссылки не будут защищать содержимое файла.
200_success
Однако они обеспечат дополнительную защиту от DELETION, которая была первоначальным вопросом.
Барбекю
2
@ barbecue Если файл не связан с именем, по которому его ищет приложение, не имеет значения, что содержимое файла существует под другим именем. Для всего, что ищет файл с ожидаемым именем, файл все еще был удален.
CVN
5
Другие ответили на ваш вопрос, как вы его задали. Как отметил @Sven в комментарии, общее решение вопроса: «Как мне убедиться, что я никогда не потеряю файл?» это создать резервную копию файла. Сделайте копию файла и сохраните его в нескольких местах. Кроме того, если файл чрезвычайно важен и у вашей компании есть политика резервного копирования важных данных с помощью службы резервного копирования, вы можете проверить, включен ли этот файл в службу.
Ну, конечно, файл регулярно копируется, я просто хотел еще один уровень защиты от пользователей, которые иногда работают на коробке с правами пользователя root.
5
На Линуксе неизменен флаг поддерживается только на некоторых типах файловой системы (большинство из них , как родных ext4, xfs, btrfs...)
В файловых системах, где это не поддерживается, другой вариант - привязать файл к себе в режиме только для чтения. Это должно быть сделано в два этапа:
mount --bind file file
mount -o remount,bind,ro file
Это должно быть сделано при каждой загрузке, например, через /etc/fstab.
Ну, конечно, файл регулярно копируется, я просто хотел еще один уровень защиты от пользователей, которые иногда работают на коробке с правами пользователя root. -
Я собираюсь предположить, что вы не можете изменить эту практику, так как это действительно очень плохая идея.
Все предложения по использованию устройства, доступного только для чтения, имеют одну и ту же проблему - это делает вас PITA для внесения законных изменений, когда это необходимо. В случае блокируемого диска, такого как SD-карта, вы сталкиваетесь с проблемой внезапной уязвимости, когда вы разблокируете ее, чтобы внести изменения.
Вместо этого я бы порекомендовал настроить другую машину в качестве сервера NFS и предоставить общий доступ к каталогу с важными файлами для машин, на которых пользователи имеют права root. Предоставьте общий доступ к монтированию только для чтения, чтобы машины с пользователями, которым вы не доверяете, не могли вносить никаких изменений. Когда вам нужно законно внести изменения, вы можете подключиться к серверу NFS и внести наши изменения там.
Мы используем это для наших веб-серверов, так что успешный эксплойт против веб-сервера не сможет вставлять или изменять какие-либо файлы, которые сервер затем будет возвращать обратно, или изменять конфигурацию.
Обратите внимание, что это может быть обойдено так же, как и все связанные с точкой монтирования:
Сделайте копию защищенного каталога
Размонтировать каталог
Переместите копию на место монтирования или вставьте в нее символическую ссылку, если на этом монтировании недостаточно места.
Почему «действительно очень плохая идея» - регулярно создавать резервные копии важных файлов, а также прилагать усилия для защиты оригинала от случайного удаления? Из исходного вопроса ОП и из комментария ОП к ответу, на который вы ссылались, ясно, что проблема заключается не в злонамеренной деятельности, а в случайной / некомпетентной деятельности.
Крейг
1
@Craig: плохая идея иметь много пользователей с root, особенно если им не доверяют не связываться с критическими файлами.
Джо Х.
Ах ... ну, конечно. :-) Но это не суть вопроса ОП. OP утверждал , что есть пользователи с правами суперпользователя , которые должны быть защищены от случайного удаления файла.
Крейг
@Craig: это может быть не суть вопроса, но это суть проблемы (проблема XY?) ... но я понятия не имею , что они делают , как корень, так что, если они могли бы использовать УИП и / или ограниченные привилегии sudo. И вам следует перечитать вопрос, так как я не вижу упоминания Джерри, что он только пытается защитить от непреднамеренного удаления («мне нужно убедиться, что это не удаление вообще»), и он дал только одно продолжение, которое я увидеть (что вызвало мой ответ).
Почему бы не создать образ ISO 9660, который предназначен только для чтения?
Смонтируйте ISO-образ, и он будет выглядеть как CD-ROM, но с производительностью жесткого диска, а файлы на смонтированном образе будут столь же безопасны для удаления, как и файлы на физическом CD-ROM.
Идея записи конфиденциального файла на компакт-диск и запуска его с компакт-диска интересна, если предположить, что установка неизменяемого бита в файле не считается достаточной.
Есть потенциальные негативные проблемы с запуском его с физического CD, в том числе с производительностью (приводы CD-ROM намного, намного медленнее, чем жесткие диски или твердотельные накопители). Существует вероятность того, что CD-ROM будет удален благонамеренным человеком и заменен другим диском, к которому им необходим доступ. Существует вероятность того, что злоумышленник просто вытащит диск и выбросит его в микроволновую печь (или корзину), тем самым «удалив» ваш файл. Есть неудобство необходимости иметь выделенный аппаратный привод CD-ROM только для этого одного файла, и другие факторы.
Но ОП ясно дал понять, что основной целью является защита от случайного удаления, а не от злонамеренных действий, и что рассматриваемый файл (ы) резервируется и может быть восстановлен в случае аварии, но крайне желательно, чтобы файл никогда не был быть случайно удаленным.
Кажется, что запуск файла из смонтированного ISO-образа удовлетворяет требованию.
Root все еще может удалить файл, напрямую управляя изображением. Это просто обычный файл, который монтируется.
Торбьерн Равн Андерсен
@ ThorbjørnRavnAndersen Как это? ISO 9660 по конструкции является неизменным. Сторона, вносящая это изменение, должна будет удалить и заменить весь файл ISO. Не то чтобы они не могли этого сделать. Но они не могли войти и хирургически удалить один файл без огромного опыта, если даже тогда. Было бы намного проще вынуть физический CD-ROM из привода и выбросить его в мусорный контейнер. ;-)
Крейг,
Не нужно быть сложным - просто замените файл изображения нулями.
Турбьёрн Равн Андерсен
@ ThorbjørnRavnAndersen Я согласен с этим достаточно легко. Предостережение заключается в том, что для этого потребуется намеренно демонтировать изображение и перезаписать его. Тщательный преступник был бы только shredв этом пункте. Но если вы не отказываете в физическом доступе к машине, все равно кажется, что проще просто извлечь физический компакт-диск из привода и выбросить его в мусорную корзину, чем размонтировать и перезаписать файл ISO, хотя любой из них прост. И ОП заявляет, что резервное копирование важного файла осуществляется на регулярной основе, так что это всего лишь дополнительная мера против случайного повреждения, а не против злонамеренного вреда.
Крейг
Я указал, как изменить образ ISO9660, даже если он должен быть неизменным. Моя точка зрения заключается в том, что если бит вообще доступен для записи, root может написать его.
chattr +i
может помочь, но сделает файл доступным только для чтения (и может быть перезаписанchattr -i
), также вы можете попытаться защитить его с помощью SELInux и т. Д.Ответы:
Да, вы можете изменить атрибуты файла только для чтения.
Команда:
И чтобы отключить это:
От
man chattr
:источник
chflags schg
Запишите это на CD. Вставьте компакт-диск в привод CD-ROM и получите к нему доступ оттуда.
источник
Пример:
источник
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
squashfs
илиcramfs
которые являются сжатыми и только для чтения. Для сборки файловой системы нужен специальный инструмент.Linux имеет так называемый привязывать монтаж варианта , который является довольно мощным и полезной особенностью , чтобы узнать :
- здесь выполняется привязка файла к себе (да, вы можете сделать это в Linux), затем он монтируется в режиме R / O. Конечно, это можно сделать и с каталогом.
источник
Вы также должны создать несколько жестких ссылок на файл. Они должны находиться в разных местах, к которым обычные пользователи не могут получить доступ.
Таким образом, даже если им удастся переопределить защиту вашего chattr, данные останутся, и вы сможете легко восстановить их там, где их ищет ваше приложение.
источник
Другие ответили на ваш вопрос, как вы его задали. Как отметил @Sven в комментарии, общее решение вопроса: «Как мне убедиться, что я никогда не потеряю файл?» это создать резервную копию файла. Сделайте копию файла и сохраните его в нескольких местах. Кроме того, если файл чрезвычайно важен и у вашей компании есть политика резервного копирования важных данных с помощью службы резервного копирования, вы можете проверить, включен ли этот файл в службу.
источник
На Линуксе неизменен флаг поддерживается только на некоторых типах файловой системы (большинство из них , как родных
ext4
,xfs
,btrfs
...)В файловых системах, где это не поддерживается, другой вариант - привязать файл к себе в режиме только для чтения. Это должно быть сделано в два этапа:
Это должно быть сделано при каждой загрузке, например, через
/etc/fstab
.источник
umount
снова получит файл с правами на записьВ комментарии к ответу Кевина Джерри упоминает:
Я собираюсь предположить, что вы не можете изменить эту практику, так как это действительно очень плохая идея.
Все предложения по использованию устройства, доступного только для чтения, имеют одну и ту же проблему - это делает вас PITA для внесения законных изменений, когда это необходимо. В случае блокируемого диска, такого как SD-карта, вы сталкиваетесь с проблемой внезапной уязвимости, когда вы разблокируете ее, чтобы внести изменения.
Вместо этого я бы порекомендовал настроить другую машину в качестве сервера NFS и предоставить общий доступ к каталогу с важными файлами для машин, на которых пользователи имеют права root. Предоставьте общий доступ к монтированию только для чтения, чтобы машины с пользователями, которым вы не доверяете, не могли вносить никаких изменений. Когда вам нужно законно внести изменения, вы можете подключиться к серверу NFS и внести наши изменения там.
Мы используем это для наших веб-серверов, так что успешный эксплойт против веб-сервера не сможет вставлять или изменять какие-либо файлы, которые сервер затем будет возвращать обратно, или изменять конфигурацию.
Обратите внимание, что это может быть обойдено так же, как и все связанные с точкой монтирования:
источник
Почему бы не создать образ ISO 9660, который предназначен только для чтения?
Смонтируйте ISO-образ, и он будет выглядеть как CD-ROM, но с производительностью жесткого диска, а файлы на смонтированном образе будут столь же безопасны для удаления, как и файлы на физическом CD-ROM.
Идея записи конфиденциального файла на компакт-диск и запуска его с компакт-диска интересна, если предположить, что установка неизменяемого бита в файле не считается достаточной.
Есть потенциальные негативные проблемы с запуском его с физического CD, в том числе с производительностью (приводы CD-ROM намного, намного медленнее, чем жесткие диски или твердотельные накопители). Существует вероятность того, что CD-ROM будет удален благонамеренным человеком и заменен другим диском, к которому им необходим доступ. Существует вероятность того, что злоумышленник просто вытащит диск и выбросит его в микроволновую печь (или корзину), тем самым «удалив» ваш файл. Есть неудобство необходимости иметь выделенный аппаратный привод CD-ROM только для этого одного файла, и другие факторы.
Но ОП ясно дал понять, что основной целью является защита от случайного удаления, а не от злонамеренных действий, и что рассматриваемый файл (ы) резервируется и может быть восстановлен в случае аварии, но крайне желательно, чтобы файл никогда не был быть случайно удаленным.
Кажется, что запуск файла из смонтированного ISO-образа удовлетворяет требованию.
источник
shred
в этом пункте. Но если вы не отказываете в физическом доступе к машине, все равно кажется, что проще просто извлечь физический компакт-диск из привода и выбросить его в мусорную корзину, чем размонтировать и перезаписать файл ISO, хотя любой из них прост. И ОП заявляет, что резервное копирование важного файла осуществляется на регулярной основе, так что это всего лишь дополнительная мера против случайного повреждения, а не против злонамеренного вреда.