Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Grsecurity: Управление доступом с помощью ACL.

Рубрика: Безопасность -> Управление доступом
Метки: | | | |
Вторник, 30 июня 2009 г.
Просмотров: 5960
Подписаться на комментарии по RSS

Управление доступом - самый большой раздел Grsecurity, но, потому что управ­ление доступом реализуется с помощью ACL, здесь нет опций ядра, который связанны с управлением доступом, и это при том, что ACL относится к уровню ядра.

     Настройка ACL делается с помощью утилиты gradm. Применение системы RBAC необязательно, но нужно учитывать, что без ACL крекер может легко обойти некоторые функции Grsecurity.


     Структура ACL.

     ACL (Список управления доступом) находится в файл /etc/grsec/acl. В этот файл можно включать дополнительные списки, используя С-стиль подключения заголовочных файлов (<include>), но рекомендует­ся хранить все списки в одном файле.

     Рассмотрим структуру ACL:

Subject <путь к процессу> <необязательные режимы процесса> {

<файл объект> Необязательные режимы объекта>

[+|-] <возможность>

<имя ресурса> <«мягкий» лимит> <«жесткий» лимит>

connect { <1р>/<сетевая маска>:<порт_от>-<порт_до> <тип> <протокол> }

bind {

<1р>/<сетевая маска>:<порт_от>-<порт_до> <тип> <протокол>

}

<имя ресурса> <«мягкий» лимит> <«жесткий» лимит>

}

     Рассмотрим пример ACL для демона печати cupsd:

subject /usr/sbin/cupsd о {

/ h

/etc/cups/certs

/etc/cups/certs/O wed

/etc/group r

-CAP_ALL

+CAP_CHOWN

+CAP_DAC_OVERRIDE

bind disabled connect disabled }

     Ограничения накладываются на объекты /etc/group, /etc/cups/certs/0 и путем указания режимов объекта. Для каталога /etc/cups/certs режим не задан.

     Режимы субъекта (процесса).

     В Grsecurity субъектом представляется файл или процесс, к которому используется ACL (в примере выше - /usr/sbin/cupsd). Режимы субъекта позволяют управлять его поведением:

  • b — включить учет процесса для этого процесса;
  • d — защитить псевдофайлы /proc/<pid>/fdn/proc/<pid>/mem для этого процесса;
  • h — скрытый процесс; такие процесс могут «увидеть» только процессы, для которых установлен режим v;
  • к — процесс может «убивать» процессы, защищенные режимом р;
  • l — включить режим обучения для процесса;
  • о — отменить ACL-наследование;
  • р — защитить процесс, такой процесс может убить только процесс в режиме к или другой процесс, принадлежащий этому субъекту;
  • r — удалить ограничения ptrace;
  • v — процесс может «видеть» скрытые процессы;
  • А — защищает разделяемую память этого процесса, доступ к разделяемой памяти могут получить только процессы, принадлежащие этому субъекту;
  • С — если процесс «забил тревогу», он будет «убит». Если с этим процессом связан какой-то IP-адрес, также будут «убиты» все процессы, относящиеся к этому IP-адресу;
  • К — если процесс «забил тревогу», он будет «убит»;
  • Т — не позволяет процессу выполнить любой троянский код;
  • Р — отключает РаХ-функцию PEGEEXEC для этого процесса;
  • S - отключает SEGMEXEC (РаХ);
  • М - отключает MPROTECT (РаХ);
  • R - отключает RANDMMAP (РаХ);
  • G - отключает EMUTRAP (РаХ);
  • X - включает RANDEXEC (РаХ).

     РаХ-функции защиты памяти были описаны здесь.

     Режимы объектов.

     Объектом представляется файл или каталог. Нужно запомнить, что если для обозначения режима применяется прописная буква, то это обозначает протоколирование, а если строчная - то определяемое действие.

     Для объектов могут употребляться следующие режимы:

  • а — объект может быть открыт для добавления информации. Информация будет добавлена в «конец» объекта;
  • с — объект может создавать каталоги;
  • d — объект может удалять каталоги;
  • h — объект скрыт;
  • i — когда устанавливается на исполнимых файлах: ACL субъекта будет унаследован во время выполнения этого файла;
  • m — объект может создавать SUID/SGID-файлы;
  • р — нельзя использовать ptrace для этого объекта;
  • r — объект может быть открыт для чтения;
  • s — не записывать отклоненные попытки доступа к объекту;
  • t — объект можно просмотреть с помощью ptrace, но нельзя изменить;
  • w — объект может быть открыт для записи или добавления данных;
  • х — объект можно выполнять;
  • А — записывать успешное добавление информации в объект;
  • С - записывать успешное создание каталога;
  • D - записывать успешное удаление каталога;
  • I - записывать успешное наследование ACL;
  • R - записывать успешное чтение данных;
  • М - записывать успешное создание SUID/SGID-файла;
  • W - записывать успешную запись;
  • X - записывать успешное выполнение.

     Возможности.

     В дополнение к ранее описанным возможностям в Grsecurity применяется псевдоним CAPALL, обозначающий все возможности. Обычно он применяется для запрещения всех возможностей, а потом для разрешения необходимых вам возможностей. Например, сейчас запрещаются все возможности, а потом разрешается возможность изменения владельца файлов:

-CAL_ALL +CAP_CHOWN

     IP ACL.

     Grsecurity также дает концепцию IP ACL: это ограничения IP-адресов, портов, протоколов и типов сокетов, связанных с процессом:

connect {

<1р>/<сетевая маска>:<порт_от>-<порт_до> <тип> <протокол>}

bind {

<1р>/<сетевая маска>:<порт_от>-<порт_до> <тип> <протокол> }

В обоих случаях синтаксис идентичен: IP-адрес, соответствующая ему мас­ка (если маска не указана, подразумевается /32), после данного следует диа­пазон портов (младший и старший порты разделяются дефисом), например 0-65535 (этот диапазон применяется по умолчанию). Тип сокета мо­жет быть: sock, dgram, raw_sock или any_sock. Последним указывает­ся протокол - надо употреблять любой протокол, указанный в файле /etc/protocols.     В следующем примере ограничиваются соединения с субъектом в сети 192.168.1.x, разрешаются только stream-сокеты в непривилегированном режи­ме:

connect {

192.168.1.1/24:1025-65535 stream tcp

}

     Если же не надо управлять ни bind, ни connect, можно их отключить:

bind disabled

connect disabled

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)