LuisMiguelGomezJimenezS22-Servidor Web Apache

66
LUIS MIGUEL GOMEZ JIMENEZ GRUPO: S22 PRACTICA 4 LINUX – SERVIDOR WEB APACHE PRÁCTICA 4. LINUX SERVIDOR WEB APACHE 1. Introducción al protocolo HTTP ----- TEORIA_HTTP.PDF Internet RFC HTTP: http://tools.ietf.org/html/rfc2616 MIME TYPES: http://www.webtaller.com/maletin/articulos/que-son-mime-types.php TIPOS MIMES: http://www.utoronto.ca/webdocs/HTMLdocs/Book/Book3ed/appb/mimetype.html LISTA DE CABECERAS HTTP 1.1: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields CABECERA AGENTE DE USUARIO: http://es.wikipedia.org/wiki/Agente_de_usuario EJERCICIO 1. HTTP. 1) Visualiza la información de las cabeceras de los siguientes servidores webs identificando los parámetros que puedas, con wget -S: http://www.linux-magazine.es/

Transcript of LuisMiguelGomezJimenezS22-Servidor Web Apache

Page 1: LuisMiguelGomezJimenezS22-Servidor Web Apache

LUIS MIGUEL GOMEZ JIMENEZ

GRUPO: S22

PRACTICA 4 LINUX – SERVIDOR WEB APACHE

PRÁCTICA 4. LINUX SERVIDOR WEB APACHE

1. Introducción al protocolo HTTP ----- TEORIA_HTTP.PDF Internet RFC HTTP: http://tools.ietf.org/html/rfc2616

MIME TYPES: http://www.webtaller.com/maletin/articulos/que-son-mime-types.php

TIPOS MIMES:

http://www.utoronto.ca/webdocs/HTMLdocs/Book/Book3ed/appb/mimetype.html

LISTA DE CABECERAS HTTP 1.1: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

CABECERA AGENTE DE USUARIO: http://es.wikipedia.org/wiki/Agente_de_usuario

EJERCICIO 1. HTTP.

1) Visualiza la información de las cabeceras de los siguientes servidores webs identificando los

parámetros que puedas, con wget -S:

http://www.linux-magazine.es/

Page 2: LuisMiguelGomezJimenezS22-Servidor Web Apache

http://www.debian.org

http://www.linuxtotal.com.mx/index.php?cont=info_admon_017

Page 3: LuisMiguelGomezJimenezS22-Servidor Web Apache

2) Aportaciones sobre el tema.

2. Servidor web Apache2.

http://httpd.apache.org/docs/2.2/es/

Apache es el servidor web más utilizado en sistemas GNU/Linux y Unix. Los servidores web se

usan para el alojamiento de páginas web solicitadas por el cliente a través de internet desde

los navegadores de web, actualmente el servidor apache se encuentra en la versión 2.

Viene con las siguientes ventajas y beneficios proporcionados por el software de servidor

apache:

• Estabilidad.

• Trabaja sobre una amplia gama de plataformas.

• Extremadamente flexible y modular.

• Varios sitios alojados en un solo servidor apache.

• El servidor web más utilizado en www.

DOCUMENTACIÓN OFICIAL DE APACHE.

http://httpd.apache.org/docs/2.2/es/

LINK PARA UBUNTU 10.04: http://library.linode.com/web-

servers/apache/installation/ubuntu-10.04lucid

Para poder instalar apache:

# apt-get install apache2

Page 4: LuisMiguelGomezJimenezS22-Servidor Web Apache

El servicio de apache2 en linux se llama igual que el paquete, es decir, apache2. Al igual que

todos los servicios en Debian, dispone de un script de arranque y parada en la carpeta

/etc/init.d.

Las opciones de ejecución de que dispone son estas:

# /etc/init.d/apache2 {start | stop | restart | reload | forcereload}

// Arrancar el servidor Web

# /etc/init.d/apache2 start

// Rearrancar el servidor Web

# /etc/init.d/apache2 restart

// Parar el servidor Web

# /etc/init.d/apache2 stop o service apache2 stop

• start Inicia el servicio de apache.

• stop: Detiene el servicio de apache.

• restart: Reinicia el servicio de apache. Equivale a un stop, seguido de un start.

• reload: Recarga los últimos cambios registrados dentro del servicio de apache.

• forcereload: Fuerza a realizar una recarga de los últimos cambios realizados dentro del

servicio de apache.

También podemos utilizar la utilidad apache2ctl / apachectl:

apache2ctl [-k start|restart|graceful|graceful-stop|stop]

Con esta herramienta podemos obtener también más información del servidor:

apache2ctl -t : Comprueba la sintaxis del fichero de configuración.

apache2ctl -M : Lista los módulos cargados

apache2ctl -S : Lista los sitios virtuales.

apache2ctl -V : Lista las opciones de compilación

Para comprobar si se ha instalado correctamente el servidor tenemos que arrancarlo, con el

comando del apartado anterior, y abrir el navegador escribiendo la dirección: http://localhost.

En el navegador debe aparecer una página web, que es la que instala por defecto.

Por defecto, la carpeta raíz del servidor web es la carpeta /var/www. Todos los documentos

que se encuentren dentro de la carpeta raíz del servidor web, serán accesibles vía web. Para

acceder vía web a la página almacenada en la carpeta raíz del servidor, desde un navegador

debemos acceder directamente con la dirección IP a: http://ip-del-servidor o bien utilizando

el nombre del mismo si tenemos el DNS funcionando: http://nombre-del-servidor. Si no

tenemos el DNS funcionando, podemos añadir el nombre y la IP en /etc/hosts para resolver

localmente.

Carpeta raíz del servidor web: /var/www

Acceso a la web principal: http://ip-del-servidor ó http://nombre-del-servidor.

Page 5: LuisMiguelGomezJimenezS22-Servidor Web Apache

CONFIGURACIÓN DEL SERVIDOR APACHE

El fichero de configuración se encuentra en: /etc/apache2/, y tiene los parámetros básicos de

configuración del servidor. El archivo contiene una serie de directivas que determina el

comportamiento del servidor. Las directivas que no se especifiquen utilizan su valor por

defecto. Dentro de este

directorio encontraremos varios archivos y directorios:

• apache2.conf: Dentro de este archivo se encuentra la configuración del servidor web

apache. Incluye“includes” a los demás ficheros.

• conf.d: Directorio en donde se encuentran otros archivos de configuración de apache.

• envvars: Este archivo de configuración contiene la información del usuario, grupo Y PID del

servicio de apache.

• httpd.conf: Este era el archivo de configuración, ya no se usa, al menos en distribuciones

basadas en Debian. Pero en cualquier caso, el fichero de configuración principal apache2.conf,

tiene un include a este fichero, por lo que podría usarse.

• ports.conf: Archivo de configuración donde se especifican los puertos de escucha. Por

defecto usará l 80 para http y el 443 para https, si está instalado. Para especificar que

escuchará otros puertos en todas las interfaces basta con: Listen 80

Listen 8000 O bien, para indicar que escucha un puerto por una interfaz y otro por otra: Listen 192.0.2.1:80

Listen 192.0.2.5:8000

• mods-available: Directorio donde se encuentran los módulos que tenemos disponibles para

instalar en el servidor apache. Tiene los ficheros .load que tienen todo lo necesario para cargar

un módulo y los .conf que tienen la configuración básica para inicializar el módulo.

• mods-enabled: Este directorio contiene un enlace débil a cada módulo del directorio anterior

que esté activado en apache. De esta manera se sabe si un módulo está activado en apache o

no. Los enlaces que estén en este directorio serán los módulos a cargar al iniciar Apache.

• sites-available: Directorio en donde se encuentran los archivos de configuración de sitios

virtuales.

Page 6: LuisMiguelGomezJimenezS22-Servidor Web Apache

Dentro de esta carpeta se encuentra un archivo plantilla para sitios web con http, y otro para

sitios

web con https. Aquí se crearán los archivos de configuración de sitio necesarios. Por defecto

está creado el fichero default con la configuración del servidor virtual por defecto.

• sites-enabled: Este directorio contiene un enlace débil a cada sitio del directorio anterior

que esté

activado en apache. De esta manera se sabe si un sitio está activado en apache o no.

ARCHIVO APACHE2.CONF

El fichero se puede dividir en tres secciones, si bien, es una organización puramente

organizativa, no

una división estricta.

- Seccion 1. Directivas globales, donde se definen aspectos de Apache, como el número máximo

de clientes concurrentes, los timeouts, el directorio donde están los ficheros de configuración,

etc.

- Sección 2. Directivas de funcionamiento del servidor principal y de todos los servidores

virtuales.

- Sección 3. Directivas de configuración de los servidores virtuales.

EJERCICIO 2. INSTALACIÓN DE UN CLIENTE WEB CHROME EN TU LINUX

DESKTOP.

Para la instalación del cliente chrome en Ubuntu desktop he seguido el siguiente enlace.

http://proyectosbeta.net/2012/07/instalar-google-chrome-en-ubuntu-12-04/

Resultado:

Page 7: LuisMiguelGomezJimenezS22-Servidor Web Apache

EJERCICIO 3: INSTALACIÓN Y CONFIGURACIÓN APACHE 2 EN DEBIAN/UBUNTU

1) Instala el servidor web Apache e indica el FQDN para que al iniciar el servicio no nos

de ningún problema.

Page 8: LuisMiguelGomezJimenezS22-Servidor Web Apache

2) ¿Qué diferencia hay entre un restart y un reload?

• restart: Reinicia el servicio de apache. Equivale a un stop, seguido de un start.

• reload: Recarga los últimos cambios registrados dentro del servicio de apache.

3) ¿Qué es la opción graceful?

Esta opción hace que el proceso padre indique a sus hijos que terminen después de servir la petición que estén atendiendo en ese momento (o de inmediato si no están sirviendo ninguna petición). El proceso padre lee de nuevo sus ficheros de configuración y vuelve a abrir sus ficheros log. Conforme cada hijo va terminando, el proceso padre lo va sustituyendo con un hijo de una nueva generación con la nueva configuración, que empeciezan a servir peticiones inmediatamente.

4) Comprueba la directiva donde indicamos el puerto de escucha del servidor

Escuchará por el puerto 80 por defecto anose que se le instale algún modulo adicional.

Page 9: LuisMiguelGomezJimenezS22-Servidor Web Apache

5) Comprueba los módulos cargados en el servidor: mirando en el directorio adecuado y

utilizando la herramienta apache2ctl.

6) Comprueba los sitios webs activos en nuestro servidor: mirando en el directorio adecuado y

utilizando la herramienta apache2ctl.

EJERCICIO 4. APACHE SIN VIRTUAL HOST

El servidor web Apache2.2 se instala por defecto con un host virtual. La configuración de este

sitio la podemos encontrar en:

/etc/apache2/sites-available/default

Page 10: LuisMiguelGomezJimenezS22-Servidor Web Apache

Y por defecto este sitio virtual está habilitado, por lo que podemos comprobar que existe un

enlace

simbólico a este fichero en el directorio /etc/apache2/sites-enabled.

Si no necesitamos utilizar la funcionalidad de vitual hosting debemos deshabilitar el sitio

virtual:

a2dissite default

y podemos coger parte del fichero de configuración default y añadirlo a la configuración del

servidor web, por ejemplo podemos ponerlo dentro del fichero /etc/httpd.conf:

DocumentRoot /var/www

<Directory /var/www/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

Reiniciamos el servicio y comprueba que puedes acceder al servidor.

Page 11: LuisMiguelGomezJimenezS22-Servidor Web Apache

EJERCICIO 5: INTRODUCCIÓN AL VIRTUAL HOSTING CON APACHE 2.2

El objetivo de esta práctica es la puesta en marcha de dos sitios web utilizando el mismo

servidor web apache. Hay que tener en cuenta lo siguiente:

Cada sitio web tendra nombres distintos, cada sitio web compartirán la misma dirección IP y el

mismo puerto (80).

Queremos construir en nuestro servidor web apache dos sitios web con las siguientes

características:

1. El nombre de dominio del primero será www.iespjm.com, su directorio base será

/var/www/iespjm y contendrá una página llamada index.html, donde sólo se verá una bienvenida.

2. En el segundo sitio vamos a crear una página donde se pondrán noticias por parte de los

departamento, el nombre de este sitio será www.sri.org, y su directorio base será

/var/www/sri. En este sitio sólo tendremos una página inicial index.html, dando la bienvenida a

la página del módulo SRI.

Para conseguir estos dos sitios virtuales debes seguir los siguientes pasos:

3) Los ficheros de configuración de los sitios webs se encuentran en el directorio

/etc/apache2/sitesavailable,por defecto hay dos ficheros, uno se llama default que es la

configuración del sitio web por defecto.

Necesitamos tener dos ficheros para realizar la configuración d elos dos sitios virtuales para ello

vamos a copiar el fichero default :

#cd/etc/apache2/sites-available

#cp default iespjm

#cp default sri

2)Modificamos el fichero iespjm, donde vamos a añadir la siguiente línea:

ServerName www.iespjm.org

Y vamos a modificar dos líneas:

DocumentRoot /var/www/iespjm/

<Directory /var/www/iespjm/>

Page 12: LuisMiguelGomezJimenezS22-Servidor Web Apache

Hago lo mismo para el archivo sri.

No es suficiente crear los ficheros de configuración de cada sitio web es necesario crear un

enlace simbólico a estos ficheros dentro del directorio /etc/apache2/sites-enabled, para ello:

# cd /etc/apache2/sites-enabled

#a2ensite iespjm

# a2ensite sri

Ahora creo las carpetas sri y iespjm con sus correspondientes index.html

En el cliente

Edito el archivo /etc/hosts

Page 13: LuisMiguelGomezJimenezS22-Servidor Web Apache

EJERCICIO 6. PUERTOS DE ESCUCHA

1) Configura apache2 para no usar virtual hosting, y cambia el puerto de escucha del servidor al

8081.

Page 14: LuisMiguelGomezJimenezS22-Servidor Web Apache

¿Se puede terner el servidor escuchando por dos puertos el 80 y el 8081?

Si

2) Configura apache2 para que use los sitios virtuales del ejercicio 5 anterior, pero modifica la

configuración para que www.iespjm.com sea visible por el puerto 80, y www.sri.com sea visible

desde el puero 8081. Archivo /etc/apache2/sites-available/iespjm

Page 15: LuisMiguelGomezJimenezS22-Servidor Web Apache

ESTRUCTURA DE LOS FICHEROS DE CONFIGURACIÓN

http://httpd.apache.org/docs/2.2/configuring.html

Los módulos pueden ser así activados, o desactivados, según nuestras necesidades. La gestión

de

módulos se realiza así:

• Ver los módulos que tenemos activados:

# apache2ctl l

• Para activar un módulo:

# a2enmod modulo (apache 2 enable module)

• Para desactivar un módulo:

# a2dismod modulo (apache 2 disable module)

EJERCICIO 7. DIRECTIVAS DEL FICHERO APACHE2.CONF

Busca en el fichero de configuración de Apache las siguientes directivas, determina que

función tienen y el valor que poseen por defecto.

Directivas de identificación del servidor:

ServerName Directiva establece el esquema de solicitud, nombre de host y puerto que el

servidor utiliza para identificarse. Esto se utiliza al crear direcciones URL de redirección.

ServerAdmin Dirección de correo electrónico que el servidor incluye en los mensajes de

error se envía al cliente

Directivas de localización de ficheros

DocumentRoot Directorio que forma la estructura del documento principal visible desde la

web.

ErrorLog Lugar donde el servidor registra los errores.

CustomLog Establece nombre y el formato del archivo de registro.

PidFile Presente en el servidor registra el ID de proceso del daemon.

ServerRoot Base directorio para la instalación del servidor.

AccessFileName Nombre del fichero de configuración distribuida

Directivas de control de la conexión

Timeout Cantidad de tiempo que el servidor esperará para ciertos eventos antes de fallar

una solicitud. Sintaxis: TimeOut segundos KeepAlive Permite conexiones HTTP persistentes.

MaxKeepAliveRequests Número de peticiones permitidas en una conexión persistentes.

KeepAliveTimeout Cantidad de tiempo que el servidor esperará para las solicitudes

posteriores en una conexión persistente.

Otras directivas

User Nombre de usuario con el que el servidor responderá a las peticiones

Group Grupo con el que el servidor atenderá las peticiones

Page 16: LuisMiguelGomezJimenezS22-Servidor Web Apache

DefaultType Tipo de contenido MIME por defecto que usará el servidor si no puede

determinar el tipo MIME en concreto del documento a servir.

LogLevel Controla el nivel de detalle del registro de errores.

LogFormat Describe un formato para su uso en un archivo de registro.

EJERCICIO 8. Y ESTRUCTURA DE LOS FICHEROS DE CONFIGURACIÓN.

1) Las directivas de configuración de apache2 se pueden aplicar si está definido un

determinado parámetro. Para esto se utiliza la directiva <IfDefine>. Busca en algún

fichero de configuración esta directiva.

No la he encontrado.

2) Para cargar dinámicamente los módulos se utilza la directiva LoadModule, búscalos

en los ficheros *.load dentro de /etc/apache2/mods-availables.

Más información: http://httpd.apache.org/docs/2.2/dso.html

Page 17: LuisMiguelGomezJimenezS22-Servidor Web Apache

3) Busca en la configuración una variable de entorno y determina en que fichero están

definidas.

4) La directiva Include nos permite añadir ficheros de configuración a la configuración general

de apache2. Comprueba qué ficheros son añadidos con esta directiva.

Page 18: LuisMiguelGomezJimenezS22-Servidor Web Apache

5) Podemos aplicar directivas a partes concretas de nuestro servidor web, para ello estudia las

siguientes directivas (Para aprender más lee Secciones de Configuración):

<Directory>

Se usa para englobar un grupo de directivas que se aplicarán solamente al directorio

especificado y a sus subdirectorios. Puede incluir a cualquier directiva cuyo uso esté

permitido en un contexto <directory>. Directory-ruta puede ser tanto la ruta

completa a un directorio, como una cadena de caracteres comodín que use las reglas

de equivalencia de

los shells de Unix.

<DirectoryMatch>

Se usa para englobar a un grupo de directivas que se aplicarán solamente al directorio

(y los subdirectorios de éste) especificado, al igual que <Directory>. Sin embargo, en

ese caso la directiva toma como argumento una expresión regular.

<VirtualHost>

Se usan para incluir un grupo de directivas que se aplicarán solo a un host virtual en

particular. Cualquier directiva que esté permitido usar en un contexto virtual host

puede

Page 19: LuisMiguelGomezJimenezS22-Servidor Web Apache

usarse. Cuando el servidor recibe una petición de un documento de un host virtual en

concreto, usa las directivas de configuración incluidas en la sección <VirtualHost>.

Localiza algunas de ellas en los ficheros de configuración.

LOGS Y ERRORES.

http://httpd.apache.org/docs/2.2/es/logs.html

EJERCICIO 9. Logs.

1) Consulta el fichero /etc/apache2/sites-available/default e indica cuál es fichero de logs

de errores, qué directiva usa y cuál es su nivel de prioridad. Muestra su contenido.

Page 20: LuisMiguelGomezJimenezS22-Servidor Web Apache

Directiva ErrorLog

Nivel de prioridad warning

Page 21: LuisMiguelGomezJimenezS22-Servidor Web Apache

2)Indica cuál es fichero de logs de accesos, qué directiva usa y cuál es su formato. Muestra su

contenido.

Ruta del fichero log: /var/log/apache2/Access.log

Directiva: CustomLog

Formato: Combined

3) Estando en el mismo fichero, configura el servidor para que cuando retorne el código

ErrorDocument de valor 404 envio el texto “Página no encontrada en el servidor iespjm.com.

Pruébalo accediendo a una página html que no existe.

Page 22: LuisMiguelGomezJimenezS22-Servidor Web Apache

4) Modifica ahora el comportamiento anterior para que cuando ese caso se de, se muestre el

contenido de no_esta.html creado por ti.

Page 23: LuisMiguelGomezJimenezS22-Servidor Web Apache

DIRECTORIOS VIRTUALES.

Son directorios que están fuera del directorio raiz DocumentRoot. Se pueden crear con la

directiva Alias, y con un enlace simbólico dentro del directorio raíz (FollowSymLinks)

apuntando al otro directorio.

EJERCICIO 10. DIRECTORIOS VIRTUALES.

1)Crea un directorio en /home/alumno/redes. Accede con el usuario alumno. Crea un archivo

dentro redes.html. Accede como administrador y edita el fichero default y utilizando la

sentencia Alias crea un directorio virtual /redes y configúralo con la directiva <Directory.

Pruébalo.

Page 24: LuisMiguelGomezJimenezS22-Servidor Web Apache
Page 25: LuisMiguelGomezJimenezS22-Servidor Web Apache

Desde el cliente

2)Crea un directorio en /home/alumno/servicios. Accede con el usuario alumno. Crea un archivo

dentro servicios.html. Accede como administrador y crea utilizando un enlace simbólico entre

la carpeta /var/www/servicios y /home/alumno/servicios. Pruébalo.

Ahora creamos en enlace simbolico.

Page 26: LuisMiguelGomezJimenezS22-Servidor Web Apache

Volvemos a editar nuestro sitio default.

La opción FollowSymLinks sirve para seguir los enlaces simbólicos alojados en el.

Desde el servidor

Desde el cliente.

Page 27: LuisMiguelGomezJimenezS22-Servidor Web Apache

CONFIGURACIÓN MODULAR EN APACHE

Apache es un servidor modular y el núcleo tiene las funcionalidades básicas que se pueden

ampliar con módulos adicionales. Cada módulo se puede configurar con directivas. Existen

múltiples módulos que puedes consultar en http://httpd.apache.org/docs/2.2/mod y en

http://modules.apache.org

Existen módulos estáticos que se añaden cuando se compila Apache. Y módulos dinámicos que

se cargan dinámicamente cuando se inicia el servidor. Si el servidor se compila con la opción

DSO, entonces se podrán cargar módulos dinámicos con la directiva LoadModule. La directiva

<IfModule > permite especificar que se tendrá en cuenta si el módulo está cargado.

EJERCICIO 11. APACHE MODULAR. o existe.

1) Consulta los módulos estáticos (apache2ctl) de la versión precompilada .deb que está

instalada en tu Ubuntu y los módulos dinámicos cargados por defecto.

Page 28: LuisMiguelGomezJimenezS22-Servidor Web Apache

2) Consulta los módulos dinámicos en /etc/apache2/mods-enabled. ¿qué tipo de ficheros

encuentras?

3) Edita el fichero alias.load y observa cómo se utiliza la directiva LoadModule para cargar el

módulo Comprueba cuál es la ruta donde está el código del modulo (archivo .so)

4) Edita el fichero alias.conf, ¿qué encuentras dentro de la directiva <IfModule.

Page 29: LuisMiguelGomezJimenezS22-Servidor Web Apache

Encontraremos la configuración del modulo.

5) Muestra de la carpeta modules, los módulos disponibles para cargar.

6) Con sudo apt-cache search libapache2-mod muestra los paquetes disponibles en los

repositorios de Ubuntu que permiten instalar módulos adicionales de Apache.

Page 30: LuisMiguelGomezJimenezS22-Servidor Web Apache

7) Comprueba que el módulo userdir no está habilitado. Desabilitalo, y finalmente vuelve a

habilitarlo.

8) ¿Qué ficheros se han creado en el directorio mods-enabled? Reinicia el servidor.

Page 31: LuisMiguelGomezJimenezS22-Servidor Web Apache

9) Consulta userdir.conf y observa que se han habilitado el uso de directorios personales. ¿cuál

es el nombre del subdirectorio que pueden crear los usuarios en su directorio home para poner

sus páginas personales?

10) Inicia una sesión con el usuario alumno, y vete al subdirectorio creado antes y crea una

página web personal.htm. Accede ahora a tu navegador con la URL

http://10.33.1.2/~alumno/personal.htm

Page 32: LuisMiguelGomezJimenezS22-Servidor Web Apache

El carácter que hay antes de luis ( Alt Gr + ñ)

11) Indica cómo podrías cambiar el nombre del subdirectorio creado por defecto por otro.

Page 33: LuisMiguelGomezJimenezS22-Servidor Web Apache

12) Activa ahora los módulos mod_info y mod_status que dan información acerca del servidor

web y comprobar su funcionamiento.

13) Prueba Redirect.

Page 34: LuisMiguelGomezJimenezS22-Servidor Web Apache

14) El módulo rewrite nos va a permitir acceder a una URL e internamente estar accediendo a

otra,

entre otros cometidos. Activa el módulo mod_rewrite y empléalo para algún propósito.

RewriteEngine On Para activar el motor del módulo para este servidor.

RewriteOptions Inherit Para aplicar este módulo al host virtual y no al servidor

principal

RewriteRule Esta directiva especifica la regla que deseamos configurar.

Al intentar acceder a http://10.33.1.2/index.html me redirecciona automaticamente a:

Page 35: LuisMiguelGomezJimenezS22-Servidor Web Apache

EJERCICIO 12. CONTROL DE ACCESO POR IP UTILIZANDO LAS DIRECTIVAS

ORDER, ALLOW Y DENY

1) Inicia una sesión como administrador y crea un directorio privado en www y dentro crea

una página privada.html. Edita el fichero de configuración /etc/sites-available/default y

niega el acceso a todos los equipos excepto al ubuntucliente.

Si intento acceder desde localhost:

Si intento acceder desde el cliente Ubuntu desktop como dice la práctica:

Page 36: LuisMiguelGomezJimenezS22-Servidor Web Apache

2) Comprueba el control de acceso del directorio DocumentRoot en el host virtual default.

Es muy permisivo, permite todas las conexiones.

3) Comprueba el control de acceso del directorio doc en el host virtual default.

EJERCICIO 13. AUTENTIFICACIÓN BÁSICA, HTTP BASIC

El servidor web Apache puede acompañarse de distintos módulos para proporcionar diferentes

modelos

de autenticación. La primera forma que veremos es la más simple. Usamos para ello el módulo

de autenticación básica que viene instalada “de serie” con cualquier Apache: mod auth_basic.

Consulta la documentación relativa a AuthName,AurthType y AuthUserFile y Requiere en

Page 37: LuisMiguelGomezJimenezS22-Servidor Web Apache

http://httpd.apache.org/docs/2.2/mod/quickreference.html

1) Comprueba que el módulo auth_basic está habilitado mirando el directorio mods-enabled

2) Crea usuarios donde guardarás el nombre y clave de los usuarios con el comando:

sudo htpasswd –c /etc/apache2/passwd alumno1

sudo htpasswd /etc/apache2/passwd alumno2

Una vez creados los usuarios alumno1 y alumno2 les asigno una nueva contraseña:

3) Edita el fichero /etc/sites-available/default y sobre el directorio privado y añade:

AuthName “Acceso privado”

AuthType Basic

AuthUserFile /etc/apache2/passwd

Require user alumno sri alumno

Page 38: LuisMiguelGomezJimenezS22-Servidor Web Apache

4) Ahora accede a www.iespjm.com/privado para probarlo.

Page 39: LuisMiguelGomezJimenezS22-Servidor Web Apache

5) Repite el ejemplo para un host virtual tuyo, para una carpeta llamada segura y crea dos

usuarios Crea un grupo de usuarios grupoalaumnos que tendrá a los usuarios Marta y Jaime. A

esta carpeta sólo tendrá acceso el grupoalumnos y no por ejemplo a marisa.

Page 40: LuisMiguelGomezJimenezS22-Servidor Web Apache

Para eliminar un usuario borraremos la línea del usuario que queramos. En mi caso he borrado el usuario Marta y no podrá autentificarse en segura.html

EJERCICIO 14. CONFIGURACIÓN DE .HTACCESS

1) Habilita en /etc/apache2/sites-available/default el uso de este tipo de ficheros

permitiendo sobreescribir todas las directivas en el directorio /home/alumno/redes.

Reinicia el servidor. Inicia sesión como alumno y crea el fichero .htaccess dentro de la

carpeta y añade directivas para permitir el acceso desde todos los equipos que estén en la

red 10.33.1.0/24 con allow from. Ojo!, no hace falta poner la directiva <Directory. Sin

reiniciar, accede a http://localhost/redes y verifica que es posible acceder.

Page 41: LuisMiguelGomezJimenezS22-Servidor Web Apache

Al intentar acceder a redes desde localhost y no ser el rango permitido en la imagen de arriba,

nos denegará el acceso.

Page 42: LuisMiguelGomezJimenezS22-Servidor Web Apache

Si intento acceder desde mi cliente Ubuntu desktop con ip 10.33.1.55 me dejará entrar sin

ningún problema.

2) Habilita la opción de listar los ficheros en ese directorio y haz que la página entrada.html

se visualice por defecto.

Page 43: LuisMiguelGomezJimenezS22-Servidor Web Apache

3) Hecer que los ficheros txt no sean accesibles.

Edito el nombre del directorio index para que no encuentre entradaaa.html y nos muestre el

índice.

Para hacer que no sea el fichero prueba.txt no sea accesible, abro de nuevo

.htaccess y añado las siguientes directivas.

Page 44: LuisMiguelGomezJimenezS22-Servidor Web Apache

Aquí Vemos como ha dejado de aparecer el fichero prueba.txt

Page 45: LuisMiguelGomezJimenezS22-Servidor Web Apache

4) Redireccionar a una página, por ejemplo cuando entremos en este directorio salte a

www.google.es

5) Crear una lista de IPs prohibidas

Modificamos .htaccess para permitir todas las direcciones y luego denegar alguna especifica

que queramos.

Page 46: LuisMiguelGomezJimenezS22-Servidor Web Apache

La ip 10.33.1.55 corresponde a mi Ubuntu desktop cliente el cual tiene denegado el acceso al

directorio redes.

6) Crear una página personalizada para un tipo de error

Page 47: LuisMiguelGomezJimenezS22-Servidor Web Apache

EJERCICIO 15. AUTENTIFICACIÓN TIPO DIGEST

La autentificación tipo digest soluciona el problema de la transferencia de contraseñas en

claro sin necesidad de usar SSL. El procedimiento, como veréis, es muy similar al tipo básico

pero cambiando algunas de las directivas y usando la utilidad htdigest en lugar de htpasswd

para crear el fichero de contraseñas. El módulo de autenticación necesario suele venir con

Apache pero no habilitado por defecto. Para activarlo usamos la utilidad a2enmod y, a

continuación reiniciamos el servidor Apache:

1) Crea dos subdirectorios en el host virtual default que se llamen grupo1 y grupo2. Crea

los usuarios mencionados arriba con la utilidad htdigest, asignando a cada uno un

dominio distinto (domgrupo1 y domgrupo2). Configura los directorios para que al

primero grupo1 sólo puedan acceder el usuario del dominio domgrupo1, y el directorio

grupo2 solo accedan el usuario del dominio domgrupo2.

Habilitamos el modulo auth_digest

Page 48: LuisMiguelGomezJimenezS22-Servidor Web Apache

Creación de subdirectorios:

Creación de usuarios con htdigest

Directivas:

Page 49: LuisMiguelGomezJimenezS22-Servidor Web Apache
Page 50: LuisMiguelGomezJimenezS22-Servidor Web Apache

EJERCICIO 16. AUTENTICACIÓN CON USUARIOS DEL SISTEMA

Page 51: LuisMiguelGomezJimenezS22-Servidor Web Apache
Page 52: LuisMiguelGomezJimenezS22-Servidor Web Apache

EJERCICIO 17. AUTENTIFICACIÓN CON MYSQL

Siguiendo la explicación de clase e Internet, configura al menos un sitio web de tu servidor

para que su acceso sea mediante autenticación MySql. Nota: las contraseñas de los usuarios se

deben guardadas encriptadas.

http://www.guia-ubuntu.org/index.php?title=MySQL

http://blog.unlugarenelmundo.es/2010/03/18/autenticacion-en-apache-y-ii-digest-y-con-

mysql/

Page 53: LuisMiguelGomezJimenezS22-Servidor Web Apache

Seguimos con la instalación del servidor y el cliente de MySQL Empezamos a instalar mysql client y server y phpmyadmin

sudo apt-get install mysql-server mysql-client -y

Pedirá clave para el usuario root y luego la confirmación de la misma. Ahora podemos

instalar todos estos módulos, mejor que sobre y no que falte.

sudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-

imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell

php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl -y

Entre ellos va el soporte para MySQL, cURL, etc. Ahora otro reinicio del servidor web: sudo /etc/init.d/apache2 restart

Page 54: LuisMiguelGomezJimenezS22-Servidor Web Apache

Y ahora instalamos la interfaz web para manejar el MySQL y sus bases de datos,

phpMyAdmin: sudo apt-get install phpmyadmin –y

Creo la base de datos apache y tabla usuarios.

Page 55: LuisMiguelGomezJimenezS22-Servidor Web Apache

Creamos dos usuarios para probar:

EJERCICIO 18. HTTPS.

- Habilita el módulo mod_ssl y el puerto de escucha 443.

Page 56: LuisMiguelGomezJimenezS22-Servidor Web Apache

- Abre y observa el sitio web default_ssl. a2enmod ssl

Page 57: LuisMiguelGomezJimenezS22-Servidor Web Apache

- Crea y habilita un sitio web seguro para el dominio seguro.iespjm.com

Page 58: LuisMiguelGomezJimenezS22-Servidor Web Apache

crea certificados autofirmados,

a) aptitude install ssl-cert

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/seguro.crt

b) openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/seguro.pem -keyout /etc/

apache2/ssl/segurokey.key

Page 59: LuisMiguelGomezJimenezS22-Servidor Web Apache

chmod 600 /etc/ apache2/ssl/seguro*

- Crea un directorio /var/www/seguro donde se sirve el fichero index.html si no se dice nada y

no se mostrará ningún fichero si no se solicita. Y podrán acceder todos los usuarios.

Page 60: LuisMiguelGomezJimenezS22-Servidor Web Apache

- El log de errores será /var/log/apache2/seguro_error.log y el de sucesos

/var/log/apache2/access_seguro.log con formato combined

Agregamos el certificado al sitio seguro.iespjm

Page 61: LuisMiguelGomezJimenezS22-Servidor Web Apache

POR ULTIMO COMPROBAMOS QUE HEMOS CONFIGURADO TODO PERFECTAMENTE.

Page 62: LuisMiguelGomezJimenezS22-Servidor Web Apache

EJERCICIO 19. CONFIGURACIÓN DE ESTADÍSTICAS CON AWSTATS

INDEPENDIENTES

PARA TUS DOS SITIOS WEBS DE TU SERVIDOR

http://www.lostscene.com/manuales/awstats.php

Page 63: LuisMiguelGomezJimenezS22-Servidor Web Apache
Page 64: LuisMiguelGomezJimenezS22-Servidor Web Apache

Editamos el siguiente archivo para decir cual será nuestro archivo log.

Page 65: LuisMiguelGomezJimenezS22-Servidor Web Apache

**AQUÍ ME QUEDADO EN ESTE EJERCICIO.

EJERCICIO 20. PROXY WEB PARA TU SERVIDOR APACHE

Instala y configura un proxy transparente en tu Linux NAT que gestione tu servidor web.

Especifica manual detallado para su instalación, configuración y puesta en marcha.

Page 66: LuisMiguelGomezJimenezS22-Servidor Web Apache

En el archivo /etc/apache2/httpd.conf añadimos las siguientes líneas.

Y este es el resultado: