1 |
nimiux 11/05/08 11:39:56 |
2 |
|
3 |
Added: pax-quickstart.xml |
4 |
Log: |
5 |
New spanish translation: pax-quickstart.xml |
6 |
|
7 |
Revision Changes Path |
8 |
1.1 xml/htdocs/proj/es/hardened/pax-quickstart.xml |
9 |
|
10 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/proj/es/hardened/pax-quickstart.xml?rev=1.1&view=markup |
11 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/proj/es/hardened/pax-quickstart.xml?rev=1.1&content-type=text/plain |
12 |
|
13 |
Index: pax-quickstart.xml |
14 |
=================================================================== |
15 |
<?xml version='1.0' encoding="UTF-8"?> |
16 |
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/proj/es/hardened/pax-quickstart.xml,v 1.1 2011/05/08 11:39:56 nimiux Exp $ --> |
17 |
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
18 |
|
19 |
<guide lang="es"> |
20 |
<title>Guía de inicio rápido para usa PaX con Gentoo Hardened</title> |
21 |
|
22 |
<author title="Author"> |
23 |
<mail link="tseng@g.o">Brandon Hale</mail> |
24 |
</author> |
25 |
<author title="Editor"> |
26 |
<mail link="blackace@g.o">Blackace</mail> |
27 |
</author> |
28 |
<author title="Editor"> |
29 |
<mail link="solar@g.o">solar</mail> |
30 |
</author> |
31 |
<author title="Traductor"> |
32 |
<mail link="nimiux"/> |
33 |
</author> |
34 |
|
35 |
<abstract> |
36 |
Una guía de inicio rápido que cubre PaX y Gentoo Hardened. |
37 |
</abstract> |
38 |
|
39 |
<!-- The content of this document is licensed under the CC-BY-SA license --> |
40 |
<!-- See http://creativecommons.org/licenses/by-sa/2.0 --> |
41 |
<license/> |
42 |
|
43 |
<version>1.4</version> |
44 |
<date>2007-09-11</date> |
45 |
|
46 |
<chapter> |
47 |
<title>¿Qué es Gentoo Hardened?</title> |
48 |
<section> |
49 |
<body> |
50 |
|
51 |
<p> |
52 |
Gentoo Hardened es un proyecto interesado en reforzar el sistema Gentoo. |
53 |
Soportamos diferentes soluciones y existe una adecuada flexibilidad para |
54 |
crear su propia configuración. En el corazón de la configuración de un |
55 |
sistema Gentoo común está <e>PaX</e>. |
56 |
</p> |
57 |
|
58 |
</body> |
59 |
</section> |
60 |
</chapter> |
61 |
|
62 |
<chapter> |
63 |
<title>¿Qué es PaX?</title> |
64 |
<section> |
65 |
<body> |
66 |
|
67 |
<p> |
68 |
PaX es un parche para el núcleo Linux que ofrece reforzamiento del mismo |
69 |
de dos formas. |
70 |
</p> |
71 |
|
72 |
<p> |
73 |
La primera, <e>ASLR</e> (Address Space Layout Randomization o Esquema de |
74 |
Aleatorización del Espacio de Direcciones) ofrece una forma de |
75 |
aleatorizar la distribución de direcciones de todos los datos cargador |
76 |
en memoria. Cuando se construye una aplicación como un <e>PIE</e> |
77 |
(Position Independent Executable o Ejecutable Independiente de la |
78 |
Posición), Pax puede aleatorizar las direcciones de la aplicación base. |
79 |
</p> |
80 |
|
81 |
<p> |
82 |
La segunda forma de protección ofrecida por PaX es la memoria no |
83 |
ejecutable. Esto impide una forma muy común de ataque en el cual |
84 |
código ejecutable es insertado en memoria por un atacante. Se puede |
85 |
encontrar más información sobre PaX en esta guía, pero la página |
86 |
oficial está en <uri>http://pax.grsecurity.net</uri>. |
87 |
</p> |
88 |
|
89 |
</body> |
90 |
</section> |
91 |
</chapter> |
92 |
|
93 |
<chapter> |
94 |
<title>Una introducción a PIE y SSP</title> |
95 |
<section> |
96 |
<body> |
97 |
|
98 |
<p> |
99 |
Como se ha mencionado arriba, PaX se complementa con PIE. Este método |
100 |
de construir ejecutables almacena información necesaria para relocalizar |
101 |
partes del ejecutable en memoria, de ahí el nombre <e>Independiente de la |
102 |
Posición</e>. |
103 |
</p> |
104 |
|
105 |
<p> |
106 |
<e>SSP</e> (Stack Smashing Protector o Protector contra Ataques a la Pila) |
107 |
es una tecnología que se añade la ejecutable en el momento de su |
108 |
construcción. SSP fue originalmente introducida por IBM bajo el nombre |
109 |
<e>ProPolice</e>. Modifica el compilador de C para insertar código de |
110 |
inicialización en funciones que crean un buffer en memoria. |
111 |
</p> |
112 |
|
113 |
<note> |
114 |
En las nuevas versiones de SSP, es posible aplicar SSP a todas las |
115 |
funciones, añadiendo protección a funciones cuyo buffer normalmente |
116 |
estaría por debajo del límite de tamaño para SSP. Esto es habilitado |
117 |
mediante la CFLAG -fstack-protector-all. |
118 |
</note> |
119 |
|
120 |
<p> |
121 |
Durante la ejecución, cuando se crea un buffer, SSP añade un valor |
122 |
aleatorio secreto al final del buffer: el canario. Cuando la función |
123 |
retorna, SSP se asegura de que el canario está intacto. Si un |
124 |
atacante quisiera intentar un desbordamiento de buffer, sobreescribiría |
125 |
este valor y esto desembocaría en un manejador de ataque a pila. |
126 |
Consecuentemente esto causaría la finalización del proceso atacado. |
127 |
</p> |
128 |
|
129 |
<p> |
130 |
<uri link="http://www.trl.ibm.com/projects/security/ssp/">Más información |
131 |
sobre SSP.</uri> |
132 |
</p> |
133 |
|
134 |
</body> |
135 |
</section> |
136 |
</chapter> |
137 |
|
138 |
<chapter> |
139 |
<title>Construyendo un núcleo con PaX habilitado</title> |
140 |
<section> |
141 |
<body> |
142 |
|
143 |
<p> |
144 |
Varios árboles con el núcleo parcheado con PaX están disponibles en |
145 |
Gentoo. |
146 |
</p> |
147 |
|
148 |
<p> |
149 |
Para las máquinas basadas en 2.4/2.6, los núcleos recomendados son |
150 |
<c>hardened-sources</c> |
151 |
</p> |
152 |
|
153 |
<p> |
154 |
Obtenga uno de los árboles fuente recomendados, o aplique los parches |
155 |
apropiados presentes en <uri>http://pax.grsecurity.net</uri> a su árbol |
156 |
y configúrelo como normalmente lo haría para la máquina destino. |
157 |
</p> |
158 |
|
159 |
<p> |
160 |
En <c>Security Options -> PaX</c>, aplique las opciones que se |
161 |
muestran abajo. |
162 |
</p> |
163 |
|
164 |
<pre caption="Configuración del núcleo"> |
165 |
[*] Enable various PaX features |
166 |
|
167 |
PaX Control -> |
168 |
|
169 |
[ ] Support soft mode |
170 |
[*] Use legacy ELF header marking |
171 |
[*] Use ELF program header marking |
172 |
MAC system integration (none) ---> |
173 |
|
174 |
Non-executable page -> |
175 |
|
176 |
[*] Enforce non-executable pages |
177 |
[*] Paging based non-executable pages |
178 |
[*] Segmentation based non-executable pages |
179 |
[*] Emulate trampolines |
180 |
[*] Restrict mprotect() |
181 |
[ ] Disallow ELF text relocations |
182 |
|
183 |
Address Space Layout Randomization -> |
184 |
|
185 |
[*] Address Space Layout Randomization |
186 |
[*] Randomize kernel stack base |
187 |
[*] Randomize user stack base |
188 |
[*] Randomize mmap() base |
189 |
[*] Randomize ET_EXEC base |
190 |
</pre> |
191 |
|
192 |
<p> |
193 |
Construya este núcleo como lo haría normalmente e instálelo en |
194 |
<path>/boot</path>. |
195 |
</p> |
196 |
|
197 |
</body> |
198 |
</section> |
199 |
</chapter> |
200 |
|
201 |
<chapter> |
202 |
<title>Construyendo una zona de usuario con PIE/SSP habilitado</title> |
203 |
<section> |
204 |
<body> |
205 |
|
206 |
<p> |
207 |
Gentoo Hardened ha añadido soporte para la construcción transparente |
208 |
de PIE/SSP usando un fichero de especificación de GCC. Esto significa |
209 |
que cualquier usuario que realice una actualización de instalaciones |
210 |
anteriores de Hardened deberá eliminar cualquier LDFLAGS o CFLAGS |
211 |
usadas para activar PIE/SSP. También, se debe tener en cuenta que |
212 |
el paquete <c>hardened-gcc</c> es ahora obsoleto y debe ser |
213 |
desinstalado (la versión 5.0 es una paquete inútil). Para obtener |
214 |
la versión actual de GCC, añada <c>USE="hardened pic"</c> a |
215 |
<path>/etc/make.conf</path> si no está usando el perfil hardened. |
216 |
</p> |
217 |
|
218 |
<p> |
219 |
Para mantener un conjunto de herramientas consistente, haga |
220 |
<c>emerge binutils gcc virtual/libc</c> en primer lugar. |
221 |
A continuación, reconstruya el sistema completo haciendo |
222 |
<c>emerge -e world</c>. A partir de ese momento todos los paquetes |
223 |
se construirán usando las tecnologías PIE/SSP. |
224 |
</p> |
225 |
|
226 |
<warn> |
227 |
Tanto PIE como SSP pueden causar algún tipo de problema con algunos |
228 |
paquetes. Si encuentra alguno que falle al compilar, por favor, |
229 |
informe de una nueva y detallada incidencia incluyendo los datos |
230 |
de la compilación que ha fallado y la salida de <c>emerge info</c> en |
231 |
<uri>http://bugs.gentoo.org/</uri>. |
232 |
</warn> |
233 |
|
234 |
<p> |
235 |
Probablemente quiera también hacer emerge de pax-utils. |
236 |
A menudo, si un fichero ELF tiene relocalizaciones ejecutables en |
237 |
el segmento de texto, éstas pueden causarnos problemas. |
238 |
scanelf -BRylptq |
239 |
</p> |
240 |
|
241 |
</body> |
242 |
</section> |
243 |
</chapter> |
244 |
|
245 |
<chapter> |
246 |
<title>Cuando las cosas no van como debieran (PaX Control)</title> |
247 |
<section> |
248 |
<body> |
249 |
|
250 |
<p> |
251 |
Algunas aplicaciones legítimas intentarán generar código en tiempo de |
252 |
ejecución, el cual se ejecuta fuera de memoria. Naturalmente, PaX no |
253 |
lo permitirá y terminará las aplicaciones que intenten hacerlo. |
254 |
</p> |
255 |
|
256 |
<note> |
257 |
La más notable de este tipo de aplicaciones es XFree/Xorg, mplayer y |
258 |
herramientas multimedia basadas en xine-lib. La forma más fácil de |
259 |
evitar estos problemas es desactivar las protecciones de PaX. |
260 |
</note> |
261 |
|
262 |
<p> |
263 |
Afortunadamente existe una utilidad para activar o desactivar las |
264 |
protecciones para un ejecutable: <e>paxctl</e>. Al igual que otros |
265 |
paquetes en Gentoo, instale paxctl mediante el comando |
266 |
<c>emerge paxctl</c>. El uso de esta utilidad se muestra mediante |
267 |
<c>paxctl -h</c>. |
268 |
</p> |
269 |
|
270 |
<note> |
271 |
Si tiene una versión antigua de binutils, necesitará usar <e>chpax</e>, |
272 |
el cual edita las marcas de PaX con el formato antiguo. El uso de chpax |
273 |
es muy parecido al de paxctl. Esto también requiere el soporte de marcas |
274 |
construido en su núcleo. |
275 |
Las nuevas versiones de paxctl hacen chpax obsoleto. |
276 |
</note> |
277 |
|
278 |
<pre caption="paxctl -h"> |
279 |
usage: paxctl <options> <files> |
280 |
|
281 |
options: |
282 |
-p: disable PAGEEXEC -P: enable PAGEEXEC |
283 |
-e: disable EMUTRMAP -E: enable EMUTRMAP |
284 |
-m: disable MPROTECT -M: enable MPROTECT |
285 |
-r: disable RANDMMAP -R: enable RANDMMAP |
286 |
-x: disable RANDEXEC -X: enable RANDEXEC |
287 |
-s: disable SEGMEXEC -S: enable SEGMEXEC |
288 |
|
289 |
-v: view flags -z: restore default flags |
290 |
-q: suppress error messages -Q: report flags in short format flags |
291 |
</pre> |
292 |
|
293 |
<p> |
294 |
La primera opción que se suele usar es <c>-v</c>, la cual muestra los |
295 |
ajustes realizados en un binario en particular. |
296 |
</p> |
297 |
|
298 |
<pre caption="paxctl -v"> |
299 |
shell user # paxctl -v /usr/bin/Xorg |
300 |
PaX control v0.2 |
301 |
Copyright 2004 PaX Team <pageexec@××××××××.hu> |
302 |
|
303 |
- PaX flags: -p-sM--x-eR- [/usr/bin/Xorg] |
304 |
PAGEEXEC is disabled |
305 |
SEGMEXEC is disabled |
306 |
MPROTECT is enabled |
307 |
RANDEXEC is disabled |
308 |
EMUTRAMP is disabled |
309 |
RANDMMAP is enabled |
310 |
</pre> |
311 |
|
312 |
<p> |
313 |
Esto muestra un binario XFree con todas las protecciones deshabilitadas. |
314 |
</p> |
315 |
|
316 |
<p> |
317 |
Para activar un ajuste en un binario, es útil la opción <c>-z</c> ya que |
318 |
restaura el valor por defecto de ese ajuste. |
319 |
</p> |
320 |
|
321 |
<p> |
322 |
Para desactivar las protecciones en Xorg, ejecute |
323 |
<c>paxctl -zpeMRxs /usr/bin/Xorg</c>. |
324 |
</p> |
325 |
|
326 |
<p> |
327 |
Puede probar a activar/desactivar varias protecciones para comprobar |
328 |
cuáles son las mínimas para poder trabajar. A menudo se comprueba que |
329 |
son necesarias las combinaciones -m -sp. |
330 |
</p> |
331 |
|
332 |
</body> |
333 |
</section> |
334 |
</chapter> |
335 |
</guide> |