защитить файлы от редактирования в Linux - PullRequest
0 голосов
/ 17 февраля 2012

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

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

Я обнаружил, что фьюзер может убить этот процесс, но не раньше, чем будут сделаны какие-либо изменения, такие как повреждение. Я использую inotify, чтобы обнаружить изменения. Моя проблема в том, что большинство редакторов создают временный файл, вносят изменения, а затем сохраняют его в исходном файле. Хотя я получаю такие события, как IN_OPEN, IN_CLOSENOWRITE и другие, я получаю IN_CLOSEWRITE и IN_CLOSEMODIFY только после завершения события? Как мне остановить мой файл F от изменения?

Я понимаю, что моя программа может быть убита после того, как кто-то войдет в систему, но могу ли я каким-то образом сохранить все, что смогу?

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

Edit # 2: у меня есть набор файлов, которые нужно постоянно контролировать. Моя программа будет работать в фоновом режиме и отмечать изменения в этих файлах. Все файлы, как я писал ранее, могут быть отредактированы и выполнены пользователем root, но есть действия (модификации), которые могут быть нежелательны и, скорее всего, означают, что кто-то получил права root и отредактировал эти критические файлы. Мне нужно остановить эти вредные изменения. Из ответов я как-то предполагаю, что мне нужно будет сделать снимок этих файлов. Но проблема в том, что количество файлов может быть огромным, от 1 до 4 миллионов. Любые решения, которые эффективнее, чем снимки, приветствуются.

Ответы [ 5 ]

2 голосов
/ 17 февраля 2012

Нет способа защитить файл, если у «злоумышленника» есть root.Что бы вы ни делали, root может отменить.Сказав это, если вы хотите сделать это сложно, вы можете поместить файл в файловую систему только для чтения, такую ​​как cdrom.

1 голос
/ 17 февраля 2012

Если root является вредоносным, нет никаких гарантий относительно целостности данных.В идеале в такой критической системе никто не должен иметь root-права, не переводя систему в автономный режим и в среду обслуживания (возможно, заменяя ее суррогатной системой, когда она отключена, если постоянное время безотказной работы является критическим).

0 голосов
/ 12 июля 2013

Что если ваше приложение мониторинга получило блокировку для каждого файла, которое оно отслеживает?flock, fctnl, например, может работать.Тогда другие приложения не смогут редактировать файл.

Не уверен, как это влияет на удаление (которое, как вы сказали, может быть допустимым).

0 голосов
/ 17 февраля 2012

Я полагаю, что вы можете сделать chattr + i (изменить атрибут на неизменяемый), чтобы запретить редактирование файлов даже руту.Корень всегда может отменить это, но вы можете защитить ваш файл от скрипт-деточки, который не знает о chattr.

0 голосов
/ 17 февраля 2012

Вам следует либо заблокировать файл из своего приложения, либо изменить его ACL и RWX права

...