Versin 2.4 del Servidor HTTP Apache
Idiomas disponibles: tr
Autenticacin es cualquier proceso por el cul se verifica que uno es quien dice ser. Autorizacin es cualquier proceso en el cul cualquiera est permitido a estar donde se quiera, o tener informacin la cul se quiera tener.
Para informacin de control de de forma genrica visiteHow to de Control de .
Hay tres tipos de mdulos involucrados en los procesos de la autenticacin y autorizacin. Normalmente debers escoger al menos un mdulo de cada grupo.
AuthType
)
AuthDigestProvider
)
Require
)
A parte de stos mdulos, tambin estn mod_authz_core
. stos mdulos implementan las directivas esenciales que son el centro de todos los mdulos de autenticacin.
El mdulo mod_access_compat
.
Tambin puedes mirar el how-to de Control de , donde se plantean varias formas del control de al servidor.
Si se tiene informacin en nuestra pgina web que sea informacin sensible o pensada para un grupo reducido de s/personas, las tcnicas que se describen en este manual, le servirn de ayuda para asegurarse de que las personas que ven esas pginas sean las personas que uno quiere.
Este artculo cubre la parte "estndar" de cmo proteger partes de un sitio web que muchos usarn.
Si de verdad es necesario que tus datos estn en un sitio seguro, considera usar mod_ssl
como mtodo de autenticacin adicional a cualquier forma de autenticacin.
Las directivas que se usan en este artculo necesitaran ponerse ya sea en el fichero de configuracin principal del servidor ( tpicamente en la seccin <Directory>
de apache2.conf ), o en cada uno de los ficheros de configuraciones del propio directorio (los archivos .htaccess
).
Si planea usar los ficheros .htaccess
, necesitars tener en la configuracin global del servidor, una configuracin que permita poner directivas de autenticacin en estos ficheros. Esto se hace con la directiva AllowOverride
, la cual especifica que directivas, en su caso, pueden ser puestas en cada fichero de configuracin por directorio.
Ya que estamos hablando aqu de autenticacin, necesitars una directiva AllowOverride
como la siguiente:
AllowOverride AuthConfig
O, si solo se van a poner las directivas directamente en la configuracin principal del servidor, debers tener, claro est, permisos de escritura en el archivo.
Y necesitars saber un poco de como est estructurado el rbol de directorios de tu servidor, para poder saber donde se encuentran algunos archivos. Esto no debera ser una tarea difcil, an as intentaremos dejarlo claro llegado el momento de comentar dicho aspecto.
Tambin debers de asegurarte de que los mdulos mod_authz_core
han sido incorporados, o aadidos a la hora de compilar en tu binario httpd o cargados mediante el archivo de configuracin apache2.conf
. Estos dos mdulos proporcionan directivas bsicas y funcionalidades que son crticas para la configuracin y uso de autenticacin y autorizacin en el servidor web.
Aqu est lo bsico de cmo proteger con contrasea un directorio en tu servidor.
Primero, necesitars crear un fichero de contrasea. Dependiendo de que proveedor de autenticacin se haya elegido, se har de una forma u otra. Para empezar, usaremos un fichero de contrasea de tipo texto.
Este fichero deber estar en un sitio que no se pueda tener desde la web. Esto tambin implica que nadie pueda descargarse el fichero de contraseas. Por ejemplo, si tus documentos estn guardados fuera de /usr/local/apache/htdocs
, querrs poner tu archivo de contraseas en /usr/local/apache/wd
.
Para crear el fichero de contraseas, usa la utilidad htwd
que viene con Apache. Esta herramienta se encuentra en el directorio /bin
en donde sea que se ha instalado el Apache. Si ha instalado Apache desde un paquete de terceros, puede ser que se encuentre en su ruta de ejecucin.
Para crear el fichero, escribiremos:
htwd -c /usr/local/apache/wd/s rbowen
htwd
te preguntar por una contrasea, y despus te pedir que la vuelvas a escribir para confirmarla:
$ htwd -c /usr/local/apache/wd/s rbowen
New : my
Re-type new : my
Adding for rbowen
Si htwd
no est en tu variable de entorno "path" del sistema, por supuesto debers escribir la ruta absoluta del ejecutable para poder hacer que se ejecute. En una instalacin por defecto, est en: /usr/local/apache2/bin/htwd
Lo prximo que necesitas, ser configurar el servidor para que pida una contrasea y as decirle al servidor que s estn autorizados a acceder. Puedes hacer esto ya sea editando el fichero apache2.conf
de configuracin o usando in fichero .htaccess
. Por ejemplo, si quieres proteger el directorio /usr/local/apache/htdocs/secret
, puedes usar las siguientes directivas, ya sea en el fichero .htaccess
localizado en following directives, either placed in the file /usr/local/apache/htdocs/secret/.htaccess
, o en la configuracin global del servidor apache2.conf
dentro de la seccin <Directory "/usr/local/apache/htdocs/secret"> , como se muestra a continuacin:
<Directory "/usr/local/apache/htdocs/secret"> AuthType Basic AuthName "Restricted Files" # (Following line optional) AuthBasirovider file AuthFile "/usr/local/apache/wd/s" Require rbowen </Directory>
Vamos a explicar cada una de las directivas individualmente. La directiva mod_ssl
en su lugar.
La directiva AuthName
establece el Realm para ser usado en la autenticacin. El Realm tiene dos funciones principales. La primera, el cliente presenta a menudo esta informacin al como parte del cuadro de dilogo de contrasea. La segunda, que es utilizado por el cliente para determinar qu contrasea enviar a para una determinada zona de autenticacin.
As que, por ejemple, una vez que el cliente se ha autenticado en el rea de los "Ficheros Restringidos"
, entonces re-intentar automticamente la misma contrasea para cualquier rea en el mismo servidor que es marcado con el Realm de "Ficheros Restringidos"
Por lo tanto, puedes prevenir que a un se le pida mas de una vez por su contrasea, compartiendo as varias reas restringidas el mismo Realm Por supuesto, por razones de seguridad, el cliente pedir siempre por una contrasea, siempre y cuando el nombre del servidor cambie.
La directiva mod_authn_dbd
.
La directiva htdbm
. Muchos otros mtodos de autenticacin as como otras opciones, estn disponibles en mdulos de terceros Base de datos de Mdulos disponibles.
Finalmente, la directiva Require
.
Las directivas mencionadas arriba slo permiten a una persona (especialmente con un que en ej ejemplo es rbowen
) en el directorio. En la mayora de los casos, se querr permitir el a ms de una persona. Aqu es donde la directiva AuthGroupFile
entra en juego.
Si lo que se desea es permitir a ms de una persona el , necesitars crear un archivo de grupo que asocie los nombres de grupos con el de personas para permitirles el . El formato de este fichero es bastante sencillo, y puedes crearlo con tu editor de texto favorito. El contenido del fichero se parecer a:
GroupName: rbowen dpitts sungo rshersey
Bsicamente eso es la lista de los cuales estn en un mismo fichero de grupo en una sola linea separados por espacios.
Para aadir un a tu fichero de contraseas existente teclee:
htwd /usr/local/apache/wd/s dpitts
Te responder lo mismo que anteriormente, pero se aadir al fichero existente en vez de crear uno nuevo. (Es decir el flag -c
ser el que haga que se genere un nuevo fichero de contraseas).
Ahora, tendr que modificar su fichero .htaccess
para que sea parecido a lo siguiente:
AuthType Basic AuthName "By Invitation Only" # Optional line: AuthBasirovider file AuthFile "/usr/local/apache/wd/s" AuthGroupFile "/usr/local/apache/wd/groups" Require group GroupName
Ahora, cualquiera que est listado en el grupo GroupName
, y tiene una entrada en el fichero de contraseas
, se les permitir el , si introducen su contrasea correctamente.
Hay otra manera de dejar entrar a varios s, que es menos especfica. En lugar de crear un archivo de grupo, slo puede utilizar la siguiente directiva:
Require valid-
Usando sto en vez de la lnea Require rbowen
permitir a cualquier persona acceder, la cul aparece en el archivo de contraseas, y que introduzca correctamente su contrasea. Incluso puede emular el comportamiento del grupo aqu, slo manteniendo un fichero de contraseas independiente para cada grupo. La ventaja de este enfoque es que Apache slo tiene que comprobar un archivo, en lugar de dos. La desventaja es que se tiene que mantener un montn de ficheros de contrasea de grupo, y recuerde hacer referencia al fichero correcto en la directiva AuthFile
.
Debido a la forma en que se especifica la autenticacin bsica, su nombre de y la contrasea deben ser verificados cada vez que se solicita un documento desde el servidor. Esto es, incluso si se vuelve a cargar la misma pgina, y para cada imagen de la pgina (si provienen de un directorio protegido). Como se puede imaginar, esto ralentiza las cosas un poco. La cantidad que ralentiza las cosas es proporcional al tamao del archivo de contraseas, porque tiene que abrir ese archivo, recorrerlista de s hasta que llega a su nombre. Y tiene que hacer esto cada vez que se carga una pgina.
Una consecuencia de esto, es que hay un limite prctico de cuantos s puedes introducir en el fichero de contraseas. Este lmite variar dependiendo de la mquina en la que tengas el servidor, pero puedes notar ralentizaciones en cuanto se metan cientos de entradas, y por lo tanto consideraremos entonces otro mtodo de autenticacin en ese momento.
Debido a que el almacenamiento de las contraseas en texto plano tiene el problema mencionado anteriormente, puede que se prefiera guardar las contraseas en otro lugar como por ejemplo una base de datos.
Los mdulos AuthBasirovider
, en su lugar se puede elegir dbm
o dbd
como formato de almacenamiento.
Para seleccionar los ficheros de tipo dbm en vez de texto plano, podremos hacer algo parecido a lo siguiente:
<Directory "/www/docs/private"> AuthName "Private" AuthType Basic AuthBasirovider dbm AuthDBMFile "/www/s/wd.dbm" Require valid- </Directory>
Hay otras opciones disponibles. Consulta la documentacin de mod_authn_dbm
para ms detalles.
Con la introduccin de la nueva autenticacin basada en un proveedor y una arquitectura de autorizacin, ya no estaremos restringidos a un nico mtodo de autenticacin o autorizacin. De hecho, cualquier nmero de los proveedores pueden ser mezclados y emparejados para ofrecerle exactamente el esquema que se adapte a sus necesidades. En el siguiente ejemplo, veremos como ambos proveedores tanto el fichero como el LDAP son usados en la autenticacin:
<Directory "/www/docs/private"> AuthName "Private" AuthType Basic AuthBasirovider file ldap AuthFile "/usr/local/apache/wd/s" AuthLDAPURL ldap://ldaphost/o=yourorg Require valid- </Directory>
En este ejemplo el fichero, que acta como proveedor, intentar autenticar primero al . Si no puede autenticar al , el proveedor del LDAP ser llamado para que realice la autenticacin. Esto permite al mbito de autenticacin ser amplio, si su organizacin implementa ms de un tipo de almacn de autenticacin. Otros escenarios de autenticacin y autorizacin pueden incluir la mezcla de un tipo de autenticacin con un tipo diferente de autorizacin. Por ejemplo, autenticar contra un fichero de contraseas pero autorizando dicho mediante el directorio del LDAP.
As como mltiples mtodos y proveedores de autenticacin pueden ser implementados, tambin pueden usarse mltiples formas de autorizacin. En este ejemplo ambos ficheros de autorizacin de grupo as como autorizacin de grupo mediante LDAP va a ser usado:
<Directory "/www/docs/private"> AuthName "Private" AuthType Basic AuthBasirovider file AuthFile "/usr/local/apache/wd/s" AuthLDAPURL ldap://ldaphost/o=yourorg AuthGroupFile "/usr/local/apache/wd/groups" Require group GroupName Require ldap-group cn=mygroup,o=yourorg </Directory>
Para llevar la autorizacin un poco ms lejos, las directivas de autorizacin de contenedores tales como Contenedores de Autorizacin para ejemplos de cmo pueden ser aplicados.
El modo en que la autorizacin puede ser aplicada es ahora mucho ms flexible que us solo chequeo contra un almacn de datos (contraseas). Ordenando la lgica y escoger la forma en que la autorizacin es realizada, ahora es posible
Controlar el cmo y en qu orden se va a aplicar la autorizacin ha sido un misterio en el pasado. En Apache 2.2 un proveedor del mecanismo de autenticacin fue introducido para disociar el proceso actual de autenticacin y soportar funcionalidad. Uno de los beneficios secundarios fue que los proveedores de autenticacin podan ser configurados y llamados en un orden especifico que no dependieran en el orden de carga del propio modulo. Este proveedor de dicho mecanismo, ha sido introducido en la autorizacin tambin. Lo que esto significa es que la directiva Require
aparece en la configuracin.
Con la Introduccin del contenedor de directivas de autorizacin tales como Contenedores de autorizacin Para un ejemplo de cmo pueden ser utilizados para expresar una lgica ms compleja de autorizacin.
Por defecto todas las directivas <RequireAny>
. En otras palabras, Si alguno de los mtodos de autorizacin especificados tiene xito, se concede la autorizacin.
La autenticacin de nombre de y contrasea es slo parte de toda la historia que conlleva el proceso. Frecuentemente quiere dar a la gente en base a algo ms que lo que son. Algo como de donde vienen.
Los proveedores de autorizacin all
, env
, host
y ip
te permiten denegar o permitir el basndose en otros criterios como el nombre de la mquina o la IP de la mquina que realiza la consulta para un documento.
El uso de estos proveedores se especifica a travs de la directiva Require
. La directiva registra los proveedores de autorizacin que sern llamados durante la solicitud de la fase del proceso de autorizacin. Por ejemplo:
Require ip address
Donde address es una direccin IP (o una direccin IP parcial) o bien:
Require host domain_name
Donde domain_name es el nombre completamente cualificado de un nombre de dominio (FQDN) (o un nombre parcial del dominio); puede proporcionar mltiples direcciones o nombres de dominio, si se desea.
Por ejemplo, si alguien enva spam a su tabln de mensajes y desea mantenerlos alejados, podra hacer lo siguiente:
<RequireAll> Require all granted Require not ip 10.252.46.165 </RequireAll>
Visitantes que vengan desde esa IP no sern capaces de ver el contenido que cubre esta directiva. Si, en cambio, lo que se tiene es el nombre de la mquina, en vez de la direccin IP, podra usar:
<RequireAll> Require all granted Require not host host.example.com </RequireAll>
Y, si lo que se quiere es bloquear el desde un determinado dominio (bloquear el desde el dominio entero), puede especificar parte de la direccin o del propio dominio a bloquear:
<RequireAll> Require all granted Require not ip 192.168.205 Require not host phishers.example.com moreidiots.example Require not host ke </RequireAll>
Usando <Require>
, cada una negada con un not
, Slo permitir el , si todas las condiciones negadas son verdaderas. En otras palabras, el ser bloqueado, si cualquiera de las condiciones negadas fallara.
Uno de los efectos secundarios de adoptar proveedores basados en mecanismos de autenticacin es que las directivas anteriores mod_access_compat
.
Las directivas proporcionadas por actualizacin para ms informacin al respecto.
Puede haber momentos en que la autenticacin ponga una carga inaceptable en el proveedor (de autenticacin) o en tu red. Esto suele afectar a los s de mod_authn_socache
para cachear las credenciales y reducir la carga en el proveedor(es) original.
Esto puede ofrecer un aumento de rendimiento sustancial para algunos s.
Tambin debera leer la documentacin para <AuthnProviderAlias>
puede tambin ayudar a la hora de simplificar ciertas configuraciones de autenticacin.
Los diferentes algoritmos de cifrado que estn soportados por Apache para la autenticacin se explican en Cifrado de Contraseas.
Y tal vez quiera ojear la documentacin de "how to" Control de donde se mencionan temas relacionados.
Idiomas disponibles: tr