Versión 2.4 del Servidor HTTP Apache
Autenticación es cualquier proceso por el cuál se verifica que uno es quien dice ser. Autorización es cualquier proceso en el cuál cualquiera está permitido a estar donde se quiera, o tener información la cuál se quiera tener.
Para información de control de acceso de forma genérica visiteHow to de Control de Acceso.
Hay tres tipos de módulos involucrados en los procesos de la autenticación y autorización. Normalmente deberás escoger al menos un módulo de cada grupo.
AuthType
)
AuthBasicProvider
y
AuthDigestProvider
)
Require
)
A parte de éstos módulos, también están
mod_authn_core
y
mod_authz_core
. Éstos módulos implementan las directivas
esenciales que son el centro de todos los módulos de autenticación.
El módulo mod_authnz_ldap
es tanto un proveedor de
autenticación como de autorización. El módulo
mod_authz_host
proporciona autorización y control de acceso
basado en el nombre del Host, la dirección IP o características de la propia
petición, pero no es parte del sistema proveedor de
autenticación. Para tener compatibilidad inversa con el mod_access,
hay un nuevo modulo llamado mod_access_compat
.
También puedes mirar el how-to de Control de Acceso , donde se plantean varias formas del control de acceso al servidor.
Si se tiene información en nuestra página web que sea información sensible o pensada para un grupo reducido de usuarios/personas, las técnicas que se describen en este manual, le servirán de ayuda para asegurarse de que las personas que ven esas páginas sean las personas que uno quiere.
Este artículo cubre la parte "estándar" de cómo proteger partes de un sitio web que muchos usarán.
Si de verdad es necesario que tus datos estén en un sitio seguro,
considera usar mod_ssl
como método de autenticación adicional a cualquier forma de autenticación.
Las directivas que se usan en este artículo necesitaran ponerse ya sea
en el fichero de configuración principal del servidor ( típicamente en
la sección
<Directory>
de httpd.conf ), o
en cada uno de los ficheros de configuraciones del propio directorio
(los archivos .htaccess
).
Si planea usar los ficheros .htaccess
, necesitarás
tener en la configuración global del servidor, una configuración que permita
poner directivas de autenticación 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 configuración
por directorio.
Ya que estamos hablando aquí de autenticación, necesitarás una directiva
AllowOverride
como la siguiente:
AllowOverride AuthConfig
O, si solo se van a poner las directivas directamente en la configuración principal del servidor, deberás tener, claro está, permisos de escritura en el archivo.
Y necesitarás saber un poco de como está estructurado el árbol de directorios de tu servidor, para poder saber donde se encuentran algunos archivos. Esto no debería ser una tarea difícil, aún así intentaremos dejarlo claro llegado el momento de comentar dicho aspecto.
También deberás de asegurarte de que los módulos
mod_authn_core
y mod_authz_core
han sido incorporados, o añadidos a la hora de compilar en tu binario httpd o
cargados mediante el archivo de configuración httpd.conf
. Estos
dos módulos proporcionan directivas básicas y funcionalidades que son críticas
para la configuración y uso de autenticación y autorización en el servidor web.
Aquí está lo básico de cómo proteger con contraseña un directorio en tu servidor.
Primero, necesitarás crear un fichero de contraseña. Dependiendo de que proveedor de autenticación se haya elegido, se hará de una forma u otra. Para empezar, usaremos un fichero de contraseña de tipo texto.
Este fichero deberá estar en un sitio que no se pueda tener acceso desde
la web. Esto también implica que nadie pueda descargarse el fichero de
contraseñas. Por ejemplo, si tus documentos están guardados fuera de
/usr/local/apache/htdocs
, querrás poner tu archivo de contraseñas en
/usr/local/apache/passwd
.
Para crear el fichero de contraseñas, usa la utilidad
htpasswd
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 ejecución.
Para crear el fichero, escribiremos:
htpasswd -c /usr/local/apache/passwd/passwords rbowen
htpasswd
te preguntará por una contraseña, y después
te pedirá que la vuelvas a escribir para confirmarla:
$ htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen
Si htpasswd
no está en tu variable de entorno "path" del
sistema, por supuesto deberás escribir la ruta absoluta del ejecutable para
poder hacer que se ejecute. En una instalación por defecto, está en:
/usr/local/apache2/bin/htpasswd
Lo próximo que necesitas, será configurar el servidor para que pida una
contraseña y así decirle al servidor que usuarios están autorizados a acceder.
Puedes hacer esto ya sea editando el fichero httpd.conf
de configuración 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 configuración global del servidor httpd.conf
dentro de la
sección <Directory
"/usr/local/apache/htdocs/secret"> , como se muestra a continuación:
<Directory "/usr/local/apache/htdocs/secret"> AuthType Basic AuthName "Restricted Files" # (Following line optional) AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" Require user rbowen </Directory>
Vamos a explicar cada una de las directivas individualmente.
La directiva AuthType
selecciona el método
que se usa para autenticar al usuario. El método más común es
Basic
, y éste es el método que implementa
mod_auth_basic
. Es muy importante ser consciente,
de que la autenticación básica, envía las contraseñas desde el cliente
al servidor sin cifrar.
Este método por tanto, no debe ser utilizado para proteger datos muy sensibles,
a no ser que, este método de autenticación básica, sea acompañado del módulo
mod_ssl
.
Apache soporta otro método más de autenticación que es del tipo
AuthType Digest
. Este método, es implementado por el módulo