bottleneck testcase based on rubbos
[bottlenecks.git] / rubbos / app / apache2 / manual / howto / auth.html.es
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>Autentificación, Autorización y Control de Acceso - Servidor HTTP Apache</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="../faq/">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa de este sitio web</a></p>
15 <p class="apache">Versión 2.0 del Servidor HTTP Apache</p>
16 <img alt="" src="../images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
18 <div id="path">
19 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentación</a> &gt; <a href="../">Versión 2.0</a> &gt; <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Autentificación, Autorización y Control de Acceso</h1>
20 <div class="toplang">
21 <p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
22 <a href="../es/howto/auth.html" title="Español">&nbsp;es&nbsp;</a> |
23 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
24 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
25 </div>
26 <div class="outofdate">Esta traducción podría estar
27             obsoleta. Consulte la versión en inglés de la
28             documentación para comprobar si se han producido cambios
29             recientemente.</div>
30
31     <p>La autentificación es cualquier proceso mediante el cual se
32     verifica que alguien es quien dice ser. La autorización es
33     cualquier proceso por el cual a alguien se le permite estar donde
34     quiere ir, o tener la información que quiere tener.</p>
35 </div>
36 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Módulos y Directivas relacionadas</a></li>
37 <li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introducción</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">Los Prerrequisitos</a></li>
39 <li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Puesta en funcionamiento</a></li>
40 <li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Permitir el acceso a más
41 de una persona</a></li>
42 <li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Posibles Problemas</a></li>
43 <li><img alt="" src="../images/down.gif" /> <a href="#whatotherneatstuffcanido">¿Qué otra cosa
44 sencilla y efectiva puedo hacer?</a></li>
45 <li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Más información</a></li>
46 </ul></div>
47 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
48 <div class="section">
49 <h2><a name="related" id="related">Módulos y Directivas relacionadas</a></h2>
50     <table class="related"><tr><th>Módulos Relacionados</th><th>Directivas Relacionadas</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code></li><li><code class="module"><a href="../mod/mod_access.html">mod_access</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li></ul></td></tr></table>
51 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
52 <div class="section">
53 <h2><a name="introduction" id="introduction">Introducción</a></h2>
54     <p>Si en su sitio web tiene información sensible o dirigida
55     sólo a un pequeño grupo de personas, las técnicas
56     explicadas en éste artículo le ayudarán a
57     asegurarse de que las personas que ven esas páginas son las
58     personas que usted quiere que las vean.</p>
59
60     <p>Este artículo cubre la manera "estándar" de proteger
61     partes de su sitio web que la mayoría de ustedes van a usar.</p>
62 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
63 <div class="section">
64 <h2><a name="theprerequisites" id="theprerequisites">Los Prerrequisitos</a></h2>
65     <p>Las directivas tratadas en éste artículo necesitarán
66     ir en el archivo de configuración principal de su servidor
67     (típicamente en una sección del tipo
68     <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>),
69     o en archivos de configuración por directorios (archivos 
70     <code>.htaccess</code>).</p>
71
72     <p>Si planea usar archivos <code>.htaccess</code>, necesitará
73     tener una configuración en el servidor que permita poner directivas
74     de autentificación en estos archivos. Esto se logra con la
75     directiva <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>,
76     la cual especifica cuáles directivas, en caso de existir, pueden
77     ser colocadas en los archivos de configuración por directorios.</p>
78
79     <p>Ya que se está hablando de autentificación, necesitará
80     una directiva <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> como
81     la siguiente:</p>
82
83     <div class="example"><p><code>
84       AllowOverride AuthConfig
85     </code></p></div>
86
87     <p>O, si sólo va a colocar directivas directamente en el principal
88     archivo de configuración del servidor, por supuesto necesitará
89     tener permiso de escritura a ese archivo.</p>
90
91     <p>Y necesitará saber un poco acerca de la estructura de
92     directorios de su servidor, con la finalidad de que sepa dónde
93     están algunos archivos. Esto no debería ser muy
94     difícil, y trataré de hacerlo sencillo cuando lleguemos a
95     ese punto.</p>
96 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
97 <div class="section">
98 <h2><a name="gettingitworking" id="gettingitworking">Puesta en funcionamiento</a></h2>
99     <p>Aquí está lo esencial en cuanto a proteger con
100     contraseña un directorio de su servidor.</p>
101
102     <p>Necesitará crear un archivo de contraseñas. Éste
103     archivo debería colocarlo en algún sitio no accesible
104     mediante la Web. Por ejemplo, si sus documentos son servidos desde
105     <code>/usr/local/apache/htdocs</code> usted podría querer colocar
106     el(los) archivo(s) de contraseñas en
107     <code>/usr/local/apache/passwd</code>.</p>
108
109     <p>Para crear un archivo de contraseñas, use la utilidad
110     <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> que viene con Apache.
111     Ésta utilidad puede encontrarla en el directorio <code>bin</code>
112     de cualquier sitio en que haya instalado Apache. Para crear el
113     archivo, escriba:</p>
114
115     <div class="example"><p><code>
116       htpasswd -c /usr/local/apache/passwd/passwords rbowen
117     </code></p></div>
118
119     <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> le pedirá la contraseña, y luego se
120     la volverá a pedir para confirmarla:</p>
121
122     <div class="example"><p><code>
123       # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
124       New password: mypassword<br />
125       Re-type new password: mypassword<br />
126       Adding password for user rbowen
127     </code></p></div>
128
129     <p>Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> no está en su ruta, por supuesto
130     tendrá que escribir la ruta completa al archivo para ejecutarlo.
131     En mi servidor, éste archivo está en
132     <code>/usr/local/apache/bin/htpasswd</code></p>
133
134     <p>El siguiente paso es configurar el servidor para que solicite una
135     contraseña y decirle al servidor a qué usuarios se les
136     permite el acceso. Puede hacer esto editando el archivo
137     <code>httpd.conf</code> o usando un archivo <code>.htaccess</code>.
138     Por ejemplo, si desea proteger el directorio
139     <code>/usr/local/apache/htdocs/secret</code>, puede usar las siguientes
140     directivas, ya sea colocándolas en el archivo
141     <code>/usr/local/apache/htdocs/secret/.htaccess</code>,
142     o en <code>httpd.conf</code> dentro de una sección &lt;Directory
143     /usr/local/apache/apache/htdocs/secret&gt;.</p>
144
145     <div class="example"><p><code>
146       AuthType Basic<br />
147       AuthName "Restricted Files"<br />
148       AuthUserFile /usr/local/apache/passwd/passwords<br />
149       Require user rbowen
150     </code></p></div>
151
152     <p>Vamos a examinar cada una de estas directivas por separado. La
153     directiva <code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code> selecciona
154     el método que se va a usar para autentificar al usuario. El
155     método más común es <code>Basic</code>, y éste
156     método está implementado en <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code>. Es importante
157     ser consciente, sin embargo, de que la autentificación Básica
158     envía la contraseña desde el cliente hasta el navegador sin
159     encriptar. Por lo tanto, este método no debería ser usado
160     para información altamente sensible. Apache soporta otro método
161     de autentificación: <code>AuthType Digest</code>. Este método
162     está implementado en <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> y es mucho más
163     seguro. Sólo las versiones más recientes de clientes soportan
164     la autentificación del tipo Digest.</p>
165
166     <p>La directiva <code class="directive"><a href="../mod/core.html#authname">AuthName</a></code> establece
167     el <dfn>Dominio (Realm)</dfn> a usar en la
168     autentificación. El dominio (realm) cumple
169     dos funciones importantes. Primero, el cliente frecuentemente presenta
170     esta información al usuario como parte del cuatro de diálogo
171     para la contraseña. Segundo, es usado por el cliente para determinar 
172     qué contraseña enviar para un área autentificada dada.</p>
173
174     <p>Así, por ejemplo, una vez que el cliente se haya autentificado en
175     el área <code>"Restricted Files"</code>,
176     automáticamente se volverá a tratar de usar la misma
177     contraseña en cualquier área del mismo servidor que esté
178     marcado con el Dominio (Realm) <code>"Restricted Files"</code>. Por lo tanto,
179     puede evitar que se le pida al usuario la contraseña
180     más de una vez permitiendo compartir el mismo dominio (realm)
181     para múltiples áreas restringidas. Por supuesto, por
182     razones de seguridad, el cliente siempre necesitará pedir de
183     nuevo la contraseña cuando cambie el nombre de la
184     máquina del servidor.</p>
185
186     <p>La directiva <code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code>
187     establece la ruta al archivo de contraseña que acabamos de crear
188     con <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. Si tiene un gran número de usuarios,
189     sería bastante lento buscar por medio de un archivo en texto plano
190     para autentificar al usuario en cada solicitud. Apache también tiene
191     la capacidad de almacenar la información del usuario en 
192     archivos rápidos de bases de datos. El módulo <code class="module"><a href="../mod/mod_auth_dbm.html">mod_auth_dbm</a></code>
193     proporciona la directiva <code class="directive"><a href="../mod/mod_auth_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>. Estos archivos pueden
194     ser creados y manipulados con el programa
195     <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code>. Muchos otros tipos
196     de opciones de autentificación están disponibles en módulos
197     de terceras partes en la <a href="http://modules.apache.org/">Base de
198     datos de Módulos de Apache</a>.</p>
199
200     <p>Finalmente, la directiva <code class="directive"><a href="../mod/core.html#require">Require</a></code>
201     proporciona la parte de la autorización del proceso estableciendo
202     el usuario al que se le permite acceder a ese área del servidor.
203     En la próxima sección, discutimos varias formas de usar la
204     directiva <code class="directive"><a href="../mod/core.html#require">Require</a></code>.</p>
205 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
206 <div class="section">
207 <h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Permitir el acceso a más
208 de una persona</a></h2>
209     <p>Las directivas anteriores sólo permiten que una persona
210     (específicamente alguien con un nombre de usuario de
211     <code>rbowen</code>) acceda al directorio. En la mayoría de los
212     casos, usted querrá permitir el acceso a más de una persona.
213     Aquí es donde entra la directiva <code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code>.</p>
214
215     <p>Si desea permitir la entrada a más de una persona, necesitará
216     crear un archivo de grupo que asocie nombres de grupo con una lista
217     de usuarios perteneciente a ese grupo. El formato de este archivo es muy sencillo,
218     y puede crearlo con su editor favorito. El contenido del archivo
219     será parecido a este:</p>
220
221    <div class="example"><p><code>
222      GroupName: rbowen dpitts sungo rshersey
223    </code></p></div>
224
225     <p>Esto es solo una lista de miembros del grupo escritos en una 
226     línea separados por espacios.</p>
227
228     <p>Para agregar un usuario a un archivo de contraseñas ya existente,
229     escriba:</p>
230
231     <div class="example"><p><code>
232       htpasswd /usr/local/apache/passwd/passwords dpitts
233     </code></p></div>
234
235     <p>Obtendrá la misma respuesta que antes, pero el nuevo usuario será agregado
236     al archivo existente, en lugar de crear un nuevo archivo.
237     (Es la opción <code>-c</code> la que se cree un nuevo archivo
238     de contraseñas).</p>
239
240     <p>Ahora, necesita modificar su archivo <code>.htaccess</code> para que
241     sea como el siguiente:</p>
242
243     <div class="example"><p><code>
244       AuthType Basic<br />
245       AuthName "By Invitation Only"<br />
246       AuthUserFile /usr/local/apache/passwd/passwords<br />
247       AuthGroupFile /usr/local/apache/passwd/groups<br />
248       Require group GroupName
249     </code></p></div>
250
251     <p>Ahora, cualquiera que esté listado en el grupo <code>GroupName</code>,
252     y figure en el archivo <code>password</code>, se le permitirá
253     el acceso, si escribe la contraseña correcta.</p>
254
255     <p>Existe otra manera de permitir entrar a múltiples usuarios que
256     es menos específica. En lugar de crear un archivo de grupo, puede
257     usar sólo la siguiente directiva:</p>
258
259     <div class="example"><p><code>
260       Require valid-user
261     </code></p></div>
262
263     <p>Usando eso en vez de la línea <code>Require user rbowen</code>,
264     le permitirá el acceso a cualquiera que esté listado en el
265     archivo de contraseñas y que haya introducido correctamente su
266     contraseña. Incluso puede emular el comportamiento del grupo
267     aquí, sólo manteniendo un archivo de contraseña para
268     cada grupo. La ventaja de esta técnica es que Apache sólo
269     tiene que verificar un archivo, en vez de dos. La desventaja es que
270     usted tiene que mantener un grupo de archivos de contraseña, y
271     recordar referirse al correcto en la directiva <code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code>.</p>
272 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
273 <div class="section">
274 <h2><a name="possibleproblems" id="possibleproblems">Posibles Problemas</a></h2>
275     <p>Por la manera en la que la autentificación básica está
276     especificada, su nombre de usuario y contraseña debe ser verificado
277     cada vez que se solicita un documento del servidor. Incluso si está
278     recargando la misma página, y por cada imagen de la página
279     (si vienen de un directorio protegido). Como se puede imaginar, esto
280     retrasa un poco las cosas. El retraso es proporcional al
281     tamaño del archivo de contraseña, porque se tiene que abrir ese
282     archivo, y recorrer la lista de usuarios hasta que encuentre su nombre.
283     Y eso se tiene que hacer cada vez que se cargue la página.</p>
284
285     <p>Una consecuencia de esto es que hay un límite práctico
286     de cuántos usuarios puede colocar en un archivo de contraseñas.
287     Este límite variará dependiendo del rendimiento de su equipo
288     servidor en particular, pero puede esperar observar una disminución
289     una vez que inserte unos cientos de entradas, y puede que entonces considere
290     un método distinto de autentificaciên.</p>
291 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
292 <div class="section">
293 <h2><a name="whatotherneatstuffcanido" id="whatotherneatstuffcanido">¿Qué otra cosa
294 sencilla y efectiva puedo hacer?</a></h2>
295     <p>La autentificación por nombre de usuario y contraseña es
296     sólo parte del cuento. Frecuentemente se desea permitir el acceso
297     a los usuarios basandose en algo más que quiénes son. Algo como de
298     dónde vienen.</p>
299
300     <p>Las directivas <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> y
301     <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> posibilitan permitir
302     y rechazar el acceso dependiendo del nombre o la dirección de la
303     máquina que solicita un documento. La directiva <code class="directive"><a href="../mod/mod_access.html#order">Order</a></code> va de la mano con estas dos, y le
304     dice a Apache en qué orden aplicar los filtros.</p>
305
306     <p>El uso de estas directivas es:</p>
307
308     <div class="example"><p><code>
309       Allow from <var>address</var>
310     </code></p></div>
311
312     <p>donde <var>address</var> es una dirección IP (o una
313     dirección IP parcial) o un nombre de dominio completamente
314     cualificado (o un nombre de dominio parcial); puede proporcionar
315     múltiples direcciones o nombres de dominio, si lo desea.</p>
316
317     <p>Por ejemplo, si usted tiene a alguien que manda mensajes no deseados
318     a su foro, y quiere que no vuelva a acceder, podría hacer lo
319     siguiente:</p>
320
321     <div class="example"><p><code>
322       Deny from 205.252.46.165
323     </code></p></div>
324
325     <p>Los visitantes que vengan de esa dirección no podrán
326     ver el contenido afectado por esta directiva. Si, por el
327     contrario, usted tiene un nombre de máquina pero no una
328     dirección IP, también puede usarlo.</p>
329
330     <div class="example"><p><code>
331       Deny from <var>host.example.com</var>
332     </code></p></div>
333
334     <p>Y, si le gustaría bloquear el acceso de un dominio entero,
335     puede especificar sólo parte de una dirección o nombre de
336     dominio:</p>
337
338     <div class="example"><p><code>
339       Deny from <var>192.101.205</var><br />
340       Deny from <var>cyberthugs.com</var> <var>moreidiots.com</var><br />
341       Deny from ke
342     </code></p></div>
343
344     <p>Usar <code class="directive"><a href="../mod/mod_access.html#order">Order</a></code> le permitirá
345     estar seguro de que efectivamente está restringiendo el acceso
346     al grupo al que quiere permitir el acceso, combinando una directiva
347     <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> y una <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code>:</p>
348
349     <div class="example"><p><code>
350       Order deny,allow<br />
351       Deny from all<br />
352       Allow from <var>dev.example.com</var>
353     </code></p></div>
354
355     <p>Usando sólo la directiva <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> no haría lo que desea, porque
356     le permitiría entrar a la gente proveniente de esa máquina, y
357     adicionalmente a cualquier persona. Lo que usted quiere es dejar entrar
358     <em>sólo</em> aquellos.</p>
359 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
360 <div class="section">
361 <h2><a name="moreinformation" id="moreinformation">Más información</a></h2>
362     <p>También debería leer la documentación de
363     <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> y <code class="module"><a href="../mod/mod_access.html">mod_access</a></code> que
364     contiene más información acerca de cómo funciona todo esto.</p>
365 </div></div>
366 <div class="bottomlang">
367 <p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
368 <a href="../es/howto/auth.html" title="Español">&nbsp;es&nbsp;</a> |
369 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
370 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
371 </div><div id="footer">
372 <p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
373 <p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="../faq/">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa de este sitio web</a></p></div>
374 </body></html>