diff options
Diffstat (limited to 'docs/manual/howto/auth.xml.es')
-rw-r--r-- | docs/manual/howto/auth.xml.es | 376 |
1 files changed, 376 insertions, 0 deletions
diff --git a/docs/manual/howto/auth.xml.es b/docs/manual/howto/auth.xml.es new file mode 100644 index 0000000000..8da68ecfd7 --- /dev/null +++ b/docs/manual/howto/auth.xml.es @@ -0,0 +1,376 @@ +<?xml version='1.0' encoding='UTF-8' ?> +<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> +<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?> +<!-- English Revision: 151405 --> + +<!-- + Copyright 2005 The Apache Software Foundation or its licensors, + as applicable. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<manualpage metafile="auth.xml.meta"> +<parentdocument href="./">How-To / Tutoriales</parentdocument> + +<title>Autentificación, Autorización y Control de Acceso</title> + +<summary> + <p>La autentificación es cualquier proceso mediante el cual se + verifica que alguien es quien dice ser. La autorización es + cualquier proceso por el cual a alguien se le permite estar donde + quiere ir, o tener la información que quiere tener.</p> +</summary> + +<section id="related"><title>Módulos y Directivas relacionadas</title> + <related> + <modulelist> + <module>mod_auth</module> + <module>mod_access</module> + </modulelist> + + <directivelist> + <directive module="mod_access">Allow</directive> + <directive module="mod_auth">AuthGroupFile</directive> + <directive module="core">AuthName</directive> + <directive module="core">AuthType</directive> + <directive module="mod_auth">AuthUserFile</directive> + <directive module="mod_access">Deny</directive> + <directive module="core">Options</directive> + <directive module="core">Require</directive> + </directivelist> + </related> +</section> + +<section id="introduction"><title>Introducción</title> + <p>Si en su sitio web tiene información sensible o dirigida + sólo a un pequeño grupo de personas, las técnicas + explicadas en éste artículo le ayudarán a + asegurarse de que las personas que ven esas páginas son las + personas que usted quiere que las vean.</p> + + <p>Este artículo cubre la manera "estándar" de proteger + partes de su sitio web que la mayoría de ustedes van a usar.</p> +</section> + +<section id="theprerequisites"><title>Los Prerrequisitos</title> + <p>Las directivas tratadas en éste artículo necesitarán + ir en el archivo de configuración principal de su servidor + (típicamente en una sección del tipo + <directive module="core" type="section">Directory</directive>), + o en archivos de configuración por directorios (archivos + <code>.htaccess</code>).</p> + + <p>Si planea usar archivos <code>.htaccess</code>, necesitará + tener una configuración en el servidor que permita poner directivas + de autentificación en estos archivos. Esto se logra con la + directiva <directive module="core">AllowOverride</directive>, + la cual especifica cuáles directivas, en caso de existir, pueden + ser colocadas en los archivos de configuración por directorios.</p> + + <p>Ya que se está hablando de autentificación, necesitará + una directiva <directive module="core">AllowOverride</directive> como + la siguiente:</p> + + <example> + AllowOverride AuthConfig + </example> + + <p>O, si sólo va a colocar directivas directamente en el principal + archivo de configuración del servidor, por supuesto necesitará + tener permiso de escritura a ese archivo.</p> + + <p>Y necesitará saber un poco acerca de la estructura de + directorios de su servidor, con la finalidad de que sepa dónde + están algunos archivos. Esto no debería ser muy + difícil, y trataré de hacerlo sencillo cuando lleguemos a + ese punto.</p> +</section> + +<section id="gettingitworking"><title>Puesta en funcionamiento</title> + <p>Aquí está lo esencial en cuanto a proteger con + contraseña un directorio de su servidor.</p> + + <p>Necesitará crear un archivo de contraseñas. Éste + archivo debería colocarlo en algún sitio no accesible + mediante la Web. Por ejemplo, si sus documentos son servidos desde + <code>/usr/local/apache/htdocs</code> usted podría querer colocar + el(los) archivo(s) de contraseñas en + <code>/usr/local/apache/passwd</code>.</p> + + <p>Para crear un archivo de contraseñas, use la utilidad + <program>htpasswd</program> que viene con Apache. + Ésta utilidad puede encontrarla en el directorio <code>bin</code> + de cualquier sitio en que haya instalado Apache. Para crear el + archivo, escriba:</p> + + <example> + htpasswd -c /usr/local/apache/passwd/passwords rbowen + </example> + + <p><program>htpasswd</program> le pedirá la contraseña, y luego se + la volverá a pedir para confirmarla:</p> + + <example> + # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br /> + New password: mypassword<br /> + Re-type new password: mypassword<br /> + Adding password for user rbowen + </example> + + <p>Si <program>htpasswd</program> no está en su ruta, por supuesto + tendrá que escribir la ruta completa al archivo para ejecutarlo. + En mi servidor, éste archivo está en + <code>/usr/local/apache/bin/htpasswd</code></p> + + <p>El siguiente paso es configurar el servidor para que solicite una + contraseña y decirle al servidor a qué usuarios se les + permite el acceso. Puede hacer esto editando el archivo + <code>httpd.conf</code> o usando un archivo <code>.htaccess</code>. + Por ejemplo, si desea proteger el directorio + <code>/usr/local/apache/htdocs/secret</code>, puede usar las siguientes + directivas, ya sea colocándolas en el archivo + <code>/usr/local/apache/htdocs/secret/.htaccess</code>, + o en <code>httpd.conf</code> dentro de una sección <Directory + /usr/local/apache/apache/htdocs/secret>.</p> + + <example> + AuthType Basic<br /> + AuthName "Restricted Files"<br /> + AuthUserFile /usr/local/apache/passwd/passwords<br /> + Require user rbowen + </example> + + <p>Vamos a examinar cada una de estas directivas por separado. La + directiva <directive module="core">AuthType</directive> selecciona + el método que se va a usar para autentificar al usuario. El + método más común es <code>Basic</code>, y éste + método está implementado en <module>mod_auth</module>. Es importante + ser consciente, sin embargo, de que la autentificación Básica + envía la contraseña desde el cliente hasta el navegador sin + encriptar. Por lo tanto, este método no debería ser usado + para información altamente sensible. Apache soporta otro método + de autentificación: <code>AuthType Digest</code>. Este método + está implementado en <module>mod_auth_digest</module> y es mucho más + seguro. Sólo las versiones más recientes de clientes soportan + la autentificación del tipo Digest.</p> + + <p>La directiva <directive module="core">AuthName</directive> establece + el <dfn>Dominio (Realm)</dfn> a usar en la + autentificación. El dominio (realm) cumple + dos funciones importantes. Primero, el cliente frecuentemente presenta + esta información al usuario como parte del cuatro de diálogo + para la contraseña. Segundo, es usado por el cliente para determinar + qué contraseña enviar para un área autentificada dada.</p> + + <p>Así, por ejemplo, una vez que el cliente se haya autentificado en + el área <code>"Restricted Files"</code>, + automáticamente se volverá a tratar de usar la misma + contraseña en cualquier área del mismo servidor que esté + marcado con el Dominio (Realm) <code>"Restricted Files"</code>. Por lo tanto, + puede evitar que se le pida al usuario la contraseña + más de una vez permitiendo compartir el mismo dominio (realm) + para múltiples áreas restringidas. Por supuesto, por + razones de seguridad, el cliente siempre necesitará pedir de + nuevo la contraseña cuando cambie el nombre de la + máquina del servidor.</p> + + <p>La directiva <directive module="mod_auth">AuthUserFile</directive> + establece la ruta al archivo de contraseña que acabamos de crear + con <program>htpasswd</program>. Si tiene un gran número de usuarios, + sería bastante lento buscar por medio de un archivo en texto plano + para autentificar al usuario en cada solicitud. Apache también tiene + la capacidad de almacenar la información del usuario en + archivos rápidos de bases de datos. El módulo <module>mod_auth_dbm</module> + proporciona la directiva <directive + module="mod_auth_dbm">AuthDBMUserFile</directive>. Estos archivos pueden + ser creados y manipulados con el programa + <program>dbmmanage</program>. Muchos otros tipos + de opciones de autentificación están disponibles en módulos + de terceras partes en la <a href="http://modules.apache.org/">Base de + datos de Módulos de Apache</a>.</p> + + <p>Finalmente, la directiva <directive module="core">Require</directive> + proporciona la parte de la autorización del proceso estableciendo + el usuario al que se le permite acceder a ese área del servidor. + En la próxima sección, discutimos varias formas de usar la + directiva <directive module="core">Require</directive>.</p> +</section> + +<section id="lettingmorethanonepersonin"><title>Permitir el acceso a más +de una persona</title> + <p>Las directivas anteriores sólo permiten que una persona + (específicamente alguien con un nombre de usuario de + <code>rbowen</code>) acceda al directorio. En la mayoría de los + casos, usted querrá permitir el acceso a más de una persona. + Aquí es donde entra la directiva <directive module="mod_auth" + >AuthGroupFile</directive>.</p> + + <p>Si desea permitir la entrada a más de una persona, necesitará + crear un archivo de grupo que asocie nombres de grupo con una lista + de usuarios perteneciente a ese grupo. El formato de este archivo es muy sencillo, + y puede crearlo con su editor favorito. El contenido del archivo + será parecido a este:</p> + + <example> + GroupName: rbowen dpitts sungo rshersey + </example> + + <p>Esto es solo una lista de miembros del grupo escritos en una + línea separados por espacios.</p> + + <p>Para agregar un usuario a un archivo de contraseñas ya existente, + escriba:</p> + + <example> + htpasswd /usr/local/apache/passwd/passwords dpitts + </example> + + <p>Obtendrá la misma respuesta que antes, pero el nuevo usuario será agregado + al archivo existente, en lugar de crear un nuevo archivo. + (Es la opción <code>-c</code> la que se cree un nuevo archivo + de contraseñas).</p> + + <p>Ahora, necesita modificar su archivo <code>.htaccess</code> para que + sea como el siguiente:</p> + + <example> + AuthType Basic<br /> + AuthName "By Invitation Only"<br /> + AuthUserFile /usr/local/apache/passwd/passwords<br /> + AuthGroupFile /usr/local/apache/passwd/groups<br /> + Require group GroupName + </example> + + <p>Ahora, cualquiera que esté listado en el grupo <code>GroupName</code>, + y figure en el archivo <code>password</code>, se le permitirá + el acceso, si escribe la contraseña correcta.</p> + + <p>Existe otra manera de permitir entrar a múltiples usuarios que + es menos específica. En lugar de crear un archivo de grupo, puede + usar sólo la siguiente directiva:</p> + + <example> + Require valid-user + </example> + + <p>Usando eso en vez de la línea <code>Require user rbowen</code>, + le permitirá el acceso a cualquiera que esté listado en el + archivo de contraseñas y que haya introducido correctamente su + contraseña. Incluso puede emular el comportamiento del grupo + aquí, sólo manteniendo un archivo de contraseña para + cada grupo. La ventaja de esta técnica es que Apache sólo + tiene que verificar un archivo, en vez de dos. La desventaja es que + usted tiene que mantener un grupo de archivos de contraseña, y + recordar referirse al correcto en la directiva <directive + module="mod_auth">AuthUserFile</directive>.</p> +</section> + +<section id="possibleproblems"><title>Posibles Problemas</title> + <p>Por la manera en la que la autentificación básica está + especificada, su nombre de usuario y contraseña debe ser verificado + cada vez que se solicita un documento del servidor. Incluso si está + recargando la misma página, y por cada imagen de la página + (si vienen de un directorio protegido). Como se puede imaginar, esto + retrasa un poco las cosas. El retraso es proporcional al + tamaño del archivo de contraseña, porque se tiene que abrir ese + archivo, y recorrer la lista de usuarios hasta que encuentre su nombre. + Y eso se tiene que hacer cada vez que se cargue la página.</p> + + <p>Una consecuencia de esto es que hay un límite práctico + de cuántos usuarios puede colocar en un archivo de contraseñas. + Este límite variará dependiendo del rendimiento de su equipo + servidor en particular, pero puede esperar observar una disminución + una vez que inserte unos cientos de entradas, y puede que entonces considere + un método distinto de autentificaciên.</p> +</section> + +<section id="whatotherneatstuffcanido"><title>¿Qué otra cosa +sencilla y efectiva puedo hacer?</title> + <p>La autentificación por nombre de usuario y contraseña es + sólo parte del cuento. Frecuentemente se desea permitir el acceso + a los usuarios basandose en algo más que quiénes son. Algo como de + dónde vienen.</p> + + <p>Las directivas <directive module="mod_access">Allow</directive> y + <directive module="mod_access">Deny</directive> posibilitan permitir + y rechazar el acceso dependiendo del nombre o la dirección de la + máquina que solicita un documento. La directiva <directive + module="mod_access">Order</directive> va de la mano con estas dos, y le + dice a Apache en qué orden aplicar los filtros.</p> + + <p>El uso de estas directivas es:</p> + + <example> + Allow from <var>address</var> + </example> + + <p>donde <var>address</var> es una dirección IP (o una + dirección IP parcial) o un nombre de dominio completamente + cualificado (o un nombre de dominio parcial); puede proporcionar + múltiples direcciones o nombres de dominio, si lo desea.</p> + + <p>Por ejemplo, si usted tiene a alguien que manda mensajes no deseados + a su foro, y quiere que no vuelva a acceder, podría hacer lo + siguiente:</p> + + <example> + Deny from 205.252.46.165 + </example> + + <p>Los visitantes que vengan de esa dirección no podrán + ver el contenido afectado por esta directiva. Si, por el + contrario, usted tiene un nombre de máquina pero no una + dirección IP, también puede usarlo.</p> + + <example> + Deny from <var>host.example.com</var> + </example> + + <p>Y, si le gustaría bloquear el acceso de un dominio entero, + puede especificar sólo parte de una dirección o nombre de + dominio:</p> + + <example> + Deny from <var>192.101.205</var><br /> + Deny from <var>cyberthugs.com</var> <var>moreidiots.com</var><br /> + Deny from ke + </example> + + <p>Usar <directive module="mod_access">Order</directive> le permitirá + estar seguro de que efectivamente está restringiendo el acceso + al grupo al que quiere permitir el acceso, combinando una directiva + <directive module="mod_access">Deny</directive> y una <directive + module="mod_access">Allow</directive>:</p> + + <example> + Order deny,allow<br /> + Deny from all<br /> + Allow from <var>dev.example.com</var> + </example> + + <p>Usando sólo la directiva <directive + module="mod_access">Allow</directive> no haría lo que desea, porque + le permitiría entrar a la gente proveniente de esa máquina, y + adicionalmente a cualquier persona. Lo que usted quiere es dejar entrar + <em>sólo</em> aquellos.</p> +</section> + +<section id="moreinformation"><title>Más información</title> + <p>También debería leer la documentación de + <module>mod_auth</module> y <module>mod_access</module> que + contiene más información acerca de cómo funciona todo esto.</p> +</section> +</manualpage> + + |