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

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

Установка Grsecurity.

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

В отличие от SELinux, которая направлена на одну задачу мандатного управления доступом, Grsecurity предоставляет более обширный диапазон технологий укрепления системы, частично перенесенных из мира Open-BSD. Grsecurity реализует мандатное управление доступом (MAC) через применение списков доступа ACL.

     Одна из основных целей Grsecurity - сократить до минимума конфигура­цию системы, потому что сложно настраиваемые системы часто настраива­ются неправильно, что приводит к возникновению потенциальных «дыр» в системе безопасности. Grsecurity значительно проще в на­стройке и использовании, чем SELinux.

     Некоторые основные функции Grsecurity:


  • Улучшено chroot-окружение, что не дает процессу возможности «побега из песочницы».
  • OpenBSD-стиль рандомизации TCP ISN и PID.
  • ACL (MAC).
  • RBAC.
  • Защита стека РаХ.

     Установка.

     Если вы, уже не раз патчили, настраивали и компилирова­ли ядро, то с установкой патча Grsecurity справитесь без проблем. Иначе ищите описание этих процессов на просторах Интернета. После того, как патч применен, опции Grsecurity появятся в меню Security Options программы menuconfig.

     Далее рассмотрим каждую опцию, относящуюся к конфигурированию Grsecurity.

     Замечание о группах.

     С помощью групп Grsecurity позволяет управлять ограничениями, которые накладываются на входящих в группу пользователей. Идентификаторы групп (GID) могут выбираться произвольно, но по умолчанию Grsecurity использует идентификаторы в диапазоне от 1001 до 1005 включительно.

     Например, для запрета пользователям создавать сетевые соединения может употребляться опция ограничения сокетов. По умолчанию для этой опции применяется GID 1004. Чтобы запретить конкретным пользователям создавать сетевые соединения, можно просто добавить этих пользователей в группу с GID 1004:

# usermod -G users,1004 pete

     В этом случае пользователь будет удален из всех групп, не входящих в спи­сок, заданный опцией -G, и помещен в группу users и группу с GID=1004.

     Уровень безопасности (Security Level).

     Предопределены три уровня безопасности: низкий (low), средний (medium) и высокий (high). Можно определить свой, пользовательский, уровень безопасности. Подсказка подробно объяснит, какие функции будут включе­ны на том или ином уровне. Рекомендуется употреблять пользователь­ский уровень (CONFIGGRKERNSECCUSTOM) и включить все опции для максимальной безопасности.

     Защита адресного пространства (Address Space Protection).

     Данная опция применяется для защиты памяти и должна применяться наряду с РаХ. Включите все опции, кроме CONFIG_GEKERNSEC_IO (эта опция несовместима с XFree86).

Deny writing to /dev/kmem, /dev/mem and/dev/port (CONFIG GRKERNSECJKMEM) - Запретить запись в /dev/kmem, /dev/mem и /dev/port

     Символьные устройства /dev/mem и /dev/kmem дают поль­зователям уровня root прямой доступ к чтению и записи, соответственно, системной памяти и памяти ядра. Запись обычно очень опасна, потому что хакер может употреблять ее для загрузки модулей ядра прямо в память, даже если администратор отключил поддержку загружаемых мо­дулей.

     Устройство /dev/port предоставляет прямой доступ к портам ввода/ вывода, что тоже нежелательно. Единственное приложение, которому действительно необходим прямой доступ к устройству /dev/mem, - это эмулятор VMWare. Если не используется это приложение, включите эту опцию.

Disable Privileged I/O (CONFIG_GRKERSEC_IO) - Отключить привилегированный ввод/вывод

     Эта опция позволяет отключить привилегированный ввод/вывод, то есть отключает системные вызовы ioperm() и iopl(). Эти системные вызовы тоже могут применяться для прямой записи в память. Включение этой опции - превосходное решение, но только если вы не исполь­зуете XFree86, потому что XFree86 несовместима с ней.

Remove Address from /proc/<pid>/ [maps | stat] (CONFIGGRK-ERNSEC MEMMAP) — Удалить адреса из /proc/<pid>/ [maps | stat]

     Псевдофайловая система /рrос дает много информации о запущенных в системе процессах, причем некоторая информа­ция может употребляться в не совсем полезных целях. Наиболее опасны псевдофайлы /proc/<pid>maps и /proc/<pid>/stat, отображающие карту памяти указанного процесса, а карта памяти может употребляться хакером для переполнения буфе­ра. Эта опция дает возможность отключить маппинг памяти, но только при ус­ловии, что для данного процесса также используется РаХ.

Hide Kernel Symbols (CONFIG GRKERNSECHIDESYM) - Удалить символьную информацию ядра

     Применяется наряду с ACL, запрещающим пользователю просматривать файл образа ядра (например, bzlmage или vmlinuz), а тоже файл /proc/kcore. Пользователи root-уровня не смогут получить информацию о загруженных модулях и символах ядра, что дает возможность защитить систему от атак памяти (например, переполнения буфера). Включите эту опцию.

     Опции RBAC(RBAC OPTIONS).

     При конфигурировании RBAC доступны следующие опции:

  • HideKernelProcesses(CONFIG_GKERNSEC_ACL_HEDEKERN)

    — Скрыть процессы ядра — скрывает процессы ядра от обычных пользователей. Только администратор может увидеть эти процессы. Включите эту опцию.

  • Maximum Tries Before Password Lockout

    (CONFIG_GRKERSEC_ACL_MAXTRIES) - Максимальное чис

    ло попыток до блокировки пароля — устанавливает количество попыток ввода неправильного пароля. По умолчанию — 3 попытки. Если за три попытки пользователь не введет правильный пароль, учетная запись будет заблокирована на время, указанное в следующей опции.

  • Time to Wait After Max Password Tries, in Seconds (CONFIG GRKERNSEC_ACL_TIMEOUT) - опция задает время, на которое будет блокирована учетная запись, если пользователь не введет пароль через число попыток, указанное в предыдущей опции. По умолчанию - 30 секунд. Через 30 секунд пользователь опять сможет вводить пароль. Не устанавливайте слишком огромное чис­ло, потому что хакер сможет употреблять это для блоки­ровки учетной записи.