Yannsel Peral Martínez escribió:
> hola lista alguien me podría decir como le deniego por el apache a un
> directorio para un rango de ips por ejemplo de la 172.0.0.1 a la 254, no
> tengo navegacion para poder buscar, gracias
>
> _______________________________________________
> Cancelar suscripción
> https://listas.softwarelibre.cu/mailman/listinfo/linux-l
> Buscar en el archivo
> http://listas.softwarelibre.cu/buscar/linux-l
De la pagina de apache
Autentificación, Autorización y Control de Acceso
Esta traducción podría estar obsoleta. Consulte la versión en inglés de
la documentación para comprobar si se han producido cambios recientemente.
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.
* Módulos y Directivas relacionadas
* Introducción
* Los Prerrequisitos
* Puesta en funcionamiento
* Permitir el acceso a más de una persona
* Posibles Problemas
* ¿Qué otra cosa sencilla y efectiva puedo hacer?
* Más información
top
Módulos y Directivas relacionadas
Módulos Relacionados Directivas Relacionadas
* mod_auth
* mod_access
* Allow
* AuthGroupFile
* AuthName
* AuthType
* AuthUserFile
* Deny
* Options
* Require
top
Introducción
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.
Este artículo cubre la manera "estándar" de proteger partes de su sitio
web que la mayoría de ustedes van a usar.
top
Los Prerrequisitos
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 <Directory>), o en archivos de configuración por directorios
(archivos .htaccess).
Si planea usar archivos .htaccess, necesitará tener una configuración en
el servidor que permita poner directivas de autentificación en estos
archivos. Esto se logra con la directiva AllowOverride, la cual
especifica cuáles directivas, en caso de existir, pueden ser colocadas
en los archivos de configuración por directorios.
Ya que se está hablando de autentificación, necesitará una directiva
AllowOverride como la siguiente:
AllowOverride AuthConfig
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.
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.
top
Puesta en funcionamiento
Aquí está lo esencial en cuanto a proteger con contraseña un directorio
de su servidor.
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 /usr/local/apache/htdocs usted podría
querer colocar el(los) archivo(s) de contraseñas en
/usr/local/apache/passwd.
Para crear un archivo de contraseñas, use la utilidad htpasswd que viene
con Apache. Ésta utilidad puede encontrarla en el directorio bin de
cualquier sitio en que haya instalado Apache. Para crear el archivo,
escriba:
htpasswd -c /usr/local/apache/passwd/passwords rbowen
htpasswd le pedirá la contraseña, y luego se la volverá a pedir 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 su ruta, por supuesto tendrá que escribir la ruta
completa al archivo para ejecutarlo. En mi servidor, éste archivo está
en /usr/local/apache/bin/htpasswd
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 httpd.conf o usando un
archivo .htaccess. Por ejemplo, si desea proteger el directorio
/usr/local/apache/htdocs/secret, puede usar las siguientes directivas,
ya sea colocándolas en el archivo
/usr/local/apache/htdocs/secret/.htaccess, o en httpd.conf dentro de una
sección <Directory /usr/local/apache/apache/htdocs/secret>.
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen
Vamos a examinar cada una de estas directivas por separado. La directiva
AuthType selecciona el método que se va a usar para autentificar al
usuario. El método más común es Basic, y éste método está implementado
en mod_auth. 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: AuthType Digest. Este método está implementado en
mod_auth_digest y es mucho más seguro. Sólo las versiones más recientes
de clientes soportan la autentificación del tipo Digest.
La directiva AuthName establece el Dominio (Realm) 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.
Así, por ejemplo, una vez que el cliente se haya autentificado en el
área "Restricted Files", 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) "Restricted Files". 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.
La directiva AuthUserFile establece la ruta al archivo de contraseña que
acabamos de crear con htpasswd. 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 mod_auth_dbm proporciona la directiva
AuthDBMUserFile. Estos archivos pueden ser creados y manipulados con el
programa dbmmanage. Muchos otros tipos de opciones de autentificación
están disponibles en módulos de terceras partes en la Base de datos de
Módulos de Apache.
Finalmente, la directiva Require 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 Require.
top
Permitir el acceso a más de una persona
Las directivas anteriores sólo permiten que una persona (específicamente
alguien con un nombre de usuario de rbowen) 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 AuthGroupFile.
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:
GroupName: rbowen dpitts sungo rshersey
Esto es solo una lista de miembros del grupo escritos en una línea
separados por espacios.
Para agregar un usuario a un archivo de contraseñas ya existente, escriba:
htpasswd /usr/local/apache/passwd/passwords dpitts
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 -c la que se cree un nuevo archivo de contraseñas).
Ahora, necesita modificar su archivo .htaccess para que sea como el
siguiente:
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName
Ahora, cualquiera que esté listado en el grupo GroupName, y figure en el
archivo password, se le permitirá el acceso, si escribe la contraseña
correcta.
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:
Require valid-user
Usando eso en vez de la línea Require user rbowen, 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 AuthUserFile.
top
Posibles Problemas
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.
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.
top
¿Qué otra cosa sencilla y efectiva puedo hacer?
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.
Las directivas Allow y Deny posibilitan permitir y rechazar el acceso
dependiendo del nombre o la dirección de la máquina que solicita un
documento. La directiva Order va de la mano con estas dos, y le dice a
Apache en qué orden aplicar los filtros.
El uso de estas directivas es:
Allow from address
donde address 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.
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:
Deny from 205.252.46.165
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.
Deny from host.example.com
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:
Deny from 192.101.205
Deny from cyberthugs.com moreidiots.com
Deny from ke
Usar Order le permitirá estar seguro de que efectivamente está
restringiendo el acceso al grupo al que quiere permitir el acceso,
combinando una directiva Deny y una Allow:
Order deny,allow
Deny from all
Allow from dev.example.com
Usando sólo la directiva Allow 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
sólo aquellos.
top
Más información
También debería leer la documentación de mod_auth y mod_access que
contiene más información acerca de cómo funciona todo esto.
Saludos de
Mauricio
_______________________________________________
Cancelar suscripción
https://listas.softwarelibre.cu/mailman/listinfo/linux-l
Buscar en el archivo
http://listas.softwarelibre.cu/buscar/linux-l