Opciones de Configuración 2

Anuncio
OPCIONES DE CONFIGURACIÓN 2
Sistemas de ficheros
Las secciones de configuración usadas con más frecuencia son las que cambian la
configuración de áreas del sistema de ficheros.
Secciones relacionadas con el sistema de ficheros
Las secciones <Directory> y <Files>, junto con sus contrapartes que usan expresiones
regulares, aplican sus directivas a áreas del sistema de ficheros. Las directivas incluidas en una
sección <Directory> se aplican al directorio del sistema de ficheros especificado y a sus
subdirectorios. El mismo resultado puede obtenerse usando ficheros .htaccess. Por ejemplo,
en la siguiente configuración, se activarán los índices de directorio para el directorio
/var/web/dir1 y sus subdirectorios.
< Directory /var/web/dir1>
Options +Indexes
< /Directory>
Las directivas incluidas en una sección <Files> se aplicarán a cualquier fichero cuyo nombre se
especifique, sin tener en cuenta en que directorio se encuentra. Por ejemplo, las siguientes
directivas de configuración, cuando se colocan en la sección principal del fichero de
configuración, deniegan el acceso a cualquier fichero llamado private.html sin tener en cuenta
de donde se encuentre.
< Files private.html>
Order allow,deny
Deny from all
< /Files>
Para referirse a archivos que se encuentren en un determinado lugar del sistema de ficheros,
se pueden combinar las secciones <Files> y <Directory>. Por ejemplo, la siguiente
configuración
denegará
el
acceso
a/var/web/dir1/private.html,/var/web/dir1/subdir2/private.html,/var/web/dir1/subdir3/priva
te.html, y cualquier otra aparición de private.html que se encuentre en/var/web/dir1/ o
cualquiera de sus subdirectorios.
< Directory /var/web/dir1>
< Files private.html>
Order allow,deny
Deny from all
< /Files>
< /Directory>
Caracteres comodín y expresiones regulares
Las secciones <Directory> y <Files> pueden usar caracteres comodín del tipo fnmatch de la
librería estándar de C. El carácter "*" equivale a cualquier secuencia de caracteres, "?"
equivale a cualquier carácter individual, y "[seq]" equivale a cualquier carácter en seq. Ningún
carácter comodín equivale a"/", que debe siempre especificarse explícitamente.
Si necesita un sistema de equivalencias más flexible, cada sección tiene una contraparte que
acepta expresiones regulares compatibles con Perl: <DirectoryMatch> y. Consulte la sección
sobre la fusión de secciones de configuración para ver la forma en que las secciones
expresiones regulares cambian el modo en que se aplican las directivas.
Abajo se muestra un ejemplo en el que una sección de configuración que usa caracteres
comodín en lugar de una expresión regular modifica la configuración de todos los directorios
de usuario:
< Directory /home/*/public_html>
Options Indexes
< /Directory>
Usando expresiones regulares, podemos denegar el acceso a muchos tipos ficheros de
imágenes de una sola vez:
< FilesMatch \.(gif|jpe?g|png)$>
Order allow,deny
Deny from all
< /FilesMatch>
Options
Descripción:
Configura las funcionalidades disponibles en un directorio en particular
Sintaxis:
Options [+|-]option [[+|-]option] ...
Valor por defecto: Options All
Contexto:
server config, virtual host, directory, .htaccess
Prevalece sobre:
Options
Estado:
Core
Módulo:
core
La directiva Options controla qué funcionalidades del servidor están disponibles en un
directorio en particular.
En option puede especificar None, en cuyo caso ninguna funcionalidad adicional estará
activada, o puede especificar una o más de las siguientes opciones:
All
Todas las opciones excepto MultiViews. Este es el valor por defecto.
Indexes
Si se produce una petición a una URL que se corresponde con un directorio, y
no hay DirectoryIndex (por ejemplo, index.html) en ese directorio, entonces
mod_autoindex devolverá una lista con los contenidos del directorio
Indexes – Personalización de los Directorios de Apache
IndexOptions
Estas directivas las podemos aplicar a nivel general o a nivel de Directorios.
Los modificadores de esta directiva se pueden agrupar todos dentro de la misma línea o bien
se pueden ir agregando uno por línea, para que el fichero quede más claro y legible y para que
sea
más
fácil
jugar
(comentar/descomentar)
las
diferentes
opciones.
La primera opción en nombrar es, precisamente, la que permite activar otras opciones más
avanzadas de los listados de directorios. Se llama FancyIndexing y, si está desactivada, el
listado de archivos se presenta en forma de lista simple (tal y como se puede ver en la imagen
del
primer
ejemplo).
La siguiente que vamos a presentar es FoldersFirst y, como su nombre indica,
independientemente del orden que escoja el usuario (las columnas nombre, última
modificación, tamaño, etc), siempre aparecerán primero los directorios y después los ficheros.
Otra opción relacionada con la ordenación es IgnoreCase. Si está activada, mayúsculas y
minúsculas
no
importarán
a
la
hora
de
ordenar
los
archivos.
Adicionalmente, también vamos a añadir la opción VersionSort para que, en el caso de
mostrar varios ficheros con mismo nombre pero versión diferente, se ordenen perfectamente
de acuerdo a la versión y no al orden ASCII: la versión 1.12 iría después de la 1.9, por ejemplo.
IconsAreLinks permite que los iconos asociados a cada fichero también sean un enlace a dicho
archivo. Como las imágenes suelen ser zonas muy apetecibles para el ratón, dejaremos esta
opción
activada.
Para nuestro ejemplo, vamos a activar la opción SuppressDescription, para no mostrar la
descripción de los tipos de archivo en el listado. Aunque en un entorno real, es una
funcionalidad que puede ser interesante si se listan tipos de fichero poco usuales.
IndexOptions FancyIndexing
IndexOptions FoldersFirst
IndexOptions IgnoreCase
IndexOptions VersionSort
IndexOptions IconsAreLinks
IndexOptions SuppressDescription
Salida XHTML
Antes hemos dicho que del módulo autoindex sólo queríamos que generara los listados de
archivos, porque el resto de la salida la personalizaríamos nosotros.
La directiva HeaderName sirve para indicar el fichero que se antepondrá al listado de
mod_autoindex. Y la directiva ReadmeName, para indicar el archivo que se añadirá al final de
listado generado. De esta forma, y con ayuda de la opción SuppressHTMLPreamble, tendremos
control total sobre el HTML que enviaremos al navegador desde el servidor web.
Si se quisieran diferentes contenidos de cabecera y pie para cada directorio a mostrar, es
posible hacerlo indicando una ruta relativa a los ficheros en estas directivas. Sin embargo, para
este ejemplo, vamos a usar una ruta absoluta, que debe estar (esta sí) dentro del directorio de
publicación de Apache.
ReadmeName "/pie.html"
HeaderName "/encabezado.html"
IndexIgnore
Para acabar con la configuración de este ejemplo, conviene nombrar la directiva IndexIgnore.
Sirve para ocultar del listado automático ciertos archivos. Por ejemplo, para evitar que se
muestren las copias de seguridad (ficheros acabados en ~ en los sistemas Linux), los propios
archivos usados para cabecera y pie de los listados, etcétera.
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t *.shtml
Allow - Deny
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.
Descargar