Hardened Gentoo

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Hardened Gentoo and the translation is 66% complete.
Outdated translations are marked like this.
Resources

Gentoo Hardened — это проект Gentoo, который предоставляет несколько дополнительных сервисов безопасности, по сравнению с обычной установкой Gentoo Linux. Хотя каждый из таких сервисов может быть выбран по отдельности, Gentoo Hardened включает несколько параметров противодействия угрозам в системе сборки, 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 sys-devel/gcc
root #emerge --oneshot sys-devel/binutils sys-libs/glibc

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

root #gcc-config -l
[1] x86_64-pc-linux-gnu-9.3.0 *
[2] x86_64-pc-linux-gnu-8.5.0

Finally source the new profile settings:

root #source /etc/profile

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

root #emerge --depclean prelink

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

root #emerge --emptytree --verbose @world

Установите исходные коды ядра:

root #emerge --ask gentoo-sources

Теперь сконфигурируйте/скомпилируйте исходники, и добавьте новое ядро к вашему менеджеру загрузки (например, 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"

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

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

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

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