Hardened Gentoo
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, и добавьте в него:
CFLAGS="${CFLAGS} -fno-stack-protector"
CXXFLAGS="${CXXFLAGS} -fno-stack-protector"
Чтобы отключить PIE, создайте и добавьте в /etc/portage/env/nopie:
CFLAGS="${CFLAGS} -no-pie"
CXXFLAGS="${CXXFLAGS} -no-pie"
LDFLAGS="${LDFLAGS} -no-pie"
Наконец, добавьте пакет, для которого вы хотите запретить либо PIE, либо SSP в /etc/portage/package.env и /etc/portage/env/<имя файла>. В данном примере используется sys-libs/zlib.
sys-libs/zlib nopie
Смотрите также
Для более детальной информации проверьте также следующие ресурсы: