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

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

Установка и настройка PaX.

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

Установка.

     РаХ не требует пересборки приложений, но, так как реализован в виде патча ядра, требует пересборки самого ядра. РаХ-патч мож­но загрузить с сайта: http://pax.grsecurity.net/, на этом сайте до­ступны версии для ядер 2.4 и 2.6. Загрузите соответствующее ядро с сайта kernel.org, распакуйте его, перейдите в только что созданный каталог и примените РаХ-патч:

# cd /usr/src

# wget http://www.kernel.org/pub/linux/kernel/v.26/linux-2.6.7.bz2

# tar -jxvf linux-2.6.7.bz2

# cd linux-2.6.7

# wget http://pax.grsecurity.net/pax-linux-2.6.7-200406252135.patch

# patch -p0 < pax-linux-2.6.7-200406252135.patch


     Для конфигурации самого РаХ применяется пользовательское приложе­ние paxctl. Paxctl должен быть установлен после компиляции ядра, поэтому рассмотрим сначала сборку ядра.

     Конфигурация ядра.

     Если для конфигурирования опций ядра используется команда make n\enuponfig, то опции РаХ можно найти в меню Security Options. Для включения РаХ включите опцию Enable Various РаХ Features (CONFIG_PAX).

Управление РАХ-ом.

     Следующие опции ядра позволяют указать, как РаХ будет употребляться в системе:

  • Support Soft Mode (CONFIGPAX SOFTMODE) - по умолчанию защита РаХ включена для всех процессов. Софт-режим выклю­чает ее, но тогда администратору можно вручную указать (исполь­зуя утилиту paxctl), какие программы можно защищать. Данный режим включает поддержку софт-режима, но не активизирует его. Для активизации данного режима ядру надо передать параметры pax_softmode=1. Включите эту опцию.
  • Use Legacy ELF Header Marking (CONFIG PAX_EI PAX) - неиспользуемый ныне метод управления РаХ-ом. Здесь он представлен для обратной совместимости.
  • Use ELF Program Header Marking (CONFIG_PAX_PT PAX FLAGS) - эта опция применяет неиспользуемые части ELF-заголовка исполнимого файла для хранения управляющих флагов. Эти флаги могут быть установлены и просмотрены с помощью утилиты paxctl. Включите эту опцию.
  • MAC System Integration (CONFIG PAX [NO|HAVE|HOOK] _ACL_FLAGS) - предназначена только для разработчиков, данная опция позволяет интегрировать РаХ в принудительную систему управления доступом (Mandatory Access Control system).

     НЕВЫПОЛНЯЕМЫЕ СТРАНИЦЫ

     Невыполняемые страницы памяти были рассмотрены в предыдущей статье, поэтому нам уже знакомы методы PAGEEXEC и SEGMEXEC, и трамплины. Рассмотрим опции, которые можно включить:

  • Enforce Nonexecutable Pages (CONFIG_PAX NOEXEC) - включите эту опцию для принудительного использования NOEXEC.
  • Paging-based Nonexecutable Pages (CONFIGPAX PAGEEXEC) — использует метод PAGEEXEC, включите эту опцию.
  • Segmentation-based Nonexecutable Pages (CONFIGPAX SEGMEXEC) — использует метод SEGMEXEC, включите эту опцию.
  • Default Nonexecutable Page Method(CONFIG_PAX_DEFAULT_[PAGEEXEC|SEGMEXEC] - поддержка обоих NOEXEC-методов включена, теперь нужно выбрать метод по умолчанию. Рекомендуется использовать метод SEGMEXEC.
  • Emulate Trampolines (CONFIGPAX EMUTRAP) Включение этой опции позволяет администратору применить эмуляцию трам­плинов. Эмуляция будет распространяться не на все исполнимые файлы, а только на те, которые указаны с помощью утилиты paxctl. Если эта опция выключена, программы, использующие трамплины, требуют отключения функции NOEXEC. Включите эту опцию.
  • Restrict mprotect() (CONFIGPAXMPROTECT) - Опция запре­щает процессам изменять права доступа к странице памяти, то есть процесс не сможет сделать страницу, доступную только для чтения, доступной для записи и невыполняемую страницу сделать выпол­няемой. Тоже процессу запрещено создавать исполнимые страни­цы из неиспользуемых страниц памяти.

     Утилита paxctl.

     Утилита paxctl применяется для настройки раз­личных аспектов поведения РаХ. Утилита paxctl доступна по адресу: http://pax.grsecurity.net и должна быть установлена только после того, как ядро собрано с поддержкой РаХ.

     Paxctl позволяет администратору установить и просмотреть опции РаХ для каждого исполнимого файла в вашей системе. Запустим Paxctl без аргу­ментов:

# paxctl

РаХ control vO.2

Copyright 2004 РаХ Team <pageexec@freemail.hu>

usage: paxctl <options> <files>

options:

-p: disable PAGEEXEC -P: enable PAGEEXEC

-e: disable EMUTRAMP -E: enable EMUTRAMP

-m: disable MPROTECT -M: enable MPROTECT

-r: disable RANDMMAP -R: enable RANDMMAP

-x: disable RANDEXEC -X: enable RANDEXEC

-s: disable SEGMEXEC -S: enable SEGMEXEC

-v: view flags -z: restore default flags

-q: suppress error messages -Q: report flags in short format flags

     Назначение флагов понятно и без комментариев. Например:

# paxctl -v /usr/sbin

РаХ control vO.2

Copyright 2004 РаХ Team <pageexec@f reemai 1. . hu>

- PaX flags: -M--ER- [ /usr/XllR6/bin/Xf ree86]

MPROTECT is enabled EMUTRAMP is enabled RANDMMAP is enabled

     С целью эксперимента можно запустить систему в софт-режиме и включить РаХ только для нескольких сервисов. Ведь при загрузке в обычном режиме РаХ включает защиту для всех исполнимых файлов. Нужно помнить, что установки РаХ хранятся в заголовках ELF-файлов, поэтому они не изменяются при перезапуске системы.