Tabla de contenido
Ficheros de configuración Apache
Linux (Debian)
El fichero principal de configuración de Apache es /etc/apache2/apache2.conf en él se incluyen los demás archivos de configuración:
/etc/apache2/ports.conf Configuración de los puertos de escucha
- /etc/apache2/sites-available/default Configuración del servidor virtual por defecto
Windows
La configuración del servidor se encuentra en el fichero C:Program FilesApache Software FoundationApache2.2confhttpd.conf
Directivas para Apache
Listen
Esta directiva indica de qué puertos e interfaces IP aceptará peticiones. Por defecto se utiliza el puerto 80 en todas las interfaces.
Para hacer que el servidor acepte conexiones en los puertos 80 y 8080
Listen 80
Listen 8080
Para atender dos direcciones IP distintas, con distintos puertos, se utilizará:
Listen 192.168.255.5:80
Listen 192.168.255.8:8080
ServerRoot
Especifica la ubicación del directorio raíz donde se encuentra instalado Apache. Esta directiva no debería cambiar a no ser que se mueva la carpeta de instalación de apache a otro directorio.
Include
Permite que se incluyan otros archivos de configuración en el tiempo de ejecución.
La ruta a estos archivos de configuración pueden ser absolutas o relativas con respecto al directorio indicado en ServerRoot.
DocumentRoot
Indica el directorio desde el que Apache va a servir los archivos. El servidor añade la ruta indicada en la URL a este directorio.
Por ejemplo para un valor
DocumentRoot /var/www
Si la URL solicitada es http://www.myservidor.com/prueba/index.html Apache servirá el fichero index.html que se encuentra en /var/www/prueba
ErrorLog
Especifica la ubicación del fichero que contiene el registro de errores, por defecto en la carpeta logs.
DirectoryIndex
Especifica el fichero por defecto que buscará en cada directorio, en caso de que no se especifique ninguno. Por defecto es index.html.
Pueden indicarse varios ficheros. El orden con el que se especifica el nombre de fichero determinará la prioridad a la hora de decidir qué fichero es el que se muestra.
DirectoryIndex index.html indice.html index.php
ErrorDocument
Explica qué ha de hacerse en caso de que se produzca un error. Si no se indica nada, se mostrará un mensaje por defecto. Si se indica, podrá mostrarse un texto personalizado o una página web personalizada dentro o fuera de nuestro servidor.
ErrorDocument 404 «Este fichero no está»
ErrorDocument 404 errores/error404.html
ErrorDocument 404
Alias
Permite la definición de directorios virtuales, un directorio virtual es un directorio que se encuentra en un directorio distinto del que se indica en la URL. El directorio virtual no tiene por qué encontrarse dentro de árbol de directorios que se crea a partir de DocumentRoot, sino que se puede encontrar en cualquier otra ubicación.
Alias nombreFicticio ubicaciónReal
Ejemplo:
Alias /ciclos/daw /home/sapoclay/daw
Redirect
La directiva Redirect permite indicar al cliente que un documento ha sido modificado o actualizado. Tiene preferencia con respecto a la directiva Alias, independientemente del orden en el que se sitúen en el fichero de configuración.
Redirect /service http://foo2.example.com/service
Options
Controla qué características del servidor están disponibles para un determinado directorio. Las características se hacen disponibles si se listan y no disponibles si se preceden por un signo -.
Indexes
Si se solicita una URL que apunta a un directorio y en dicho directorio no se encuentra ninguno de los ficheros indicados por DirectoryIndex, se mostrará un listado de los archivos contenidos en ese directorio.
Más información sobre Indexes y FollowSymLinks.
Directivas de bloque en Apache
Directory
Las directivas que se encuentren dentro de una etiqueta <Directory> solo se aplican a ese directorio.
<Directory /var/www/ciclos>
#Aquí las directivas
</Directory>
Fuentes consultadas:
Recuerda
Todos los directorios que va a servir Apache deben tener permisos de lectura y ejecución para todos los usuarios y todos los archivos que sirve deben tener permiso de lectura.
Los permisos de archivos y directorios se cambian con el comando chmod.
Módulos en Apache
El diseño de Apache es modular. El núcleo de Apache (core) provee la funcionalidad básica de un servidor web, pero existen muchos módulos adicionales que permiten añadir funciones extra.
Cada módulo tiene un conjunto de directivas específicas que permiten su gestión.
La adición de esas funciones puede realizarse de dos formas:
Estáticamente: en el momento de compilar el ejecutable del servidor, se indican qué funciones adicionales se desean incorporar con el núcleo.
- Dinámicamente: en el momento de arrancar el servidor, se cargan junto a él aquellos módulos que implementen la configuración deseada, gestionandose los módulos a cargar en la configuración del servidor. Estos módulos que pueden cargarse dinámicamente se denominan objetos dinámicos compartidos o módulos DSO (Dynamic Shared Object).
Ubuntu | Windows | |
Consultar módulos estáticos | sudo apache2ctl -l | httpd -l «C:Program Files (x86)Apache Software FoundationApache2.2binhttpd.exe» -l |
Consultar módulos dinámicos | Listar los contenidos del directorio /etc/apache2/mods-enabled | Consultando las directivas LoadModule del fichero de configuración de Apache (C:Program Files (x86)Apache Software FoundationApache2.2confhttpd.conf) |
Consultar módulos dinámicos disponibles | Ya instalados: Listar el directorio /usr/lib/apache2/modules No instalados: sudo apt-cache search libapache2-mod (se instalan como cualquier otro paquete en Ubuntu) | Consultar el directorio C:Program Files (x86)Apache Software FoundationApache2.2modules |
Habilitar módulo dinámicamente | sudo a2enmod usedir | En el fichero httpd.conf, eliminar el comentario de las directivas LoadModule e Include correspondientes a ese módulo |
Deshabilitar módulo dinámicamente | sudo a2dismod usedir | En el fichero httpd.conf, comentar las directivas LoadModule e Include correspondientes a ese módulo |
Inserción de directivas correspondientes al módulo | En el fichero de extensión .conf correspondiente al módulo y que está en el directorio /etc/apache2/mods-available Dentro de las etiquetas <IfModule></IfModule> | En el fichero de extensión .conf correspondiente al módulo que se encuentra en el directorio C:Program Files(x86)Apache Software FoundationApache2.2confextra |
Módulo userdir
Userdir es un modulo de Apache que hace posible que todos los usuarios con acceso a un servidor tengan una carpeta propia en la cual puedan alojar sus páginas y archivos.
Ubuntu | Windows | |
Fichero de configuración | /etc/apache2/mods-available/userdir.conf | C:Program Files(x86)Apache Software FoundationApache2.2confextrahttpd-userdir.conf |
Carpeta por defecto | /home/usuario/public_html | C:UsersusuarioMy DocumentsMy Website (ojo, en la máquina virtual de Windows Server 2008, no es My Documents, sino Documents por lo que hay que cambiarlo en el fichero de configuración) |
Para acceder a estas páginas desde el cliente, ha de añadirse a la IP o URL ~usuario. Por ejemplo:
Fuentes consultadas
Control de acceso por IP
Apache utiliza las directivas Allow y Deny para permitir o denegar el contro de acceso. Además, la directiva Order también es importante a la hora de indicar el orden en el que se evalúan estas directivas.
Directiva Order
Controla el orden en el que son evaluadas las directivas Allow y Deny.
Ejemplo:
Order Allow,Deny
Indica que primero se evaluarán las directivas Allow y luego las Deny.
OJO: El argumento de la directiva Order NO LLEVA ESPACIOS
Directiva Allow
Controla qué máquinas pueden acceder a un área determinada del servidor. Sus valores pueden ser all (todos), una dirección IP o un rango de ellas, un dominio o subdominio u otros parámetros controlados a través de una variable de entorno.
Ejemplo:
Allow from all
Allow from 192.168.0.15
Directiva Deny
Controla qué máquinas no pueden acceder a un área determinada del servidor. Sus valores pueden ser all (todos), una dirección IP o un rango de ellas, un dominio o subdominio u otros parámetros controlados a través de una variable de entorno.
Ejemplo:
Deny from all
Deny from 192.168.0.15
Ejemplos de combinación de directivas
Acceso para todas las máquinas salvo aquella cuya IP es 192.168.0.15
Order Allow,Deny
Allow from all
Deny from 192.168.0.15
Únicamente puede acceder la máquina cuya IP es 192.168.0.15
Order Deny,Allow
Deny from all
Allow from 192.168.0.15
Únicamente puede acceder las máquinas cuyas IP son 192.168.1.104 y 192.168.1.205
Order Deny,Allow
Deny from all
Allow from 192.168.1.104 192.168.1.205
Únicamente pueden acceder las IP pertenecientes a la red 10.1.0.0/16
Order Deny,Allow
Deny from all
Allow from 10.1
Lo mismo pero con otra notación
Order Deny,Allow
Deny from all
Allow from 10.1.0.0/255.255.0.0
Lo mismo pero con otra notación
Order Deny,Allow
Deny from all
Allow from 10.1.0.0/16
Únicamente pueden acceder las IP pertenecientes a las redes 10.0.0.0/8, 172.20.0.0/16 o 192.168.2.0/24
Order Deny,Allow
Deny from all
Allow from 10 172.20 192.168.2
Control de acceso por usuarios y grupos
Para configurar el servidor Apache para que sea capaz de autenticar a los usuarios y verificar la autorización del mismo al recurso solicitado, es necesario realizar las siguientes acciones:
Crear un fichero con usuarios
Crear un fichero con grupos (si es necesario)
- Definir las directivas en el fichero de configuración
Es recomendable que tanto los ficheros de usuarios como los de grupos, se encuentren almacenados fuera de los directorios publicados, para que de esta forma nadie pueda descargarlos.
El control de acceso puede hacerse para todos los ficheros del sitio web o para algunos ficheros (mediante la directiva <Files>) o directorios (mediante la directiva <Directory>).
Autenticación Basic y Digest
La diferencia entre ambas es que en el modo de autenticación Basic, las contraseñas se envían en claro, mientras que en Digest las contraseñas se envían cifradas.
Creación de usuarios
Para crear el fichero utilizamos el comando htpasswd (si la autenticación es Basic) o htdigest (si la autenticación es Digest). La primera vez que lo utilicemos tenemos que ponerle la opción -c, para que cree el archivo. Creariamos el usuario de la siguiente manera:
htpasswd -c /etc/apache2/contr_basic sapoclay
New password:
Re-type new password:
Para htdigest tenemos que indicar, además, el dominio al que pertenece el usuario:
htdigest -c /etc/apache2/contr_digest profes sapoclay
New password:
Re-type new password:
Creación de grupos
Se crea un fichero con un grupo por línea con la siguiente sintaxis:
nombreGrupo: usuario1 usuario2 usuario3 …
Directivas de restricción de acceso
Directiva AuthType
Indicaremos el tipo de autenticación Basic o Digest
Directiva AuthName
Indica el área de influencia de la autenticación. La cadena indicada en esta directiva es la que aparecerá en el cuadro de diálogo que se muestra al usuario. En autenticación Digest, indica el dominio al que ha de pertenecer el usuario.
Directiva AuthUserFile
Indica la ruta al fichero en el que se almacenan los usuarios y contraseñas.
Directiva AuthGroupFile
Indica la ruta al fichero en el que se almacenan los grupos.
Directiva Require
Indica qué usuarios o grupos tienen acceso al área. Si se indica valid-user significa que se permitirá el acceso a cualquiera de los usuarios que aparezcan en el fichero.
Require user profesor1 profesor2
Require group profes
Ejemplo
AuthType basic
AuthName «Zona privada entreunosyceros»
AuthUserFile «/etc/apache2/auth_basic»
Require valid-user
Directiva Satisfy
Si se utilizan para el control de acceso tanto las directivas Allow como Require, la directiva Satisfy nos indica si han de cumplirse todas las condiciones (All) o con una es suficiente (Any).
Por ejemplo, si queremos que desde nuestra aula el acceso a nuestro sitio web sea libre, pero para fuera de ella sea necesario un usuario válido, podremos escribir:
Require valid-user
Order deny,allow
Deny from all
Allow from 192.168.4
Satisfy Any
Otros factores de autenticación
A partir de la versión 2.4 de Apache la funcionalidad de la directiva Require se ha ampliado, entre otras cosas, permite especificar rangos de IPs autorizadas que antes se implementaban mediante la directiva Allow:
Require ip 192.168.205
Por otra parte, se han definido las directivas RequireAll y RequireAny para componer requisitos de acceso.
Fuentes consultadas
Los ficheros .htaccess son ficheros de configuración distribuida. Su utilidad es incluir directivas que afecten únicamente al directorio en el que están situados y, por extensión, a sus subdirectorios.
Se recomienda evitar el uso de estos ficheros siempre que sea posible, ya que la búsqueda de los mismos a través de los directorios ralentiza mucho el servidor Apache y puede constituir un agujero de seguridad. Es decir, siempre que la persona que va a configurar dicho directorio tenga acceso a los ficheros de configuración globales, debe situar en estos las directivas relativas a ese directorio (dentro de un bloque Directory).
Hay situaciones, por ejemplo aquellas en las que varios usuarios utilizan un mismo servidor Apache para sus sitios web, en las que dichos usuarios no tienen acceso a los ficheros globales de configuración, siendo la única solución el uso de ficheros .htaccess.
Directiva AccessFileName
Se utiliza para modificar el nombre de los ficheros de configuración distribuidos (por defecto, .htaccess). Ejemplo:
AccessFileName .config
Esto haría que la configuración de un directorio se situase en ficheros llamados .config
Directiva AllowOverride
Indica qué directivas declaradas en los ficheros .htaccess deben sobreescribir a las declaradas en los ficheros de configuración globales. Sus valores pueden ser:
None: Los ficheros .htaccess son ignorados completamente
All: Todas las directivas declaradas en los .htaccess sobreescriben a las declaradas en los ficheros globales
AuthConfig: Permite el uso de directivas de autorización
Indexes: Permite el uso de directivas que controlan la indexación de directorios
Limit: Permite el uso de directivas de control de acceso
Options: Permite directivas controlando características específicas del directorio
- FileInfo: Permite el uso de directivas que controlan los tipos de documentos
Más información en la documentación oficial.
Contenedores de secciones de configuración
En todos ellos pueden utilizarse comodines (el ? se corresponde como mucho con un carácter y el * con cero, uno o varios) o expresiones regulares, para lo que se precisa el uso del carácter ~ antes de la expresión. Para expresiones regulares, sin embargo, se prefiere el uso de las directivas DirectoryMatch, FilesMatch y LocationMatch.
Directory
Limita el ámbito de aplicación de las directivas a un directorio o directorios.
Files
Limita el ámbito de aplicación de las directivas a un fichero o ficheros. Pueden ser usados dentro de los ficheros .htaccess.
<Files .ht*>
Order deny,allow
Deny from all
</Files>
Pueden aparecer dentro de las secciones Directory.
Location
Limita el ámbito de aplicación de las directivas a una o varias URL.
Apuntes gracias a Marta