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
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="<-" alt="<-" src="../images/left.gif" /></a></div>
19 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.0</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Autentificación, Autorización y Control de Acceso</h1>
21 <p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
22 <a href="../es/howto/auth.html" title="Español"> es </a> |
23 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
24 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
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
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>
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>
47 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
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>
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>
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>
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"><Directory></a></code>),
69 o en archivos de configuración por directorios (archivos
70 <code>.htaccess</code>).</p>
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>
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
83 <div class="example"><p><code>
84 AllowOverride AuthConfig
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>
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
96 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
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>
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>
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>
115 <div class="example"><p><code>
116 htpasswd -c /usr/local/apache/passwd/passwords rbowen
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>
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
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>
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 <Directory
143 /usr/local/apache/apache/htdocs/secret>.</p>
145 <div class="example"><p><code>
147 AuthName "Restricted Files"<br />
148 AuthUserFile /usr/local/apache/passwd/passwords<br />
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>
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>
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>
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>
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>
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>
221 <div class="example"><p><code>
222 GroupName: rbowen dpitts sungo rshersey
225 <p>Esto es solo una lista de miembros del grupo escritos en una
226 línea separados por espacios.</p>
228 <p>Para agregar un usuario a un archivo de contraseñas ya existente,
231 <div class="example"><p><code>
232 htpasswd /usr/local/apache/passwd/passwords dpitts
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
240 <p>Ahora, necesita modificar su archivo <code>.htaccess</code> para que
241 sea como el siguiente:</p>
243 <div class="example"><p><code>
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
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>
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>
259 <div class="example"><p><code>
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>
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
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>
306 <p>El uso de estas directivas es:</p>
308 <div class="example"><p><code>
309 Allow from <var>address</var>
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>
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
321 <div class="example"><p><code>
322 Deny from 205.252.46.165
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>
330 <div class="example"><p><code>
331 Deny from <var>host.example.com</var>
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
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 />
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>
349 <div class="example"><p><code>
350 Order deny,allow<br />
352 Allow from <var>dev.example.com</var>
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>
366 <div class="bottomlang">
367 <p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
368 <a href="../es/howto/auth.html" title="Español"> es </a> |
369 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
370 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </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>