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

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

Grsecurity: ACL, ограничение ресурсов.

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

Ограничение ресурсов.

     Ограничение ресурсов процесса задается в виде:

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

     Доступны следующие ресурсы:

  • RES_AS — ограничение адресного пространства (в байтах).
  • RES_CORE — максимальный размер файла core (в байтах).
  • RES_CPU — максимальное процессорное время (в мс).
  • RES_DATA — максимальный размер данных (в байтах).
  • RES_FSIZE — максимальный размер файла (в байтах).
  • RES_LOCKS — максимальное число блокировок файлов.
  • RES_MEMLOCK — максимальное число блокировок памяти (в байтах).
  • RES_NOFILE — максимальное число открытых файлов. Нужно помнить, что минимально допустимое число открытых файлов равно 3 — для STDOUT, STDIN и STDERR.
  • RES_NPROC — максимальное число процессов.
  • RES_RSS — максимальный RSS (в байтах).
  • RES_STACK — максимальный размер стека (в байтах).


     Все эти ресурсы уже были описаны ранее (в файле /etc/limits).

     Для некоторых ресурсов можно задать время, по умолчанию время задает­ся в миллисекундах, что не очень удобно. Нужно употреблять единицы s (секунды), m (минуты), d (дни). Для ресурсов, где лимит надо задать в байтах, удобно употреблять единицы К (1000 байтов), М (1 000 000) и G (1 000 000 000). Если ограничений не накладывается, надо указать строку unlimited.

     Примеры ограничения ресурса:

RES_FSIZE 200M 300М

RES_NPROC 2 3

RES_NOFILE 10 10

     Выше были перечислены лимиты Linux, Grsecurity предоставляет свой собственный лимит - RES_CRASH, препятствующий атакам переполне­ния буфера. Когда сервис непрерывно терпит крах, возможно, хакер пытается подобрать корректное смещение для переполнения буфера.

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

RES_CRASH <число сбоев> <период времени>

     Например:

RES_CRASH 3 60m

     Если предел сбоев достигнут, выполнение сервиса будет прекращено на указанный период времени. В случае с исполнимыми файлами с установ­ленным флагом SUID/SGID дополнительно пользователь будет «выбро­шен» из системы на 30 минут, а любые запущенные им процессы будут пре­кращены.

     Наследование субъекта.

     Grsecurity поддерживает наследование ACL для упрощения самого ACL. Наследование используется ко всем субъектам, за исключением тех, которые не были специально отмечены флагом о. Лучше всего продемонстриро­вать наследование на примере:

/ {

/

/bin rx /etc r /tmp rw

-CAP_ALL

connect disabled bind disabled }

/usr/loca/bin/someapp {

/ h

/etc rw

/var h

+CAP_SETUID }

     При обработке второго ACL-списка Grsecurity проверит существование ACLL для каждого компонента пути (в конкретном примере для /usr/local/bin, /usr/local, /usr и /). В этом случае ACL существует только для /. Его ACL будет унаследован субъектом /usr/local/bin/someapp.

     Предыдущий пример может быть переписан так:

/ { /

/bin rx /etc r /tmp rw -CAP_ALL

connect disabled bind disabled

/usr/local/bin/someapp {

/ h

/bin rx

/etc r

/tmp rw

-CAP_ALL

+CAP_SETUID

connect disabled

bind disabled }

     Конфликт двух ролей (например, в первом случае для /etc применяется режим r, а во втором rw), будет решен в пользу субъекта (то есть в конкретном случае будет использован режим /etc rw).

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

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

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

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



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