Hardened Gentoo

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Hardened Gentoo and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎Nederlands • ‎русский • ‎中文(中国大陆)‎
Resources

Gentoo Hardened это проект Gentoo, который предоставляет несколько дополнительных сервисов безопасности, по сравнению с обычной установкой Gentoo Linux. Хотя каждый из таких сервисов может быть выбран по отдельности, Gentoo Hardened позволяет использовать несколько таких опций в комплексе и поддерживает PaX, grSecurity, SELinux, TPE, и многое другое.

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

Gentoo Hardened включает в себя несколько активных проектов, которые помогут вам дополнительно защитить вашу систему Gentoo с помощью:

  • Включения специфических опций в наборе утилит для сборки (то есть, компиляторе, линковщике, и т.д.), например, заставив компьютер выдавать только исполняемые файлы, которые работают независимо от адреса загрузки (PIE), включив защиту от разрушения стека, а также проверку буферов во время компиляции.
  • Включения расширений PaX для ядра Linux, что дает дополнительные меры защиты, например, случайное распределение адресного пространства и неисполняемую память.
  • Включения расширений grSecurity для ядра Linux, например, дополнительные ограничения chroot, дополнительный аудит, ограничения процессов, и т.д.
  • Включения расширений SELinux в ядре Linux, что позволяет вам использовать систему мандатного управления доступом, что улучшает стандартную систему прав Linux.
  • Включения технологий, относящихся к целостности, например, архитектуры измерения целостности, для того, чтобы сделать систему невосприимчивой к несанкционированному изменению.

Естественно, существуют и необходимые утилиты для управления всеми этими расширениями.

Переключение на Hardened профиль

Выберите защищенный (hardened) профиль, чтобы работа с пакетами проводилась защищенным способом:

root #eselect profile list
root #eselect profile set [номер hardened профиля]
root #source /etc/profile

С выбором hardened профиля, произвелась некоторая настройки по умолчанию для вашей системы (маски, USE-флаги, и так далее). Это применяется для многих пакетов, включая и набор утилит для сборки. Этот набор утилит используется для сборки и компиляции ваших программ, и включает: набор компиляторов GNU (GCC), binutils (компоновщик, и т.д.), а также библиотеку С GNU (glibc). Пересобрав этот набор, эти новые настройки применятся к нему, что позволит все будущие "компиляции пакетов" проводить в защищенном режиме.

root #emerge --oneshot gcc
root #emerge --oneshot binutils virtual/libc

Вышеприведенные команды пересоберут GCC, который теперь может использоваться для компиляции защищенных программ. Удостоверьтесь, что GCC работает в защищенном режиме.

root #gcc-config -l
[1] i686-pc-linux-gnu-4.5.3 *
[2] i686-pc-linux-gnu-4.5.3-hardenednopie
[3] i686-pc-linux-gnu-4.5.3-hardenednopiessp
[4] i686-pc-linux-gnu-4.5.3-hardenednossp
[5] i686-pc-linux-gnu-4.5.3-vanilla

В примере выше, защищенный профиль GCC был без суффикса. Если вы хотите отключить PIE или SSP, выберите нужный (hardenedno(pie|ssp), либо оба hardenednopiessp). Профиль vanilla, естественно, содержит выключенную защиту. В конце концов, примените настройки вашего нового профиля:

root #source /etc/profile

Если вы используете пакет "prelink", удалите его, так как он несовместим с защищенным профилем:

root #emerge --depclean prelink

Теперь вы можете переустановить все пакеты с помощью ваших новых защищенных утилит для сборки:

root #emerge --emptytree --verbose @world

Установите защищенные исходные коды ядра, чтобы ядро *работало с вашей текущей системой* защищенным образом (особенно, с использованием PaX):

root #emerge --ask hardened-sources

Теперь сконфигурируйте/скомпилируйте исходники, и добавьте новое ядро к вашему менеджеру загрузки (например, GRUB).

Подказки и советы

Chroot в защищенной Gentoo/Grsecurity

Если вы хотите выполнить chroot в скопированное окружение, при включенном CONFIG_GRKERNSEC_CHROOT, вы должны перейти в каталог grub, и изменить root(cd) kernel(cd) initrd(cd) с (cd) на (hdx,y).

Теперь вы можете установить окружение grub.

Настройки безопасности для каждого пакета

Предупреждение
Данный метод не поддерживается Gentoo.

Настройка профиля GCC для каждого отдельного пакета может быть мучительной. Можно избежать этого, установив флаги C(XX)FLAGS для каждого пакета в package.env. Создайте файл /etc/portage/env/nossp, и добавьте в него:

Файл /etc/portage/env/nosspОтключение SSP
CFLAGS="${CFLAGS} -fno-stack-protector"
CXXFLAGS="${CXXFLAGS} -fno-stack-protector"

Чтобы отключить PIE, создайте и добавьте в /etc/portage/env/nopie:

Файл /etc/portage/env/nopieОтключение PIE
CFLAGS="${CFLAGS} -no-pie"
CXXFLAGS="${CXXFLAGS} -no-pie"
LDFLAGS="${LDFLAGS} -no-pie"
Заметка
GCC версии 4.x использует -nopie вместо -no-pie.

Наконец, добавьте пакет, для которого вы хотите запретить либо PIE, либо SSP в /etc/portage/package.env и /etc/portage/env/<имя файла>. В данном примере используется sys-libs/zlib.

Файл /etc/portage/package.envОтключаем PIE для sys-libs/zlib
sys-libs/zlib nopie

Смотрите также

Для более детальной информации проверьте также следующие ресурсы:

Внешние ресурсы