This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Hardened Gentoo
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
Отключение SSPCFLAGS="${CFLAGS} -fno-stack-protector" CXXFLAGS="${CXXFLAGS} -fno-stack-protector"
Чтобы отключить PIE, создайте и добавьте в /etc/portage/env/nopie:
/etc/portage/env/nopie
Отключение PIECFLAGS="${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/zlibsys-libs/zlib nopie
Смотрите также
Для более детальной информации проверьте также следующие ресурсы:
- Проект Gentoo Hardened
- Проект Gentoo Hardened SELinux
- Project:Hardened/Grsecurity2_Quickstart
- Project:Hardened/PaX_Quickstart