1 |
Alex Efros wrote:
|
2 |
|
3 |
Спасибо, очень познавательно.
|
4 |
|
5 |
> Краткое описание что подразумевается под "Hardened Gentoo" и что оно даёт. |
6 |
> Hardened Gentoo это просто объединение нескольких разных, часто независимых |
7 |
> друг от друга, проектов: |
8 |
> |
9 |
> - Hardened toolchain - специальные патчи на gcc/glibc/binutils: |
10 |
> * SSP - добавляет в бинарник защиту от переполнения буфера, т.е. |
11 |
> прога откомпилированная с SSP сама проверяет что у неё не |
12 |
> переполнили буфер и киляет сама себя если обнаруживает переполнение |
13 |
> (как следствие бага в самой программе или попытки её взломать |
14 |
> эксплойтом). |
15 |
> * PIE - не увеличивает защищённость сам по себе, но приводит к |
16 |
> генерации более гибкого кода, благодаря чему его можно будет |
17 |
> защитить на уровне ядра через PaX. |
18 |
> PIE и SSP не зависят друг от друга, и их можно использовать вместе и |
19 |
> по отдельности (по сути, после компиляции hardened toolchain можно |
20 |
> будет через gcc-config переключаться между всеми вариантами - PIE+SSP, |
21 |
> только PIE, только SSP, ничего (т.е. обычный gcc) - например, если |
22 |
> какая-то прога не будет компилироваться. |
23 |
|
24 |
Сразу ставил stage1-x86-hardened-2.6-2005.1, bootstrap.sh и пр. Ядро -
|
25 |
hardened-sources-2.6.11
|
26 |
|
27 |
Hardened Gentoo (http://www.gentoo.org/proj/en/hardened/index.xml) не
|
28 |
читал, думал сначала поставлю, а потом уже разберусь.
|
29 |
|
30 |
# gcc-config -c
|
31 |
i686-pc-linux-gnu-3.3.6
|
32 |
|
33 |
# gcc-config -l
|
34 |
[1] i686-pc-linux-gnu-3.3.6 *
|
35 |
[2] i686-pc-linux-gnu-3.3.6-hardenednopie
|
36 |
[3] i686-pc-linux-gnu-3.3.6-hardenednopiessp
|
37 |
[4] i686-pc-linux-gnu-3.3.6-hardenednossp
|
38 |
[5] i686-pc-linux-gnu-3.3.6-vanilla
|
39 |
|
40 |
Хм.. в хендбуке про hardened практически не слова.
|
41 |
Должно быть нужный gcc'шный профайл надо было выбрать до 'emerge
|
42 |
--emptytree system'. Получается что у меня hardened только ядро.
|
43 |
Кто-то в рассылке спрашивал чем отличается stage1-x86-2005.1 от
|
44 |
stage1-x86-hardened-2.X-2005.1 Я вижу всего лишь два отличия :
|
45 |
/etc/make.profile и hardened toolchain
|
46 |
|
47 |
|
48 |
> |
49 |
> - Патчи на ядро. Их бывает много, и разных, :) но в Gentoo есть |
50 |
> поддержка только четырёх из них - PaX, SeLinux, GrSecurity и RSBAC. |
51 |
> Функциональность они добавляют трех типов: |
52 |
|
53 |
Странно, у себя в hardened-sources я обнаружил только PaX и
|
54 |
GrSecurity, хотя вроде не указывал что мне нужно именно это.
|
55 |
|
56 |
[..skip..]
|
57 |
|
58 |
> Ожидаемые проблемы: |
59 |
> - не всё может скомпилироваться с PIE+SSP - возможно отдельные пакеты |
60 |
> нужно будет патчить или компилировать без одной или обоих из них |
61 |
> (мне пока потребовалось через gcc-config переключаться на vanilla gcc |
62 |
> только для компиляции X-ов чтобы они работали с ATI-дровами) |
63 |
> - не всё может нормально работать, т.к. некоторые программы (обычно |
64 |
> упоминают X-ы и java) используют выполнение динамически |
65 |
> сгенерированного кода для вполне легальных целей, а теперь при попытке |
66 |
> это делать они будут киляться либо SSP либо PIE+PaX - для этих |
67 |
> программ нужно будет индивидуально отключать часть защит PaX (для этого |
68 |
> есть специальные утилиты, например paxctl) и/или компилировать их без SSP |
69 |
> - не всё может работать из-за ограничений "фич" ядра GrSecurity - в этом |
70 |
> случае нужно будет часть защит GrSecurity отключать (глобально, в |
71 |
> make menuconfig) |
72 |
> - настроить ограничения прав доступа может оказаться не просто, и в |
73 |
> любой момент когда какая-нить прога сделает что-то, что мы при |
74 |
> настройке её прав не учли - она будет прибита ядром... и придётся |
75 |
> эти правила в срочном порядке фиксить |
76 |
|
77 |
Получается что все эти проблемы ожидаемы на workstation, а на сервере
|
78 |
маловероятны?
|
79 |
|
80 |
|
81 |
> Ну что, поехали... :) |
82 |
> |
83 |
> Слишком сильная оптимизация (-O3) вместе с hardened toolchain может |
84 |
> приводить к разным глюкам и сбоям компиляции, поэтому нужно в |
85 |
> /etc/make.conf заменить -O3 на -O2. |
86 |
> |
87 |
> Переходим на hardened-профайл. (Теоретически вместо этого можно было просто |
88 |
> добавить в USE-флаги: "hardened pie ssp".) |
89 |
|
90 |
# emerge -vp gcc
|
91 |
[ebuild R ] sys-devel/gcc-3.3.6 (-altivec) -bootstrap
|
92 |
-boundschecking -build -fortran -gcj -gtk +hardened -ip28 -multilib
|
93 |
-multislot -n32 -n64 +nls -nocxx -nopie -nossp -objc -static -vanilla 0 kB
|
94 |
|
95 |
хотя может это из-за того что gcc уже собран с поддержкой pie и ssp
|
96 |
|
97 |
[..skip..]
|
98 |
|
99 |
> Компиляция hardened-toolchain и пересборка им всех остальных пакетов: |
100 |
|
101 |
Что есть "компиляция hardened-toolchain"?
|
102 |
# 'USE="hardened pie ssp" hardened pie ssp' - это?
|
103 |
|
104 |
> emerge binutils gcc glibc |
105 |
> emerge -e world |
106 |
> dispatch-conf |
107 |
> |
108 |
> Далее, нужно поставить ещё несколько пакетов: |
109 |
> |
110 |
> emerge paxtest paxctl gradm |
111 |
|
112 |
[..skip..]
|
113 |
|
114 |
> Что касается настроек ядра. Я для начала настроил всё так, как описано в доке |
115 |
> Gentoo и GrSecurity - при этом не все защиты включены, но |
116 |
|
117 |
Что за доки? http://www.gentoo.org/proj/en/hardened ?
|
118 |
|
119 |
--
|
120 |
Vladimir Solomatin (littleslash@×××××.ru)
|
121 |
Phone: + 7 (0732) 711711
|
122 |
Relex Inc, Voronezh.
|
123 |
|
124 |
--
|
125 |
gentoo-user-ru@g.o mailing list |