Дополнение A. Версия 0.10 для 2.2.19
Как я уже упоминал, авторы не придерживаются определенного дизайна своей системы. Команды lidsadm и методы хранения данных
меняются почти координально от версии к версии. У версии 0.10 есть несколько отличий от версии 0.9.8, которую я описывал.
Изменения касаются установки способностей программам. Если в версии 0.9.8 это делалось таким образом:
lidsadm -A -s программа -t -o способность -j [NO_INHERIT|INHERIT]
то в версии 0.10 это делается так:
lidsadm -A -s программа -o способность -j GRANT -i уровень_наследования
Здесь уровень наследования определяет будут ли наследовать способность программы ее потомки. Если в предыдущих версиях можно было только
указать разрешение (INHERIT) или запрет (NO_INHERIT) наследования, то начиная с версии 0.9.14 можно указывать насколько далекие потомки данной
программы будут обладать той же способностью, что и родитель. Команда вида -
lidsadm -A -s программа -o способность -j GRANT -i 0
запрещает для потомков программы указанную способность. Аналог команды -
lidsadm -A -s программа -t -o способность -j NO_INHERIT
для версии 0.9.8.
Команда вида -
lidsadm -A -s программа -o способность -j GRANT -i -1
разрещает наследование способности бесконечному уровню потоков, т.е. всем потомкам родительского процеса, потомкам потомков родительского процесса,
потомкам потомков потомков и т.д., т.е. не только "детям", но "внукам", "правнукам", "праправнукам" и так до бесконечности.:)
Аналог команды -
lidsadm -A -s программа -t -o способность -j INHERIT
для версии 0.9.8.
Команда вида -
lidsadm -A -s программа -o способность -j GRANT -i 2
разрешает способность "детям" и "внукам" главного процесса. "Правнуки", "праправнуки" и т.д. такой способностью уже не обладают.
Если не указывать уровень наследования (не использовать опцию -i), то по умолчанию он равен 0.
Примеры:
lidsadm -A -s /usr/sbin/httpd -o CAP_HIDDEN -j GRANT -i -1
lidsadm -A -s /sbin/syslogd -t -o CAP_HIDDEN -j GRANT -i 0
lidsadm -A -s /sbin/klogd -t -o CAP_HIDDEN -j GRANT
Новым в версии 0.10 является поддержка доменов. Доменами в данном случае является набор каталогов и их подкаталогов и файлов, к которым имеет
доступ указанная программа. Любые действия в других каталогах или с другими файлами программе запрещены.
Домен для программы создается указанием опции -d при установке правил доступа программе.
lidsadm -A -s программа -d -o каталог -j правило_доступа
Пример (для Apache):
# Каталог конфигурационных файлов
lidsadm -A -s /usr/sbin/httpd -d -o /etc/httpd -j READ
# Каталог с корневым сайтом
lidsadm -A -s /usr/sbin/httpd -d -o /home/httpd -j WRITE
# Каталог для записи логов
lidsadm -A -s /usr/sbin/httpd -d -o /var/log/httpd -j WRITE
# Доступ к разделяемым библиотекам
lidsadm -A -s /usr/sbin/httpd -d -o /usr/lib -j READ
lidsadm -A -s /usr/sbin/httpd -d -o /lib -j READ
lidsadm -A -s /usr/sbin/httpd -d -o /etc/ld.so.cache -j READ
# Файлы для запуска
lidsadm -A -s /usr/sbin/httpd -d -o /var/run -j WRITE
Пример (для MySQL):
# Каталог конфигурационных файлов
lidsadm -A -s /usr/sbin/mysqld -d -o /etc -j READ
# Каталог с файлами сообщений
lidsadm -A -s /usr/sbin/mysqld -d -o /usr/share/mysql -j READ
# Каталог с базами данных
lidsadm -A -s /usr/sbin/mysqld -d -o /var/lib/mysql -j WRITE
# Доступ к разделяемым библиотекам
lidsadm -A -s /usr/sbin/mysqld -d -o /usr/lib -j READ
lidsadm -A -s /usr/sbin/mysqld -d -o /lib -j READ
lidsadm -A -s /usr/sbin/mysqld -d -o /etc/ld.so.cache -j READ
# Файлы для запуска
lidsadm -A -s /usr/sbin/mysqld -d -o /var/run -j WRITE
# Доступ к базовому каталогу
lidsadm -A -s /usr/sbin/mysqld -d -o /usr -j READ
Для всех перечисленных в домене каталогов должны быть установлены правила доступа по умолчанию, даже если эти правила доступа -
разрешение записи-чтения для всех.
lidsadm -A -o /var -j WRITE
lidsadm -A -o /etc -j READ
lidsadm -A -o /usr -j READ
В противном случае LIDS будет ругаться:
root@dhl ~# lidsadm -A -s /usr/sbin/mysqld -d -o /var/run -j WRITE
ADD
lidsadm: you must define the default rules for object files
и правило не будет добавлено.
Домены позволяют запускать программы в строго ограниченном пространстве без создания специального пользователя и без
использования chroot.
(c)Ерижоков А.А., 2001.
Использование данного документа разрешено только с согласия автора и с указанием первоисточника:
DH's Linux Site