Configuración Inicial del Servidor Web Apache en Linux

Clasificado en Informática

Escrito el en español con un tamaño de 8,46 KB

Práctica 1: Configuración Básica de Apache en Linux

En esta práctica vamos a instalar y configurar de manera básica un servidor Apache en Linux, el cual nos proporcionará un servicio HTTP.

Instalación de Apache

Para instalar un servidor Apache, utilizamos los siguientes comandos:

  • sudo apt-get update
  • sudo apt-get install apache2

Verificación y Configuración Inicial

Probar Conexión

Para probar la conexión al servidor, basta con abrir un navegador web en el servidor y escribir la dirección:

Archivos Principales de Configuración

Para ver los principales archivos de configuración introducimos el comando:

  • ls -al /etc/apache2

Algunos de los principales directorios y archivos son: conf-available, conf-enabled, mods-available, mods-enabled.

Comprobar Archivos Creados

Para ver que hemos creado bien un archivo (por ejemplo, una página HTML), lo comprobamos abriendo el navegador e introduciendo http://localhost/nombre_del_archivo.html.

Cambiar Nombre de Archivos

Para cambiar el nombre al archivo por defecto index.html por indice.html, usamos el comando mv:

  • sudo mv /var/www/html/index.html /var/www/html/indice.html
  • O de forma genérica: sudo mv <ruta/nombre_antiguo> <ruta/nombre_nuevo>

Directorios Clave

  • El directorio raíz por defecto para el contenido web es: /var/www/html/.
  • El directorio por defecto para la configuración de sitios disponibles es: /etc/apache2/sites-available/

Módulos de Apache

Apache dispone de dos carpetas principales para la gestión de módulos:

  • /etc/apache2/mods-available: Donde se listan los módulos instalados.
  • /etc/apache2/mods-enabled: Donde se habilitan los módulos (mediante enlaces simbólicos a los archivos en mods-available).

Dentro de la carpeta mods-available encontraremos generalmente dos archivos por cada módulo instalado: uno con extensión .load (para cargarlo) y otro opcional .conf (para su configuración específica).

Control de Acceso

Creación de Directorio Protegido

Como ejemplo, si quisiéramos proteger un directorio llamado 'intranet', primero lo creamos:

  • sudo mkdir /var/www/html/intranet

Luego, configuraríamos las directivas de acceso correspondientes en la configuración de Apache o en un archivo .htaccess.

Proveedores de Autorización (Directiva Require)

La directiva Require se usa para definir quién tiene permiso para acceder a un recurso.

Require host

Limita el acceso a nombres de dominio o IPs específicas.

  • Require host nombre-dominio.com
  • Require ip 192.168.1.100

Require all

Hace referencia a cualquier equipo.

  • Require all granted: Concede el acceso a cualquier equipo.
  • Require all denied: Deniega el acceso a cualquier equipo.

Require local

Permite el acceso de aquellas conexiones que tienen como origen y destino la propia máquina (localhost).

  • Require local

Require not

Niega la condición que le sigue.

  • Require not ip 192.168.4.0/24 (No podrá entrar ningún equipo que pertenezca a esa red).

Contenedores de Autorización

Para representar condiciones de acceso complejas, se utilizan contenedores.

<RequireAll> ... </RequireAll>

Engloba un conjunto de directivas de autorización. Ninguna debe devolver FALSO y al menos una debe devolver CIERTO para conceder el acceso.

<RequireAny> ... </RequireAny>

Engloba un conjunto de directivas de autorización. Al menos una debe devolver CIERTO para conceder el acceso.

Ejemplo:

<RequireAny>
  Require host aulaser.com
  Require ip 192.168.4.30
</RequireAny>

Con que una de las dos directivas anteriores devuelva cierto, se concede el acceso.

<RequireNone> ... </RequireNone>

Engloba un conjunto de directivas de autorización. Si alguna de las directivas internas devuelve CIERTO, el acceso es denegado. No sirve para conceder acceso, sólo para denegarlo bajo ciertas condiciones.

Autenticación y Autorización: BASIC y DIGEST

Dos mecanismos de autenticación comunes en Apache son BASIC y DIGEST. Se pueden utilizar para limitar el acceso a ciertas carpetas mediante usuario y contraseña.

Diferencias Principales

  • BASIC: Los datos de autenticación (usuario y contraseña) se envían codificados en Base64, pero no cifrados. Vulnerable si no se usa sobre HTTPS.
  • DIGEST: El envío se realiza de manera más segura, utilizando un desafío y hash MD5, evitando enviar la contraseña en claro o directamente codificada.

Configuración (Ejemplo HTTP BASIC)

Para configurar la autenticación BASIC en un directorio (por ejemplo, dentro de la configuración de un <Directory /var/www/html/intranet> o en un .htaccess), se usan directivas como las siguientes:

Interpretación de Directivas Comunes

  • AuthType: Especifica el tipo de autenticación (Basic o Digest).
  • AuthName: Especifica el 'reino' o mensaje que se muestra en la ventana de autenticación del navegador. Ejemplo: "Acceso Restringido".
  • AuthUserFile: Indica la ruta absoluta al archivo que contiene los usuarios y contraseñas. Este archivo se gestiona normalmente con la utilidad htpasswd (para Basic) o htdigest (para Digest).
  • AuthDigestProvider: (Para Digest) Indica cómo se realizará la autenticación (ej. file).
  • Require: Especifica qué usuarios autenticados tienen permiso.
    • Require valid-user: Permite el acceso a cualquier usuario válido listado en el AuthUserFile y que se haya autenticado correctamente.
    • Require user usuario1 usuario2: Permite el acceso solo a los usuarios especificados.

Uso de Archivos .htaccess

Los archivos .htaccess (hypertext access) permiten gestionar la configuración de Apache a nivel de directorio. Son útiles para que usuarios sin permisos de administración sobre el servidor principal puedan modificar la configuración de sus propios sitios o directorios web.

Con un archivo .htaccess, un usuario puede definir directivas específicas (si están permitidas por la configuración principal mediante AllowOverride) para las carpetas donde reside el archivo y sus subcarpetas.

Ventajas:

  • Permiten cambios de configuración sin necesidad de reiniciar el servidor Apache.
  • Facilitan la delegación de ciertas configuraciones.

Desventajas:

  • Pueden afectar al rendimiento, ya que Apache busca y procesa estos archivos en cada solicitud si están habilitados.
  • Pueden generar problemas de seguridad si no se configuran adecuadamente los permisos y las directivas permitidas (AllowOverride).

Nota sobre Archivos de Log

La ubicación de los archivos de log de Apache (errores y acceso) suele definirse en la configuración principal. Para encontrar la ruta exacta en sistemas basados en Debian/Ubuntu, a menudo se utiliza la variable de entorno definida en /etc/apache2/envvars. Por defecto, la variable APACHE_LOG_DIR apunta a /var/log/apache2/.

Entradas relacionadas: