UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW Esquema de contenidos de la práctica: Instalación y configuración del servidor web apache en debian 1. Introducción al servicio http de Apache ................................................................. 4 2. Instalación y comprobación del servidor http de apache...................................... 5 2.1 2.2 2.3 2.4 Instalación de apache2 ................................................................................................. 5 Arranque, parada y reinicio del servicio ........................................................................ 5 Comprobación de que el servicio está iniciado ............................................................. 6 Comprobación da versión do servidor ........................................................................... 6 3. Desintalar el servicio ................................................................................................ 6 4. Configuración de apache.......................................................................................... 6 4.1 Comprobación de la sintaxis de configuración de apache ............................................. 7 Para comprobar que la sintaxis de los ficheros de configuración es correcta empleamos el siguiente comando: ....................................................................................................................... 7 4.2 Copia del fichero de configuración de apache .............................................................. 7 4.3 Configuración básica o general..................................................................................... 7 4.4 Acceso al servidor apache desde un equipo cliente ...................................................... 8 4.4.1 4.4.2 5. Mi primera página en apache ................................................................................... 9 5.1 5.2 5.3 6. Comprobación de funcionamiento del servicio desde un cliente ....................................................................... 8 Limpiar la caché del navegador de forma automática........................................................................................ 9 Mi primera página en apache en el directorio por defecto ........................................... 10 Crear una página en apache en un directorio creado dentro del directorio por defecto10 Acceso desde el equipo cliente a las páginas creadas ............................................... 11 Virtualización del servicio web .............................................................................. 12 6.1 6.2 6.3 Copia del fichero de configuración por defecto ........................................................... 12 Contenido del fichero de configuración por defecto .................................................... 12 Opciones de configuración del fichero 000-default.conf: Directivas ............................ 13 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 Directiva <Directory> ........................................................................................................................................ 13 Directiva Options .............................................................................................................................................. 14 Directiva AllowOverride .................................................................................................................................... 15 Directiva DirectoryIndex. Especificar la página por defecto del sitio web ........................................................ 15 6.3.4.1 Crear la página en el servidor y modificar la directiva DirectoryIndex .............................................. 15 6.3.4.2 Acceso desde el equipo cliente ........................................................................................................ 16 Códigos de error y logs .................................................................................................................................... 16 6.3.5.1 Directiva ErrorDocument 404 para páginas no encontradas ............................................................ 16 6.3.5.1.1 Modificar la directiva ErrorDocument para mostrar un mensaje de error al no encontrar una página16 6.3.5.1.2 Acceso desde el equipo cliente a una página inexistente y muestra del mensaje de error ............. 17 6.3.5.1.3 Modificar la directiva ErrorDocument para mostrar una página de error al no encontrar una página17 6.3.5.1.4 Acceso desde el equipo cliente a una página inexistente y muestra de la página alternativa ......... 18 6.3.5.2 LOGS ................................................................................................................................................ 18 Página 1 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 7. Configuración de servidores virtuales: por nombre, por IP, y por puerto ......... 18 7.1 Servidores virtuales por nombre ................................................................................. 19 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.1.6 7.2 Servidores virtuales por IP (Alojamiento virtual basado en IPs) .................................. 25 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.3 Crear web para alojar el contenido de los servidores virtuales por nombre .................................................... 26 7.2.1.1 Crear la estructura de Directorios ..................................................................................................... 26 7.2.1.2 Crear una página de prueba para cada Virtual Host por IP .............................................................. 26 Crear Nuevos Archivos Virtual Host por IP ...................................................................................................... 27 Habilitar los nuevos Archivos Virtual Host por IP ............................................................................................. 28 En el equipo cliente linux .................................................................................................................................. 28 Configurar archivos locales .............................................................................................................................. 28 En el equipo cliente windows ........................................................................................................................... 29 Configurar archivos locales .............................................................................................................................. 29 Prueba al sitio virtual por IP desde un equipo cliente ...................................................................................... 29 Servidores virtuales por puerto ................................................................................... 30 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.3.7 8. Crear el espacio web para alojar el contenido de los servidores virtuales por nombre ................................... 19 7.1.1.1 Crear la estructura de Directorios ..................................................................................................... 19 7.1.1.2 Crear una página de prueba para cada Virtual Host ........................................................................ 20 Crear Nuevos Archivos Virtual Host por nombre ............................................................................................. 20 Habilitar los nuevos Archivos Virtual Host por nombre .................................................................................... 22 En el equipo cliente linux .................................................................................................................................. 22 Configurar archivos locales .............................................................................................................................. 22 En el equipo cliente windows ........................................................................................................................... 23 Configurar archivos locales .............................................................................................................................. 23 Prueba al sitio virtual por nombre desde un equipo cliente .............................................................................. 24 Crear web para alojar el contenido de los servidores virtuales por puerto ...................................................... 31 7.3.1.1 Crear la estructura de Directorios ..................................................................................................... 31 7.3.1.2 Crear una página de prueba para cada Virtual Host por puerto ....................................................... 32 Especificar el nuevo puerto a la escucha ......................................................................................................... 32 Crear Nuevos Archivos Virtual Host por puerto ............................................................................................... 32 Habilitar los nuevos Archivos Virtual Host por puerto ...................................................................................... 33 En el equipo cliente Linux ................................................................................................................................ 33 Configurar archivos locales .............................................................................................................................. 33 En el equipo cliente Windows .......................................................................................................................... 33 Configurar archivos locales .............................................................................................................................. 33 Prueba al sitio virtual por puerto desde el equipo cliente ................................................................................. 34 Autentificación ........................................................................................................ 35 8.1 Restricción de acceso por usuario y contraseña ......................................................... 35 8.1.1 8.1.2 8.1.3 8.1.4 8.2 Autentificación con HTTP BASIC ..................................................................................................................... 35 Crear archivo de contraseñas .......................................................................................................................... 35 Prueba de acceso al sitio virtual desde un equipo cliente ................................................................................ 37 Autentificación con HTTP DIGEST .................................................................................................................. 37 Prueba de acceso al sitio virtual desde un equipo cliente ................................................................................ 38 Directivas de control de acceso autorizados: Allow, Deny y Order .............................. 39 8.2.1 8.2.2 Directiva allow .................................................................................................................................................. 39 Directiva deny................................................................................................................................................... 40 Página 2 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 8.2.3 8.3 Directiva order .................................................................................................................................................. 40 Administración de servidor HTTPS: certificados digitales ........................................... 42 8.3.1 8.3.2 8.3.3 8.3.4 8.3.5 8.3.6 Crear web para alojar el contenido del servidor virtual configurado para acceder mediante certificados ....... 43 8.3.1.1 Crear la estructura de Directorios ..................................................................................................... 43 8.3.1.2 Crear una página de prueba para nuestro sitio Virtual Host seguro ................................................. 43 Crear el Nuevo Archivo Virtual Host administrado con certificados digitales ................................................... 44 Habilitar el nuevo Archivo Virtual Host para el sitio seguro .............................................................................. 44 En el equipo cliente Linux ................................................................................................................................ 45 Configurar archivos locales .............................................................................................................................. 45 En el equipo cliente Windows .......................................................................................................................... 45 Configurar archivos locales .............................................................................................................................. 45 Prueba al sitio virtual seguro desde el equipo cliente ...................................................................................... 46 Página 3 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 1. Introducción Apache al servicio http de El servidor web de Apache es uno de los más populares para proveer contenido web en Internet. Cuenta con más de la mitad de todos los sitios web activos en la red y es extremadamente poderoso y flexible. Apache divide su funcionalidad y componentes en unidades independientes que pueden ser configuradas independientemente. La unidad básica que describe un sitio individual o el dominio llamado virtual host. Estas asignaciones permiten al administrador utilizar un servidor para alojar varios dominios o sitios en una simple interface o IP utilizando un mecanismo de coincidencias. Esto es relevante para cualquiera que busque alojamiento para más de un sitio en un solo VPS. Cada dominio que es configurado apuntará al visitante a una carpeta específica que contiene la información del sitio, nunca indicará que el mismo servidor es responsable de otros sitios. Este esquema es expandible sin límites de software, tanto como el servidor pueda soportar la carga. Escenario a realizar: RED EXTERNA: INTERNET Cable / Wifi Router IP:X.Y.Z.A Virtual Box con los equipos IP:X.Y.Z.B Configuración RedNAT Red IP: 172.16.XX.0/24 Puerta de enlace o gateway: 172.16.XX.1 IP:X.Y.Z.B Switch fictirio Solo comunicación entre máquinas virtuales y con el router ficticio para salir al exterior RedNAT: dawLinux RedNAT: dawLinux ip: 172.16.XX.20 ip: 172.16.XX.2 ucliente01 Ubuntu Desktop RAM 512 MB HD 20 GB Configuración de red: MÁSCARA SUBRED: 255.255.255.0 Red: 172.16.XX.0 Broadcast: 172.16.XX.255 DNS: 8.8.8.8 8.8.4.4 dserver00 Debian 9 RAM 512 MB HD 20 GB Página 4 de 49 Configuración de red: MÁSCARA SUBRED: 255.255.255.0 Red: 172.16.XX.0 Broadcast: 172.16.XX.255 DNS: 172.16.100.1 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 2. Instalación y comprobación servidor http de apache 2.1 Instalación de apache2 En el equipo dserver00 de nuestro escenario instalamos el servicio de apache: root@dbase:~# apt-get install apache2 root@dbase:~# apt-get install apache2 apache2-utils 2.2 Arranque, parada y reinicio del servicio Las siguientes instrucciones nos permiten arrancar el servicio. root@dbase:~# systemctl start apache2 root@dbase:~# service apache2 start root@dbase:~# /etc/init.d/apache2 start Las siguientes instrucciones nos permiten parar el servicio. root@dbase:~# systemctl stop apache2 root@dbase:~# service apache2 stop root@dbase:~# /etc/init.d/apache2 stop Las siguientes instrucciones nos permiten reiniciar el servicio. root@dbase:~# systemctl restart apache2 root@dbase:~# service apache2 restart root@dbase:~# service apache2 restart root@dbase:~# systemctl reload apache2 Página 5 de 49 del UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW root@dbase:~# service apache2 reload root@dbase:~# service apache2 reload 2.3 Comprobación de que el servicio está iniciado Comprobar que el servicio está escuchando: root@dbase:~# service apache2 status root@dbase:~# systemctl status apache2 2.4 Comprobación da versión do servidor La versión del servidor que tenemos instalada, podemos conocerla usando el siguiente comando: root@dbase:~# apache2 -v 3. Desintalar el servicio El siguiente comando nos permite desinstalar el servicio: root@dbase:~# apt-get –purge remove apache2 4. Configuración de apache En Ubuntu/Debian todos los ficheros de configuración están en el directorio /etc/apache2 se encuentran los siguientes ficheros de configuración: apache2.conf: Es el fichero principal de configuración de apache2m donde se determinan las directivas de configuración del servidor (contiene toda la configuración global: directorio raíz por defecto, logs, procesos, etc.). ports.conf: donde se definen las IPs y puertos TCP de escucha y atención de peticiones del servidor. mods-available: donde se encuentran los ficheros .load y .conf con los que se configuran los módulos disponibles. mod-enabled: donde se configuran los ficheros de configuración de módulos habilitados; mantiene enlaces simbólicos a los ficheros en /etc/apache2/mods-available. Cuando un fichero de configuración de módulo es enlazado mediante un enlace simbólico será activado después del segundo reinicio de apache. Página 6 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW sites-available: donde se encuentran los ficheros de configuración de los sitios virtuales disponibles. Los host virtuales permiten que apache sea configurado para múltiples sitios en configuraciones separadas. sites-enabled: donde se encuentran los ficheros de configuración de los sitios virtuales habilitados. Al igual que mods-enabled, sites-enabled contiene enlaces simbólicos a ficheros dentro de /etc/apache2/sites-available. De manera similar, cuando se crea un enlace simbólico al sitio virtual estará activo una vez que se reinicie apache. conf.d: donde se encuentran los ficheros apache2.conf, y ficheros de configuración de los sitios virtuales habilitados. envars: donde se encuentran las variables de entorno que utiliza apache2ctl y sus valores. Con el comando ls –l podemos podemos comprobar n listado en el que se muestran los ficheros comentados. root@dbase:~# ls –l /etc/apache2 Para los directorios en los que habitualmente se crean enlaces simbólicos a los ficheros que existen en el directorio available correspondiente, hay aplicaciones de utilidad para ejecutar desde la línea de comandos. Estas utilidades son a2ensite, a2dissite, a2enmod, a2dismod para habilitar y deshabilitar sitios virtuais, módulos y fragmentos de configuración. 4.1 Comprobación de la sintaxis de configuración de apache Para comprobar que la sintaxis de los ficheros de configuración es correcta empleamos el siguiente comando: root@dbase:~# apachectl configtest root@dbase:~# apachectl -t 4.2 Copia del fichero de configuración de apache Antes de modificar un fichero de configuración conviene hace una copia de seguridad. root@dbase:~# cp /etc/apache2/apache2.conf /etc/acpache2/apache2.conf.copia 4.3 Configuración básica o general Apache crea un usuario por defecto que es el www-data. Página 7 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW Para que cada uno de los cambios que se hagan en los parámetros tengan efecto hay que reiniciar el servidor, o simplemente indicarle que relea la nueva configuración mediante el siguiente comando: root@dbase:~# sudo /etc/init.d/apache2 force-reload 4.4 4.4.1 Acceso al servidor apache desde un equipo cliente Comprobación de funcionamiento del servicio desde un cliente En el equipo cliente Linux de la red (también podría ser un cliente windows) abre el navegador y accede a la dirección IP del servidor web 172.16.XX.2 Acceso desde un equipo cliente Linux: Acceso desde un equipo cliente Windows: Página 8 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 4.4.2 Limpiar la caché del navegador de forma automática En ocasiones es necesario borrar las páginas almacenadas en la caché del navegador. A continuación, se indican los pasos para limpiar la caché del navegador Firefox. Limpiar la caché de forma automática Limpiar la caché de forma automática Puedes configurar Firefox para limpiar la caché de forma automática cuando Firefox se cierre: 1. Haz clic en el botón Menú y elige Opciones. 2. Selecciona el panel Privacidad. 3. En la sección Historial, establece el parámetro Firefox podrá: a Usar una configuración personalizada para el historial. 4. Marca la casilla de verificación Limpiar el historial cuando Firefox se cierre. 5. Junto a Limpiar el historial cuando Firefox se cierre, haz clic sobre el botón Configuración…. Se abrirá la ventana de Configuración para Limpiar historial. 6. En la ventana de Configuración para Limpiar historial, marca la casilla de verificación llamada Caché. o Para más información sobre otras opciones, puedes ver el artículo Limpiar el historial de navegación, búsquedas y descargas. 7. Haz clic en Aceptar para cerrar la ventana de Configuración para Limpiar historial. 8. Cierra la página about:preferences. Cualquier cambio que hayas hecho se guardará automáticamente. Ojo: En cada navegador y correspondiente versión la forma de borrar la caché puede variar; consultar la ayuda del programa. 5. Mi primera página en apache Página 9 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW En el equipo donde está instalado el servicio web crearemos un fichero llamada miprimerapag.html en el directorio /var/www/html, directorio donde se almacenan por defecto las páginas web, y otra página en el directorio mispaginas creado dentro de /var/www/html y comprobaremos el accesos a dichas páginas desde el cliente. 5.1 Mi primera página en apache en el directorio por defecto root@dbase:~# nano /var/www/html/miprimerapag.html <!doctype html> <html> <head> <title>Mi Primera Página</title> <meta charset=”utf-8”/> </head> <body> <h1>Mi Primera Página</h1> <p>Este es el servidor web de DAW2 </p> </body> </html> 5.2 Crear una página en apache en un directorio creado dentro del directorio por defecto A continuación, creamos el directorio /var/www/html/mispaginas y dentro crea el fichero mipag1.html con contenido HTML. root@dbase:~# mkdir /var/www/html/mispaginas root@dbase:~# nano /var/www/html/mispaginas/mipag1.html <!doctype html> <html> <head> <title>Mi Página</title> <meta charset=”utf-8”/> </head> <body> <h1>Mi página en el directorio mispaginas</h1> <p>MIS DATOS SON... </p> </body> </html> Página 10 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 5.3 Acceso desde el equipo cliente a las páginas creadas Abrimos el navegador desde el cliente y accedemos a las siguientes URLs para probar el funcionamiento del servidor: http://midrireccionIp http://midireccionIP/miprimerapag.html http://midireccionIP/mispaginas/mipag1.html Página 11 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 6. Virtualización del servicio web El término Virtual Host se refiere a la práctica de ejecutar más de un sitio (como comany1.ejemplo1.com y company2.ejemplo.com) en una misma máquina. Los virtual Hosts pueden ser basados en IP, cuando tenemos direcciones IP diferentes para cada sitio, o basados en nombre, cuando tenemos múltiples sitios web asociados a la misma dirección. En /etc/apache2/sites-available está el fichero 000-default.conf que contiene la configuración del servidor virtual por defecto. 6.1 Copia del fichero de configuración por defecto Apache incluye un archivo Virtual Host por defecto denominado 000-default.conf que podemos usar para saltarnos al punto. Realizaremos una copia para trabajar sobre ella y crear nuestro Virtual Host para cada dominio. root@dbase:~# default.conf.copia 6.2 cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000- Contenido del fichero de configuración por defecto Una vez copiado el fichero 000-defaul.conf y antes de empezar a configurarlo comprobamos que en el archivo 000-default.conf existe un servidor virtual que escucha en todas las direcciones. root@dbase:~# nano /etc/apache2/sites-available/000-default.conf Y comprobamos que el fichero tiene las siguientes directivas: <VirtualHost *:80> … … </VirtualHost> Página 12 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 6.3 Opciones de configuración del fichero 000default.conf: Directivas En el fichero de configuración por defecto de los sitios virtuales /etc/apache2/sites-available/000default.conf, podemos especificar las siguientes directivas: ServerAdmin: Especifica la dirección de correo electrónico del administrador de la web del sitio. ServerName: Indica el nombre del servidor web Ejemplo: ServerName www.miwebX.com DocumentRoot: Indica el directorio raíz del sitio para el servidor, directorio por defecto que sirve las páginas, en nuestro caso /var/www/html Directory: se utiliza para determinar cómo sirve apache el contenido del directorio /var/www/html DirectoryIndex: Fichero a servir por defecto, se puede modificar para que en vez de que abra index.html abra cualquier otra página. Indica los ficheros que podrán actuar como página índice del sitio, de no existir esta directiva apache buscará dentro del directorio cualquier página nombrada como index, y si no existe listará el contenido del DocumentRoot. Ejemplo: DirectoryIndex miprimerapag.html 6.3.1 Directiva <Directory> Los directorios que son publicados a través del servidor web Apache pueden ser configurados a través de la directiva <Directory> con la posibilidad de especificar una serie de opciones y otras directivas que se puedan aplicar al contexto de directorios, como los permisos de acceso a dicho directorio. Esta directiva debe incluirse en el archivo de configuración del servidor web Apache. Las directivas <Directory> y </Directory> engloban un grupo de directivas que se aplicarán únicamente al directorio que se indique como atributo, a sus subdirectorios y a los archivos que se encuentren en todos ellos. <Directory ruta-directorio> Directivas-para-el-directorio </Directory> La ruta-directorio puede ser una ruta completa a un directorio, o una ruta en la que se usen caracteres comodín al estilo Unix (*, ?, []). Un ejemplo de ruta completa puede ser: <Directory /usr/local/httpd/htdocs> # ... escribir las directivas aquí ... </Directory> En este otro ejemplo se usan caracteres comodín para hacer referencia a las carpetas public_html que se encuentren dentro de la carpeta personal de cualquier usuario: <Directory /home/*/public_html> # ... escribir las directivas aquí ... </Directory> Página 13 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 6.3.2 Directiva Options Dentro de la directiva <Directory> puedes usar la directiva Options para especificar una serie de posibles opciones al directorio especificado. Las posibles opciones son: All, ExecCGI, FollowSymLinks, Includes, IncludesNOEXEC, Indexes, MultiViews, SymLinksIfOwnerMatch. El formato de uso es indicar la directiva Options seguida de todas las opciones deseadas separadas por espacios: <Directory ruta-directorio> Options opcion1 opcion2 opcion3 </Directory> En el enlace anterior puedes ver la descripción de todas ellas, y se comentan a continuación las principales: All: incluye todas las opciones excepto MultiViews. Es la opción por defecto si no se indica ninguna opción. ExecCGI: Permite la ejecución de aplicaciones CGI en el directorio. FollowSymLinks: El servidor seguirá los enlaces simbólicos (no accesos directos de Windows) en el directorio. Indexes: Si no hay un archivo de índice (index.html, index.php, etc) en el directorio, se mostrará al usuario una lista de los archivos encontrados en el directorio. Si hay varias directivas Directory con Options que pueden afectar a un mismo directorio, se usan las opciones de la directiva que es más específica al directorio, y las otras opciones son ignoradas. En el siguiente ejemplo sólo la opción ExecCGI se establecerá para el directorio /web/docs/spec. <Directory /web/docs> Options Indexes FollowSymLinks </Directory> <Directory /web/docs/spec> Options ExecCGI </Directory> Si todas las opciones del directorio están precedidas de por el símbolo + o -, las opciones de ese directorio se mezclarán con las de otro directorio que englobe al otro. Las opciones precedidas por + se añaden a las opciones actuales, y las precedidas por - se eliminan. Así, en el siguiente ejemplo, el directorio /web/docs/spec tendrá activadas las opciones FollowSymLinksy ExecCGI. <Directory /web/docs> Options Indexes FollowSymLinks </Directory> <Directory /web/docs/spec> Options +ExecCGI -Indexes </Directory> Página 14 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 6.3.3 Directiva AllowOverride Cuando el servidor encuentra un archivo .htaccess en cualquiera de sus carpetas publicadas, las directivas que incluye dicho archivo son tenidas en cuenta por encima de las directivas establecidas en la configuración del servidor. Si no se quiere que se tenga en cuenta este archivo, se debe utilizar la directiva AllowOverride con el parámetro None. AllowOverride None Por defecto, se permite el uso del archivo .htaccess, pero si quieres especificar literalmente que se considere dicho archivo dentro de una directiva Directory, debes indicar el parámetro All: AllowOverride All Además de los parámetros None y All, puedes usar el tipo de directivas que deseas permitir dentro de los archivos .htaccess. Puedes elegir entre las siguientes directivas: AuthConfig, FileInfo, Indexes, Limit, Options. En la documentación del servidor web Apache puedes encontrar información sobre su uso. 6.3.4 Directiva DirectoryIndex. Especificar la página por defecto del sitio web La directiva DirectoryIndex permite indicar la lista de archivos que se buscarán cuando el cliente accede al servidor web sin indicar un nombre de archivo específico. Por defecto, se buscará el archivo index.html. Si quieres que también se busque el archivo index.php debes indicar lo siguiente: <Directory /directorio/mi/web> DirectoryIndex index.html index.php </Directory> Esta directiva se puede usar dentro de una directiva Directory o en la configuración global del servidor. 6.3.4.1 Crear la página en el servidor y modificar la directiva DirectoryIndex root@dbase:~# nano /var/www/html/indice.html <!doctype html> <html> <head> <title>Mi Página</title> <meta charset=”utf-8”/> </head> <body> <h1>Esta página se carga por defecto</h1> <p>MIS DATOS SON... </p> </body> </html> Página 15 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW En el fichero de configuración /etc/apache2/sites-available/000-default.conf modificamos la directiva DirectoryIndex para que especifique la página creada de la siguiente manera: <VirtualHost *:80> ... <Directory /var/www/html> … DirectoryIndex indice.html … </Directory> … </VirtualHost> 6.3.4.2 Acceso desde el equipo cliente Entramos en el navegador y accedemos a nuestra página y nos muestra el contenido de índice.html en lugar de hacerlo con el index.html. 6.3.5 Códigos de error y logs 6.3.5.1 Directiva ErrorDocument 404 para páginas no encontradas La directiva ErrorDocument permite especificar lo que se muestra cuando no se encuentra una página. ErrorDocument: al no encontrar una página muestra un texto o una página Ejemplos: ErrorDocument 404 “Pagina no encontrada en DAW00.com” ErrorDocument 404 /no_encontrada.html 6.3.5.1.1 Modificar la directiva ErrorDocument para mostrar un mensaje de error al no encontrar una página En el fichero de configuración /etc/apache2/sites-available/000-default.conf modificamos la directiva ErrorDocument para que muestre el mensaje de error de la siguiente manera: <VirtualHost *:80> Página 16 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW ... <Directory /var/www/html> … DirectoryIndex indice.html ErrorDocument 404 “Página no encontrada” … </Directory> … </VirtualHost> 6.3.5.1.2 Acceso desde el equipo cliente a una página inexistente y muestra del mensaje de error Entramos en el navegador y accedemos a una página que no existe para que muestre el mensaje de error: http://midrireccionIp/prueba.html 6.3.5.1.3 Modificar la directiva ErrorDocument para mostrar una página de error al no encontrar una página En el directorio donde se encuentra nuestro sitio web creamos una página con el contenido deseado informando del error: root@dbase:~# nano /var/www/html/noEncontrada.html <!doctype html> <html> <head> <title>Mi Página</title> <meta charset=”utf-8”/> </head> <body> <h1>Página no encontrada</h1> <p>La página solicitada no se encuentra en este servidor</p> </body> </html> Página 17 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW root@dbase:~# nano /etc/apache2/sites-available/000-default.conf <VirtualHost *:80> ... <Directory /var/www/html> … DirectoryIndex indice.html ErrorDocument 404 /noEncontrada.html … </Directory> … </VirtualHost> 6.3.5.1.4 Acceso desde el equipo cliente a una página inexistente y muestra de la página alternativa Entramos en el navegador y accedemos a una página que no existe para que muestre la página creada informando de lo sucedido: http://midrireccionIp/prueba.html 6.3.5.2 LOGS ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Consultando la variable APACHE_LOG_DIR en el directorio envars vemos que su valor es /var/log/apache2 7. Configuración de servidores virtuales: por nombre, por IP, y por puerto Página 18 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 7.1 Servidores virtuales por nombre Los servidores web configurados con host virtuales basados en nombres sirven un determinado sitio web en función del nombre del host solicitado por el cliente como parte de sus cabeceras HTTP. De esta manera varios host diferentes pueden compartir la misma dirección IP. La configuración de host virtuales basados en nombres requiere configurar el servidor DNS para que cada nombre apunte a la dirección correcta, y luego configurar el servidor web Apache para que reconozca los diferentes nombres. El hosting virtual basado en nombres, también es una ayuda a la escasez de direcciones IP. Así que se deberá emplear siempre el hosting virtual basado en nombres a no ser que se requiera el hosting virtual basado en direcciones IP de forma explícita. El primer paso es crear un bloque <VirtulHost> para cada host diferente quiere servir. Dentro de caa bloque <VirtualHost> se necesita por lo menos una directiva ServerName para dseignar que host virtual se sirve, y también una directiva DocumentRoot que indique en qué lugar del sistema de fichero reside el contenido para ese virtual host. Ejemplo: <VirtualHost *:80> ServerName www.ejemplo1.com ServerAlias ejemplo1.com DocumentRoot “/var/www/ejemplo1” </VirtualHost> <VirtualHost *:80> ServerName www.ejemplo1.com ServerAlias ejemplo2.com DocumentRoot “/var/www/ejemplo2” </VirtualHost> 7.1.1 Crear el espacio web para alojar el contenido de los servidores virtuales por nombre 7.1.1.1 Crear la estructura de Directorios El primer paso que necesitamos es crear la estructura de directorios que mantendrán la información de nuestro sitio. Nuestro documento raíz (el directorio principal en el cual Apache busca el contenido para mostrar) será configurado en directorios individuales dentro de la ruta /var/www/html. Crearemos los directorios aquí para los dos Virtual hosts que pretendemos configurar. root@dbase:~# mkdir /var/www/html/virtual1dawXX root@dbase:~# mkdir /var/www/html/virtual2dawXX Página 19 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 7.1.1.2 Crear una página de prueba para cada Virtual Host Dentro de /var/www/html/virtual1dawXX crear una página index.html: <!doctype html> <html> <head> <title>Bienvenido a mi página</title> <meta charset=”utf-8”/> </head> <body> <h1> Éxito! El Virtual Host virtual1dawXX.conf está funcionando!</h1> <p>“Esta es la página www.virtual1dawXX.com del sitio virtual virtual1dawXX</p> </body> </html> Dentro de /var/www/html/virtual2dawXX crear una página index.html: <!doctype html> <html> <head> <title>Bienvenido a mi Página</title> <meta charset=”utf-8”/> </head> <body> <h1> Éxito! El Virtual Host virtual2dawXX.conf está funcionando!</h1> <p>“Esta es la página www.virtual2dawXX.com del sitio virtual virtual2dawXX</p> </body> </html> 7.1.2 Crear Nuevos Archivos Virtual Host por nombre A continuación, generaremos el fichero de configuración Virtual Host correspondiente a cada sitio virtual1 Los archivos Virtual Host son archivos que contienen información y configuración específica para el dominio y que le indican al servidor Apache como responden a las peticiones de varios dominios. Iniciaremos con un dominio, lo configuraremos y después realizaremos los ajustes necesarios. La configuración por defecto de Ubuntu requiere que cada archivo de configuración de Virtual Host termine en .conf. Después de esto, necesitamos agregar dos directivas. La primera llamada ServerName, que establece la base del dominio que debe coincidir para este Virtual Host. Esto será como tu dominio. La segunda, llamada ServerAlias, determina nombres futuros que pueden coincidir y servirse como el nombre base o dominio principal. Esto es útil para host tipo www. Página 20 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW ServerName ejemplo.com ServerAlias www.ejemplo.com Lo que resta por cambiar para la configuración básica de un Virtual Host es la ubicación del directorio raíz para el dominio. Ya hemos creado lo que necesitamos, así que solo necesitamos modificar DocumentRoot para apuntarlo al directorio que hemos creado: root@dbase:~# cp available/virtual1dawXX.conf /etc/apache2/sites-available/000-default.conf /etc/apache2/sites- root@dbase:~# nano /etc/apache2/sites-available/virtual1dawXX.conf En total, nuestro archivo de Virtual Host debe verse así: <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName www.virtual1dawXX.com DocumentRoot /var/www/html/virtual1dawXX <Directory /var/www/html/virtual1dawXX> DirectoryIndex index.html ErrorLog 404 “Página no encontrada” </Directory> </VirtualHost> Creamos el segundo fichero de configuración a partir del que acabamos de crear: root@dbase:~# cp /etc/apache2/sites-available/ virtual1dawXX.conf /etc/apache2/sitesavailable/virtual2dawXX.conf root@dbase:~# nano /etc/apache2/sites-available/virtual2dawXX.conf <VirtualHost *:80> ServerAdmins webmaster@localhost ServerName www.virtual2daw00.com DocumentRoot /var/www/html/virtual2dawXX <Directory /var/www/html/virtual2dawXX> DirectoryIndex index.html ErrorLog 404 “Página no encontrada” </Directory> </VirtualHost> En nuestro caso utilizaremos como valor XX el valor 100. Página 21 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 7.1.3 Habilitar los nuevos Archivos Virtual Host por nombre Una vez creados los archivos virtual hosts, hay que habilitarlos. Podemos usar la herramienta a2ensite para habilitar cada uno de nuestros sitios haciendo esto: Habilitamos el primer sitio virtual: root@dbase:~# sudo a2ensite virtual1dawXX.conf Habilitamos el segundo sitio virtual: root@dbase:~# sudo a2ensite virtual2dawXX.conf Recargamos apache: root@dbase:~# service apache2 reload o bien: root@dbase:~# systemctl reload apache2 Comprobamos que el sitio ha sido habilitado: root@dbase:~# ls /etc/apache2/sites-enabled Habilitamos el segundo sitio virtual: root@dbase:~# sudo a2ensite virtual2dawXX.conf root@dbase:~# service apache2 reload o bien: root@dbase:~# systemctl reload apache2 Comprobamos que el sitio ha sido habilitado: root@dbase:~# ls /etc/apache2/sites-enabled 7.1.4 En el equipo cliente linux Configurar archivos locales root@dbase:~# sudo nano /etc/hosts 172.16.100.2 www.virtual1dawXX.com 172.16.100.2 www.virtual2dawXX.com Página 22 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW En nuestro caso utilizaremos como valor XX el valor 100. 172.16.100.2 www.virtual1daw100.com 172.16.100.2 www.virtual2daw100.com 7.1.5 En el equipo cliente windows Configurar archivos locales Abrir con el bloc de notas c:\Windows\System32\drivers\etc: como administrador el fichero hosts en la ruta El fichero hosts está oculto en el sistema, en las opciones de carpeta habilitar mostrar ficheros ocultos. El contenido del fichero hosts es el siguiente: Página 23 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 7.1.6 Prueba al sitio virtual por nombre desde un equipo cliente Ahora que tenemos nuestros Virtual Hosts configurados, podemos realizar pruebas de configuración simplemente visitando el dominio que hemos configurado mediante nuestro navegador web: Entramos en el navegador y accedemos la página a la página del primer sitio virtual: http://www.virtual1daw100.com Entramos en el navegador y accedemos a la página del segundo sitio virtual: http://www.virtual2daw100.com Página 24 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 7.2 Servidores virtuales por IP (Alojamiento virtual basado en IPs) Los host virtuales basados en direcciones IP emplean la dirección IP de la conexión para determinar el host virtual adecuado para servir. De esta manera se necesita una dirección IP aplicada para cada host virtual. Debemos tener dos tarjetas de red instaladas, o crear subinterfaces. En el ejemplo lo hacemos por medio de subinterfaces allow-hotplug enp0s3 iface enp0s3inet satic address 172.16.100.2/24 broadcast 172.16.100.255 gateway 172.16.100.1 dns-nameservers 8.8.8.8 allow-hotplug enp0s3:1 iface enp0s3:1 inet satic adress 172.16.100.33 netmask 255.255.255.0 allow-hotplug enp0s3:2 iface enp0s3:2 inet satic adress 172.16.100.44 netmask 255.255.255.0 Con el comando ip addr comprobamos las subinterfaces creadas: root@dbase:~# ip addr Página 25 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 7.2.1 Crear web para alojar el contenido de los servidores virtuales por nombre 7.2.1.1 Crear la estructura de Directorios El primer paso que necesitamos es crear la estructura de directorios que mantendrán la información de nuestro sitio. Nuestro documento raíz (el directorio principal en el cual Apache busca el contenido para mostrar) será configurado en directorios individuales dentro de la ruta /var/www/html. Crearemos los directorios aquí para los dos Virtual hosts que pretendemos configurar. root@dbase:~# mkdir /var/www/html/virtual3dawXX root@dbase:~# mkdir /var/www/html/virtual4dawXX 7.2.1.2 Crear una página de prueba para cada Virtual Host por IP Dentro de /var/www/html/virtual3dawXX crear una página index.html: <!doctype html> <html> <head> <title>Bienvenido a mi Página</title> <meta charset=”utf-8”/> </head> <body> <h1> Éxito! El Virtual Host virtual3dawXX.conf está funcionando!</h1> Página 26 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW <p>“Esta es la página www.virtual3dawXX.com, basada en IPs, del sitio virtual virtual3dawXX</p> </body> </html> Dentro de /var/www/html/virtual4dawXX crear una página index.html: root@dbase:~# cp /var/www/html/miprimerapag.html /var/www/html/virtual4dawXX/index.html root@dbase:~# nano /var/www/html/virtua4dawXX/index.html <!doctype html> <html> <head> <title>Bienvenido a mi Página</title> <meta charset=”utf-8”/> </head> <body> <h1> Éxito! El Virtual Host mivirtual4dawXX.conf esta funcionando!</h1> <p>“Esta es la página www.virtual4dawXX.com, basada en IPs, del sitio virtual virtual4dawXX</p> </body> </html> 7.2.2 Crear Nuevos Archivos Virtual Host por IP Generamos el fichero de configuración Virtual Host correspondiente a cada sitio virtual: root@dbase:~# cp available/virtual3dawXX.conf /etc/apache2/sites-available/000-default.conf root@dbase:~# nano /etc/apache2/sites-available/virtual3dawXX.conf El contenido de nuestro archivo Virtual Host virtual3dawXX.conf sería: <VirtualHost 172.16.100.33:80> ServerAdmins webmaster@localhost ServerName www.virtual3dawXX.com DocumentRoot /var/www/html/virtual3dawXX <Directory /var/www/html/virtual3dawXX> DirectoryIndex index.html ErrorLog 404 “Página no encontrada” </Directory> </VirtualHost> Página 27 de 49 /etc/apache2/sites- UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW root@dbase:~#cp /etc/apache2/sites-available/virtual3dawXX.conf available/virtual4dawXX.conf /etc/apache2/sites- root@dbase:~#nano /etc/apache2/sites-available/virtual4dawXX.conf El contenido de nuestro archivo Virtual Host virtual4dawXX.conf sería: <VirtualHost 172.16.100.44:80> ServerAdmins webmaster@localhost ServerName www.virtual4dawXX.com DocumentRoot /var/www/html/virtual4dawXX <Directory /var/www/html/virtual4dawXX> DirectoryIndex index.html ErrorLog 404 “Página no encontrada” </Directory> </VirtualHost> 7.2.3 Habilitar los nuevos Archivos Virtual Host por IP Una vez creados los archivos virtual hosts, hay que habilitarlos. Podemos usar la herramienta a2ensite para habilitar cada uno de nuestros sitios haciendo esto: Habilitamos el primer sitio virtual: root@dbase:~# sudo a2ensite virtual3dawXX.conf root@dbase:~# service apache2 reload Comprobamos que el sitio ha sido habilitado: root@dbase:~# ls /etc/apache2/sites-enabled Habilitamos el segundo sitio virtual: root@dbase:~# sudo a2ensite virtual4dawXX.conf root@dbase:~# service apache2 reload Comprobamos que el sitio ha sido habilitado: root@dbase:~# ls /etc/apache2/sites-enabled 7.2.4 En el equipo cliente linux Configurar archivos locales En el fichero hosts añadimos los nombres de dominio asociados a las nuevas IPs creadas: Página 28 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW root@dbase:~# sudo nano /etc/hosts 172.16.100.2 www.virtual1daw100.com 172.16.100.2 www.virtual2daw100.com 172.16.100.33 www.virtual3dawXX.com 172.16.100.44 www.virtual4dawXX.com 7.2.5 En el equipo cliente windows Configurar archivos locales Abrir con el bloc de notas c:\Windows\System32\drivers\etc: como administrador el fichero hosts en la ruta El archivo de configuración hosts añadiendo las IPs asociadas a los nuevos nombres de dominio quedaría de la siguiente manera: 7.2.6 Prueba al sitio virtual por IP desde un equipo cliente Ahora que tenemos nuestros Virtual Hosts configurados, podemos realizar pruebas de configuración simplemente visitando el dominio que hemos configurado mediante nuestro navegador web: El acceso al tercer sitio virtual por IP creado lo comrpobamos tecleando en la barra del navegador: Página 29 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW http://www.virtual3smrXX.com El acceso al tercer sitio virtual por IP creado lo comrpobamos tecleando en la barra del navegador: http://www.virtual4smrXX.com 7.3 Servidores virtuales por puerto Para ajustar los puertos a la escucha editaremos el archivo ports.conf, y pondremos los puertos en los que el apache escuchará peticiones. Por ejemplo añadimos el puerto 3500 Listen numeroPuerto Ejemplo: Listen 80 Listen 3330 Si nuestro servidor tuviese varias IPs y solo nos quisiéramos escuchar en una de ellas podríamos hacer: Página 30 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW Listen 192.168.1:80 Listen 192.168.1: 3330 Si queremos que escuche en 2 puertos a la vez: <VirtualHost *:3330*:3600> ServerAdmins webmaster@localhost ServerName www.virtual3dawXX.com DocumentRoot /var/www/html/virtual3dawXX <Directory /var/www/html/virtual3dawXX> DirectoryIndex index.html ErrorLog 404 “Página no encontrada” </Directory> </VirtualHost> Comprobamos los puertos a la escucha con el paquete nmap: nmap 127.0.0.1 root@dbase:~# nmap [-f] 10.0.0.1 root@dbase:~# netstat -lntu 10.0.0.1 Nos aparecen los puertos en los que está a la escucha la máquina. En el navegador podremos especificar el puerto al que queremos acceder del siguiente modo (sino lo indicamos accederá al puerto 80 por defecto). http://nombre_dominio:puerto Ejemplo: http://www.virtual3daw.com: 3330 7.3.1 Crear web para alojar el contenido de los servidores virtuales por puerto 7.3.1.1 Crear la estructura de Directorios El primer paso que necesitamos es crear la estructura de directorios que mantendrán la información de nuestro sitio. Nuestro documento raíz (el directorio principal en el cual Apache busca el contenido para mostrar) será configurado en directorios individuales dentro de la ruta /var/www/html. Crearemos los directorios aquí para los dos Virtual hosts que pretendemos configurar. root@dbase:~# mkdir /var/www/html/virtual5dawXX Página 31 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 7.3.1.2 Crear una página de prueba para cada Virtual Host por puerto Dentro de /var/www/html/virtual5dawXX crear una página index.html: root@dbase:~# cp /var/www/html/miprimerapag.html /var/www/html/virtual5dawXX/index.html root@dbase:~# nano /var/www/html/virtual5dawXX/index.html <!doctype html> <html> <head> <title>Bienvenido a mi Página</title> <meta charset=”utf-8”/> </head> <body> <h1> Éxito! El Virtual Host mivirtual5daw.conf está funcionando!</h1> <p>“Esta es la página www.del sitio virtual virtual5dawXX asociada al puerto: 3500</p> </body> </html> 7.3.2 Especificar el nuevo puerto a la escucha En el fichero d indicamos el nuevo puerto en que el servidor apache escuchará las peticiones. root@dbase:~# nano /etc/apache2/ports.conf … Listen 80 Listen 3500 … 7.3.3 Crear Nuevos Archivos Virtual Host por puerto Generamos el fichero de configuración Virtual Host correspondiente al nuevo sitio virtual: root@dbase:~# cp available/virtual5dawXX.conf /etc/apache2/sites-available/000-default.conf root@dbase:~# nano /etc/apache2/sites-available/virtual5dawXX.conf El contenido de nuestro archivo Virtual Host virtual5dawXX.conf sería: <VirtualHost *:3500> Página 32 de 49 /etc/apache2/sites- UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW ServerAdmins webmaster@localhost ServerName www.virtual5dawXX.com DocumentRoot /var/www/html/virtual5dawXX <Directory /var/www/html/virtual5dawXX> DirectoryIndex index.html ErrorLog 404 “Página no encontrada” </Directory> </VirtualHost> 7.3.4 Habilitar los nuevos Archivos Virtual Host por puerto Una vez creados los archivos virtual hosts, hay que habilitarlos. Podemos usar la herramienta a2ensite para habilitar cada uno de nuestros sitios haciendo esto: Habilitamos el primer sitio virtual: root@dbase:~# sudo a2ensite virtual5dawXX.conf root@dbase:~# service apache2 reload o bien: root@dbase:~# systemctl reload apache2 Comprobamos que el sitio ha sido habilitado: root@dbase:~# ls /etc/apache2/sites-enabled 7.3.5 En el equipo cliente Linux Configurar archivos locales root@dbase:~# sudo nano /etc/hosts 172.16.100.2 www.virtual1daw100.com 172.16.100.2 www.virtual2daw100.com 172.16.100.33 www.virtual3dawXX.com 172.16.100.44 www.virtual4dawXX.com 172.16.100.2 www.virtual5dawXX.com 7.3.6 En el equipo cliente Windows Configurar archivos locales Abrir con el bloc de notas como administrador el Página 33 de 49 fichero hosts en la ruta UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW c:\Windows\System32\drivers\etc. El archivo de configuración hosts añadiendo la nueva IPs asociada al nuevo nombre de dominio quedaría de la siguiente manera: 7.3.7 Prueba al sitio virtual por puerto desde el equipo cliente Ahora que tenemos el nuevo Virtual Host configurado para acceder a través de un puerto distinto al puerto por defecto 80, podemos realizar pruebas de acceso a la configuración especificada simplemente visitando el dominio que hemos configurado mediante nuestro navegador web; al ser un puerto distinto del 80 hay que indicar también el número de puerto. El acceso al quinto sitio virtual por puerto lo comprobamos tecleando en la barra del navegador: http://www.virtual5smrXX.com:3500 Página 34 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 8. Autentificación 8.1 8.1.1 Restricción de acceso por usuario y contraseña Autentificación con HTTP BASIC Ahora deseamos que el cliente se identifique con un usuario y clave para poder acceder a una página determinada. root@dbase:~# apt-get install apache2-utils Crear archivo de contraseñas Creamos el directorio donde se va incluir el archivo de contraseñas: root@dbase:~# mkdir /passwd El archivo de contraseñas se debe colocar en algún sitio no accesible a la Web. Para crear el archivo de contraseñas, usaremos la utilidad htpasswd que viene con Apache. Para crear el archivo: root@dbase:~# htpasswd -c /passwd/passwdmistio usuario root@dbase:~# htpasswd -c /passwd/passwdmistio udaw01 root@dbase:~# htpasswd /passwd/passwdmistio udaw02 hpasswd pedirá la contraseñ y su confirmación. Comprobamos que el fichero passwdmisitio, contiene los dos usuarios creados: En este paso configuraremos el servidor para que solicite una contraseña y especificamos a qué usuarios se les permite el acceso root@dbase:~# cat /passwd/passwdmistio Página 35 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW root@dbase:~# nano /etc/apache2/sites-available/virtual1dawXX.conf Al contenido de nuestro archivo Virtual Host virtual1dawXX.conf, añadimos lo especificado en sombreado: <VirtualHost *:80> ServerAdmins webmaster@localhost ServerName www.virtual1dawXX.com DocumentRoot /var/www/html/virtual1dawXX <Directory /var/www/virtual1dawXX> DirectoryIndex index.html ErrorDocument 404 “Página no encontrada” AuthType Basic AuthName “Archivo de ...” AuthUserFile /passwd/passwdmisitio Require user udaw01, udaw02 </Directory> </Directory> </VirtualHost> Sintaxis directivas: AuthName "Texto al gusto" AuthUserFile /ruta_al_fichero .htpasswd AuthType Basic Require valid-use La directiva AuthType selecciona el método que se va a usar para autentificar el usuario. Uno de los métodos más comunes es Basic, y este método está implementado en el módulo moth_auth. Es importante tener en cuenta, que en este método de autentificación (Básica) se envía la contraseña desde el cliente al navegador sin encriptar. Por lo tanto, no debería ser usado para información altamente sensible. Apache soporta otro método de autentificación: AuthType Digest, implementado en mod_auth_digest y es mucho más segura. La directiva AuthName establece el dominio a usar en la autentificación. Este dominio cumple dos funciones importantes: primero, el cliente presenta esta información al usuario como parte del cuadro de diálogo para la contraseña; segundo, es usado por el cliente para determinar qué contraseña enviar en un área autentificada dada. La directiva AuthUserFile establece la ruta al archivo de contraseñas creado con htpasswd. Finalmente, la directiva Require proporciona la parte de la autorización del proceso, estableciendo el usuario al que se le permite acceder a esa área del servidor. Página 36 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 8.1.2 Prueba de acceso al sitio virtual desde un equipo cliente Ahora que tenemos nuestro Virtual Host virtual1dawXX configurado para acceder por usuario y contraseña , podemos acceder mediante nuestro navegador web, tecleando en la barra del navegador: http://www.virtual1smrXX.com, y nos pedirá el usuario y la contraseña para poder acceder al sitio web solicitado. Una vez indicado el usuario y la contraseña correspondiente se mostrará la página del sitio web: 8.1.3 Autentificación con HTTP DIGEST Es similar al Basic pero el usuario/clave se envía de forma cifrada Primero habilitamos el módulo de digest root@dbase:~# a2enmod auth_digest Reiniciamos apache para que se actualicen los cambios: root@dbase:~# systemctl restart apache2 Página 37 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW Después creamos el archivo de digestpasswdmisitio con los usuario udaw03 y udaw04. root@dbase:~# htdigest -c /passwd/digestpasswdmisitio usuarios udaw03 root@dbase:~# htdigest /digestpasswdmisitio usuarios udaw04 a continuación configuramos nuestro virtualhost, añadiendo las líneas sombreadas: root@dbase:~# nano /etc/apache2/sites-enabled/virtual2daw0XXconf <VirtualHost *:80> … ServerAdmins webmaster@localhost ServerName www.virtual2dawXX.com DocumentRoot /var/www/html/virtual2dawXX <Directory /var/www/virtual2dawXX> … DirectoryIndex index.html AuthType Digest AuthName “usuarios” AuthUserFile /passwd/digestpasswdmistio Require user udaw03 udaw04 … </Directory> Debemos indicar que al crear la clave se ha usado como nombre usuarios, y debe coincidir con el declarado en la directiva AuthName. Desupués de modificar el sitio virtual, reiniciamos apache para que se actualicen los cambios: root@dbase:~# systemctl restart apache2 root@dbase:~# service apache restart 8.1.4 Prueba de acceso al sitio virtual desde un equipo cliente Ahora que tenemos nuestro Virtual Host virtual2dawXX configurado para acceder por usuario y contraseña, podemos acceder mediante nuestro navegador web, tecleando en la barra del navegador: http://www.virtual2smrXX.com, y nos pedirá el usuario y la contraseña para poder acceder al sitio web solicitado; esta vez la contraseña será enviada de forma encriptada. Página 38 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW Una vez indicado el usuario y la contraseña correspondiente se mostrará la página del sitio web: 8.2 8.2.1 Directivas de control de acceso autorizados: Allow, Deny y Order Directiva allow Esta directiva se usa para establecer quien tiene acceso al directorio especificado. La directiva Allow permite controlar los equipos que pueden acceder al directorio. El formato de uso es indicar Allow from seguido de una de las opciones que se comentan a continuación: Si se indica Allow from all, se autoriza el acceso al directorio desde cualquier equipo: Allow from all Para establecer límites en el acceso se puede indicar una lista de direcciones IP o nombres de dominio que indicará los equipos que pueden acceder al directorio. En este formato, se puede indicar sólo la parte final de un nombre de dominio, la parte inicial de una dirección IP, o indicar la máscara de red para indicar un rango más amplio de equipos. A continuación se muestran varios ejemplos: Ejemplos Nombre parcial de dominios Allow from apache.org Allow from .net example.edu Página 39 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW Tienen acceso permitido todos los equipos de apache.org, de dominio .net o del dominio example.edu. Dirección IP completa Allow from 10.1.2.3 Allow from 192.168.1.104 102.168.1.205 Dirección IP parcial Allow from 10.1.2.3 Allow from 10 172.20 192.168.2 Dirección red/máscara Allow from 10.1.0.0/255.255.0.0 Allow from 10.1.0.0/16 8.2.2 Directiva deny De manera similar se puede utilizar la directiva Deny para denegar el acceso a los equipos que se indiquen, siguiendo el mismo formato que el usado con la directiva Allow. 8.2.3 Directiva order Las directivas Allow y Deny se pueden colocar en cualquier orden, y se pueden añadir varias líneas de cada tipo. Es la directiva Order la que establece el orden en el que se aplicarán. Por defecto, el orden es el siguiente: Order Deny,Allow Es decir, en primer lugar se consideran todas las directivas de denegación de acceso al directorio, y luego se tienen en cuentas las directivas de aceptación de permiso. Las posibilidades son: order deny,allow. Se aplican antes las directivas Deny que las Allow. En caso de que un cliente no haya coincidencia con Deny ni con Allow tienen acceso permitido. Order allow, deny. Se aplican antes las directivas Allow que las Deny. En caso de que un cliente no haya coincidencia con deny ni con allow tiene acceso denegado. Ejemplo: Order deny, allow Deny from all Allow from apache.org Página 40 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW <Directory "/var/www/html"> Order allow,deny Deny from all Allow from all </Directory> Nadie puede acceder porque deny se ejecuta al final <Directory "/www"> Order deny,allow Deny from all Allow from all </Directory> Cualquiera puede acceder porque allow se ejecuta al final <Directory "/www"> Order Deny,Allow Deny from all Allow from ejemplo.com </Directory> Solo pueden acceder los que sean de un dominio xxx.ejemplo.com <Directory "/www"> Order allow,deny Allow from all Deny from ejemplo.com </Directory Pueden acceder todos los equipos excetp los que tengan el dominio xxx.ejemplo.com Pueden acceder todos los que no vengan de un dominio xxx.ejemplo.com Order Deny,Allow Allow from 172.16.5.X Deny from all Order allow,deny Deny from 172.16.5.X Allow from all Página 41 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 8.3 Administración de servidor HTTPS: certificados digitales SSL proporciona autentificación y privacidad de la información entre extremos sobre Internet mediante el uso de criptografía 1. Habilitar el módulo ssl root@dbase:~# a2enmod ssl.load Reiniciamos apache root@dbase:~# service apache2 restart 2. Habilitamos el fichero default-ssl correspondiente al sitio seguro La directiva a2ensite nos permite habilitar el módulo: root@dbase:~# a2ensite default-ssl root@dbase:~# a2dissite default-ssl 3. Instamos OpenSSl para crear el certificado digital autofirmado para nuestro sitio seguro. root@dbase:~# apt-get install openssl 4. Generamos la clave con la que firmaremos los certificados. root@dbase:~# openssl genrsa -des3 -out cert_daw00.key 4096 Indicamos que genere la clave (genrsa), sistema de cifrado de la clave (-des3), salida del archivo (-out), nombre (cert_nombre.key), y tamaño de la clave (4096). 5. Generar información del certificado Crear un archivo donde especificamos la clave con la que firmaremos los certificados y los datos que se agregan al certificado como el país, nombre, clave, alternativa, compañía, etc. root@dbase:~# openssl req -new -key cert_daw00.key -out cert_daw00.csr Donde para un certificado nuevo se requiere una clave (req -new -key) creada en el paso anterior (cert_daw00.key) y se guardará en el archivo csr (-out cert_daw00.csr). 5. Generar información del certificado Ahora crear el certificado firmado con la clave y el archivo cert, aplicando el formato de clave pública (x509), los días de vigencia del certificado (-days 365), archivo csr de datos del certificado (-in cert_daw00.csr), calve de acceso al certificado (csr -signkey cert_daw00.key), y certificado creado (-out cert_daw00.crt). Página 42 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW root@dbase:~# openssl x509 -req -days 365 -in cert_daw00.csr -signkey cert_daw00.key -out cert_daw00.crt Creamos el subdirectorio daw00 donde vamos a guardar los certificados generados dentro de ssl: root@dbase:~# mkdir /etc/apache2/ssl root@dbase:~# mkdir /etc/apache2/ssl/daw00 root@dbase:~# mv cert_daw00* /etc/apache2/ssl/daw00 Comprobamos la IP del host virtual y el puerto 443 que es el usado por ssl. root@dbase:~# nano /etc/apache2/ports.conf 8.3.1 Crear web para alojar el contenido del servidor virtual configurado para acceder mediante certificados 8.3.1.1 Crear la estructura de Directorios El primer paso que necesitamos es crear el directorio donde se guardará la información de nuestro sitio seguro. Nuestro documento raíz (el directorio principal en el cual Apache busca el contenido para mostrar) será configurado en directorios individuales dentro de la ruta /var/www/html. Crearemos el directorio aquí para el Virtual hosts que pretendemos configurar. root@dbase:~# mkdir /var/www/html/sitioSegurodawXX XXdaw 8.3.1.2 Crear una página de prueba para nuestro sitio Virtual Host seguro Dentro de /var/www/html/sitioSegurodawXX crear una página index.html: root@dbase:~# cp /var/www/html/miprimerapag.html /var/www/html/sitioSegurodawXX/index.html root@dbase:~# nano /var/www/html/ sitioSegurodawXX /index.html <!doctype html> <html> <head> <title>Bienvenido a mi página</title> <meta charset=”utf-8”/> </head> <body> <h1> Éxito! El Virtual Host sitioSegurodawXX.conf está funcionando!</h1> <p>“Esta es la página www.sitioSegurodawXX.com del sitio virtual sitioSegurodawXX que usa certificados digitales.”</p> </body> </html> Página 43 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 8.3.2 Crear el Nuevo Archivo Virtual Host administrado con certificados digitales Generamos el fichero de configuración Virtual Host correspondiente al nuevo sitio virtual: root@dbase:~# cp sitioSegurodawXX.conf /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ root@dbase:~# nano /etc/apache2/sites-available/sitioSegurodawXX.conf El contenido de nuestro archivo Virtual Host sitioSegurodawXX.conf sería: <VirtualHost 172.16.100.2:443> … ServerAdmins webmaster@localhost ServerName www.sitioSegurodawXX.com DocumentRoot /var/www/html/sitioSegurodawXX <Directory /var/www/html/sitioSegurodawXX > DirectoryIndex index.html ErrorLog 404 “Página no encontrada” Order allow, deny Allow from all </Directory> SSLEngine On SSLCertificateFile /etc/apache2/ssl/daw00/cert_daw00.crt SSLCertificateKeyFile /etc/apache2/ssl/daw00/cert_daw00.key … </VirtualHost> 8.3.3 Habilitar el nuevo Archivo Virtual Host para el sitio seguro Una vez creados los archivo virtual host, hay que habilitarlos. Podemos usar la herramienta a2ensite para habilitarlo haciendo esto: Habilitamos el sitio virtual: root@dbase:~# sudo a2ensite sitioSegurodawXX.conf root@dbase:~# service apache2 reload o bien: root@dbase:~# systemctl reload apache2 Comprobamos que el sitio ha sido habilitado: root@dbase:~# ls /etc/apache2/sites-enabled Página 44 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 8.3.4 En el equipo cliente Linux Configurar archivos locales root@dbase:~# sudo nano /etc/hosts 172.16.100.2 www.virtual1daw100.com 172.16.100.2 www.virtual2daw100.com 172.16.100.33 www.virtual3dawXX.com 172.16.100.44 www.virtual4dawXX.com 172.16.100.2 www.virtual5dawXX.com 172.16.100.2 www.sitioSegurodawXX.com 8.3.5 En el equipo cliente Windows Configurar archivos locales Abrir con el bloc de notas c:\Windows\System32\drivers\etc. como administrador el fichero hosts en la ruta El archivo de configuración hosts añadiendo la nueva IPs asociada al nuevo nombre de dominio quedaría de la siguiente manera: Página 45 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW 8.3.6 Prueba al sitio virtual seguro desde el equipo cliente Ahora que tenemos el nuevo Virtual Host configurado para acceder desde un cliente al sitio seguro con puerto 443, podemos realizar pruebas de acceso a la configuración especificada simplemente visitando el nuevo dominio que hemos configurado mediante nuestro navegador web. El acceso al sitio virtual seguro (https) en el puerto 443 lo comprobamos tecleando en la barra del navegador: https://www.misitioSeguroXX.com:443 El navegador Firefox mostrará la siguiente ventana: Pulsamos en el botón Avanzado: Página 46 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW Pulsamos en el botón Obtener certificado y a continuación en el botón Ver: Nos mostrará la información del certificado creado en el servidor: Y a continuación se mostrará la página de inicio del sitio virtual seguro: Página 47 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW Alojamiento del sitio web mkdir /var/www/html/sitioseguro cp /var/www/html/miprimerapag.html /var/www/html/sitioseguro/index.html <html> <head> <title>Bienvenido a Ejemplo.com!</title> </head> <body> <h1>Este el es el servidor web de smr que usa certificados!</h1> </body> </html> Creamos el sevidor virtual https y lo configuramos: #cp /etc/apache2/sites-available/xxx /etc/apache2/sites-available/smr00_ssl.conf <VirtualHost 172.16.5.2:443> ServerAdmins webmaster@localhost ServerName www.smr00.com DocumentRoot /var/www/html <Directory /var/www/html/sitioseguro> DirectoryIndex index.html ErrorLog 404 “Página no encontrada” Order allow,deny Página 48 de 49 UD01: Implantación de Arquitecturas Web Despregramento de Aplicacións Web Práctica: Configuración y administración de servidores web: Apache en debian DAW Allow from all </Directory> SSLEngine On SSLCertificateFile /etc/apache2/ssl/smr00/cert_smr00.crt SSLCertificateKeyFile /etc/apache2/ssl/smr00/cert_smr00.key </VirtualHost> Página 49 de 49