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
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.
5. 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.
6. 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.
7. 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:
8. /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.
9. 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>
10. 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:
11. 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:
12. 4) Crea los directorios y los ficheros index.html necesarios en /var/www y reiniciamos el servicio:
13. 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.
14. 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
15. 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
16. 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.
17. 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.
18. 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
19. 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
20. 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.
21. •
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
22. 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.
23. •
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
24. 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.
25. 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.
26. 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
27. 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.
28. 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.
29. 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.
30. 4) Modifica ahora el comportamiento anterior para que cuando ese caso se de, se muestre el
contenido de no_esta.html creado por ti.
31. 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.
32. Creamos el usuario alumno.
Entramos con el usuario alumno y dentro de su home creamos el directorio redes y el fichero
redes.html
33. 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.
34. 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
35. 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)
36. 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.
37. 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.
38. 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
39. 11) Indica cómo podrías cambiar el nombre del subdirectorio creado por defecto por otro.
40. 12) Activa ahora los módulos mod_info y mod_status que dan información acerca del servidor web y
comprobar su funcionamiento.
42. 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.
43.
44. 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.
45. 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
46. 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.
47.
48. 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.
49.
50. 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.
51. 4) Redireccionar a una página, por ejemplo cuando entremos en este directorio salte a
www.google.es
52. 5) Crear una lista de IPs prohibidas
6) Crear una página personalizada para un tipo de error
53. 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.
54.
55. 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.
56.
57. 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/
58.
59.
60.
61. 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
62. –
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
63. 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.
64. –
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
65. EJERCICIO 19. CONFIGURACIÓN DE ESTADÍSTICAS CON AWSTATS INDEPENDIENTES
PARA TUS DOS SITIOS WEBS DE TU SERVIDOR
66.
67. 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