Você está na página 1de 70

Software de Comunicaciones

Prctica 5 - HTTP Apache

Juan Dez-Yanguas Barber Software de Comunicaciones Ingeniera Informtica - 5 Curso

______________________________________________________________________________________ Jdyb - Marzo 2013

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

ndice 1. Instalacin de Apache ! 2. Directivas de conguracin bsicas de Apache!


2.1. Establecer los puertos de escucha! 2.2. Establecer pginas de inicio predeterminadas! 2.3. Directiva Indexes! 2.4. Alias de directorio! 2.5. Uso de redirecciones!

3 4
4 8 10 12 16

3. Conguracin de Servidores Virtuales!


3.1. Servidores virtuales basados en puerto ! 3.2. Servidores virtuales basados en direccin IP! 3.3. Servidores virtuales basados en nombre!

20
21 25 27

4. Acceso restringido por contrasea! 5. Partes opcionales!


5.1. Mdulo Rewrite! 5.2. Mdulo Proxy ! 5.3. Gestor de estadsticas webalizer!

36 44
44 48 58

5.4. WebDAV. Web based Distributed Authoring and Versioning. Mdulo mod_dav ! 64 5.5. Qu es Squid?! 70

______________________________________________________________________________________ Jdyb - Marzo 2013! 2 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

1. Instalacin de Apache
! En este primer apartado llevaremos a cabo la instalacin del servidor apache en CentOs con el paquete RPM que podemos encontrar en los repositorios locales en /usr/ local/src/apache. La instalacin la haremos con el comando habitual rpm -ivh. ! Esta vez instalaremos todos los cheros rpm de la carpeta debido a que el rpm del apache tiene como dependencias los otros, por es razn instalaremos todos.

! Despus de realizar la instalacin podemos comprobar si se encuentra activado para arrancar al inicio del sistema, lo podemos hacer mirando en los niveles de ejecucin / etc/rc3.d/ o con el comando chkcong. Y comprobaremos que no se encuentra activado. Nosotros no lo activaremos porque esto no es un equipo en produccin, pero en cualquier caso ahora indicamos el comando para congurarlo al arranque.

Para activarlo al inicio se usar el siguiente comando.

______________________________________________________________________________________ Jdyb - Marzo 2013! 3 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

2. Directivas de conguracin bsicas de Apache


! En este apartado mostraremos algunas de las principales directivas de conguracin de apache, las iremos mostrando una por una y iremos comprobando que funcionan correctamente. Para hacer las pruebas usaremos un navegador web de la mquina antriona, ser conveniente saber que la mquina virtual se encuentra en la IP 172.16.183.100.

! Todas las conguraciones que toquemos ahora sern sobre el servidor principal, de momento no habr ningn servidor virtual congurado. ! El chero de conguracin se encontrar en /etc/httpd/conf/httpd.conf

2.1. Establecer los puertos de escucha ! Para congurar los puertos de escucha lo podemos hacer con la directiva Listen y podemos congurar los puertos de escucha e incluso podemos especicar puertos para una determinada IP. ! Comprobaremos ahora que solo escucha en el puerto 80 por defecto antes de cambiar la conguracin. Hay que tener en cuenta que si no se especica el puerto en la barra de direccin del navegador siempre usa el puerto 80 que es el estndar de HTTP.

______________________________________________________________________________________ Jdyb - Marzo 2013! 4 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

Cambiamos ahora la conguracin para escuchar tambin en el puerto 8080.

Arrancaremos el servidor y comprobaremos que la conguracin ha tenido efecto.

______________________________________________________________________________________ Jdyb - Marzo 2013! 5 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Ahora lo que haremos ser levantar una interfaz virtual en la mquina virtual con otra IP, esto lo haremos creando un chero con el contenido especicado en el directorio / etc/syscong/network-scripts/ifcfg-eth0:0.

! Y para la nueva IP creada vamos a escuchar en el puerto 8000 y comprobaremos que en el puerto 8000 solo se escucha con esa direccin IP.

______________________________________________________________________________________ Jdyb - Marzo 2013! 6 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

______________________________________________________________________________________ Jdyb - Marzo 2013! 7 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

2.2. Establecer pginas de inicio predeterminadas ! Normalmente cuando entramos en una web especicando solo el directorio se suele mostrar la pgina index con cualquier extensin, pero esto no pasa sin ninguna razn de ser, esto es debido a una conguracin de apache, en concreto ser debido a la directiva DirectoryIndex. En los siguientes ejemplos veremos como podemos congurarla y veremos su efecto. ! Comentar que hemos diseado un pequeo HTML sencillo que nos indique en el lugar en el que estamos y variaciones del mismo sern usadas durante toda la prctica.

! Copiaremos este archivo con el nombre de index.html al directorio que se indica en el mismo html.

______________________________________________________________________________________ Jdyb - Marzo 2013! 8 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Observaremos la directiva que viene por defecto como DirectoryIndex y intentaremos entrar ahora en la misma direccin que lo intentamos antes, pero no haba ninguna pgina por lo que responda con las plantillas de apache.

! Editemos ahora la directiva y reiniciemos el servidor, veremos como ahora no funciona, habr que cambiar el nombre o copiar el archivo de antes para que se llama principal.html.

______________________________________________________________________________________ Jdyb - Marzo 2013! 9 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

2.3. Directiva Indexes ! Esta directiva tiene como n permitir ver el contenido de un directorio. Normalmente cuando entramos en una URI sin especicar el nombre del archivo nos muestra la pgina index como ya hemos comentado, y si no la hay suele dar un fallo, porque no se permite ver el contenido de un directorio, sin embargo con la directiva que vamos a estudiar en este apartado se puede permitir visualizar el contenido de un directorio. ! Nosotros vamos a crear un directorio dentro de /var/www/html que recibir el nombre de directoio_indexable, por supuesto lo primero que habr que hacer es crearlo y no le pondremos ninguna pgina index porque sino no podremos ver el contenido.

! Si observamos la conguracin por defecto de apache podremos encontrar la directiva Indexes dentro de un apartado Directory. Podemos ver que se encuentra detrs de la directiva Options que se usa para indicar las caractersticas que tiene un determinado directorio. Manual de Apache.

______________________________________________________________________________________ Jdyb - Marzo 2013! 10 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Si comentamos esta directiva obtendremos el siguiente resultado, que como hemos comentado es el error que nos indica que est prohibido listar el contenido de un directorio. El cdigo de error de HTTP en este caso ser 403.

! Ahora subiremos 5 imgenes al servidor va SFTP y vamos a ver ahora su contenido.

! Dejaremos de nuevo la directiva como estaba por defecto y observaremos el resultado en el navegador, que como veremos lo que hace es mostrar el contenido del directorio usando una plantilla que tiene por defecto.

______________________________________________________________________________________ Jdyb - Marzo 2013! 11 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

2.4. Alias de directorio ! Un alias se usa para poder usar contenido que est en otros directorios del disco, posiblemente fuera del DocumentRoot pero queremos acceder a ellos por ejemplo en nuestras pginas HTML. ! Para este propsito crearemos un directorio /var/www/ContenidoAlias que ser el que albergue el contenido que se va a usar.

! Lo primero que vamos ha hacer es mostrar el HTML que vamos a usar para este ejemplo que lo situaremos en el DocumentRoot /var/www/html/html_alias.html.

______________________________________________________________________________________ Jdyb - Marzo 2013! 12 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! En el HTML mostrado hemos podido ver que hemos intentado acceder a las imgenes en primer lugar sin usar ningn alias. Y ahora veremos el resultado que nos da el navegador. Puede ser una buena opcin en este caso usar el inspector web para comprobar los errores que se producen. En la imagen capturada explicamos el problema.

______________________________________________________________________________________ Jdyb - Marzo 2013! 13 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Ahora que ya hemos visto la necesidad de un alias vamos a crear uno en el chero de conguracin de apache y cambiamos el HTML para que use el alias.

! Ahora comprobamos de nuevo el resultado con el navegador y veremos que sigue habiendo un error, pero esta vez va a ser distinto.

______________________________________________________________________________________ Jdyb - Marzo 2013! 14 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! El error que hemos obtenido se produce porque en un servidor web bien congurado no se debera tener acceso a los recursos que se encuentran fuera del DocumentRoot. Si nos vamos al chero de conguracin de Apache veremos que est congurado de esta manera (lo cierto es que he puesto yo las reglas para demostrar el error, por defecto no estaban puestas).

! Si tenemos estas directivas puestas que sera la conguracin ms segura lo que habra que hacer sera permitir nicamente el directorio /var/www/ContenidoAlias/ y eso es lo que vamos a hacer.

______________________________________________________________________________________ Jdyb - Marzo 2013! 15 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

2.5. Uso de redirecciones ! En este apartado haremos uso de la directiva Redirect, la que nos va a permitir hacer redirecciones explcitas (el navegador se va a dar cuenta de la redireccin al recibir el cdigo de redireccin), este cdigo de redireccin normalmente va a ser un 302, siendo un 301 una redireccin permanente. ! Abriremos el chero de conguracin de apache y haremos la redireccin con la directiva Redirect. Posteriormente reiniciamos el servidor.

! Ahora lo que vamos a hacer es intentar ver la respuesta que da el servidor web cuando se introduce el URI http://172.16.183.100/jdiezfoto, ya que si directamente
______________________________________________________________________________________ Jdyb - Marzo 2013! 16 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

hacemos la prueba en el navegador nos mostrar el destino porque la redireccin es bastante rpida. Usaremos la utilidad propia de VMWARE para capturar trco y trataremos de visualizar su contenido con Wireshark. ! El ejecutable de la utilidad en mac lo encontramos en /Applications/VMWare Fusion.app/Contents/Library. Y se ejecuta de la siguiente manera y si se ejecuta como root hay que tener cuidado porque habr que cambiarle los permisos si se quiere abrir con una instancia de Wireshark que no se est ejecutando como root. Lo lgico ser hacer propietario del archivo a tu usuario habitual y darle permisos 644 al archivo pcap. ! "#$%&'()*&+,,'-!).!/+-'0(1-+1234+536-07+$18039!$%&'(:

! A continuacin mostraremos el cdigo de redireccin dentro de los paquetes y veremos que como ya comentamos ser un cdigo 302.

______________________________________________________________________________________ Jdyb - Marzo 2013! 17 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! A continuacin cambiamos la conguracin en apache de la siguiente manera para hacer la redireccin permanente, repetimos el proceso de captura y comprobamos que el cdigo de redireccin ha cambiado a 301 que es el cdigo de la permanente.

______________________________________________________________________________________ Jdyb - Marzo 2013! 18 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Bueno, y aunque no tenga mucho sentido por la rapidez mostramos una captura del navegador.

______________________________________________________________________________________ Jdyb - Marzo 2013! 19 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

3. Conguracin de Servidores Virtuales


! En este apartado se dentro de Apache. vern conguraciones relativas a los servidores virtuales

! En primer lugar se nos indica que creemos varios directorios que sern los puntos de entrada para los diferentes servidores virtuales, los puntos de entrada como ya hemos visto anteriormente se especicarn con la directiva DocumentRoot. Se nos pide crear los directorios siguientes.

/var/prueba/web1 /var/prueba/web2 /var/prueba/web3 /var/prueba/miempresa.com /var/prueba/otraempresa.com

! En cada uno de los directorios creados crearemos una pgina de inicio index.html similar a las que hemos creado anteriormente para otros ejemplos. A continuacin mostramos los comandos seguidos para el proceso de creacin de esta estructura.

! En cada directorio de los que hemos creado hemos incluido como ya hemos comentado in chero index.html como podemos ver en la siguiente captura.

______________________________________________________________________________________ Jdyb - Marzo 2013! 20 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

3.1. Servidores virtuales basados en puerto ! Podemos congurar diferentes servidores virtuales que escuchen en puertos diferentes, de manera que dependiendo del puerto de entrada se acceda a servidores virtuales diferentes. Haremos las siguientes conguraciones.

Puerto 80: /var/prueba/web1 Puerto 1080: /var/prueba/web2 Puerto 8080: /var/prueba/web3

! En el caso del servidor virtual del puerto 80 hay que tener en cuenta que haciendo esto el servidor principal dejar de responder peticiones ya que cuando hay servidores
______________________________________________________________________________________ Jdyb - Marzo 2013! 21 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

virtuales se evalan primero estos como puntos de entrada y posteriormente el principal si no hay coincidencias con los virtuales, y como en este caso hay un virtual que ocupa el puerto 80 (el mismo que el servidor principal), el principal dejar de responder. ! Ahora iremos al chero de conguracin principal de Apache e incluiremos la conguracin de los servidores virtuales, en principio para lo que vamos a hacer debera valer con especicar en cada uno de ellos el punto de entrada o DocumentRoot, y el resto de opciones sern heredadas del servidor principal como por ejemplo la opcin DirectoryIndex que en el servidor principal se especica que ha de ser index.html. ! Estas conguraciones las podramos hacer por ejemplo en chero de conguracin separados para cada servidor virtual ya que si las conguraciones de cada uno de ellos fueran complejas el chero principal de conguracin de apache adquirira un tamao mayor y por tanto ms complejo de gestionar. Si se hiciera esto simplemente habra que hacer los includes correspondientes en el chero principal y asegurarnos de que la directiva <Directory /> que ya vimos restringe el acceso para que nada quedara expuesto. ! Para congurar los servidores virtuales habr que usar la directiva VirtualHost y poner la condicin de entrada, que en este caso ser cualquier IP y especicando el puerto. Otra cosa que ser importante para hacer es asegurarnos de que el punto de entrada est abierto para que apache acceda porque recordemos que incluimos la directiva Directory para restringir a todo lo que estuviera por encima del punto de entrada del servidor principal. ! Respecto a los permisos de los directorios se ha incluido uno especco para cada punto de entrada porque podra ser que en el directorio /var/prueba se quisieran poner otras cosas a las que no se debiera acceder como conguraciones, cuando ms especcos sean los permisos ms controlado tendremos el entorno. ! Finalmente no ha de olvidarse que actualmente el servidor solo est escuchando en el puerto 80, por lo que si abrimos servidores virtuales en otros puertos habr que congurar el servidor para que escuche los puertos que deseemos, en caso de no hacerlo el navegador nos dar un error de conexin y eso ser porque el servidor no est escuchando nada ms que en el puerto 80. ! A continuacin se muestra una captura con las conguraciones aplicadas y posteriormente se incluirn las capturas correspondientes del navegador para probar las conguraciones aplicadas.

______________________________________________________________________________________ Jdyb - Marzo 2013! 22 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

______________________________________________________________________________________ Jdyb - Marzo 2013! 23 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

______________________________________________________________________________________ Jdyb - Marzo 2013! 24 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

3.2. Servidores virtuales basados en direccin IP ! Para este apartado vamos a necesitar una segunda direccin IP, ya la tenemos creada del apartado de la directiva Listen. No obstante lo comprobamos y hacemos un ping.

! ! Una vez que hemos comprobado que disponemos de la direccin IP activa podemos usarla para crear un servidor virtual que atienda las peticiones a dicha IP. Para ello habra que indicar al servidor que escuche en dicha direccin IP aunque no va a hacer falta porque el servidor por defecto escucha en todas las direcciones IP a no ser que haya alguna directiva Listen que especique las direcciones. ! Habr que crear la directiva para que haya un servidor virtual que atienda las peticiones a dicha IP. Todas las reglas del apartado anterior las borramos para que el servidor principal atienda todas las dems peticiones. En este apartado solo trabajaremos con el puerto 80. ! Por supuesto, de la misma manera que en el apartado anterior habr que permitir la entrada al apache al punto de entrada del servidor virtual. A continuacin mostramos la conguracin y las pruebas realizadas.

______________________________________________________________________________________ Jdyb - Marzo 2013! 25 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Tambin podemos poner ms explcitamente que al ser servidores basados en IP estn escuchando en cualquier puerto como ya hemos comentado, y adems, como ya se ha comentado el servidor solo est escuchando en el puerto 80. Pero quizs de una de estas dos formas podra estar ms claro; siempre conservando la directiva Directory que hemos puesto en la captura anterior para abrir el paso hacia la raz del proyecto web.

______________________________________________________________________________________ Jdyb - Marzo 2013! 26 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

3.3. Servidores virtuales basados en nombre ! En este apartado estudiaremos la conguracin de servidores virtuales basados en nombre en apache. Este uso posiblemente sea mucho ms extendido que los dos casos anteriores debido al coste econmico de tener varias IP pblicas propias, esta conguracin que vamos a ver es lo que permite que haya varias pginas web en una solo mquina con una misma direccin IP pblica. ! Lo primero que haremos ser, igual que en los pasos anteriores, quitar la conguracin de servidores virtuales del apartado anterior. Ahora todas las peticiones irn dirigidas a la IP principal y al puerto 80. ! Es importante saber que si activamos el uso de servidores virtuales basados en nombre el servidor principal dejar de recibir peticiones porque ahora se ltrarn por la cadena de URL, en caso de que no haya ningn servidor virtual que coincida con la cadena de URL ahora las peticiones ya no irn al servidor principal sino que irn al primer servidor virtual que haya denido. ! Lo primero que habr que hacer es activar los servidores virtuales basados en nombre y posteriormente denir cada uno de ellos con la directiva ServerName y ServerAlias que denirn la URL de entrada. En este caso vamos a crear dos que sern miempresa.com y otraempresa.com, de ambos dos ya hemos creados sus puntos de entrada al principio de este apartado.

! Ahora lo que hay que saber es que estos dominios inventados no existen o si existen nuestro DNS desde luego no nos lo va a resolver como la IP de la mquina virtual, por tanto no estamos preparados todava para hacer las pruebas de la conguracin.
______________________________________________________________________________________ Jdyb - Marzo 2013! 27 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Para hacer las pruebas tenemos dos opciones, una es usar el archivo de hosts de la mquina cliente para que miempresa.com y otraempresa.com apunten a la IP de la mquina virtual, o, ya que hemos estudiando la conguracin de un servidor DNS bind podemos congurar las zonas en un servidor DNS y poner como servdor principal de DNS en la mquina antriona la IP de la mquina virtual donde hayamos levantado el servidor DNS. Hemos elegido la opcin de montar el servidor DNS y a continuacin mostramos la conguracin de las zonas de resolucin directa que hemos congurado.

______________________________________________________________________________________ Jdyb - Marzo 2013! 28 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! A continuacin ponemos la IP de la mquina virtual como servidor DNS de la mquina antriona, para ello nos iremos a la conguracin de red y conguraremos manualmente los servidores DNS.

______________________________________________________________________________________ Jdyb - Marzo 2013! 29 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Ahora deberamos de poder realizar las pruebas de los servidores virtuales congurados. Probaremos a entrar en la web miempresa.com y www.miempresa.com.

! Realizaremos ahora la prueba para el caso del segundo virtual creado para otraempresa.com.

______________________________________________________________________________________ Jdyb - Marzo 2013! 30 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Ahora comprobaremos que si intentamos acceder usando la IP ya no responde el servidor principal sino que responder el primero de los servidores virtuales, por tanto deber responder el servidor virtual de miempresa.com.

! De la misma manera que si denimos otro nombre de dominio en el servidor DNS que no est dado de alta en los servidores virtuales tambin debera responder el primero
______________________________________________________________________________________ Jdyb - Marzo 2013! 31 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

de ellos. Vamos a denir una nueva zona en el servidor DNS que se llamar empresa.com.

! Vamos a hacer ahora la prueba para el dominio empresa.com y deber responder el servidor virtual de miempresa.com que ser el primero de ellos ya que el servidor virtual de empresa.com no est denido.

______________________________________________________________________________________ Jdyb - Marzo 2013! 32 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Si queremos evitar este comportamiento lo que podemos hacer es poner un nuevo servidor virtual el primero de todos que ser el encargado de mostrar una pgina por defecto. Por ejemplo esto podra ser til en un entorno de hosting compartido, en el que el primer servidor virtual mostrara una pgina del proveedor de servicios. ! Nosotros hemos creado un nuevo directorio en /var/prueba/proveedor que ser el punto de entrada para nuestro servidor virtual y hemos metido un index.html dentro del mismo para identicarlo.

______________________________________________________________________________________ Jdyb - Marzo 2013! 33 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Ahora pasamos a crear la conguracin del servidor virtual del proveedor y la ponemos encima de las dems.

! Haremos pruebas similares a las de antes para comprobar que ahora si intentamos entrar con nombres para los que no hay servidores virtuales entramos por el primero de ellos que ser el que acabamos de preparar.

______________________________________________________________________________________ Jdyb - Marzo 2013! 34 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

______________________________________________________________________________________ Jdyb - Marzo 2013! 35 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

4. Acceso restringido por contrasea


! En este apartado se va a estudiar como congurar un directorio protegido por contrasea, de manera que cuando vayamos a acceder con el navegador a un directorio especicado se nos pida la contrasea. ! Lo primero que tendremos que hacer ser decidir el directorio que queremos proteger, que en este caso ser /var/www/html/protegido. Dentro del mismo directorio colocaremos al igual que hemos hecho en anteriores ocasiones un archivo index.html

! Ahora habr que crear un chero .htaccess que indique una conguracin especca para este directorio. Y ahora explicaremos porque este tipo de cheros funcionan. A continuacin mostramos el contenido del chero creado de conguracin. ! En el chero de conguracin (.htaccess) se indica el chero donde se encuentran las contraseas que las hemos guardado en el mismo directorio protegido, por otra parte se indica un ttulo para el directorio protegido y el tipo de autenticacin que ser por contrasea. La ltima sentencia lo que hace es congurar las peticiones POST y GET para que sea requerida la autenticacin en dichas peticiones.

______________________________________________________________________________________ Jdyb - Marzo 2013! 36 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Para crear el chero de contraseas lo hemos hecho con el siguiente comando. El usuario ser ceu y la contrasea practicas. ! 7(93**.5! )0! ;*+! '*! ,+07'-1! &<'$1! &<'$1=! #$3-#...#7(%4# 9-1('>+51#"7(93**.5!<*'-!;0'<=

! Los cheros de tipo .htaccess suelen ser usados para sobreescribir conguracin del servidor especca para ciertos directorios y tienen la gran ventaja que la conguracin que se haga en estos cheros se aplica de manera inmediata sin que sea necesario reiniciar el servidor. Para hacer este uso hay que hacer dos cosas, en primer lugar habilitar su uso y en segundo lugar asegurarnos de que se permite su acceso por apache ya que en caso contrario cualquier usuario podra bajarse los archivos va web sin ningn esfuerzo. ! Explicado esto vamos a centrarnos ahora en congurar lo explicado en el chero de conguracin principal de apache. Observamos que en la conguracin por defecto de apache no se permite la sobreescritura de opciones para el directorio html, por tanto habr que habilitarla para nuestro directorio concreto.

______________________________________________________________________________________ Jdyb - Marzo 2013! 37 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Sin embargo observamos otras dos conguraciones, la primera de ellas que especica el nombre de los archivos que se usan para realizar esta sobreescritura de opciones y despus vemos otra directiva que evita que cualquier archivo que empiece por .ht (sin las comillas) pueda ser accedido, que eso es justo lo que queramos como hemos comentado anteriormente.

! Aadimos ahora la conguracin que hemos dicho que nos haca falta para nuestro directorio de manera que se permita la sobreescritura de opciones, al menos en las opciones de autenticacin y despus de esto si que habr que reiniciar el servidor ya que hemos tocado una opcin del archivo de conguracin principal de apache.

______________________________________________________________________________________ Jdyb - Marzo 2013! 38 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! ! Intentamos ahora acceder al directorio protegido con el navegador y observamos los resultados.

______________________________________________________________________________________ Jdyb - Marzo 2013! 39 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Si cancelamos el cuadro de dilogo de la contrasea vemos que no nos dar un error indicando que es un directorio prohibido.

! Y adems observamos que el cdigo HTTP para este error es el 401 que indica que el directorio requiere autenticacin.

______________________________________________________________________________________ Jdyb - Marzo 2013! 40 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! ! Ser interesante probar ahora que no podemos acceder a los archivos .htaccess ni .htpasswd aunque nos hayamos autenticado.

______________________________________________________________________________________ Jdyb - Marzo 2013! 41 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Si comentamos la siguiente conguracin en el archivo de conguracin de apache podremos comprobar lo que pasa.

______________________________________________________________________________________ Jdyb - Marzo 2013! 42 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Como hemos podido comprobar sin la directiva anterior dejamos al descubierto los archivos que empiecen con .ht con su correspondiente riesgo, que aunque la contrasea no se encuentra en plano sino representada por criptografa en un solo sentido si que damos la pista del nombre de usuario.

______________________________________________________________________________________ Jdyb - Marzo 2013! 43 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

5. Partes opcionales
5.1. Mdulo Rewrite ! Este mdulo, como se puede deducir por su nombre tiene la nalidad de reescribir URLs, el mdulo se ejecuta despus de cualquier peticin al servidor y acta en base a reglas, se podra decir que es como una especie de ltro. Para hacer esta reescritura de URLs usa condiciones basadas en expresiones regulares que se pueden aplicar a bastantes campos como la URL, la cadena de peticin, o los campos de la cabecera HTTP. ! Sus usos pueden ser de muchos tipos, se puede usar como mecanismo de seguridad, se usa tambin para el SEO (Search Engine Optimization), para forzar conexiones HTTPS. ! Lo de usarlo para el SEO a lo mejor ha quedado un poco sin denir, en el SEO es muy aconsejable que una pgina miempresa.com sea visible como miempresa.com o como www.miempresa.com, una de las dos opciones, pero no las dos, ya que para un buscador seran como dos pginas y lo vera como contenido duplicado. ! En los gestores de contenido o CMS muchas veces los artculos tienen una URL similar a esta miempresa.com/post.php?postid=90, estaremos deacuerdo en que esta no es una URL muy amigable, este aspecto tambin es tenido en cuenta por los buscadores y para esto tambin se puede usar este mdulo. ! En esta web tenemos un ejemplo sencillo, por resumir podemos decir que tenemos una especie de agenda. ! ! URL amigable: miagenda.com/clientes/juan URL fea (la que entiende php): miagenda.com/clientes.php?id=juan

! A nosotros lo que nos interesar es que los visitantes entren por la primera opcin, pero nuestra aplicacin web lo que entiende son las peticiones basadas en parmetros de URL, luego necesitaremos traducir estas URL amigables a lo que nuestra aplicacin entiende. Lo podemos hacer por ejemplo de esta manera. ! ! ! ! ! ! ! ?!60(+$3-!@'.-+('A&>+&' @'.-+('A&>+&'!1& ?!@''*0-+B+-!43!C@D!*14+0+(353!91-!'4!<*<3-+1 ?!!!A&(-353E!!04+'&('*#FGHI@A# ?!!!234+53E!04+'&('*"979J+5KFGHI@A @'.-+('@<4'!L04+'&('*#MN.OP#JQ!04+'&('*"979J+5KQR

______________________________________________________________________________________ Jdyb - Marzo 2013! 44 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Como ya hemos comentado este mdulo basa su uso en expresiones regulares, en este ejemplo tenemos en primer lugar una condicin en segundo lugar la URL nal a la que se quiere llegar, veamos esas dos partes en detalle.


! !

^: Comienzo de la expresin clientes/: La URL solicitada comienza por clientes/ (\w+): Captura cualquier letra que siga y la guarda en la variable $1 /?: Indica que opcionalmente la URL puede acabar en barra, la interrogacin indica opcionalidad

En lo que se reere a la segunda parte vemos a continuacin algunos detalles.

clientes.php?id=: Ser la cadena de texto por la que empieza la URL $1: Aqu recordemos que habamos guardado las letras de la condicin por lo tanto si guardamos juan ahora se aadir al nal.

! Despus de este pequeo ejemplo ya podemos describir su funcionamiento ms formalmente, en primer lugar comentar que este tipo de sentencias se suelen colocar en los chero .htaccess, en primer lugar por tenerlas localizadas para el directorio concreto y tambin por la ventaja que ya se coment de no tener que reiniciar el servidor de aplicaciones para aplicar las conguraciones. Las sentencias suelen tener un parecido como el que se muestra, lo primer se activa el motor de reescritura, posteriormente suelen ponerse las condiciones, que podrn ser como las que hemos mostrado, sencillas o en varias lneas y nalmente la URL en la que hay que traducirlo. ! Continuando con otros usos de los que hemos descrito tenemos el ejemplo para forzar conexiones HTTPS. ! ! ! ! ! ?S1-T3-!UVV82 @'.-+('A&>+&'!G& @'.-+('W1&5!XYUVV82Z!1,, @'.-+('@<4'!M"[P!7((9*E##XYUVV8\UG2VZXY@A]CA2V\C@^Z ?S+&!,1-T3-!UVV82

______________________________________________________________________________________ Jdyb - Marzo 2013! 45 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Muestro tambin aqu otro ejemplo que puede ser til como control de seguridad en un CMS, para evitar inyecciones de cdigo, como podemos ver con este mdulo estamos asegurando mucho un sistema ya que ni siquiera estamos conando en que la aplicacin sea robusta y no deje hacer determinado tipo de operaciones maliciosas, estamos parando las peticiones a nivel de URL, las peticiones no llegan ni siquiera a la aplicacin. ?^&+0+1!-'>43*!*'><-+535!01&(-3!+&_'00+1&!015+>1 @'.-+('A&>+&'!G& ! ?!*+&!300'*1!3!9-10#*'4,#'&$+-1& @'.-+('W1&5!XY]CA@`\2V@^FaZ!9-10#*'4,#'&$+-1&!bG@c ! ?! B41d<'3-! 0<34d<+'-! *0-+9(! d<'! (-3('! 5'! '*(3B4'0'-! <&! $341-! %1*W1&,+>!3!(-3$e*!5'!<&3!C@D @'.-+('W1&5!XY]CA@`\2V@^FaZ!%1*W1&,+>\b3)T6)f\cYRghRZMKiNXj/P!bG@c ! ?! B41d<'3-! 0<34d<+'-! *0-+9(! d<'! (-3('! 5'! 014103-('! 0k5+>1! 015+,+0351!B3*'lm\'&015'!3!(-3$e*!5'!<&3!C@D @'.-+('W1&5!XY]CA@`\2V@^FaZ!B3*'lm\'&015'"[M"[P!bG@c ! ?!B41d<'3!0<34d<+'-!*0-+9(!d<'!+&04<_3!43!(3>!;*0-+9(=!'&!43!C@D @'.-+('W1&5!XY]CA@`\2V@^FaZ!M;iXjWP"[*0-+9("[M=iXjAP!bFWgG@c ! ?!B41d<'3!0<34d<+'-!*0-+9(!d<'!(-3('!5'!'*(3B4'0'-!43!$3-+3B4'!8U8! aDGI6D2!3!(-3$e*!5'!<&3!C@D @'.-+('W1&5!XY]CA@`\2V@^FaZ!aDGI6D2MKibiNXbn)o6)fcYnghZP!bG@c ! ?! B41d<'3! 0<34d<+'-! *0-+9(! d<'! (-3('! 5'! %15+,+03-! <&3! $3-+3B4'! \@A]CA2V!3!(-3$e*!5'!<&3!C@D @'.-+('W1&5!XY]CA@`\2V@^FaZ!\@A]CA2VMKibiNXbn)o6)fcYnghZP ! ?!%3&53!3!(153*!43*!9'(+0+1&'*!B41d<'353*!3!43!9p>+&3!9-+&0+934!01&! <&!'--1-!5'!mnj!8-17+B+51 @'.-+('@<4'!LM"[PQ!+&5'q"979!bSgDc ?S+&!-'>43*!*'><-+535!01&(-3!+&_'00+1&!015+>1

! Otro ejemplo podra ser el caso de migraciones, si por ejemplo cambisemos el sistema de nuestra web y la URL del feed cambiara no quisiramos que a todos nuestros lectores les dejara de funcionar el feed, lo ideal sera que el cambio fuera transparente a los lectores y por supuesto ms a los buscadores. Y en este caso vemos que hacemos la
______________________________________________________________________________________ Jdyb - Marzo 2013! 46 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

reescritura adems enviando un cdigo de redireccin 301 que es la permanente para indicar a buscadores que el cambio va a ser permanente. ?@'5+-'00+1&!3&(+><1!,''5 @'.-+('A&>+&'!G&! @'.-+('W1&5!XY]CA@`\2V@^FaZ!qK-** @'.-+('@<4'!LM"[PQ!7((9E##..."%+'%9-'*3"01%#,''5#J!b@KjnRgDc ?S+&!-'5+-'00+1&!3&(+><1!,''5 ! Con los ejemplos expuestos pienso que ya se puede ver la gran utilidad del mdulo y comprender el porque de su importancia y extendido uso. ! Para ms informacin podemos ver la pgina del mdulo en la web de apache donde indican ms ejemplos de uso y ms opciones en detalle. ! http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

______________________________________________________________________________________ Jdyb - Marzo 2013! 47 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

5.2. Mdulo Proxy ! Un servidor Proxy tiene como objetivo recibir las peticiones de un terminado protocolo, web por ejemplo y hacer el mismo las peticiones al destino nal. Esto puede tener varias utilidades como por ejemplo actuar de cach o hacer un ltrado de las peticiones.

Proxy 2

o Go T: GE

es le.

Re

sp

ta es

o Go

gle

4 GET Google.es 1

Re

sp

ue

sta

Go o

gle

No realiza la peticin, destino prohibido Proxy

Pgina XXX

Me

ns

aje

Er

ro r

GET: Pgina XXX

______________________________________________________________________________________ Jdyb - Marzo 2013! 48 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

Google es una pgina muy consultada, se puede tener en cach y no son necesarias tantas peticiones al exterior. Si no est en la cach siempre se puede hacer la peticin normalmente desde el proxy como en el primer caso Proxy

2 3

Cach

1 4 GET: Google.es

! ! Antes de seguir con la descripcin del mdulo se ha de tener claro que existen dos modalidades de proxy claramente diferenciadas.

Forward Proxy: Este modo es probablemente al que estn acostumbrados los usuarios que trabajan en organizaciones puesto que es muy usado para proveer acceso al exterior mediante rewall, ltros o algn otro mecanismo de seguridad. Consiste en que el cliente realiza una peticin a un servidor web ejemplo.com. Para ello usa el servidor proxy, que recibe la peticin al servidor ejemplo.com desde el cliente y redirecciona la peticin al servidor de ejemplo.com, posteriormente recibir la respuesta y se la devolver al cliente. Por tanto este modo de proxy es un intermediario en la comunicacin y es un buen lugar para aprovechar e implementar los mecanismos de seguridad como ya se ha comentado. Es el modo que mejor se describe con los grcos anteriores. Finalmente, en este tipo de proxy el cliente necesita estar correctamente congurado para usarlo, es una incomodidad y un inconveniente de este modo. Reverse Proxy: Este tipo de proxy se comporta como un intermediario entre cliente y servidor, pero en este caso el cliente realiza las peticiones al servidor proxy y el servidor proxy las trata internamente. El cliente recibe las respuestas como si estas provinieran de un servidor real. El proxy realiza las redirecciones a otros servicios de forma interna y de forma transparente para

______________________________________________________________________________________ Jdyb - Marzo 2013! 49 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

el cliente. El cliente realiza las peticiones al servidor proxy y ste recibir las respuestas pero realmente no sabe cual es el origen de su respuesta. ! Resumiendo, en el primer modo el cliente conoce el proceso de redireccin que ejecutar el proxy, sabe el destino de su peticin; mientras que en el segundo modo realiza un peticin al proxy pero no sabe lo que ste har con su peticin. ! Ahora que ya hemos visto en lneas generales en que consiste un servidor proxy explicaremos de mejor manera el mdulo. El mdulo mod-proxy tiene como nalidad actuar de la manera que se ha descrito, como un servidor proxy. ! La implementacin de un servidor proxy depende directamente del protocolo sobre el que se quiera usar. En el caso del mdulo de Apache se soportan AJP, FTP, CONNECT y HTTP. ! Para ponerlo en marcha lo primero que hay que hacer es cargar el mdulo principal mod-proxy y posteriormente se necesitan cargar los sub-mdulos para los diferentes protocolos. En nuestro caso implementaremos el proxy sobre HTTP. No ha habido que instalarlos porque ya estaban instalados y cargados por defecto en la conguracin del paquete rpm con el que hemos instalado apache.

! Empezaremos poniendo el ejemplo de conguracin que nos servir para implementar un forward proxy, es decir, el primer modo que hemos explicado. Para ello aadiremos la siguiente directiva de conguracin dentro del archivo de conguracin de Apache. Se pueden agregar las directivas dentro de un host virtual, pero lo vamos a hacer en la conguracin global del servidor. ! ProxyRequests: Esta directiva permite establecer si el proxy actuar como un proxy de tipo forward o no. En el caso de que su valor sea On, Apache automticamente habilitar el modulo mod_proxy en modo forward. ! ProxyVia: El Header HTTP via tal como se dene en el estndar del protocolo HTTP, es utilizado en las peticiones HTTP para informar al servidor de los proxies mediante los cuales ha pasado la peticin enviada por el cliente. En este caso, esta directiva permite controlar este campo de las peticiones realizadas por los clientes. Los valores de esta directiva son: Off (No se aplica ningn tipo de procesamiento si una peticin o respuesta contiene el Header via), On (Indica que cada peticin y respuesta tendr el header via con la informacin del proxy por el que est pasando la peticin.
______________________________________________________________________________________ Jdyb - Marzo 2013! 50 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Con esta conguracin todas las peticiones sern tratadas por el proxy y se admitirn a todos los clientes. Veamos un ejemplo de funcionamiento. Se tiene dado de alta en el servidor web de apache un virtual host para el dominio pruebas.com y el servidor DNS resuelve el dominio correctamente. ! Reiniciamos el servidor web y arrancamos el servidor DNS.

______________________________________________________________________________________ Jdyb - Marzo 2013! 51 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Conguraremos en nuestra mquina antriona el proxy web con la direccin y puerto de apache.

! Tambin habr que congurar en la mquina virtual el dns para que use el suyo propio para poder resolver la direccin de pruebas.com. Lo haremos en el chero /etc/ resolv.conf.

! Por la experiencia puede ser que apache memorice los servidores DNS de la mquina en la que est en su arranque, por lo que despus de cambiar este chero nos daba un error diciendo que no poda resolver la peticin a pruebas.como aunque si estaba congurado el DNS en el chero.

______________________________________________________________________________________ Jdyb - Marzo 2013! 52 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Despus de reiniciar el servidor http despus de realizar el cambio de los DNS si funcion correctamente.

! Ahora comprobaremos que al hacer una peticin a pruebas.com se muestra la pgina correctamente en el navegador. Si miramos en el servidor en el log de errores veremos que el cliente que intenta recuperar el favicon es la propia mquina virtual.

! ! Es posible que se pueda ver ms claro si hacemos una peticin a un recurso externo ya que en este caso puede ser un poco complicado verlo porque quien hace la peticin al servidor web la hace a s mismo ya que el servidor proxy y el servidor apache estn en la misma mquina. Conguremos por ejemplo en la mquina virtual el DNS de google para poder hacer una peticin hacia el exterior. Y posteriormente mostramos el resultado de una captura de trco.

! Ahora observaremos que nosotros hemos realizado una peticin a un recurso externo, pero no la hemos obtenido de dicho recurso porque habamos congurado el proxy en la mquina antriona. Veremos que es el proxy quien hace la peticin y posteriormente devuelve el resultado obtenido a la mquina antriona. La peticin como
______________________________________________________________________________________ Jdyb - Marzo 2013! 53 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

en otras ocasiones ha sido realizada a blog.jdiezfoto.es y la direccin de la mquina antriona es la .1 y la de la mquina virtual donde est alojado el servidor proxy la .100.

! Una vez que hemos visto la conguracin del forward proxy podemos pasar a ver un ejemplo de proxy reverso. ! ProxyPass: Esta directiva es de vital importancia cuando se intenta crear un proxy reverso, ya que permite mapear recursos a servidores externos de forma local, es decir, un recurso que se encuentra ubicado en un servidor remoto, puede ser accedido por un cliente de forma local, de este modo el proxy acta como un mirror. Dicho con con un ejemplo, un cliente realiza una peticin a un recurso y esta directiva se encarga de redirigir la peticin a otro recurso que se encuentra en otro servidor (o incluso en el mismo servidor local) de forma que el cliente no sabe realmente a donde va destinada su peticin, ya que el proxy reverso se encarga de procesar tanto la peticin como la respuesta al recurso externo. ! ProxyPassReverse: Se encarga de establecer la URL en los headers HTTP: Location, Content-Location y URI en las respuestas HTTP por redireccin (tpicamente cdigo HTTP 302). Esto es muy importante ya que la modicacin de estas cabeceras que realiza esta directiva, evita que por medio de las redirecciones HTTP que realice el objetivo, se pueda evadir el proxy. El funcionamiento de esta directiva es prcticamente igual al funcionamiento de la directiva ProxyPass ya que se encarga de realizar la redireccin de un recurso local (que se comporta realmente como espejo) a otro recurso externo, ademas, su uso es perfectamente compatible con la directiva ProxyPass. !
______________________________________________________________________________________ Jdyb - Marzo 2013! 54 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

Usamos las dos directivas descritas anteriormente con el siguiente ejemplo.

! Ahora para hacer la prueba nos tenemos que poner en el DNS de la mquina antriona el DNS de la mquina virtual para que se pueda resolver el dominio pruebas.com. El dominio pruebas.com ahora no lo va a resolver el servidor como en el caso anterior. En el caso anterior no haca falta congurar el DNS en la mquina antriona. Ahora siempre vamos a hacer las peticiones al servidor proxy pero no sabremos de donde vienen las respuestas (hablando como cliente).

! Ahora lo que s que habr que congurar en la mquina virtual es un DNS que le permita resolver blog.jdiezfoto.es, por ejemplo los DNS de google.

! Y posteriormente reiniciamos el servidor apache despus de haber hecho la conguracin.

______________________________________________________________________________________ Jdyb - Marzo 2013! 55 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Una vez hecho esto si accedemos a pruebas.com debera de verse como normalmente.

! Sin embargo si accedemos a pruebas.com/jdiezfoto/ como se debera mostrar la web de jdiezfoto, pero no sabemos de donde viene, como podemos ver el navegador sigue en pruebas.com. Puede parecer similar al Alias pero no lo es, recordemos que el alias funcionaba mediante redirecciones y el navegador era consciente de dicha redireccin.

! De hecho, veamos el inspector web y veremos quien es el que pide los recursos de la web, no somos nosotros, es el servidor proxy. Lo que se tiene que llegar a comprender es que no estamos haciendo peticiones a jdiezfoto.es, estamos haciendo peticiones a pruebas.com.

______________________________________________________________________________________ Jdyb - Marzo 2013! 56 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Tambin se puede observar capturando los paquetes que pasan por la red de VMWare como se hizo en un apartado anteriormente.

! Se puede ver que la mquina antriona pide a pruebas.com (el servidor proxy) una determinada direccin, y es el servidor proxy quien internamente la resuelve como est congurado y devuelve el mismo los datos a la mquina antriona. Pero recordemos que hay una gran diferencia con el Forward Proxy, estamos dentro de pruebas.com, no es lo mismo que en el Forward Proxy.

! La informacin para la realizacin de este apartado se ha obtenido de los dos siguientes enlaces principalmente. ! ! http://httpd.apache.org/docs/2.2/mod/mod_proxy.html http://thehackerway.com/2012/11/15/2074/

______________________________________________________________________________________ Jdyb - Marzo 2013! 57 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

5.3. Gestor de estadsticas webalizer ! En este apartado trataremos de instalar un gestor de estadsticas en el servidor. Este programa lo que har ser analizar los log de apache de nuestro servidor para mostrarnos una serie de estadsticas de manera amigable mediante grcas. ! Hay varios gestores de estadsticas open-source, como por ejemplo awstats, webalizer, analog, ... De las posibilidades hemos elegido webalizer porque hemos visto que es el que est en los repositorios ociales de CentOs para la distribucin que estamos usando. ! Lo primero que hemos de hacer es instalarlo, y para ello usaremos yum que es el gestor de repositorios de la distribucin con la que estamos trabajando.

Ahora reiniciaremos el servidor apache para que las conguraciones surtan efecto.

! Observaremos que la instalacin con el gestor de paquetes ha incluido un chero de conguracin en /etc/httpd/conf.d.

! Todos los cheros que hay en este directorio son incluidos dentro de las conguraciones de apache por una directiva que tiene en el chero de conguracin principal.

______________________________________________________________________________________ Jdyb - Marzo 2013! 58 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Este es el contenido del chero de conguracin de webalizer que por lo que vemos lo que hace es aadir un alias para que a partir de /usage en las direcciones se pueda ver el contenido del directorio que sern las estadsticas, el alias lleva a /var/www/ usage. Por defecto como bien dice en los comentarios solo se permite el acceso a localhost.

! El resultado de este chero ser que no se puede acceder desde la mquina antriona.

! Este resultado es debido a que como se ha comentado se deniega el acceso desde cualquier lugar salvo a localhost. Cambiaremos este chero de conguracin por otro nuevo que permita el acceso a todos.

! Podra parecer que falta permitir el acceso al directorio /var/www/usage porque dijimos que se denegaba el acceso a todo el disco al servidor apache en apartados anteriores con una directiva Directory. Sin embargo esta directiva es distinta no la habamos visto hasta el momento, es la directiva Location.
______________________________________________________________________________________ Jdyb - Marzo 2013! 59 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Segn se observa el manual de apache dice que la directiva Location es parecida a la directiva Directory pero para aplicar reglas a ubicaciones que estn fuera del sistema de cheros como es un alias. De hecho hemos probado que si se hace eso mismo pero con una directiva Directory para el directorio /var/www/usage funciona igualmente.

! Ahora tambin habr que ver la conguracin de webalizer que se encuentra en / etc/webalizer.conf. El chero de conguracin es bastante largo pero vamos a mostrar las directivas ms importantes que sern las que le indican donde se guardan los log de apache y donde tiene que dejar el las estadsticas generadas (/var/www/usage/).

! Una directiva pensada para sitios que van a tener varios chero de log de varios meses que es la directiva Incremental.

! Tienes muchas ms opciones todas ellas comentadas en el chero de conguracin, pero las mostradas son las que hemos considerado ms importantes para que el servicio funcione y para researlas. ! Las estadsticas se generarn cada cierto tiempo consultando los log gracias a un cron que ha incluido la instalacin pero es lgico que como lo acabamos de instalar no se
______________________________________________________________________________________ Jdyb - Marzo 2013! 60 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

hayan generado por el momento. Para ello nos dirigimos al directorio /var/www/usage y ejecutamos el comando webalizer.

! Si queremos ver los cron se encuentran en el directorio /etc/cron.daily. Visto esto se puede deducir que se ejecutar diariamente.

! Conguraremos como servidor DNS el de la mquina virtual en la mquina antriona.

! Despus de congurarlo podremos acceder a las estadsticas a partir de por ejemplo el servidor virtual que tenemos activo de pruebas.com y el alias que ser pruebas.com/usage. Y este ser el resultado mostrado en el navegador.

______________________________________________________________________________________ Jdyb - Marzo 2013! 61 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Podemos irnos a las estadsticas de este mes para ver ms detalles y podremos ver las diferentes secciones de las estadsticas del mes.

______________________________________________________________________________________ Jdyb - Marzo 2013! 62 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

______________________________________________________________________________________ Jdyb - Marzo 2013! 63 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

5.4. WebDAV. Web based Distributed Authoring and Versioning. Mdulo mod_dav ! En este apartado se tratar en primer lugar de describir lo que entendemos por WebDAV y posteriormente se realizar la instalacin y conguracin del mdulo para apache. ! Segn la Wikipedia podemos denir WebDAV como un protocolo que proporciona funcionalidades para crear, cambiar y mover documentos en un servidor remoto, generalmente un servidor web. Esto se usa para permitir la edicin de documentos que sirve un servidor web aunque tambin es aplicable a sistemas de almacenamiento generales basados en web. La mayora de los sistemas operativos modernos proporcionan soporte para WebDAV, haciendo que los cheros de un servidor WebDAV aparezcan como almacenados en un directorio local. ! Como un dato ms se podra decir que lo que persigue es la visin original de la web segn su creador Tim Berners-Lee, y est realizado por un grupo de trabajo de la IETF (Internet Engineering Task Force). ! Esto se puede aadir a las funcionalidades de apache con el mdulo que hoy vamos a tratar de congurar: mod_dav. ! El mdulo viene ya instalado con el paquete que hemos instalado y lo podemos ver en /etc/httpd/modules que es un alias.

! Para congurarlo lo primero que hay que hacer es cargarlo desde el chero de conguracin de apache.

! Nos vamos a plantear un ejemplo en el que en un determinado directorio activemos el mdulo de manera que en ese directorio tengamos un punto accesible por varios usuarios o por todo el mundo. ! Aprovechando que tenemos un VirtualHost basado en nombre de pruebas.com vamos a usar el mismo y crearemos un subdirectorio llamado webdav.

______________________________________________________________________________________ Jdyb - Marzo 2013! 64 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Lo primero es indicar el nombre de la base de datos de lock que se utilizar, mediante la directiva DAVLockDB. Lo que indica la directiva no es ni el nombre de un archivo ni el de una carpeta, si no la parte inicial del nombre de un archivo. El mdulo crear un archivo de nombre lockdb.orig y otro de nombre lockdb.xxxxx dentro de la carpeta /var/lib/dav/lockdb, para lo cual es necesario que el usuario bajo el que correo Apache tenga permisos de escritura en ella.

! Ahora editaremos la conguracin del servidor virtual para activar DAV en el directorio creado. Podramos tambin restringir el acceso al directorio de una manera sencilla tal como lo hicimos en el apartado correspondiente. Se permitir la indexacin del contenido del directorio tambin. ! El chero de contraseas lo hemos guardado en web1 para que no est accesible por webdav ya que hemos comprobado que aunque los cheros que empiecen .ht no este permitido servirlos por la directiva que vimos cuando se accede por webdav si que se ve dicho archivo.

______________________________________________________________________________________ Jdyb - Marzo 2013! 65 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

El usuario creado es juan con contrasea juan.

! Ahora quedara por congurar los permisos. La carpeta donde tiene que escribir el apache los cheros de base de datos debe poder ser escrita por el usuario apache y lo mismo pasar con el directorio de webdav.

! Despus de todas las conguraciones ya podemos reiniciar el servidor y despus probarlo. ! Ahora falta probarlo y para ello necesitamos un cliente webdav, en el caso de MacOs X tiene uno integrado, para acceder a el nos dirigimos a la aplicacin nder (explorador de archivos en mac) y accedemos a conectar a servidor en el men Ir.

______________________________________________________________________________________ Jdyb - Marzo 2013! 66 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! Posteriormente introduciremos los datos del servidor y accederemos con el nombre de usuario juan y contrasea juan.

! Si todo ha ido correctamente ahora tendremos la carpeta montada como una unidad del sistema de archivos.

______________________________________________________________________________________ Jdyb - Marzo 2013! 67 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

Lo podemos ver tambin en /Volumes con el terminal.

! Ahora hay que comprobar que se tienen permisos de escritura que por lo que se puede ver en la captura anterior Mac ya ha creado sus cheros ocultos por lo que parece ser que si que se tienen permisos. ! Hemos podido crear un index.html, crear un carpeta nueva y copiar una imagen.

Comprobamos que esto existe realmente en el servidor.

______________________________________________________________________________________ Jdyb - Marzo 2013! 68 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

! A la hora de congurar el mdulo hemos considerado interesante la documentacin ocial ya enlazada y estos dos artculos. ! ! http://www.eslomas.com/2005/11/instalacion-de-webdav-en-apache/ http://www.macnux.com/portal/component/content/article/167

______________________________________________________________________________________ Jdyb - Marzo 2013! 69 !

Juan Dez- Yanguas Barber! Prctica 5 ______________________________________________________________________________________

5.5. Qu es Squid? ! Squid es un popular programa de Software libre que implementa un servidor proxy y un dominio para cach de pginas web. Tiene una amplia variedad de utilidades, desde acelerar un servidor web, guardando en cach peticiones repetidas a DNS y otras bsquedas para un grupo de gente que comparte recursos de la red, hasta cach de web, adems de aadir seguridad ltrando el trco. Est especialmente diseado para ejecutarse bajo entornos tipo Unix. ! Como podemos observar en la Wikipedia una de sus caractersticas es la cach transparente. Squid puede ser congurado para ser usado como un proxy transparente de manera que las conexiones son enrutadas por dentro del proxy sin conguracin alguna por parte del cliente y sin que el propio cliente conozca su existencia. ! De modo predenido Squid usa el puerto 3128 para atender las peticiones, sin embargo se puede congurar para que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos disponibles a la vez. ! Si queremos congurarlo de un modo transparente para que todas las peticiones salgan a travs de l sin congurar nada en los clientes podemos usar IPTables. #*B+&#+9(3B4'*! )(! &3(! )6! 8@A@GCV^Fa! )+! '(7n! )9! (09! ))591-(! :n! )r! @A/^@AWV!))(1)91-(!jRh: ! No es objetivo de esta memoria el estudio de la conguracin de Squid, sin embargo dejo aqu anotado un manual sencillo que he encontrado para congurarlo. h t t p : / / w w w. c y b e r c i t i . b i z / t i p s / h o w t o - r h e l - c e n t o s - f e d o r a - s q u i d - i n s t a l l a t i o n conguration.html! http://www.squid-cache.org http://es.wikipedia.org/wiki/Squid_(programa)

______________________________________________________________________________________ Jdyb - Marzo 2013! 70 !

Você também pode gostar