Servidor WEB SERVICIOS DE RED 2º ASIR 16-11-2017
Índice: 1. Introducción... 2 2. Preparación laboratorio Virtual... 2 3. Instalación Servidor Web... 2 3.1. Página por defecto... 3 3.2. Página personalizada... 4 3.3. SSL (Servidor Seguro Puerto 443)... 4 3.3.1. Certificado del sistema... 4 3.3.2. Certificado propio... 5 3.4. Autenticación... 6 3.5. Autenticación con SSL... 8 3.6. Hosts Virtuales... 9 3.7. Hosts Virtuales con SSL... 11 3.8. Host Virtual con Autenticación y SSL... 12 4. Troubleshooting... 14 5. Conclusión... 14 1
1. Introducción Un servidor WEB es aquel que permite el procesamiento y publicación de documentos de hipertexto (HTML) para que el cliente pueda visualizar un sitio WEB (una página). Existe el protocolo http (puerto 80) y el https (puerto 443) el cual es para una página segura con certificado, el certificado sirve para comprobar si eres quien dices ser. 2. Preparación laboratorio Virtual Para esta práctica he elegido como máquina virtual servidor un Linux Ubuntu Server. Por tanto comienzo instalando esta distro con sus especificaciones predeterminadas como siempre. Después de instalar la máquina virtual procedo a cambiar la configuración de la red; la pongo en Red NAT ya que necesito tener acceso a internet para descargarme el programa que utilizaré para configurar el servidor WEB (apache2) y también para descargarme el servidor FTP (ya explicado) para poder pasarme una página WEB propia. Instalación de servicio web: Instalación de servicio ftp: Como cliente utilizaré un Windows 10 al que le daré la @ip 172.20.0.4/8 3. Instalación Servidor Web Configuramos la dirección ip de adaptador: 2
Ponemos en red interna y tiramos y volvemos a levantar el adaptador: 3.1. Página por defecto Compruebo con nmap que tengo abierto puerto 80: Compruebo desde cliente W10 la página por defecto: 3
3.2. Página personalizada Modifico la página o añado una propia. Lo puedo hacer mediante una carpeta compartida o mediante ftp. Yo elijo la opción de hacerlo mediante ftp: Ahora tengo que descomprimir mi carpeta (necesitaré apt-get install zip) La descomprimo y quito el index.html (página por defecto) o la llamo index.html.old Después compruebo que me funciona la página propia: 3.3. SSL (Servidor Seguro Puerto 443) El SSL aplicado a un servidor WEB consiste en la implementación de un certificado (tuyo o del sistema) para verificar que el creador de la página es quien dice ser. En nuestro caso va a ser falso ya que para que sea cierto alguien externo tiene que hacer esa verificación de que eres tú quien dices que eres. 3.3.1. Certificado del sistema Lo primero es activar el SSL mediante: A continuación ponemos: 4
Reiniciamos el servicio y con esto ya tendríamos la certificación del sistema (Ubuntu). Para ello lo compruebo: 3.3.2. Certificado propio Para hacer el certificado propio tengo que seguir los mismos pasos que en el del sistema, pero después tengo que hacer lo siguiente: Primero crear una carpeta donde se guardará esa certificación: Luego creo la certificación y respondo a las preguntas mediante el siguiente comando: Después configuro el archivo ssl-default.conf y añado lo siguiente: 5
Por ultimo reinicio el servidor y compruebo que me ha creado el certificado: 3.4. Autenticación La autenticación consiste en el procedimiento de verificar que un usuario del sitio WEB es quien dice ser. Para hacer la autenticación en nuestro servidor WEB, primero me tengo que descargar las utilidades de apache (para ello tengo que tener conexión a internet, es decir el adaptador estará en NAT) Después tengo que añadir un usuario: 6
A continuación agrego el usuario e indico su contraseña cifrada en un fichero mediante el siguiente comando: Tras eso tengo que activar el módulo auth_basic.load: Para tener una página propia del usuario autenticado voy a crear una carpeta con una página dentro (index.html) que modificaré: Ahora tengo que configurar el archivo 000-default.conf para que al meter la @ip en el buscador entre en la página del usuario registrado Por último activo el sitio con a2ensite: Reinicio servidor y ahora compruebo que me funciona correctamente 7
3.5. Autenticación con SSL Ahora voy a realizar la autenticación añadiéndole el SSL. Es decir configuro para que un usuario se tenga que autenticar al entrar desde el puerto 443. Para ello únicamente tengo que configurar el archivo default-ssl.conf en vez del 000- default.conf: Después activo el sitio con a2ensite: Reinicio el servidor otra vez y lo compruebo: 8
3.6. Hosts Virtuales Los hosts virtuales sirven para hacer funcionar más de un sitio WEB en una sola máquina virtual; accediendo a ellos mediante una URL en vez de con la @ip del servidor. El proceso para crear los hosts virtuales es largo pero sencillo. Lo primero que tengo que hacer es crear las carpetas donde se alojaran los sitios WEB y darles permisos: Ahora creo en cada carpeta de html (josue1/html y josue2/html) un index con algo escrito dentro. 9
Ahora tengo que crear los archivos de configuración de la página para cada uno de los hosts. Para ello copiare el 000-default.conf: Ahora toca configurar esos archivos de configuración y añadir lo siguiente: El siguiente paso es activar los sitios creados y reiniciar el servicio: Añadimos esas direcciones al archivo /etc/hosts Lo siguiente es ir al cliente que estemos usando (en mi caso Windows 10), y tenemos que modificar el archivo que se encuentra en C:/Windows/system32/drivers/etc/hosts. Tenemos que darle permisos para poder modificarlo: 10
Y después le añadimos nuestros hosts virtuales: Ahora nos queda comprobar que funciona correctamente: 3.7. Hosts Virtuales con SSL Ahora voy a hacer que al ir al sitio WEB de un host virtual, este sea una página segura. Es decir configuro para que un host virtual entre mediante el puerto 443. Para eso simplemente tengo que configurar el archivo default-ssl.conf de esta manera: 11
Después de eso reinicio el servidor. Como lo he hecho solo con el host virtual josue2 voy a comprobar que me funciona: 3.8. Host Virtual con Autenticación y SSL Ahora como actividad final voy a implantarlo todo; es decir, hacer que un hosts virtual tenga un sitio WEB seguro y que además al entrar ahí nos pida una autenticación. Así mejoramos al máximo la seguridad de nuestro servidor WEB. Para conseguir esto tenemos que ir al archivo de configuración de antes (default-ssl.conf) y modificarlo para que la ruta del sitio de autenticación sea la del sitio WEB de josue2: 12
Como siempre, reiniciamos el servidor apache2 y vamos a comprobarlo; primero nos dirá que no es seguro: Y después nos pedirá la autenticación: Por último vemos la página con su certificado: 13
4. Troubleshooting En esta práctica he cometido sobretodo errores de sintaxis en los archivos de configuración para solventarlo hay que fijarse muy bien que lo que escribes, lo escribes correctamente. En una ocasión puse una ruta mal en el proceso de hacer la autenticación y me dejó de funcionar el sitio WEB. Como vemos puse regustrado en vez de registrado. Otra tarea a hacer importante para el funcionamiento correcto del servidor es reiniciarlo cada vez que modificamos algo en un archivo de configuración: También es importante que en todo momento haya conexión entre cliente y servidor, puesto que si no lo hay no se podrá conectar al sitio WEB. Para ello hay que mirar que se esté en la misma red lógica (172.20.0.0/16). Y que las dos máquinas estén en red interna. 5. Conclusión En esta práctica he aprendido a manejar la aplicación de apache2 en un Ubuntu server. He conseguido que me funcione la página por defecto (simplemente con instalar la aplicación), 14
también que me funcione una propia; metiéndola mediante FTP y llamándola index.html. Después he aprendido a crear un certificado SSL y que me funcione tanto ese como el del sistema. También he visto la autenticación en un sitio WEB para añadirle más seguridad. Además he implementado la funcionalidad de los hosts virtuales (creando 2) con josue1 y josue2. Por último he mezclado todo para obtener un sitio WEB para el host virtual josue2 que vaya al puerto 443 (seguridad ssl aplicada al https) y que tenga autenticación de usuario. 15