Unidad 3. Configuración Avanzada Del Servidor Web Apache
Unidad 3. Configuración Avanzada Del Servidor Web Apache
Unidad 3. Configuración Avanzada Del Servidor Web Apache
Configuración
avanzada del servidor
Web Apache
Contenidos
Apache 2 y Apache 2.4
Configuración básica del
servidor Web
Módulos: tipos y funcionalidad
Instalación , configuración y
uso de los módulos en Apache
Algoritmos y programas 1
Contenidos
Host virtuales
Control de acceso
Autenticación y autorización
El protocolo HTTPS
Algoritmos y programas 2
Apache V. 2 y V. 2.4
Cambio muy profundo entre la
versión 2 y 2.4
Dejó de usarse un solo fichero
de configuración httpd.conf
Introdujo el uso de hebras y/o
procesos en Unix
Inclusión de algunos módulos
Ficheros de configuración
Existen varios ficheros de
configuración
Directorio de instalación:
/etc/apache2
Fichero de configuración base o
principal: apache2.conf
Algoritmos y programas 3
Algoritmos y programas 4
Algoritmos y programas 5
Ficheros de configuración
Antes de hacer ninguna
modificación debemos hacer
una copia de seguridad del
mismo
apache 2.conf
Incluye directivas para el servidor Web
y comentarios
Algoritmos y programas 6
apache2.conf
Incluye directivas para el servidor Web
y comentarios
Directivas
Directivas para el servidor en sí mismo
Algoritmos y programas 7
Directivas
Directivas para el servidor en sí mismo
Módulos multiproceso
Multiprocessing modules o MPMs
Hasta la versión 1.3 funcionaban con un
único proceso que creaba procesos hijos
para atender las peticiones
El proceso principal se encargaba de
monitorizarlos: crear o destruir
Directivas para los host virtuales
Algoritmos y programas 8
Módulos multiproceso
Este sistema no funcionaba bien en
determinados S.O por ejemplo
Windows
Existen varios módulos MPM que
crean hilos (threads) o procesos hijos
para atender las peticiones
Algoritmos y programas 9
include
A lo largo del fichero principal
aparecen inclusiones del contenido de
otros ficheros mediante la palabra
reservada “include”
Directivas de
Apache
Algoritmos y programas 10
ServerRoot
Indica el directorio raíz de la instalación de
Apache.
No se refiere al directorio donde
colocaremos las páginas web.
PidFile
PidFile establece la ruta al archivo en el
que el servidor graba su ID de proceso
(pid)
No se recomienda cambiar la ruta si no
se sabe lo que se está haciendo
Algoritmos y programas 11
TimeOut
KeepAlive
Determina si se van a atender varias
peticiones por cada conexión
Un cliente puede consumir demasiados
recursos: cuidadoso
Si se especifica a “on” las siguiente directiva
debe tener un valor bajo para evitar
problemas
Algoritmos y programas 12
MaxKeepAliveRequests
Determina el número máximo de
peticiones por conexión
KeepAliveTimeOut
Determina el tiempo en sg. que el servidor
esperará antes de atender una nueva
petición del mismo cliente en la misma
conexión
Debemos ser cuidadosos si no queremos
que se sature el servidor
Algoritmos y programas 13
IfModule
Permite especificar determinadas
“opciones” solo si un módulo concreto
está cargado
Si se indica el carácter “!” delante de
“IfModule” las opciones se aplicarán si
ese modulo no se ha cargado
IfModule
Esta directiva se ha desplazado al
fichero de configuración de cada
módulo
Pero se mantiene en el fichero de
configuración principal
Algoritmos y programas 14
StartServers
Esta directiva aparece en el archivo
/etc/apache2/mods-enabled/mpm_event.conf
StartServers
Apache crea o destruye servidores según el
tráfico que tenga que atender en cada
momento
Esta directiva sirve para especificar los
servidores que se van a crear inicialmente al
arrancar
Algoritmos y programas 15
Listen
Se encuentra en ports.conf
Este elemento indica al servidor en qué
dirección y puerto debe escuchar las
peticiones http que lleguen además de los de
por defecto
Listen
El
puerto estándar donde un servidor web
recibea peticiones http es el 80
Algoritmos y programas 16
LoadModule
Apache permite añadir módulos
dinámicamente sin necesidad de recompilar
el servidor
User y Group
Indican el usuario y el grupo con el que se
van a lanzar los procesos hijos que genere
Apache
El usuario nunca debe ser root porque crearía
una brecha de seguridad para los hackers
En Linux por defecto el usuario “nobody” y el
grupo “nogroup” tienen muy pocos
privilegios
Algoritmos y programas 17
ServerName
Indica el nombre de domino del servidor
ServerAdmin
Esta directiva y las siguientes aparecen en
/etc/apache2/sites-available/000-default.conf
Algoritmos y programas 18
DocumentRoot
Se encuentra en /etc/apache2/sites-
available/000-default.conf
Indicamos el directorio raíz donde se
colocarán las páginas Web: puede tener
subdiretorios
Directory
Se usa para configurar cómo se comportará y qué
se permitirá en cada directorio al que tiene acceso el
servidor Apache
Algoritmos y programas 19
Directory
La segunda vez que nos encontramos esa etiqueta
se refiere al directorio de “DocumentRoot” y
subdirectorios
DirectoryIndex
Se encuentra en
/etc/apache2/mods-enabled/dir.conf
Especifica la página por defecto que se
buscará al acceder a un directorio de la
jerarquía de nuestro sitio
Algoritmos y programas 20
AccessFileName
Indica el nombre del archivo en el que se
deben buscar las directivas de acceso
determinadas en cada directorio
FilesMatch
Permite especificar directivas a aplicar a
determinados tipos de ficheros
Al menos se debe especificar una
directiva que impida el acceso a los
ficheros que empiecen por .ht
Algoritmos y programas 21
HostnameLookups
Indica al servidor si debe hacer una
consulta DNS por cada petición
Consume mucho tiempo
ServerSignature
Se encuentra en el archivo /etc/apache2/conf-
available/security.conf
Permite establecer si al mostrarse una página
generada por el servidor (páginas de error)
debe mostrarse el nombre y la versión del
servidor: hackers
Algoritmos y programas 22
Alias
Se encuentra en el archivo
/etc/apache2/mos-enabled/alias.conf
Permite crear alias para archivos o
directorios
ScriptAlias
Se encuentra en el archivo /etc/apche2/conf-
enabled/server-cgi-bin.conf
Algoritmos y programas 23
LanguagePriority
Permite establecer una prioridad en los
idiomas en caso de que no se especifique uno
o haya un empate en la negociación por
diferentes motivos
Algoritmos y programas 24
AddDefaultCharset
Permite establecer el juego de caracteres
BrowserMatch
Se encuentra en el archivo
/etc/apache2/mods-enabled/setenvif.conf
Sirve para modificar la respuesta
dependiendo del cliente en cuanto al
navegador y a la plugins instalados
Algoritmos y programas 25
BrowserMatch
Se encuentra en el archivo
/etc/apache2/mods-enabled/setenvif.conf
Sirve para modificar la respuesta
dependiendo del cliente en cuanto al
navegador y a la plugins instalados
Algoritmos y programas 26
c
Algoritmos y programas 27
c
Algoritmos y programas 28
c
Algoritmos y programas 29
c
Algoritmos y programas 30
Algoritmos y programas 31
c
Algoritmos y programas 32
c
Algoritmos y programas 33
c
Algoritmos y programas 34
c
Registros de
error
Algoritmos y programas 35
Introducción
Los archivos de error son fundamentales en
la gestión de servidores ya que nos permiten
comprobar qué ha sucedido en cada
momento
Guardan errores de configuración o de
funcionamiento
Puede especificarse en la configuración
principal o de algún sitio Web específico
ErrorLog
Permite especificar donde ubicar el archivo
de registro de los errores
Muchos administradores crean una partición
exclusiva para situar archivos de error
Algoritmos y programas 36
LogLevel
Establece cuánta información se guardará en
el archivo de registros de errores
Los valores por defectos son: debug, info,
notice, warn, error, crit, alert, emerg
LogFormat
Establece qué campos y en qué formato se
guardarán de cada error que se produzca
CustomLog
Establecela ruta del archivo para guardar las
visitas a nuestro sitio Web
Algoritmos y programas 37
Módulos
Introducción
El diseño de apache es modular.
Apache posee un núcleo que permite
incluye la funcionalidad necesaria para
establecer un servidor Web
Algoritmos y programas 38
Introducción
Cada módulo tiene un conjunto de
directivas especificas que permiten su
gestión
Puedes consultar los módulos instalados
mediante:
Introducción
Puedes consultar los módulos instalados
mediante:
Estático: cuando se
compiló
Dinámico: posterior a
la compilación
Algoritmos y programas 39
Tipos de módulos
Módulos relacionados con el entornos
Módulos de autenticación y control de
acceso
Módulos de generación dinámica de
contenidos
Módulos de configuración del tipo de
contenido
Tipos de módulos
Módulos para el listado de directorios
Módulos para la gestión de las cabeceras
HTTP de las respuestas
Módulos de información del servidor y
de registro de la actividad
Módulos de mapeo de URL’s
Algoritmos y programas 40
Módulos relacionados con
el entornos
Módulos de autenticación y
control de acceso
Permiten realizar autenticación y
control de acceso : filtrado de
usuarios . Visita a un directorio
basándose en la IP o nombre de
usuario
Algoritmos y programas 41
Módulos de generación
dinámica de contenidos
Módulos de configuración
del tipo de contenido
Algoritmos y programas 42
Módulos para el listado de
directorios
El servidor intenta siempre ofrecer el
archivo o archivos establecidos en la
directiva DirectoryIndex
Si no lo encuentra, lista los archivos
contenidos en ese directorio o URL.
Estos módulos nos permiten configurar
cómo se listarán
Algoritmos y programas 43
Módulos de información del
servidor y de registro de
actividad
Estos módulos proporcionan
información sobre el estado del
servidor y permiten configurar el
registro de actividad
Algoritmos y programas 44
Instalación,
configuración y uso
de módulos
Ficheros de configuración
La distribución que usamos reparte las
directivas entre varios ficheros de
configuración
Simplifica la administración del servidor
Apache, en relación a la que usa un
único fichero
Algoritmos y programas 45
Comprobación de módulos
Módulos instalados por defecto
Comprobación de módulos
Módulos disponibles
Algoritmos y programas 46
Instalación de módulos
Donde ….
«module» es el nombre del módulo
«filename» la ruta donde se
encuentra el fichero correspondiente
al módulo
Instalación de módulos
Desinstalación de módulos
Algoritmos y programas 47
Módulo
mod_speling
Ejemplo
ó bien
Algoritmos y programas 48
Carpeta «/etc/apache2/mod-
enabled»
Contiene por cada módulo instalado dos
ficheros:
xxxx.load: contiene la instrucción para cargar
el módulo
ó bien
Carpeta «/etc/apache2/mod-
enabled»
xxxx.conf: contiene la configuración para
dicho módulo
Algoritmos y programas 49
xxx.conf
Las directivas solo se aplicarán si está
cargado el modulo
Configuración de un módulo
Cada modulo tiene sus propias directivas
Algoritmos y programas 50
Ejemplo «mod_speling»
Solo tiene dos directivas de configuración
Ejemplo «mod_speling»
Debemos añadir al fichero de configuración
(speling.conf) la directiva:
Algoritmos y programas 51
Ejemplo «mod_speling»
Prueba que funciona
Introduce la dirección
http://localhost/insdex.html
Archivos de configuracíon
asociados a cada módulo
Hay dos archivos asociados
Algoritmos y programas 52
Módulos mod-status
y mod-info
mod-status
/etc/apache2/mods-available
Permiten obtener información útil del servidor
Fichero de configuración: status.conf
Algoritmos y programas 53
mod-info
/etc/apache2/mods-enabled
No viene activado por defecto
Hay que activarlo y reiniciar el servidor
Apache
Fichero de configuración: info.conf
Se consulta la información:
http://192.168.56.101/server-info
Directorios de
usuarios:
mod_userdir
Algoritmos y programas 54
Introducción
A veces es recomendable que cada usuario
tenga su propia carpeta o directorio donde
poder crear sus propias páginas Web
Institución educativa, Instituto, Universidad,
empresa mediana
Cada usuario tendrá un espacio al que accederá
mediante su “nombre de usuario”:
http://sitioejemplo.com/~nombreusuario
Algoritmos y programas 55
directiva user_dir
Indica si se debe permitir que cada usuario de
nuestro sistema tenga su propia carpeta y
establece cual será su ruta: dentro de la
carpeta personal
user_dir
Si queremos que los usuarios no tengan su
propio espacio personal debemos
deshabilitarlo
Algoritmos y programas 56
Tipos MIME
Introducción
Sirven para identificar tipos de archivos
teniendo en cuenta su extensión
Gracias a este módulo se conoce qué
aplicación se necesita para abrirlos
/etc/apache2/mods-available
Algoritmos y programas 57
Introducción
El fichero de configuración es mime.conf
Directivas:
•TypesConfig
•DefaultType
•AddEncoding
•AddLanguage
•AddCharset
Host Virtuales
Algoritmos y programas 58
Introducción
Apache puede servir varios sitios Web debe
un mismo servidor
Introducción
Si tenemos dos dominios: www.laempresa.es
y www.mipagina.es
Algoritmos y programas 59
Ventajas
• Aprovechar el hardware existente
Algoritmos y programas 60
Sitio por defecto
000-default.conf
Algoritmos y programas 61
000-default.conf
El directorio especificado en “DocumentRoot”
suele ser de la forma:
/var/www
/var/www/html
/var/www/web
apache2.conf
En el fichero de configuración principal
podemos encontrarnos:
Algoritmos y programas 62
Herencia de directivas
apache2.conf
Herencia de directivas
apache2.conf
Los host virtuales heredan las directivas
del fichero principal: apache2.conf
Algoritmos y programas 63
apache2.conf
En el fichero de configuración principal
podemos encontrarnos:
Mensajes de error:
ErrorDocument
Sirve para establecer mensajes de error
personalizados
Están definidos por la organización W3:
https://www.w3.org/Protocols/rfc2616/rfc261
6-sec10.html
Es un número de 3 cifras
Se establece de manera independiente para
cada sitio virtual
Algoritmos y programas 64
Alias a otros directorios
Es posible incluir otros directorios del
árbol de nuestra máquina y hacer que
parezcan parte del sitio Web como
cualquier otra carpeta que esté
contenida físicamente dentro de la
carpeta principal que contiene los
documentos html
Algoritmos y programas 65
Directiva “Alias”
Redirecciones
Algunas veces es útil redirigir las
llamadas a otra dirección web para
que se procesen en otro punto
1. Por qué hemos cambiado la IP del servidor
WEB
2. Porque hemos dividido contenido el
servidor Web en varios servidores para
facilitar su mantenimiento
Algoritmos y programas 66
Directiva “Redirect”
Creación de un host
virtual
Algoritmos y programas 67
Modos de crear un host
virtual
Basados en nombres
Múltiples dominios DNS, uno por cada sitio o
host, apuntan a una única IP de una
máquina: opción más usada
Basados en IP’s
El servidor WEB tendrá asignado varias IP,
uno por cada sitio o host
Algoritmos y programas 68
Ejemplo
Módulo
Las directivas se encuentran en el módulo
“core”: no es necesario activarlo
Algoritmos y programas 69
Estructura de directorios
Utilizan una estructura de directorios similar a
la que hemos visto
Sitios disponibles
Primer paso:
Crear los registros DNS para que los dominios
apunten a nuestra IP
O bien configurar el fichero “hosts” añadiendo
los alias necesarios
Segundo paso:
Crear una carpeta para cada sitio Web y
colocar HTML y demás recursos en él
Algoritmos y programas 70
Tercer paso:
Crear un documento index.html en cada
carpeta de cada host
Cuarto paso:
Crear el archivo de configuración del host
virtual en la carpeta “sites-available”
Y escribimos lo siguiente….
Algoritmos y programas 71
Cuarto paso:
Es recomendable utilizar la directiva
“directory” para configurar las propiedades
de los directorios
Quinto paso:
Incluir los datos de configuracíon de nuestro
host en la configuración principal de
Apache: apache2.conf
Desde este fichero se “importa” la
configuración de otros ficheros
Algoritmos y programas 72
Sexto paso:
Configurar las directivas de error para cada
host virtual
Dentro del fichero de configuración de cada
“host virtual”
Séptimo paso:
Activar el host:
Algoritmos y programas 73
Séptimo paso:
Si al hacerlos da “error” debemos abrir el
fichero “apache2.conf” e incluir la directiva
Algoritmos y programas 74
Control de acceso
Introducción
Definición
Se refiere a cualquier método que permita
filtrar el acceso a cualquier recurso de
nuestro servidor
Módulo implicados
mod_auth_core y mod_authz_host
mod_setenvif y mod_rewrite.
Algoritmos y programas 75
Control de acceso basado en
la dirección
Está basado en el módulo mod_authz_host
No es necesario activar ese módulo
Consiste en comprobar la dirección IP y permitir o
denegar el acceso a los recursos del servidor
Algoritmos y programas 76
Control de acceso por
variables de entornos
Usa los módulos mod_authz_host y
mod_setenvif.
Consiste en permitir el acceso o no al usuario
dependiendo de alguna variable que se encuentra
configurada dentro de la máquina cliente
No es muy recomendable
RewriteCond y RewriteRule
Algoritmos y programas 77
Autenticación y
autorización
Definición
Autenticación
Consiste en comprobar que una persona es
quien dice ser
Autorización
Consiste en comprobar que una persona tiene
permisos para acceder a un recurso
determinado
Algoritmos y programas 78
Introducción
La autorización implica que se realice
previamente una autorización
Ejemplo
Un cliente del servidor Web se autentifica
mediante un nombre de usuario y una
contraseña. Si esta autenticación es
positiva entonces tendrá autorización
(permisos) para acceder a determinados
recursos
Introducción
La autenticación se realiza habitualmente
usando un nombre de usuario y una
contraseña
Algoritmos y programas 79
Definición
Autenticación
Se realiza mediante el módulo mod_authn_core
Autorización
Se realiza mediante el módulo mod_authz_core
Módulos
mod_auth_core y mod_auth_basic
Ejemplo
Vamos a configurar un directorio al que solo
se pueda acceder mediante un nombre de
usuario y contraseña
Algoritmos y programas 80
Módulos
htpasswd
Ejemplo
Debemos crear el directorio: no tiene porqué
estar dentro del directorio principal del
servidor Web
Algoritmos y programas 81
Ejemplo
La configuración podría ser algo así:
Ejemplo
Algoritmos y programas 82
Ejemplo
Ahora debemos crear el archivos de
contraseñas
Ejemplo
Podemos asegurarnos de que ha creado el
usuario abriendo el fichero
Estará encriptado
El siguiente paso es reiniciar el servidor
Apache
Algoritmos y programas 83
Acceso a grupos de
usuarios
Introducción
Es posible que nos interese permitir el acceso
al grupos de usuarios
Método 1
Algoritmos y programas 84
Introducción
Método 2
Introducción
Método 3
Algoritmos y programas 85
Ejemplo
Vamos a formar 2 grupos y cada uno de ellos
podrá acceder a un directorio distinto
Ejemplo
El archivo .grupos contendrá:
Algoritmos y programas 86
Ficheros .htaccess
Algoritmos y programas 87
¿Cómo permite el control de
acceso?
Las soluciones vistas no son muy adecuadas
si queremos delegar a otras personas el
control de determinadas secciones del
servidor Web
Si queremos que haya más de administrador y
que otras personas gestionen algunos
directorios se debe usar los ficheros
.htaccess
Algoritmos y programas 88
¿Cómo permite el control de
acceso?
El contenido podría ser este….
Algoritmos y programas 89
Configuración
Debemos cambiar la directiva…
Y dejarla así…..
Configuración
El lugar donde se configura depende de
nuestras necesidades
Algoritmos y programas 90
Protocolo HTTPS
Introducción
El protocolo HTTP es muy inseguro para
transmitir información
Algoritmos y programas 91
Introducción
HiperText Transfer Protocol Secure
Introducción
El protocolo proporciona “autenticación”
Permite que los usuarios se identifiquen
cuando se conectan al servidor
Algoritmos y programas 92
Introducción
Con HTTPS los contenidos del servidor están
más protegidos: se evita el ataque “Man in
the Midle”
Es un poco menos eficiente que HTTP: no es
recomendable usarlo en sitios donde la
transferencia de información es alta
HTTPS usa el puerto 443 por defecto
HTTP usa el puerto 80 por defecto
Certificados
digitales
Algoritmos y programas 93
Introducción
Los navegadores actuales basan el uso de
HTTPS en el conocimiento de “certificados
digitales”
Dichos certificados son emitidos por
“autoridades certificadoras” que trabajan a
nivel nacional e internacional
El certificado digital nos asegura que el
servidor Web al que nos conectamos es
quien dice ser
Introducción
Se supone que debemos “confiar” en la
“autoridad certificadora” para aceptar un
“certificado digital”
Dentro de un navegador suele haber varias
“autoridades certificadoras” que el creador
del navegador considera de confianza
Estas entidades se pueden consultar y
modificar
Algoritmos y programas 94
Introducción
Cuando queremos acceder a un servidor Web
comprobamos si posee certificado digital y
si este está reconocido por alguna de las
“autoridades” incluidas en nuestro
navegador
Existen servidores Web que usan certificados
no emitidos por estas autoridades:
advertencia
Introducción
Un “certificado digital” es un documento que
contiene “información personal” sobre la
persona u organización
Algoritmos y programas 95
Cifrado Asimétrico
Algoritmos y programas 96
Firma digital
Algoritmos y programas 97
Introducción
Es un mecanismo criptográfico o de cifrado
que permite asegurar al receptor de un
mensaje firmado digitalmente determinar la
entidad originadora de dicho mensaje
(autenticación de origen y no repudio), y
confirmar que el mensaje no ha sido
alterado desde que fue firmado por el
originador (integridad)
Introducción
La firmas digitales son emitidas por
“entidades certificadoras” supuestamente
de confianza
Estas entidades te proporcionan una clave
privada y otra pública
Dichas claves se usarán para cifrar o descifrar
el mensaje con el algoritmo de cifrado que
también te proporciona la «entidad»
Algoritmos y programas 98
Obtener certificados digitales
Para poder utilizar HTTPS es necesario
adquirir un “certificado digital” de una
“Autoridad certificadora”
O crear nuestra propia “Autoridad
certificadora” y generar nuestros
certificados
Debemos demostrar quienes somos a la
autoridad, generar una petición, y una vez
que ha sido aceptada instalarla
SSL/TLS
Algoritmos y programas 99
Introducción
SSL : Secure Socket Layer
Desarrollado por Netscape en los 90
Versión 3.0
Protocolo obsoleto con vulnerabilidades conocidas
HTTPS en Apache
Instalación
El contenido de ports.conf es…
Instalación
Debe existir un sitio por defecto llamado
default_SSL
Certificado digital
Al instalar el Apache se crea un certificado
digital por defecto
Si abrimos el archivo de configuración por
defecto