Hardened Gentoo
Gentoo Hardened — это проект Gentoo, который предоставляет несколько дополнительных сервисов безопасности, по сравнению с обычной установкой Gentoo Linux.
Запускаете ли вы сервер, имеющий выход в Интернет, или рабочую станцию, принимая во внимание множество угроз, вы можете захотеть улучшить защищенность вашей системы, а не просто автоматически применить последние патчи безопасности. Если вы хотите защитить систему, это значит, что вы принимаете дополнительные контрмеры против атак и других рисков, и обычно это означает некоторый набор действий, которые вы выполняете над системой.
The base of Gentoo Hardened is a hardened toolchain by enabling specific options in the toolchain (compiler, linker ...) such as forcing position-independent executables (PIE), stack smashing protection and compile-time buffer checks. See the table.
Gentoo Hardened включает в себя несколько дополнительных проектов, которые помогут вам ещё лучше защитить вашу систему Gentoo с помощью:
- Включения расширений 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, который теперь может использоваться для компиляции защищенных программ. Удостоверьтесь, что выбран только что собранный компилятор:
root #
gcc-config -l
[1] x86_64-pc-linux-gnu-9.3.0 * [2] x86_64-pc-linux-gnu-8.5.0
Наконец, примените настройки нового профиля:
root #
source /etc/profile
Теперь переустановите все пакеты с помощью нового набора сборки:
root #
emerge --emptytree --verbose @world
Если вы не используете distribution kernel, переустановите исходные коды ядра:
root #
emerge --ask gentoo-sources
Теперь сконфигурируйте/скомпилируйте исходники, и добавьте новое ядро к менеджеру загрузки (например, 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"
Наконец, добавьте пакет, для которого вы хотите запретить либо PIE, либо SSP в /etc/portage/package.env и /etc/portage/env/<имя файла>. В данном примере используется sys-libs/zlib.
/etc/portage/package.env
Отключаем PIE для sys-libs/zlibsys-libs/zlib nopie
Смотрите также
Для более детальной информации проверьте также следующие ресурсы: