0% encontró este documento útil (0 votos)
63 vistas24 páginas

Práctica4 IrenePacheco

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
63 vistas24 páginas

Práctica4 IrenePacheco

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Práctica 4:

Configuración de Apache
y directivas

Irene Pacheco Paniagua


Parte 1: Configuración Apache
Para esta práctica he usado el Apache configurado en la práctica 2 que ya tiene instalado
LAMP

1.1 Configuración inicial


Comprobamos que se haya creado el usuario y grupo www-data en los archivos
/etc/passwd y /etc/group con los comandos cat y grep

/etc/passwd

/etc/group

También se tiene que comprobar que se ha creado un directorio llamado /var/www/html


con propietario root y que contenga el archivo html.

Archivo index.html

El archivo de configuración del servidor Web Apache ubicado en


/etc/apache2/apache2.conf establece las directivas que configuran el comportamiento
del servidor web. Las directivas más importantes serían:

ServerRoot por defecto

Timeout por defecto

Usuarios y grupos por defecto

ServerRoot. Determina el directorio raíz desde el que apache buscará sus archivos
de configuración. Aparece comentado por defecto.
User y Group. Especifica los usuarios y grupos con permisos del servidor web. En
nuestro caso serán www-data. Por defecto coge el usuario y grupo por defecto
www-data.
Timeout. Es el tiempo máximo en segundo que el servidor esperará para que el
cliente complete solicitudes. Por defecto es de 300.
Existen dos archivos de registro para monitorear el funcionamiento del servidor:

• /var/log/apache2/error.log  almacena los mensajes relacionados con errores


del servidor.
• /var/log/apache2/access.log  registra todas las solicitudes que recibe el
servidor mostrando datos como la IP del cliente, la hora o los recursos solicitados.

En el fichero /etc/apache2/ports.conf podremos comprobar que el puerto escucha es el


80 y qué otro puerto usará en función de si los módulos especificados están cargados,
como se puede ver en la siguiente imagen:

Puerto de escucha y módulos habilitados

El módulo SSL habilita conexiones seguras en el servidor web usando el protocolo de


cifrado SSL y TLS y el módulo gnutls.c también proporciona conexiones seguras con el
cifrado de la biblioteca GnuTLS.

Hay dos directorios de configuración para los módulos de Apache:

Directorios de configuración de módulos

• /etc/apache2/mods-available
Aquí se encuentran los módulos disponibles en ficheros .load y .conf. para cargar y
configurar los módulos
• /etc/apache2/mods-enabled
Contiene enlaces simbólicos a los ficheros de mods-available que se cargarán al
iniciar Apache.

El siguiente directorio /etc/apache2/sites-available es de configuración de sitios o


directorios virtuales disponibles en Apache:

Directorio sites-available
Dentro de esta carpeta encontramos el archivo por defecto 000-default.conf con la
directiva <VirtualHost> que define el comportamiento del servidor virtual por defecto.

• VirtualHost hace referencia al nombre del host o la IP a la que se le aplicará la


directiva que contiene. En esta caso * significaría que se aplica a cualquier
dirección IP y 80 sería el puerto afectado.1
• ServerAdmin es una directiva que configura la dirección de contacto que se le
devuelve al cliente en caso de error.2
• DocumentRoot esta directiva establece el árbol de documentos que será visible
desde la web3
• ErrorLog esta directiva establece el nombre del archivo donde se guardarán los
errores y encuentros. Se puede observar que no aparece la carpeta
/var/log/apache2 como en la documentación de apache, si no una variable que
apunta al directorio.4
• CustomLog la directiva establece el nombre y formato del archivo de peticiones
de logeo5. También usa una variable para especificar la ruta del archivo.

En el directorio /etc/apache2/sites-enabled se encuentran los enlaces simbólicos a los


ficheros de sites-available que serán los servidores virtuales de Apache. Como se
muestra en la imagen, hay un fichero “000-default.conf” que es un enlace a mismo
fichero de sites-available.

Enlace simbólico desde /sites-enabled hacia /sites-available

1
https://httpd.apache.org/docs/2.4/mod/core.html#virtualhost
2
https://httpd.apache.org/docs/current/mod/core.html#serveradmin
3
https://httpd.apache.org/docs/current/mod/core.html#documentroot
4
https://httpd.apache.org/docs/current/mod/core.html#errorlog
5
https://httpd.apache.org/docs/2.4/mod/mod_log_config.html#customlog
1.2 Servidor virtual por defecto
En apache el servidor principal es el que actúa cuando no hay ningún servidor virtual
configurado con los mismos argumentos para la IP y el puerto6. Su configuración se
muestra en el fichero /etc/apache2/apache2.conf.

Los servidores virtuales son los que basándose en IP, nombres y puertos se configuran de
manera personalizada con la directiva <VirtualHost> … </VirtualHost>.

Ejercicios
­ Crea un fichero de texto /var/www/html/daw.html con el código HTML que
quieras.

Archivo daw.html

­ Crea el directorio /var/www/html/datos (mkdir) y, dentro de éste, el archivo


datos1.html con el contenido que quieras.

Directorio /var/www/html/datos

Archivo datos1.html

­ Inicia sesión en la máquina virtual de desarrollo W7 o en la máquina física e


introduce las mismas URLs anteriores cambiando localhost por la dirección IP o el
nombre DNS de DespliegueUbuntu (si está activado el servidor DNS o el resolver de
Windows).

http://192.168.3.174/

6
https://httpd.apache.org/docs/2.4/vhosts/name-based.html
http:// 192.168.3.174/daw.html

http://192.168.3.174/datos/datos1.html

1.3 Ficheros a servir por defecto (Directory Index)


Por defecto el servidor web abre el archivo index.html al conectarse sin pedir ningún
recurso específico ya que en el archivo de configuración apache2.conf está establecida la
directiva “DirectoryIndex index.html” y se hereda por el servidor virtual por defecto.

­ Sin abandonar el navegador, renombra el archivo /var/www/index.html como


/var/www/índice.html

­ Refresca con F5 el navegador. Ahora ya no se muestra el contenido del archivo


index.html. En su lugar se obtiene un listado del directorio /var/www/html. La
directiva DirectoryIndex ya no encuentra el archivo index.html.
­ Edita el archivo /etc/apache2/sites-available/000-default.conf. Puedes borrar
todas las líneas comentadas (aquellas que empiezan por #) y dentro de la sección
… incluye la sección … tal y como se muestra a continuación:

**Para la versión 2.4 de Apache:

Se cambia “Order allow, deny” y “allow from all” por “Require all
granted”7

Reinicia el servidor para que los cambios se apliquen con el comando sudo service
apache2 restart
Ahora, el acceso mediante http://ServidorHTTP sirve el fichero daw.html. El motivo se
encuentra en la directiva DirectoryIndex que consigue que lo primero que busque el
servidor web en /var/www/html sea un archivo denominado daw.html.

7
https://httpd.apache.org/docs/current/upgrading.html
1.4 Opciones sobre directorios (<Directory>… </Directory> y Option
Indexes)
­ Accede a http://ServidorHTTP/datos y comprueba que se muestra el índice
contenido de /var/www/html/datos porque no tiene ninguna directiva específica
cargada, hereda las establecidas para /var/www/html/

Creamos una directiva nueva para esta carpeta en /etc/apache2/sites-available/000-


default.conf:

Directiva para la carpeta /var/www/html/datos

Después de reiniciar el servidor al entrar en el servidor se mostrará el archivo daw.html y al


tratar de entrar en la carpeta datos se mostrará el mensaje “Forbidden” y no nos mostrará
el índice de contenido al haber quitado la opción Option Indexes, aunque podremos
acceder a un archivo de la carpeta si conocemos su nombre

Mensaje mostrado al entrar en /datos Archivo datos1.html dentro de la carpeta /datos


1.5 Directorios virtuales (usando directiva Alias)
­ Crea un usuario del sistema denominado despliegue. Crea el directorio
/home/despliegue/wiki. Dentro de este directorio crea el archivo wiki1.html con el
contenido que quieras

Creación del usuario

Creación de la carpeta

Creación del archivo wiki1.html

Contenido del archivo wiki1.html

Añado las directivas para esa carpeta usando un Alias:

Alias de la carpeta /home/despliegue/wiki

Ahora si accedo al servidor y escribo el alias debería aparecer de nuevo un mensaje de


Forbbiden si mis directivas por defecto (en /etc/apache2/apache2.conf) estuviesen
configuradas de la siguiente manera:

Directiva que no permite acceder a /home


En mi caso es necesaria la anterior directiva ya que no me funciona la que se aplica a la
carpeta raíz:

Directiva que funciona de manera inesperada

Ahora si tratamos de acceder mediante el alias sí nos mostrará el siguiente mensaje ya


que el servidor conoce de la existencia de ese archivo pero no lo muestra por falta de
permisos:

Creando la siguiente excepción en /etc/apache2/sites-available/000-default.conf se


mostrará el archivo wiki1.html al acceder mediante el alias:

Excepción en /etc/apache2/sites-available/000-default.conf
Contenido de wiki1.html

Con las directivas de apache 2.4 a diferencia de las 2.2 no es necesario realizar una
excepción en las directivas por defecto del archivo /etc/apache2/apache2.conf ya que
aun estando establecidas en Require all denied para la carpeta /home las directivas de
/etc/apache2/sites-available/000-default.conf están ejecutándose como una excepción
concreta a la otra directiva.

PRUEBA NO TIENE SENTIDO, PREGUNTAR!!!

1.6 Directorios virtuales (usando enlaces simbólicos)


­ Crea el directorio /home/alumno/blog. Dentro de este directorio crea el archivo
blog1.html con el contenido que quieras.

Carpetas y archivo creado Contenido del archivo blog1.html

­ Crea el enlace simbólico /var/www/html/blog que apunte a /home/alumno/blog

­ Edita el archivo /etc/apache2/sites-available/000-default.conf. Añade en


/var/www/html la opción FollowSymLinks si es que no lo estaba y añade un
nuevo directorio virtual tal y como aparece en la figura siguiente:

Opción ya existente en la directiva /var/www/html


Configuración de la nueva directiva para el enlace simbólico

Al tener la directiva con la opción FollowSymLinks Apache podrá seguir enlaces simbólicos
y al poner /blog/blog1.html en el navegador el servidor estará entrando en /var/www/html
(directorio raiz) y usando el enlace a la carpeta /home/alumno/blog.

Contenido de blog1.html

1.7 Logs (ErrorLogs, CustomLog, LogFormat)


En el fichero /etc/apache2/sites-available/000-default.conf hay dos directivas: ErrorLog y
CustomLog que apuntan a los ficheros de log de errores y log de accesos, respectivamente.
Como no se especifica ningún formato con LogFormat se usa el definido para el servidor
principal.

Registros de errores en error.log


Registros de accesos en accesos.log

1.8 Códigos de error (ErrorDocument)


­ Configura el servidor virtual por defecto para que cuando retorne un código de error,
en su lugar envíe una página con un determinado texto. Por ejemplo, si se recibe el
código de error 404 (página no encontrada) muestre el texto “Página no encontrada
en el servidor de la red 2daw.lan” Edita el archivo /etc/apache2/sites-available/000-
default.conf y añade la anterior línea.

Mensaje establecido para el error 404

Mensaje de error personalizado

Crea el archivo /var/www/html/no_encontrada.html con el contenido que quieras.

Ahora al entrar en una página que no existe el error 404 tendrá el mensaje personalizado
del html que hemos escrito:

Contenido de no_encontrada.html
1.9 Directorios personales de usuarios (módulo userdir)
­ Comprueba que el módulo userdir no está habilitado (verifica que existen los
archivos userdir.conf y userdir.load en /etc/apache2/mods-available).

Archivos del módulo userdir

Para habilitarlo introducimos los siguientes comandos:

Comandos para habilitar userdir

­ Verifica que dentro del directorio /etc/apache2/mods-enabled se han creado


enlaces simbólicos del módulo userdir (.conf y .load) hacia /etc/apache2/mod-
availables.

Enlaces simbólicos hacia mods-available

­ Reinicia el servidor para aplicar los cambios.


­ Consulta el fichero /etc/apache2/mod_enabled/userdir.conf. Observa que está
habilitado el uso de directorios personales para todos los usuarios excepto para el
usuario root y que public_html es el nombre del subdirectorio que pueden crear
los usuarios en su directorio home para poner sus páginas personales

En mi caso está configurado para Apache 2.4 y la sintaxis es más sencilla que la versión
2.2 del manual. Permite los métodos HTTP GET, POST y OPTION y bloquea cualquier otro
método no listado.
­ Inicia sesión en UbuntuX con el usuario alumno (o cualquier otro previamente
creado).

Usuario irene

­ Crea un directorio /home/alumno/public_html y dentro de éste una página


personal1.html con el contenido que quieras.

Carpeta /home/irene/public_html/

Contenido del archivo personal1.html

Parte 2: Configuración de autenticación HTTP


2.1 Autenticación HTTP Basic
­ Consulta la documentación de Apache sobre las directivas AuthName, AuthType,
AuthUserFile y Require
http://httpd.apache.org/docs/2.2/en/mod/quickreference.html) para comprender
su funcionamiento.
• AuthName: se usa para definir el nombre del ámbito de autenticación
(authentication realm) que se mostrará al cliente cuando solicite un recurso
protegido mediante autenticación8.
• AuthType: esta directiva se usa para seleccionar el método de selección que usa
el usuario al autenticarse. El más común es el basic aunque Apache también
soporta digest.
• AuthUserFile: establece la ruta al archivo de contraseñas creado con htpasswd9.
• Require: esta directiva comprueba si un usuario autenticado es autorizado de
acuerdo con un proveedor de autenticación particular10. El mod_auth_core11
permite registrar varios proveedores de autorización.

8 9
https://httpd.apache.org/docs/2.4/howto/auth.html

10
https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
11
https://httpd.apache.org/docs/2.4/mod/mod_authn_core.html
­ Inicia una sesión en Linux (DespliegueUbuntu).

­ Comprueba, consultando el directorio /etc/apache2/mods-enabled, que el


módulo auth_basic.load está habilitado

Auth_basic.load

­ Para usar la autenticación basic hay que crear un fichero accesible por Apache en
el que se guardarán los usuarios y sus contraseñas. Para crear este fichero se
utilizará el comando htpasswd
(http://httpd.apache.org/docs/2.2/programs/htpasswd.html).

a) Crea el fichero y añade el usuario daw1 (la opción -c es para crear el fichero).

sudo htpasswd -c /etc/apache2/passwd daw1

b) Añade el usuario daw2 (no se usa la opción -c porque el fichero ya existe).

sudo htpasswd /etc/apache2/passwd daw2

­ Crea el directorio /var/www/html/privado y un archivo index.html con el contenido


que quieras.

­ Edita el fichero de configuración /etc/apache2/sites-available/000-default.conf y


permite el acceso al directorio /var/www/html/privado a los usuarios daw1 y
daw2.
­ Reinicia el servidor para que los cambios tengan efecto.
­ Accede a http://ServidorHTTP/privado/ con el usuario daw1

2.2 Autenticación HTTP Digest


­ Crea un directorio /var/www/html/departamento. Dentro del directorio crea un
fichero denominado departamento.html con el contenido que quieras.

Carpeta /var/www/html /departamento

Archivo departamento.html

­ Habilita el módulo auth_digest.

sudo a2enmod auth_digest.

­ Reinicia el servidor para que los cambios tengan efecto.


Comandos para habilitar el módulo auth_digest

­ Para usar la autenticación digest hay que crear un fichero accesible por Apache en
el que se guardarán los usuarios y sus contraseñas asociados a un dominio (realm).
Para crear este fichero se utilizará el comando htdigest.

a) Crea el fichero y añade el usuario admin1 al dominio informatica (la opción -c es para
crear el fichero).

sudo htdigest -c /etc/apache2/digest informatica admin1

b) Añade el usuario admin2 (no se usa la opción -c porque el fichero ya existe).

sudo htdigest /etc/apache2/digest informatica admin2

­ Edita el fichero de configuración /etc/apache2/sites-available/000-default.conf


y permite el acceso al directorio /var/www/html/departamento a los usuarios
admin1 y admin2

Directiva para la carpeta /var/www/html/departamento

­ Reinicia el servidor para que los cambios tengan efecto.


­ Desde otra máquina accede a http://ServidorHTTP/departamento con el usuario
admin1

Autenticación con Digest

Contenido de la carpeta /departamento

En resumen, aunque en apariencia se traten de dos autenticaciones iguales lo que las


diferencia es que en la autenticación Digest las credenciales no se envían directamente si
no que se cifran con un algoritmo de hash, siendo más segura. Mientras que en la
autenticación Basic el usuario y la contraseña no se cifran, se envían como texto plano.

La autenticación Basic ofrece mayor compatibilidad que la Digest pero es necesario que
se utilice cuando ya se utilice HTTPS para cifrar la conexión.

2.3 Ficheros .htaccess


Los ficheros .htaccess permiten una configuración personalizada de cada directorio de
Apache sin que intervenga el administrador.

Cada vez que se produce una petición, el servidor busca en la ruta del recurso que ha
solicitado el cliente los archivos que tengan alguno de los nombres especificados en
AccesFileName y aplican las directivas definidas en ellos. Estos ficheros se leen en cada
petición, por lo que los cambios se aplican inmediatamente sin necesidad de reiniciar el
servidor.

La directiva AllowOverride tiene que estar activada en el servidor.


Habilita en Apache el uso de ficheros de configuración personalizada de directorios
(.htaccess) en el directorio /home/alumno/wiki para que sea el propio usuario alumno el
que pueda controlar cómo sirve Apache los contenidos de ese directorio.

Como usuario alumno haz uso del fichero .htaccess y configura el directorio
/home/alumno/wiki para para que solo pueda acceder el usuario wiki mediante
autenticación HTTP Digest y desde la máquina W7X.

­ Inicia una sesión en el Servidor Web de Linux con un usuario con privilegios de
administrador

­ Edita el fichero /etc/apache2/apache2.conf. Añade las siguientes líneas después de


la etiqueta

Directiva para la versión 2.4 de Apache

­ Edita el fichero de configuración /etc/apache2/sites-available/000-default.conf.


Crea el alias y habilita el uso de ficheros .htaccess permitiendo sobrescribir todas
las directivas en el directorio /home/alumno/wiki. Elimina las directivas anteriores
y añade la directiva AllowOverride All.

Directiva de la carpeta /home/despliegue/wiki

­ Habilita el módulo rewrite. Reinicia el servidor para que los cambios tengan
efecto.

sudo a2enmod rewrite

Habilitación del módulo rewrite

Añade al usuario wiki.

sudo htdigest -c /home/alumno/.htdigest informatica wiki


­ Crea el fichero /home/alumno/wiki/.htaccess y añade las directivas para realizar
la configuración pedida (no es necesario incluir la directiva porque el fichero ya está
en el directorio en el que se aplicará su configuración)

­ Sin reiniciar el servidor accede desde otra máquina a http://ServidorHTTP/wiki para


probar la configuración. Por ejemplo, hazlo desde la máquina física y después
desde otra máquina Windows. Con una podrás acceder mediante autenticación y
con la otra no podrás acceder de ninguna manera`

Había un pequeño error con la ubicación del archivo .htaccess así que lo moví hacia esta
carpeta que es hacia donde dirige el alias wiki1:

Autenticación para el usuario wiki

Contenido del acceso


Demo de lo que ocurriría desde otra ip

Parte 3: Configuración de DNS


Tanto en los sistemas Windows como en los Linux existe un fichero donde hacer el mapeo
entre direcciones IP y nombres de dominio de las máquinas locales.

En Windows: C:\Windows\System32\drivers\etc\hosts

En Linux: /etc/hosts

Siguiendo con el planteamiento de este curso (desarrollo en Windows y despliegue en


Linux), configuraremos el resolver en Windows. Utilizaremos la máquina virtual W7-
64bits.

Realizamos una copia del archivo C:\Windows\System32\drivers\etc\hosts en una zona


del disco donde podamos modificar (ej. Escritorio).

Copia del archivo hosts

Abrimos esta copia y añadimos al final todos los pares IP-nombre dominio que deseemos.
Dominios-ip del archivo hosts

Ahora copiamos el archivo hosts del escritorio a C:\Windows\System32\drivers\etc\


pedirá permisos de administrador que debemos aceptar.

Permisos requeridos para sobrescribir el archivo hosts


Ahora desde la máquina virtual Windows, accedemos a Ubuntu no por IP, sino por nombre
de dominio DNS.

Acceso con www.ubuntuipp.com Acceso con ubuntuipp

Como se puede ver es posible entrar de las dos maneras que se han configurado en el
archivo hosts

También podría gustarte