Apache2: Directivas II

En esta segunda entrega de directivas de Apache terminaremos por ver las directivas básicas que nos quedan y empezaremos a poder hacer cosas bastante interesantes.


<Files [~] “<fichero>” > [configuración] </Files> - Directiva contenedora, dentro podrán colocarse directivas de configuración que se aplicarán al fichero indicado. 

En el ejemplo de la imagen podremos ver que  a los ficheros que se llamen patata.html les denegamos el acceso con la directiva Require all denied (que es válida a partir de Apache 2.4) que veremos ahora después.

Puede indicarse el nombre de un fichero literalmente, utilizarse los comodines del sistema operativo ? Y *, o expresiones regulares colocando la opción ~ (Apache usa Expresiones Regulares compatibles con Perl)


 <Directory [~] “<directorio>” > - Directiva contenedora, dentro podrán colocarse directivas de configuración que se aplicarán al directorio indicado, a sus subdirectorios y a los contenidos de ambos.
Puede indicarse el nombre de un directorio literalmente, utilizarse los comodines del sistema operativo ? Y * ( nunca sustituyen al carácter barra de separación de ruta / ), o expresiones regulares colocando la opción ~ ( Apache usa Expresiones Regulares compatibles con Perl ). 
Options All | None | [+|-] <opcion> [[+|-] <opcion> ] - Permisos para un directorio en particular. <option>



  • All – Todas las opciones permitidas
  • FollowSymLinks – Permite seguir enlaces simbólicos
  • SymLinksIfOwnerMatch – Permite seguir enlaces cuyo objetivo corresponda al mismo usuario que el enlace.
  • Indexes – Se permite generar la página de índices
  • Includes – Permite hacer inclusiones
  • IncludesNOEXEC – Permite hacer inclusiones salvo ejecutables
  • ExecCGI – Permite la ejecución CGI
  • MultiViews – Permite navegación de vistas según contenido
  • None – Ninguna opción está autorizada


Los ficheros (por defecto .htaccess) que vimos en la directiva AccessFileName de el artículo anterior sirven para sobre-escribir directivas dentro de un directorio concreto.

 AllowOverride All | None | <opcion> | <opcion>

AllowOverride permite dentro de un directorio sobreescribir directivas con el fichero definido en AcccessFileName


Podemos especificar qué directivas se podrán sobreescribir, dejar que se puedan sobreescribir todas (all), o, no permitir que se sobreescriba ninguna(none)
  • All
  • AuthConfig – Directivas de autenticación
  • FileInfo – Directivas de control de tipos de documento, mime, metadata, rewrite y actions
  • Indexes – Directivas de Indexación
  • Limit – Directivas de acceso (Allow, Deny y Order)
  • None – Ninguna directiva

Order Deny, Allow | Allow, Deny – Orden en el que se aplicarán las reglas de autorización (Allow) y denegación (Deny), y la política por defecto:
  • Deny, Allow – Primero reglas de denegación y luego autorización, por defecto autorizar.
  • Allow, Deny – Primero reglas de autorización y luego denegación por defecto denegar.
  • Allow from all | <host> [<host>]
  • Deny from all | <host> [<host>] - Necesitan de la anterior, autorizar o dengar el acceso. Host puede ser:
    • IP (o parte de IP sólo si empiezan igual)
    • IP/Máscara
    • DNS (o parte de DNS sólo si terminan igual)
       
Como una imagen vale más que mil palabras:

Esta imagen la he hecho yo en LibreOffice en mis apuntes pero ni que decir tiene que la podéis usar libremente.

Require user <usuario> | group <grupo> [ <grupo> ] | valid-user – Usuario necesario para 
poder acceder.

Satisfy All | Any – Permite acceder a un directorio sin necesidad de usuario. Permite colocar excepciones. Permite que alguien pueda acceder a un directorio sin necesitar un usuario.
  • All – Se requiere usuario
  • Any – Se podrá acceder únicamente cumpliendo la directiva Allow. (Nota: permite saltarse las restricción de usuario)

Las directivas Satisfy, Require, Order, Allow y Deny se han organizado en la versión 2.4 de apache.

 
Nuevas directivas

Require [not] {user <usuario> [ <usuario> ] | group <grupo> [ <grupo> ] | valid-user | all granted | all denied | ip <ip> [<ip>] | host <dns> [<dns>] }

2.4 unifica en la directiva Require la autenticación y el control de acceso, la autenticación mantiene sus opciones y se añaden las opciones de control de acceso:
  • all granted: acceso autorizado para cualquier equipo.
  • All denied: acceso denegado para cualquier equipo
  • ip <ip> [<ip>]: acceso autorizado para las IP/s especificadas/s
  • host <dns> [<dns>]: acceso autorizado para las DNS/s especificada/s
  • Nota: IP y DNS pueden especificarse solo una parte como en las directivas antiguas. En IP puede especificarse también una red con máscara.

Primero se aplican las reglas de las directiva antigua y después la de la nueva. 

Las opciones de Require pueden ir precedidas de not, supondrán la negociación de ese requerimiento. Ej.) Require not group admin → se deja pasar a los usuarios que no pertenezcan al grupo admin.

2.4 es compatible con las directivas antiguas (Cuidado se aplican primero las antiguas, eso significa que priman sobre las nuevas en caso de conflicto).

Pueden especificarse varias diretivas Require. Pueden usarse las nuevas directivas contenedoras (por defecto RequireAny si no se usa ninguna):

  • <RequireAll> #Require's </RequireAll> → Acceso solo permitido si se sumplen todos los Require.
  • <RequireAny> #Require's </RequireAny> → Acceso solo permitido si se cumple un Require ( no se comprueban los posteriores ).
  • <RequireNone> #Require's </RequireNone> → Acceso solo permitido si no se cumple ningún Require.

Include <fichero> | <directorio> - Permite agregar ficheros adicionales de configuración
  • <fichero> - Incluirá el fichero de configuración indicado, pueden usarse los comodines del sistema ? Y * para incluir varios ficheros. (Ej. *.conf todos los ficheros con extensión conf)
  • <directorio> - Se desaconseja su uso, incluirá todos los ficheros de un directorio y sus subdirectorios.
  • El directorio por defecto si no se indica ruta absoluta será el indicado en la directiva ServerRoot
Podemos ver un ejemplo de esta directiva en el fichero de configuración de Apache a la hora de incluir la configuración de los escuchadores. (ports.conf)


En el próximo artículo veremos la gestión básica de los usuarios y grupos en Apache. Espero que os haya servido, cualquier duda tengo una cajita de comentarios justo debajo y como siempre, un fuerte abrazo.





No hay comentarios:

Publicar un comentario