El servidor HTTP Apache es un servidor web HTTP de código abierto, para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo.

Su nombre se debe a que alguien quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y “civilizasen” el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. En inglés, a patchy server (un servidor “parcheado”) suena igual que Apache Server.

Instala el servidor web Apache2 en una máquina.

El primer paso es instalar el servidor “Apache2” apt install apache2

Modifica la página index.html que viene por defecto y accede a ella desde un navegador.

Vamos a modificar el fichero “index.html” en el cual aparece la página por defecto que tendremos en nuestro servidor apache, dicho fichero se encuentra en “/var/www/html”:

Eliminamos su contenido y lo modificamos para que quede así:

Vemos cual es la ip de nuestra maquina para ello ejecutamos un ip a y la insertamos en el navegador:

Configura la resolución estática en los clientes

Al querer poner dos paginas distintas pero con la misma dirección IP tendremos que crear dos ficheros “.conf”, que están alojados en “/etc/apache2/sites-available” y el fichero “apache2.conf” que será donde configuremos los directory.

Primero editamos el fichero “apache2.conf”, para que quede asi:

Info! Lo creamos en /srv/www/ igual que lo podriamos crear en /var/www/.

A continuación crearemos dos copias del fichero “000-default.conf” y lo renombramos con el nombre que queramos.

Después procederemos a editarlos, para modificar el “DocumentRoot” y el “ServerName”

iesgn.conf

departamentos.conf

Y por último creamos las carpeta donde se va a alojar los “index.html”:

root@apache:/etc/apache2/sites-available# mkdir /srv/www/departamentos root@apache:/etc/apache2/sites-available# mkdir /srv/www/iesgn

Y creamos los index.html

iesgn.conf

departamentos.conf

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:

Reiniciamos el servicio para que se guarden todos los cambios.

Y por último para comprobar su funcionamiento añadimos al fichero “/etc/hosts”, la ip de nuestra maquina para resolver nombres.

Cuando se entre a la dirección www.iesgn.org se redireccionará automaticamente a www.iesgn.org/principal, donde se mostrará el mensaje de bienvenida.

Info! En el directorio principal no se permite ver la lista de los ficheros, no se permite que se siga los enlaces simbólicos y no se permite negociación de contenido.

En nuestro /etc/apache2/sities-available/iesgn.conf tiene que quedar asi:

Una vez configurado el fichero “iesgn.conf”, al introducir la direccion “www.iesgn.org” vamos a acceder directamente a “/principal/”

Si accedes a la página www.iesgn.org/principal/documentos se visualizarán los documentos que hay en /srv/doc.

Info! Por lo tanto se permitirá el listado de fichero y el seguimiento de enlaces simbólicos siempre que sean a ficheros o directorios cuyo dueño sea el usuario.

Accedemos al fichero /etc/apache2/sities-available/iesgn.conf y añadiremos la siguientes líneas, para poder acceder al listado de ficheros de la carpeta “/srv/doc”:

Y comprobamos que al introducir “/documentos” en el navegador accedemos al contenido de la carpeta.

Ahora procederemos a crear los enlaces simbólicos a la carpeta documentos de nuestra máquina, donde tendremos dos carpetas una tiene permisos del usuario de apache y otra no tiene permisos.

Creamos los enlaces simbólicos:

Info!chown -h www-data:www-data NOMBRE_FICHERO para cambiar permisos solo al enlace.

Y ya tenemos el enlace simbolico creado:

Desde la pagina “www.iesgn.org/principal/documentos”, observamos que tenemos solo la carpeta creada con acceso(link_acceso) y la otra no aparece.

En todo el host virtual se debe redefinir los mensajes de error de objeto no encontrado y no permitido.

Para poder personalizar la salida del mensaje de error vamos a editar el siguiente fichero:

Para controlar la salida del error 403 y 404, los cuales vamos a redirigirlos a un “.html” el cual vamos a personalizar a continuación.

Y reiniciamos el servicio apache

Y a continuación procederemos a modificar los ficheros “.html”

404.html

403.html

Si entramos en una pagina que no existe no saltara un error 404:

Y para el error “403” vamos a cambiar el permiso a un fichero que vamos a crear ahora mismo:

Y ya tenemos que el fichero creado nada mas puede acceder desde el usuario root

En la URL www.iesgn.org/principal/internacional, debe existir dos mensajes de bienvenida: en inglés y en español, por lo tanto se debe permitir la negociación de contenidos.

Para que nuestro navegador resuelva si acceder a ingles a español vamos a cambiar el idioma de navegación, para que al tener el idioma en español podemos ver la pagina en español y si la tenemos en ingles nos muestre la pagina en ingles.

El siguiente paso es crear en nuestro fichero “/etc/apache2/sites-available/iesgn.conf”, al cual vamos a añadir lo siguiente:

Y por último dentro de “/srv/www/iesgn/principal/”, creamos un nuevo directorio al cual le damos todos los permisos correspondientes (www-data:www-data) y creamos dos index.html

Uno acabado en “es” para España y otro en “en” para Inglaterra.

Idioma Ingles

Idioma Español

Realiza la instalación de webalizer

Webalizer es un pequeño programa hecho en C el cual nos permite generar reportes de alguna página web. Gracias a esos reportes, podemos observar el número de personas que han entrado en la web donde se vaya a instalar(o ejecutar) el webalizer y muchas otras cosas que más adelante les detallaré. Este programa no sólo nos da los reportes cuantitativos, si no que también nos da repostes gráficos, lo que hace mas elegante y sencillo de observar las estadísticas de nuestra página web. Entre otras cosas webalizer es sumamente útil para saber que archivos son los que poseen más número de descargas en nuestra página web.

Primero instalamos webalizer apt install webalizer

A continuación procedemos a modificar el fichero de configuración de webalizer /etc/webalizer/webalizer.conf

Borramos todo las lineas de su interior e insertamos estas:

Despues vamos a crear el fichero estadistica.conf, para añadir el nuevo “DocumentRoot” y el nuevo server name:

Info!En el fichero de configuracion de estadistica hemos habilitado para que una vez introduzcamos la direccion “www.masterlan.com” nos rediriga automaticamente a “/estadistica/”.

Habilitamos el fichero creado recientemente:

Comprobamos que funciona la aplicación configurada ejecutando el comando webalizer:

Podemos automatizar este proceso con una tarea de “crontab”

Accedemos al fichero de configuración con el siguiente comando crontab -e y utilizamos el editor que mas nos interese, por defecto viene seleccionado “nano”

Una vez dentro del fichero de configuración agregamos la siguiente línea al final del fichero:

# m h dom mon dow user command
donde:

m corresponde al minuto en que se va a ejecutar el script, el valor va de 0 a 59
h la hora exacta, se maneja el formato de 24 horas, los valores van de 0 a 23, siendo 0 las 12:00 de la medianoche.
dom hace referencia al día del mes, por ejemplo se puede especificar 15 si se quiere ejecutar cada dia 15
dow significa el día de la semana, puede ser numérico (0 a 7, donde 0 y 7 son domingo) o las 3 primeras letras del día en inglés: mon, tue, wed, thu, fri, sat, sun.
user define el usuario que va a ejecutar el comando, puede ser root, u otro usuario diferente siempre y cuando tenga permisos de ejecución del script.
command refiere al comando o a la ruta absoluta del script a ejecutar, ejemplo: /home/usuario/scripts/actualizar.sh, si acaso llama a un script este debe ser ejecutable

Si como en el ejemplo dejamos todas la variables en “*” se va a ejecutar cada minuto, cada hora durante todos los días del mes.

Después el script es un simple script en bash que lo que hace es ejecutar el comando anterior webalizer

Así pues ya tendremos automatizado el funcionamiento de webalizer.

Por último vamos a restringir el acceso a webalizer desde un hosts para que solo se pueda acceder desde el servidor.

Activamos el módulo de autenticación “digest” y reiniciamos el servicio:

Nos dirigimos a la carpeta donde se encuentra el contenido de la pagina de estadisticas, creamos un fichero “.htaccess” y añadimos lo siguiente:

Info!Nuestra IP interna es una ip estatica que es la 192.168.100.0/24.

El parámetro AuthName o realm es una descripción del equipo al que se quiere acceder mediante esta clase de autenticación. Esta información se usa para calcular las hash de las claves enviadas y que será mostrada al usuario cuando se conecte al servidor.

Y por último creamos una localización adecuada, según lo dicho para la autenticación básica, un fichero .htdigestusers con touch y las passwords de los usuarios. Esto puede hacerse, para un usuario llamado “juanlu”, con el siguiente comando: htdigest –c .htdigestusers realm juanlu:

Y copiamos el fichero en “/etc/apache2/”:

A la URL www.masterlan.com/intranet sólo se debe tener acceso desde el cliente de la red local, y no se pueda acceder desde la anfitriona por la red pública.

Lo primero, configurar el fichero creado anteriormente “estadistica.conf”:

En el cliente añadimos la siguiente línea a “/etc/hosts”:

Si desde el cliente entramos en la red interna:

Comprobamos que podemos acceder

Si desde el servidor entramos en la red interna:

Comprobamos que no podemos acceder

A la URL www.masterlan.com/internet, sin embargo, sólo se debe tener acceso desde la anfitriona por la red pública, y no desde la red local. Muestra los resultados al profesor.

En el servidor añadimos la siguiente línea a “/etc/hosts”:

Comprobamos que podemos acceder

Si desde el cliente entramos en la red externa:

Comprobamos que no podemos acceder

Autentificación básica. Limita el acceso a la URL www.masterlan.com/secreto.

Esta autenticación guarda los usuarios y sus contraseña encriptadas en un archivo. Los usuarios y contraseñas se tienen que ir metiendo uno a uno. Este módulo de apache viene activado por defecto. Para utilizarlo en nuestra pagina añadiremos las siguientes líneas al fichero .htaccess.

Vamos a crear la pagina “www.masterlan.com/secreto” para que no se pueda acceder sin contraseña:

Y modificamos el fichero “.htaccess”:

Estas opciones quieren decir:
1. Le especificamos que es autenticación básica.
2. Este sera el mensaje que nos aparecerá al pedir la contraseña.
3. Esta es la ubicación del fichero con los usuarios y sus contraseñas.
4. Le indicamos uno o varios usuarios poniendo por ejemplo “Require user NOMBRE_USUARIO”.También podemos agregar cualquier un usuario válido.

Y por último creamos el fichero de credenciales en “/etc/apache/auth_basic”, para ello utilizaremos el comando “htpasswd:

Info! Es importante ser consciente, sin embargo, de que la autenticación Básica envía la contraseña desde el cliente hasta el navegador sin encriptar. Por lo tanto, este método no debería ser usado para información altamente sensible.

Autenticación digest.

La autenticación tipo digest soluciona el problema de la transferencia de contraseñas en claro sin necesidad de usar SSL. El procedimiento, como veréis, es muy similar al tipo básico pero cambiando algunas de las directivas y usando la utilidad “htdigest” en lugar de “htpassword” para crear el fichero de contraseñas. El módulo de autenticación necesario suele venir con Apache pero no habilitado por defecto. Para habilitarlo:

El cual ya podemos observar que se encuentra activo del ejercicio anterior.

A continuación modificamos el fichero “.htaccess” de la carpeta secreto y añadimos lo siguiente:

Añadimos los nuevos usuarios del grupo directivos

Ahora procedemos a hacer las comprobaciones observamos que si introducimos un usuario del grupo alumnos, no vamos a poder acceder, pero si intentamos acceder desde el usuario “juanlu” o “admin” tendremos acceso:

Combinar control acceso, autenticación tipo digest

Modificaremos el fichero “.htaccess” de tal forma que desde la red privada “192.168.100” podamos acceder sin necesidad de autentificación, pero desde la red pública si la necesitemos.

Añadimos la siguiente línea a fichero “.htaccess” creado anteriormente:

Accedemos desde local

Accedemos desde red pública

Configuración del fichero “.htaccess” en un hosting

AllowOverride controla qué directivas se pueden situar el los ficheros .htaccess.

Los valores de AllowOverride pueden ser “All”, “None”, o una combinación de:

  • AuthConfig: Permitir el uso de directivas de autorización (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc.).
  • FileInfo Permitir el uso de directivas de control de tipo de documentos (DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, etc).
  • Indexes Permitir el uso de directivas que controlan los índices de directorios (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.).
  • Limit Permitir el uso de directivas de acceso de hosts (Allow, Deny y Order).
  • Options Permitir el uso los valores de la directiva Options.

Habilita el listado de ficheros en la URL http://host.dominio/nas.

Para habilitar, que se muestre un listado de ficheros cuando entres en “hosting/nas” vamos a crear un fichero “.htaccess” y lo vamos a añadir la siguiente línea:

Si queremos verlo de una forma más amigable podemos añadir aparte la siguiente línea:

Crea una redirección permanente: cuando entremos en http://host.dominio/google salte a www.google.es.

Para redireccionar a “www.google.es” añadimos las siguientes lineas en el fichero “.htaccess”:

Pedir autenticación para entrar en la URL http://host.dominio/prohibido

Primero en el servidor apache creamos el usuario para la autenticación básica:

Y modificamos el fichero “.htaccess”:

Subimos la carpeta al hosting y comprobamos su funcionamiento:

Activa y configura el módulo userdir

Permite que cada usuario del sistema tenga la posibilidad de tener un directorio (por defecto se llama public_html) donde alojar su página web.

Userdir es un módulo de apache que hace posible que todos los usuarios con acceso a un servidor tengan una carpeta llamada “public_html” en la cual puedan alojar sus páginas y archivos.

Vamos a habilitar el modulo “userdir”:

Y reiniciamos el servicio:

Creamos en la carpeta del usuario vagrant un directorio “public_html”, le damos permisos:

Creamos un fichero index.html para la comprobación y accedemos con la siguiente direccion(ip/~[usuario]):