ACL файлов в LIDS.
Метки: ACL | LIDS | lidsadm | Lidsconf
Четверг, 9 июля 2009 г.
Просмотров: 2245
Подписаться на комментарии по RSS
В LIDS есть два типа ACL:
- ACL файлов — контролирует доступ к файлам и каталогам.
- ACL возможностей — регулирует возможности исполнимых файлов.
ACL файлов.
LIDS определяет четыре режима для объектов:
- DENY - доступ к файлу запрещен. При обращении приложения (к примеру, Is или cat) к этому файлу, оно получит сообщение об ошибке "No such file or directory" (ENOET) - «Нет такого файла или каталога». Внешне будет выглядеть так, как будто файла не существует.
- READ - объект может быть открыт исключительно в режиме «только чтение», запись запрещена.
- WRITE — чтение и запись не ограничивается. LIDS не защищает этот файл.
Эти режимы могут быть заданы для файла и для каталога. Если режим используется для каталога, то он будет применен ко всем файлам данного каталога.
В LIDS ACL отображается так:
Тип ACL определяет, на какой стадии деятельности системы будет контролироваться доступ к системе. Доступно четыре типа:
- BOOT — доступ будет контролироваться на стадии загрузки системы.
- POSTBOOT — после загрузки.
- SHUTDOWN — при разгрузке системы.
- null — контроль доступа вне зависимости от стадии работы системы.
Обычно тип ACL просто не показывается (null) - для постоянного контроля, а первые три типа используются для ослабления определенных ограничений.
Элемент - это приложение, которому предоставляется доступ (режимы доступа описаны выше) к объекту - файлу или каталогу. Последнее поле, наследование, определяет, будет ли ACL наследоваться дочерними процессами или нет, и может принимать значения 0, 1 и -1.
Объект и элемент тесно связаны друг с другом. К примеру, элементу /usr/bin/sshd (демону SSH) нужен доступ к объекту /var/run/sshd.pid. Есди определяется доступ, к примеру WRITE. Но нужно понимать, что это правило определяет доступ только этого элемента к данному объекту, оно не относится к другим элементам. Если же поле Элемент пусто (то есть элемент не указан), то данный режим доступа используется к объекту для любого элемента (для любого процесса).
Многие приложения (особенно shell-сценарии) вызывают другие программы во время своего выполнения, что можно учитывать при разработке ACL. По умолчанию наследование выключено и дочерние процессы не наследуют режимы доступа, определенные для родительского процесса.
Такой режим деятельности может стать настоящей ключевой болью для администратора - ведь придется установить режим доступа для каждого процесса, вызываемого сценарием. Наследование надо включить, установив значение 1 поля наследования - это так называемый нерекурсивный режим наследования, то есть режим доступа будет унаследован только дочерним процессом.
Если нужно, чтобы режим доступа был унаследован не только дочерним процессом, но и всеми его потомками (его дочерними процессами), надо установить рекурсивный режим - значение -1 для поля Наследование.
Lids.conf
ACL хранятся в файле /etc/lids/lisd.conf. Открыв этот файл, можно увидить, что правила записаны в не совсем понятном для человека виде. Но не надо править этот файл вручную - для данного нужна утилита lidsconf. Но поначалу перейдем к рассмотрению lidsconf, можно все-таки узнать, что означают все данные числа:
ACL системы LIDS содержит номера инодов вместо имен файлов. К примеру, если установить режим APPEND для /var/log/messages, LIDS сохранит в ACL номер инода данного файла.
Данное позволяет более жестко контролировать доступ к файлу - ведь имя ничего не значит, основное - инод: нужно удалить файл с именем /var/ log/messages и заново создать файл с таким же именем. Имя не поменяется, а номер инод - да.
Lidsconf.
Начиная со второй версии, для администрирования и конфигурирования LIDS используются две различные утилиты. Утилита администрирования lidsadm была рассмотрена в предыдущей статье. Осталось рассмотреть утилиту конфигурирования lidsconf. Наиболее важными опциями lidsconf являются:
- -A, —add: добавить запись.
- -С,—check: проверить существующие записи.
- -D, —delete: удалить запись.
- -Z, —zero: удалить все записи.
- -U, —update: обновить /dev и номера инодов.
- -L, —list: вывести все записи.
Следующий пример отображает ACL по умолчанию, который поставляется наряду с lidstools-2.2.5rcl (для удобства в листинг были добавлены номера строк):
Subject ACCESS inherit Object
1) Any file READONLY: 0 /sbin
2) Any file READONLY: 0 /bin
3) Any file READONLY: 0 /boot
4) Any file READONLY: 0 /lib
5) Any file READONLY: 0 /usr
6) Any file READONLY: 0 /etc
7) Any file DENY: 0 /etc/lids
8) Any file DENY: 0 /etc/shadow
9) Any file APPEND: 0 /var/log
10) Any file WRITE: 0 /var/log/ wtmp
11) /bin/login READONLY: 0 /etc/shadow
12) /bin/login GRANT: 0 CAP_SETUI.D
13) /usr/sbin/sshd GRANT: 0 CAP_NET_ADMIN
14) /bin/login GRANT: 0 CAP_GETID
Если несколько правил используется к одному объекту, будет использовано последнее правило. Данное лучше всего продемонстрировать на примере каталога /etc: который указан в правилах 6, 7, 8 и 11. В первую очередь /etc объявляется как READONLY (только чтение), затем объекты /etc/lids и / etc/ shadow делаются невидимыми (DENY). Потому что элемент не указан (Any file - какой угодно файл), то ограничение используется к любому процессу. А в строке 11 READONLY-доступ к файлу /etc/shadow предоставляется только элементу /bin/login.
Для добавления новых записей используется опция -А программы lidsconf:
Как отсюда видно, обязательными в этом случае являются только опции А, о и j:
Все опции понятны, кроме опции [-t с-по]. Эта опция позволяет указать, установить время действия правила. Время показывается в формате ЧЧММ-ЧЧММ. К примеру, чтобы правило действовало с 8-00 по 19-35, нужно использовать следующую опцию: -t 0800-1935.
Для удаления записи применяется синтаксис:
Можно указать элемент и/или объект - будут удалены все совпадающие правила. Надо тоже указать и тип ACL, к примеру POSTBOOT.