Sunteți pe pagina 1din 10

Práctica 4.

Administración de
servidores web: Apache

Memoria práctica.

Alicia Zamora Martín


I62zamaa@uco.es
Ejercicios:

1. Recorre las carpetas del servidor observando qué se guarda en ellas. Necesitarás
acceder al archivo httpd.conf para modificar la configuración de Apache.

Las carpetas que encontramos en el servidor son:

• bin: todos los ficheros ejecutables.

• build: contiene los archivos necesarios para crear el servidor.

• cgi-bin: contiene programas externos de generación de contenido.

• conf: contiene los archivos de configuración del servidor, así como una copia del
original, por si queremos reiniciarlo.

• error: contiene los mensajes de error.

• htdocs: carpeta por defecto en la que se colocan los documentos que debe servir
Apache al navegador.

• icons: contiene los iconos y unos archivos de texto que explican cuando se deberían
usar estos iconos.

• include: contiene los archivos de cabecera.

• lib: contiene las librerías de Apache.

• logs: contiene todos los ficheros de logs de Apache.

• man: contiene los manuales del comando man.

• manual: contiene todo el manual de Apache, en varios idiomas.

• modules: contiene los módulos de Apache para ampliar su funcionalidad.

2. Inicia y para el servidor Apache con apachectl. Recuerda que tendrías que llamar a
apachectl restart cada vez que hagas un cambio en la configuración.
IMPORTANTE:para evitar que Apache siga ejecutándose al salir de nuestra sesión,
es obligatorio que se añada $HOME/.bash logout la línea killall -s KILL httpd. Esto ya
lo hace el script anterior.

Hemos de acceder a la carpeta bin, donde se encuentran los ejecutables.


Concretamente usamos el binario ./apachectl

Iniciar: ./apachectl start


Reiniciar: ./apachectl restart
Parar: ./apachectl stop
3. Por defecto, Apache escucha por el puerto 80. Comprueba si esto produce algún error
e investiga cuál es el motivo. Modifica el puerto de escucha para que sea el 8080.
Comprueba que funciona con un navegador, accediendo a localhost:8080.

Hemos de acceder a la carpeta conf y abrimos el archivo httpd.conf

Una vez allí modificamos el Listen80 por Listen 8080. Al acceder al navegador con
localhost:8080 obtenemos lo siguiente:

4. Los archivos que sirve Apache(los que puedo ver desde el cliente) están en una carpeta
concreta. Cambia dicha carpeta (DocumentRoot), para que sea $HOME/httpd-docs/.
Crear la carpeta y copiar dentro un conjunto de archivos .html para tu servidor web,
dándole como nombre a uno de ellos index.html e introduciendo en él tu nombre y
apellidos. Sino sabes crear ficheros HTML, puedes obtener algunos en
http://www.w3schools. com/html/html_examples.asp.

Para cambiar el directorio donde se encuentran los archivos que apache muestra al
cliente, buscamos "DocumentRoot" en httpd.conf y cambiamos la ruta a la carpeta que
deseamos. Tras realizar el cambio reiniciamos apache “./apachectl restart”

5. Cambia el nombre de los archivos índice (archivos que servirá Apache cuando el
cliente solo especifique un directorio). Normalmente es index.html, añadir como
posibilidadindex.htm y probar si funciona. ¿Qué prioridad se utiliza si tenemos más de
un archivo índice?
Para modificar el archivo índice, se debe modificar la directiva DirectortyIndex, dentro
de httpd.conf

Respecto a la prioridad, el archivo índice que se ponga primero (es decir, más a la
izquierda) es el más prioritario.
Si no se encuentra el índice se mostrará una lista para que cliquemos en los
disponibles.

6. ¿Qué opción de qué directiva es la encargada de permitir mostrar el contenido de un


directorio aunque éste no contenga ningún archivo índice? Crea un directorio nuevo
$HOME/httpd-docs/midirectorio (es obligatorio especificar una nueva directiva
Directory), incluye un archivo cualquiera y prueba a utilizar esta opción para prohibir
o no el listado de archivos en dicha carpeta. Para probarlo tendrás que acceder a
localhost:8080/midirectorio. ¿Cómo podríamos mejorar el aspecto visual del listado?
(pistas, Indexes y httpd-autoindex.conf).

Dentro de la directiva Options encontramos la opción Indexes que nos permite mostrar
el contenido de un directorio, aunque no contenga ningún archivo índice.

Para prohibir el listado de archivos, se debe poner Options -Indexes.

Para mejorar el aspecto visual, se debe añadir al fichero de configuración “Include

conf/extra/httpd-autoindex.conf”
7. Encuentra la directiva que especifica el nombre del servidor e introduce su valor
correcto.

Buscamos ServerName en el fichero httpd.conf , el valor a introducir es localhost:8080,

que es la dirección IP local del ordenador.

8. Encuentra la directiva que especifica el usuario y grupo para el demonio httpd. ¿Sirve
para algo cambiarla?

La directiva que especifica el usuario es User, y la que especifica el grupo, Group.

La directiva User especifica el identificador de usuario con el que el servidor responderá

a las peticiones. Para usar esta directiva, el servidor debe haber sido iniciado como root.

Si se inicia Apache con un usuario distinto de root, no se podrá cambiar a un usuario

con menores privilegios, y el servidor continuará ejecutándose con el usuario original.

Lo mismo pasa con Group, que determina el grupo con el que el servidor atenderá las

peticiones.

9. Prueba a hacer un telnet al puerto del servidor (telnet localhost 8080) y a mandarle
mensajes HTML (escribe “GET / HTTP/1.0” y pulsa dos veces intro). Prueba a escribir
HOLA y pulsar dos veces a Intro. Explica que´ sucede y los códigos de error que
devuelve el servidor.

Si introducimos HOLA aparece el error 400, ya que no es un método implementado en


Apache, por lo que el servidor no es capaz de entenderlo, impidiendo la conexión.

Al introducir GET / HTTP/1.0, le estamos pidiendo el archivo index de la carpeta raíz


(recordamos que es httpddocs). Como es un método implementado en Apache,
recibimos el código 200 (Éxito de la solicitud).

10. Encuentra la directiva que se utiliza para la visualización de páginas de error.


Modifícala para personalizar el mensaje de error 404 que mostrará el servidor y que
sea una cadena del tipo “El URI que has pedido no lo podemos servir”. ¿Se podría
especificar un fichero .html de error?. Modifica el error 501 para que muestre
“Metodo no implementado” y comprueba que funciona.

Para cambiar los mensajes de error que nos salen hemos de hacerlo mediante la
directiva ErrorDocument, el número del error que queremos capturar y a continuación
podríamos poner un string, html o incluso redirigir mediante un enlace.

11. Identifica las directivas relacionadas con los archivos de logs de Apache. Haz un acceso
normal y acceso erróneo (por ejemplo, pidiendo un archivo o directorio que no existe).
Comprueba los logs y muestra cómo se han modificado.

access_log: Graba todas las peticiones procesadas por el servidor.

ErrorLog: archivo donde apache httpd enviará información de diagnóstico y grabará

cualquier error que encuentre en el procesamiento de solicitudes.

LogFormat: define el formato

CustomLog: para indicar dónde quieres que se guarde los archivos de acceso.
12. Redirecciona la dirección /uco a www.uco.es, de manera que al acceder a
localhost:8080/uco aparezca la web de la Universidad de Córdoba.

Para redireccionar se debe añadir al fichero de configuración la directiva Redirect.

Redirect permanent /uco httpd: //www.uco.es

13. Crea un Host virtual de manera que cuando un cliente se conecte al servidor usando
localhost:8080 el servidor muestre la carpeta raíz original, y cuando se conecte usando
IPMAQUINA:8080 muestre la subcarpeta /midirectorio. IPMAQUIMA es la IP de la
máquina en la que estás, puedes averiguarla con ifconfig. Haz que tengan ficheros de
log independientes (local-access.log, local-error.log, ip-access.log y ip-error.log).

1.Para conocer la IP de la máquina, utilizamos el comando ifconfig.

2. Quitamos el comentario de la línea que nos permite configurar los Virtual hosts y nos
vamos al directorio que indica el "Include", en este caso /conf/extra/httpd-vhosts.conf
y configuramos nuestro host virtual.

14. Haz que el servidor web sirva toda la documentación de Apache. Para ello, habilita la
configuración del manual de Apache (extra/httpd-manual.conf) y los módulos que
necesite. Explica las distintas líneas que aparecen en dicha configuración, incluyendo
el significado de las expresiones regulares.

Se debe incluir en el fichero de configuración “Include conf/extra/httpd-

manual.conf”. Si ejecutamos tal cual, nos dará un error, al no tener cargado

LanguagePriority. Para solucionarlo, tendremos que cargar el módulo

mod_negotiation.

“httpd-manual.conf” necesita más módulos, pero están cargados por defecto

(mod_alias, mod_authz_core, mod_authz_host y mod_setenvif).


AliasMatch: Si la URL satisface la expresión regular del primer argumento, se sirve el

path que se escriba como segundo argumento. En este caso, la expresión regular es:

Que empiece por “/manual”, que emperaje una o ninguna vez con el conjunto de “/”

más uno de los idiomas, seguido (o no) de cualquier otra cosa precedido de “/”, y que

termine justo ahí. En este caso, se llama a “home/i52allue/httpd/manual$1” siendo

$1 esa cualquier otra cosa precedida de “/”.

AddLanguage: tratará los archivos con extensión .da en danés.

SetEnvIf: Da valor a la variable de entorno prefer-language a partir de la URL. En este

caso, la expresión regular a tratar es: Que comience por “/manual/idioma/”, siendo

“idioma” el valor que toma la variable

RedirectMatch 301: Redirige una URL que cumpla una expresión regular. En esta caso

la regex es: Que empiece por “/manual” seguido del conjunto de “/idioma”, el cual se

repite 2 o más veces, seguido a su vez, o no, de algo precedido por “/”. Esto lo que

hace es que si se ponen más de un idioma (por ejemplo: /manual/en/de/es), se

redirige con el último idioma que se haya puesto (en el ejemplo, seria español). El 301

significa que el redireccionamiento es permanente.

LanguagePriority: establece la prioridad de los idiomas en los archivos de manual si no

se especifica o no existe el fichero en ese idioma (primero inglés, segundo danés…).

ForceLanguagePriority: Prefer sirve para cuando se eligen dos idiomas (por ejemplo:

manual/es/da), se utiliza el idioma con mayor prioridad. Fallback sirve para cuando se

introduce un idioma, pero el fichero del manual no existe en ese idioma, se serviría el

que tiene más prioridad (inglés), luego el segundo (danés)… en lugar de dar un error

406.

15. Apache permite el acceso a recursos restringidos mediante la creación de usuarios y


grupos que deberán autenticarse antes de acceder a dicho recurso protegido. Se debe:
Crear los usuarios y contraseñas correspondientes dentro de un archivo llamado
.htpasswd (para esto, tendrás que utilizar el comando ./htpasswd -c .htpasswd
usuario, incluido en la carpeta bin de Apache, una vez por cada usuario añadir y luego
copiar el archivo resultante a la carpeta que quieres proteger; ojo, el -c indica que el
fichero se cree nuevo, por lo que solo debe utilizarse para el primer usuario) e incluir
un archivo .htaccess (por defecto, aunque estos nombres de archivo pueden
modificarse en httpd.conf) con los usuarios o grupos de usuarios que tendrán acceso.
La sintaxis de ese archivo es la misma que el resto de configuraciones de directorios
de Apache.

Debes crear un directorio, que se llamara´ carpetaSecreta, de forma que, para acce-
der a él, habrá que autenticarse. Los usuarios que tendrán acceso a ese directorio
serán: usuario1, usuario2 y usuario3; y la contraseña, para todos será: entra. Explica
los pasos realizados para conseguirlo, y el contenido de los archivos creados.

NOTAS: para que el archivo .htaccess se interprete por Apache es necesario que,
previamente, hayamos activado la directiva AllowOverride All sobre el directorio
correspondiente (por defecto está a None) en httpd.conf. Consultar el ejemplo de
autenticación en http://www.cristalab.com/tutoriales/proteger-carpetas-con-.
htaccess-y-.htpasswd-c213l/.

1. Creamos los usuarios en el fichero .htpasswd


2. Copiamos el fichero .htpasswd y lo pasamos a la carpetaSecreta

AuthUserFile es el directorio (junto toda su ruta) donde se encuentra el fichero donde


se almacenan los usuarios (en nuestro caso .htpasswd).

AuthName es una parte del mensaje que aparece cuando se pide el usuario la
contraseña, y no tiene nada que ver con el nombre de los directorios o archivos usados.
AuthType es el tipo de autentificación, en este caso, básico.

Require user indica los usuarios que podrán acceder a la carpetaSecreta. Aunque un
usuario se encuentre en el .htpasswd, si no aparece aquí, no podrá acceder. Con require
valid-user podrán entrar todos los usuarios especificados en el archivo .htpasswd.

Si ponemos en el buscador localhost:8080/carpetaSecreta nos pedirá un usuario y una


contraseña. Si escribimos los datos correctamente, podremos acceder al contenido del
directorio. En caso contrario, obtendremos el error 401.
16. Existe también la posibilidad de permitir o denegar el acceso a diferentes
directorios o archivos dependiendo de la dirección IP del cliente. Para ello,
disponemos de las directivas Allow from, Deny from y Order, que pueden utilizarse en
el archivo de configuración httpd.conf o en cada uno de los directorios mediante el
archivo
.htaccess. Prueba esta opción de seguridad para permitir el acceso a nuestro servidor
web, únicamente para direcciones IP de la subred de los equipos de sobremesa del
laboratorio. Prueba también a denegar el acceso a todas las direcciones IP.

S-ar putea să vă placă și