Servidor web Apache

1,729 views
1,518 views

Published on

Instalación y configuración de

Published in: Education
2 Comments
2 Likes
Statistics
Notes
No Downloads
Views
Total views
1,729
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
0
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

Servidor web Apache

  1. 1. PRÁCTICA 4. LINUX SERVIDOR WEB APACHE Nombre: Javier Martin Rivero EJERCICIO 1. HTTP. 1) Visualiza la información de las cabeceras de los siguientes servidores webs identificando los parámetros que puedas, con wget -S: • http://www.linux-magazine.es/ • http://www.debian.org
  2. 2. • http://www.linuxtotal.com.mx/index.php?cont=info_admon_017 2) Aportaciones sobre el tema.
  3. 3. EJERCICIO 2. INSTALACIÓN DE UN CLIENTE WEB CHROME EN TU LINUX DESKTOP. Actualizamos las lista de los repositorios, dentro /etc/apt/sources.list Actualizamos los paquetes con un update y upgrade.
  4. 4. EJERCICIO 3: INSTALACIÓN Y CONFIGURACIÓN APACHE 2 EN DEBIAN/UBUNTU 1) Instala el servidor web Apache e indica el FQDN para que al iniciar el servicio no nos de ningún problema. 2) ¿Qué diferencia hay entre un restart y un reload? La opcion restart reinicia por completo el servicio de apache y la opcion reload reinicia todos los modulos de apache sin parar el servicio.
  5. 5. 3) ¿Qué es la opción graceful? apache2ctl -k graceful La señal graceful hace que el proceso padre indique a sus hijos que terminen después de servir la petición que estén atendiendo en ese momento (o de inmediato si no están sirviendo ninguna petición). El proceso padre lee de nuevo sus ficheros de configuración y vuelve a abrir sus ficheros log. Conforme cada hijo va terminando, el proceso padre lo va sustituyendo con un hijo de una nueva generación con la nueva configuración, que empezarán a servir peticiones inmediatamente. Es decir, reinicia el servicio sin que ningún cliente que haya accedido pierda la conexión al servidor. 4) Comprueba la directiva donde indicamos el puerto de escucha del servidor Se comprueba entrando en el fichero /etc/apache2/ports.conf 5) Comprueba los módulos cargados en el servidor: mirando en el directorio adecuado y utilizando la herramienta apache2ctl.
  6. 6. 6) Comprueba los sitios webs activos en nuestro servidor: mirando en el directorio adecuado y utilizando la herramienta apache2ctl. EJERCICIO 4. APACHE SIN VIRTUAL HOST El servidor web Apache2.2 se instala por defecto con un host virtual. La configuración de este sitio la podemos encontrar en:
  7. 7. /etc/apache2/sites-available/default Y por defecto este sitio virtual está habilitado, por lo que podemos comprobar que existe un enlace simbólico a este fichero en el directorio /etc/apache2/sites-enabled. A continuacion demuestro como funciona los virtual host, con una pagina que me he inventado llamado javier.html. Deshabilitamos el modulo de virtual host y continuacion con la misma pagina demuestro que no funciona. Para que la configuracion tenga efecto hay que hacer un reload al sercivio apache2.
  8. 8. y podemos coger parte del fichero de configuración default y añadirlo a la configuración del servidor web, por ejemplo podemos ponerlo dentro del fichero /etc/httpd.conf: <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow, deny allow from all </Directory>
  9. 9. EJERCICIO 5: INTRODUCCIÓN AL VIRTUAL HOSTING CON APACHE 2.2 El objetivo de esta práctica es la puesta en marcha de dos sitios web utilizando el mismo servidor web apache. Hay que tener en cuenta lo siguiente: 1. Cada sitio web tendra nombres distintos. 2. Cada sitio web compartirán la misma dirección IP y el mismo puerto (80). Queremos construir en nuestro servidor web apache dos sitios web con las siguientes características: 1. El nombre de dominio del primero será www.iespjm.com, su directorio base será /var/www/iespjm y contendrá una página llamada index.html, donde sólo se verá una bienvenida. 2. En el segundo sitio vamos a crear una página donde se pondrán noticias por parte de los departamento, el nombre de este sitio será www.sri.org, y su directorio base será /var/www/sri. En este sitio sólo tendremos una página inicial index.html, dando la bienvenida a la página del módulo SRI. Para conseguir estos dos sitios virtuales debes seguir los siguientes pasos: Primero copiamos la plantilla default y con ella creamos los sitios iespjm y sri. Luego modificamos la configuracion de los siguientes ficheros:
  10. 10. iespjm sri 3) No es suficiente crear los ficheros de configuración de cada sitio web, es necesario crear un enlace simbólico a estos ficheros dentro del directorio /etc/apache2/sites-enabled, para ello:
  11. 11. 4) Crea los directorios y los ficheros index.html necesarios en /var/www y reiniciamos el servicio:
  12. 12. 5) Para terminar lo único que tendremos que hacer es cambiar el fichero hosts en los clientes y poner dos nuevas líneas donde se haga la conversión entre los dos nombre de dominio y la dirección IP del servidor.
  13. 13. EJERCICIO 6. PUERTOS DE ESCUCHA 1) Configura apache2 para no usar virtual hosting, y cambia el puerto de escucha del servidor al 8081. ¿Se puede tener el servidor escuchando por dos puertos el 80 y el 8081? Para que esto funcione tenemos que deshabiltar y habilitar los host virtuales que estan escuchando por el puerto 80. Ahora debemos comprobar que los cambios funcionan correctamente
  14. 14. Como hemos comprobado en las anteriores capturas el servidor puede escuchar por los puerto que queramos, pero ademas tenemos que configurar los sitios para que escuche en su determinado puerto. 2) Configura apache2 para que use los sitios virtuales del ejercicio 5 anterior, pero modifica la configuración para que www.iespjm.com sea visible por el puerto 80, y www.sri.com sea visible desde el puero 8081. Nota: Deja el servidor sólo con el sitio virtual default activado, escuchando por el puerto 80. Para ello necesitamos que el servidor de apache escuche por los dos puertos, muestro la configuracion, a continuacion: Archivo: /etc/apache2/ports.conf
  15. 15. Ahora hay que configurar el sitio www.sri.org para que escuche por el puerto 8081 Ahora hay que configurar el sitio www.iespjm.com para que escuche por el puerto 80, pero no hay que hacer nada porque ya escucha por el puerto 80 desde antes.
  16. 16. Habilitamos los host virtuales, y reiniciamos el servicio ya que hemos tocado la configuracion del servidor y para que los cambios surtan efectos debemos hacer un: Service apache2 restart o /etc/init.d/apache2 restart. Aqui vemos los puertos por los que esta escuchando nuestro servidor apache.
  17. 17. Comprobamos con apache2ctl por donde esta escuchando nuestros sitios. A continuacion el resultado con el navegador web: EJERCICIO 7. DIRECTIVAS DEL FICHERO APACHE2.CONF Busca en el fichero de configuración de Apache las siguientes directivas, determina que función tienen y el valor que poseen por defecto. Directivas de identificación del servidor: • ServerName
  18. 18. El parámetro ServerName indica el nombre del Servidor que administra Apache. Esta directiva no aparece por defecto. • ServerAdmin El parametro ServerAdmin es el correo electronico que incluye el servidor cuando hay mensajes de error. Directivas de localización de ficheros • DocumentRoot El parámetro DocumentRoot indica el directorio local donde reside la información del sitio en cuestión. • ErrorLog
  19. 19. Parametro donde el servidor registra los errores. • CustomLog CustomLog la directiva especifica primero el fichero donde se anotan las peticiones hechas al servidor y en segundo lugar el tipo de anotación según se haya definido en alguna directiva LogFormat. • ServerRoot La directiva ServerRoot es el directorio raíz donde se almacenan los distintos ficheros que utiliza el servidor Apache salvo que se indiquen rutas absolutas como se indicaba con anterioridad. Es importante no añadir una barra al final del nombre del último directorio.
  20. 20. • AccessFileName AccessFileName especifica el nombre del fichero de configuración particular de un directorio. En este directorio se pueden incluir las directivas que queremos que se apliquen a este directorio concreto. Directivas de control de la conexión • Timeout TimeOut: el valor se utiliza para configurar medido en segundos, tres parámetros: 1. El tiempo tal que puede tardar una petición en ser recibida entera 2. La cantidad de tiempo que espera entre recepción de paquetes TCP 3. La cantidad de tiempo entre ACK's en transmisiones TCP Pasado este tiempo se produce un mensaje de error en el que se indica que se ha consumido el tiempo máximo de espera. Establecer un valor muy pequeño puede dar lugar a que los usuarios reciban este mensaje de error, y establecer un valor muy pequeño dará lugar a una sobrecarga de la máquina. Se encuentra disponible a través del módulo Core. • KeepAlive
  21. 21. Las conexiones KeepAlive són aquellas que se mantienen abiertas tras recibir una petición del cliente y servirla, de tal manera que la siguiente petición reaprovecha la conexión. Resultan útiles ya que no se tienen que abrir una conexión para cada elemento de la página (imagenes, CSS, JavaScripts…) Para el caso de apache, los parámetros que regulan estas conexiones són: • KeepAlive: Indica si se usan o no (On/Off) • KeepAliveTimeout: Regula el tiempo que mantiene el servidor la conexión abierta a la espera de más peticiones. • MaxKeepAliveRequest: Número máximo de peticiones por conexión, una vez se supere este límite el servidor cerrará la conexión y el cliente deberá reabrir una conexión. Otras directivas • User La directiva User establece el nombre de usuario para el proceso del servidor y determina qué archivos puede accesar el servidor. Cualquier archivo que no esté accesible a este usuarip tampoco estará disponible para los clientes del Servidor Apache HTTP.
  22. 22. • Group Especifica el nombre del grupo de los procesos Servidor Apache HTTP. • DefaultType DefaultType establece el tipo de contenido por defecto que el servidor utilizará para documentos cuyos tipos MIME no puedan ser determinados. Por defecto es text/plain. • LogLevel
  23. 23. LogLevel establece que tantos detalles tendrán los registros de mensajes de error. LogLevel se puede configurar (desde el que tiene menos detalles a los más detallados) a emerg, alert, crit, error, warn, notice, info o debug. El valor predeterminado de LogLevel es warn. • LogFormat La directiva LogFormat configura el formato para los archivos de registro del servidor Web. El comando LogFormat usado en realidad depende de la configuración dada en la directiva CustomLog. EJERCICIO 8. Y ESTRUCTURA DE LOS FICHEROS DE CONFIGURACIÓN. 1) Las directivas de configuración de apache2 se pueden aplicar si está definido un determinado parámetro. Para esto se utiliza la directiva <IfDefine>. Busca en algún fichero de configuración esta directiva.
  24. 24. No se encuentra ninguna. 2) Para cargar dinámicamente los módulos se utilza la directiva LoadModule, búscalos en los ficheros *.load dentro de /etc/apache2/mods-availables. Más información: http://httpd.apache.org/docs/2.2/dso.html 3) Busca en la configuración una variable de entorno y determina en que fichero están definidas. 4) La directiva Include nos permite añadir ficheros de configuración a la configuración general de apache2. Comprueba qué ficheros son añadidos con esta directiva.
  25. 25. 5) Podemos aplicar directivas a partes concretas de nuestro servidor web, para ello estudia las siguientes directivas (Para aprender más lee Secciones de Configuración): <Directory> Las directivas <Directory> y </Directory> se usan para englobar un grupo de directivas que se aplicarán solamente al directorio especificado y a sus subdirectorios. Puede incluir a cualquier directiva cuyo uso esté permitido en un contexto <directory> <DirectoryMatch> <DirectoryMatch> y </DirectoryMatch> se usan para englobar a un grupo de directivas que se aplicarán solamente al directorio (y los subdirectorios de éste) especificado, al igual que <Directory>. Sin embargo, en ese caso la directiva toma como argumento una expresión regular. <VirtualHost> <VirtualHost> y </VirtualHost> se usan para incluir un grupo de directivas que se aplicarán solo a un host virtual en particular. Cualquier directiva que esté permitido usar en un contexto virtual host
  26. 26. puede usarse. Localiza algunas de ellas en los ficheros de configuración. EJERCICIO 9. Logs. LOGS Y ERRORES. http://httpd.apache.org/docs/2.2/es/logs.html 1) Consulta el fichero /etc/apache2/sites-available/default e indica cuál es fichero de logs de errores, qué directiva usa y cuál es su nivel de prioridad. Muestra su contenido.
  27. 27. El fichero de logs de errores que utiliza es /var/log/apache2/error.log La directiva que utiliza es ErrorLog. Su nivel de prioridad es “warning”. 2) Indica cuál es fichero de logs de accesos, qué directiva usa y cuál es su formato. Muestra su contenido.
  28. 28. El fichero de logs de accesos es /var/log/apache2/access.log La directiva que utiliza es CustomLog. EL formato que utiliza es Combined. 3) Estando en el mismo fichero, configura el servidor para que cuando retorne el código ErrorDocument de valor 404 envio el texto “Página no encontrada en el servidor iespjm.com. Pruébalo accediendo a una página html que no existe.
  29. 29. 4) Modifica ahora el comportamiento anterior para que cuando ese caso se de, se muestre el contenido de no_esta.html creado por ti.
  30. 30. EJERCICIO 10. DIRECTORIOS VIRTUALES. 1) Crea un directorio en /home/alumno/redes. Accede con el usuario alumno. Crea un archivo dentro redes.html. Accede como administrador y edita el fichero default y utilizando la sentencia Alias crea un directorio virtual /redes y configúralo con la directiva <Directory. Pruébalo.
  31. 31. Creamos el usuario alumno. Entramos con el usuario alumno y dentro de su home creamos el directorio redes y el fichero redes.html
  32. 32. 2) Crea un directorio en /home/alumno/servicios. Accede con el usuario alumno. Crea un archivo dentro servicios.html. Accede como administrador y crea utilizando un enlace simbólico entre la carpeta /var/www/servicios y /home/alumno/servicios. Pruébalo.
  33. 33. EJERCICIO 11. APACHE MODULAR. 1) Consulta los módulos estáticos (apache2ctl) de la versión precompilada .deb que está instalada en tu Ubuntu y los módulos dinámicos cargados por defecto
  34. 34. 2) Consulta los módulos dinámicos en /etc/apache2/mods-enabled. ¿Qué tipo de ficheros encuentras? Hay dos tipos de fichero uno (.load) que sirve para cargar el modulo o (.conf) que son de configuracion de los modulos. 3) Edita el fichero alias.load y observa cómo se utiliza la directiva LoadModule para cargar el módulo Comprueba cuál es la ruta donde está el código del módulo (archivo .so)
  35. 35. 4) Edita el fichero alias.conf, ¿qué encuentras dentro de la directiva <IfModule. 5) Muestra de la carpeta modules, los módulos disponibles para cargar.
  36. 36. 6) Con sudo apt-cache search libapache2-mod muestra los paquetes disponibles en los repositorios de Ubuntu que permiten instalar módulos adicionales de Apache. 7) Comprueba que el módulo userdir no está habilitado. Deshabilítalo, y finalmente vuelve a habilitarlo. 8) ¿Qué ficheros se han creado en el directorio mods-enabled? Reinicia el servidor.
  37. 37. 9) Consulta userdir.conf y observa que se han habilitado el uso de directorios personales. ¿Cuál es el nombre del subdirectorio que pueden crear los usuarios en su directorio home para poner sus páginas personales? 10) Inicia una sesión con el usuario alumno, y vete al subdirectorio creado antes y crea una página web personal.htm. Accede ahora a tu navegador con la URL http://10.33.1.2/~alumno/personal.htm
  38. 38. 11) Indica cómo podrías cambiar el nombre del subdirectorio creado por defecto por otro.
  39. 39. 12) Activa ahora los módulos mod_info y mod_status que dan información acerca del servidor web y comprobar su funcionamiento.
  40. 40. 13) Prueba Redirect.
  41. 41. 14) El módulo rewrite nos va a permitir acceder a una URL e internamente estar accediendo a otra, entre otros cometidos. Activa el módulo mod_rewrite y empléalo para algún propósito. EJERCICIO 12. CONTROL DE ACCESO POR IP UTILIZANDO LAS DIRECTIVAS ORDER, ALLOW Y DENY 1) Inicia una sesión como administrador y crea un directorio privado en www y dentro crea una página privada.html. Edita el fichero de configuración /etc/sites-available/default y niega el acceso a todos los equipos excepto al ubuntucliente.
  42. 42. 2) Comprueba el control de acceso del directorio DocumentRoot en el host virtual default. El control de acceso no esta definido en el directorio Document Root si no en el directorio raiz y observamos que los permisos son muy abiertos ya que permite que todo el mundo se conecte y no deniega la conexión a nadie. 3) Comprueba el control de acceso del directorio privado en el host virtual default. Permite solo al equipo que queremos es decir el host que tenga la ip 192.168.95.140 si podra entrar mientra los demas no pueden.
  43. 43. EJERCICIO 13. AUTENTIFICACIÓN BÁSICA, HTTP BASIC 1) Comprueba que el módulo auth_basic está habilitado mirando el directorio mods-enabled 2) Crea usuarios donde guardarás el nombre y clave de los usuarios con el comando: sudo htpasswd –c /etc/apache2/passwd alumno1 sudo htpasswd –c /etc/apache2/passwd alumno2 3) Edita el fichero /etc/sites-available/default y sobre el directorio privado y añade: AuthName “Acceso privado” AuthType Basic AuthUserFile /etc/apache2/passwd Require user alumno sri alumno
  44. 44. 4) Ahora accede a www.iespjm.com/privado para probarlo. 5) Repite el ejemplo para un host virtual tuyo, para una carpeta llamada segura y crea dos usuarios. Crea un grupo de usuarios grupoalaumnos que tendrá a los usuarios Marta y Jaime. A esta carpeta sólo tendrá acceso el grupoalumnos y no por ejemplo a marisa.
  45. 45. EJERCICIO 14. CONFIGURACIÓN DE .HTACCESS 1) Habilita en /etc/apache2/sites-available/default el uso de este tipo de ficheros permitiendo sobreescribir todas las directivas en el directorio /home/alumno/redes. Reinicia el servidor. Inicia sesión como alumno y crea el fichero .htaccess dentro de la carpeta y añade directivas para permitir el acceso desde todos los equipos que estén en la red 10.33.1.0/24 con allow from. Ojo!, no hace falta poner la directiva <Directory. Sin reiniciar, accede a http://localhost/redes y verifica que es posible acceder.
  46. 46. 2) Habilita la opción de listar los ficheros en ese directorio y haz que la página entrada.html se visualice por defecto. 3) Hacer que los ficheros txt no sean accesibles.
  47. 47. 4) Redireccionar a una página, por ejemplo cuando entremos en este directorio salte a www.google.es
  48. 48. 5) Crear una lista de IPs prohibidas 6) Crear una página personalizada para un tipo de error
  49. 49. EJERCICIO 15. AUTENTIFICACIÓN TIPO DIGEST 1) Crea dos subdirectorios en el host virtual default que se llamen grupo1 y grupo2. Crea los usuarios mencionados arriba con la utilidad htdigest, asignando a cada uno un dominio distinto (domgrupo1 y domgrupo2). Configura los directorios para que al primero grupo1 sólo puedan acceder el usuario del dominio domgrupo1, y el directorio grupo2 solo accedan el usuario del dominio domgrupo2.
  50. 50. EJERCICIO 16. AUTENTICACIÓN CON USUARIOS DEL SISTEMA Otro método que vamos a estudiar es usar los usuarios del sistema para la autentificación, vamos a usar el módulo mod_auth_external que es un módulo de Apache que permite autenticar los usuarios contra servicios externos: nosotros vamos a usar pwauth que permite verificar usuarios y contraseñas del sistema. 1) Muestra el resultado de probarlo.
  51. 51. EJERCICIO 17. AUTENTIFICACIÓN CON MYSQL Siguiendo la explicación de clase e Internet, configura al menos un sitio web de tu servidor para que su acceso sea mediante autenticación MySql. Nota: las contraseñas de los usuarios se deben guardadas encriptadas. http://www.guia-ubuntu.org/index.php?title=MySQL http://blog.unlugarenelmundo.es/2010/03/18/autenticacion-en-apache-y-ii-digest-y-con-mysql/
  52. 52. EJERCICIO 18. HTTPS. – Habilita el módulo mod_ssl y el puerto de escucha 443. – Abre y observa el sitio web default_ssl. a2enmod ssl
  53. 53. – Crea y habilita un sitio web seguro para el dominio seguro.iespjm.com, crea certificados autofirmados. – Crea y habilita un sitio web seguro para el dominio seguro.iespjm.com, crea certificados autofirmados. a) aptitude install ssl-cert make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/seguro.crt
  54. 54. b) openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/seguro.pem -keyout /etc/ apache2/ssl/segurokey.key chmod 600 /etc/ apache2/ssl/seguro* – Crea un directorio /var/www/seguro donde se sirve el fichero index.html si no se dice nada y no se mostrará ningún fichero si no se solicita. Y podrán acceder todos los usuarios.
  55. 55. – El log de errores será /var/log/apache2/seguro_error.log y el de sucesos /var/log/apache2/access_seguro.log con formato combined No te olvides incluir en dicho virtual host, para la primera forma: SSLEngine on SSLCertificateFile /etc/ apache2/ssl/seguro.crt
  56. 56. EJERCICIO 19. CONFIGURACIÓN DE ESTADÍSTICAS CON AWSTATS INDEPENDIENTES PARA TUS DOS SITIOS WEBS DE TU SERVIDOR
  57. 57. EJERCICIO 20. CONFIGURA TU PROPIO APACHE SSL COMO PROXY INVERSO. Instalamos el módulo de apache para proxy inverso: # aptitude install libapache2-mod-proxy-html

×