Как удалить возможности Linux?

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

Очевидно, что злоумышленник, получивший привилегии root, может понять, что используются атрибуты файла, и просто убрать флаг «только для добавления» из журналов, запустив chattr -a. Чтобы предотвратить это, нам нужно отключить возможность удаления атрибута только для добавления. Для этого в Linux используйте механизм его возможностей.

Чтобы пользователь не мог удалить атрибут «только для добавления» из файла, нам нужно удалить возможность CAP_LINUX_IMMUTABLE. Как удалить эту возможность?

Утилита lcap ранее использовалась для этой цели, но в настоящее время она недоступна для Ubuntu. Есть ли другой способ удалить возможности ядра Linux?

Пересчет: я успешно установил lcap_0.0.6 на сервер Ubuntu 13.04, но после выполнения следующей команды я получаю сообщение об ошибке:

sudo ./lcap CAP_LINUX_IMMUTABE
/proc/sys/kernel/cap-bound: No such file or directory
3
задан 26 December 2013 в 22:31

1 ответ

Не полный ответ, но это может помочь понять, что происходит.

Из http://man7.org/linux/man-pages/man7/capabilities.7.html :

Набор ограничений возможностей до Linux 2.6.25

В ядрах до 2.6.25 набор ограничений возможностей является общесистемным атрибутом, который влияет на все потоки в системе. Ограничивающий набор доступен через файл /proc/sys/kernel/cap-bound.

...

Набор ограничений возможностей с Linux 2.6.25 и выше

Начиная с Linux 2.6.25, набор ограничений возможностей является атрибутом для каждого потока. (Больше нет общесистемного ограничивающего набора возможностей.)

...

Удаление возможностей из ограничивающего набора поддерживается, только если возможности файлов скомпилированы в ядро. В ядрах до Linux 2.6.33 файловые возможности были дополнительной функцией, настраиваемой с помощью опции CONFIG_SECURITY_FILE_CAPABILITIES. Начиная с Linux 2.6.33, опция конфигурации была удалена, а файловые возможности всегда являются частью ядра. Когда возможности файлов скомпилированы в ядро, процесс init (предок всех процессов) начинается с полного ограничивающего набора. Если возможности файла не скомпилированы в ядро, то init начинается с полного ограничивающего набора минус CAP_SETPCAP, потому что эта возможность имеет другое значение, когда нет возможностей файла.

Удаление возможности из ограничивающего набора не удаляет его из унаследованного набора потока. Однако это не позволяет в будущем добавить эту возможность обратно в унаследованный набор потока.

0
ответ дан 26 December 2013 в 22:31

Другие вопросы по тегам:

Похожие вопросы: