Software">
Nothing Special   »   [go: up one dir, main page]

SMR-UD3 Apache - Actualizado

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 36

Ciclo: Sistemas Microinformáticos y Redes

Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Contenido
1. Servidor Web ...........................................................................................................................4

1.1. Introducción .............................................................................................................4

1.1.2. Navegación Web .................................................................................................4

1.1.3. Protocolo HTTP ...................................................................................................5

1.1.4. Servidor Web Apache .........................................................................................6

1.2. Instalación de Apache ........................................................................................................8

Versión 2.4 de la documentación del Servidor de HTTP Apache ..........................8

1.2.1 Arranque y parada del servidor web apache ...................................................9

1.3 Estructura de Apache ....................................................................................................... 10

1.3.1 Archivos de configuración ................................................................................ 10

Comandos útiles para configurar .............................................................................. 11

1.3.2 Sintaxis de los ficheros de configuración ...................................................... 11

1.3.3 Encontrar errores............................................................................................... 11

1.4. Configuración de Apache ................................................................................................ 12

1.4.1 Directivas de Configuración ............................................................................. 12

Directivas de Configuración General........................................................................ 12

Directivas de Optimización ........................................................................................ 14

Directivas de Secciones ............................................................................................. 15

Sección Directory ........................................................................................................ 15

Sección Files ................................................................................................................ 16

Sección IfModule ......................................................................................................... 17

1.5 Hosts Virtuales ................................................................................................................... 18

1.5.1 Introducción ........................................................................................................ 18

1.5.2 Pasos para crear un nuevo host ..................................................................... 18

1.5.3 Hosts Virtuales basados en nombre .............................................................. 19

1.5.4 Hosts Virtuales basados en puerto................................................................. 20

AW – UT 3 – Servidor Web Página 1 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1.5.5 Hosts Virtuales basados en IP ........................................................................ 21

1.6 SSL en Apache .................................................................................................................. 22

1.6.1 Introducción ........................................................................................................ 22

1.6.2 Requisitos previos ............................................................................................. 22

1.6.3 Generar el certificado ....................................................................................... 22

1.6.4 Crear servidor virtual seguro en apache2 ..................................................... 23

1.6.5 Probando el acceso al sitio web seguro ........................................................ 24

1.7 Otras opciones de Apache ............................................................................................... 27

1.7.1 Control de Acceso ............................................................................................. 27

OPCION: Require (Visite este enlace) ..................................................................... 27

1.7.2 Autenticación ...................................................................................................... 28

Crear fichero de usuarios para autenticar ............................................................... 29

Crear fichero de grupos para autenticar .................................................................. 30

Redirecciones ........................................................................................................................... 30

1.7.3 Archivos .htaccess............................................................................................. 30

Proteger con usuario y contraseña........................................................................... 31

1.8 LAMPP:LINUX+APACHE+MYSQL+PHP+PHPMYADMIN......................................... 32

1.8.1 PHP ..................................................................................................................... 32

1.8.2 MySQL ................................................................................................................ 33

1.8.3 phpMyAdmin ...................................................................................................... 35

AW – UT 3 – Servidor Web Página 2 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

UT 3. Servidor web APACHE, Acceso a sitio


seguro – OPENSSL, PHP Y MySQL

En esta unidad, vamos a estudiar la instalación del servidor web Apache, con el módulo de
PHP (intérprete para el lenguaje de programación PHP) e interacción con el servidor de
bases de datos MySQL.

Tendremos de esta manera, preparado nuestro propio servidor web en el cual podremos
crear sitios web, aplicaciones, páginas estáticas y dinámicas, instalar Sistemas gestores de
contenidos, Sistemas de gestión de aprendizaje, entre otras muchas cosas.

Apache es uno de los servidores web más utilizados actualmente en Internet. Otra de las
características importantes de Apache, es que tiene una licencia GPL.

Vamos a usar también PHP, acrónimo de PHP Hipertext Preprocessor , para la


programación del lado del servidor. Estos lenguajes, funcionan de modo que cuando un
cliente envía una petición de GET al servidor de una determinada página PHP, éste antes de
entregarla, interpreta el código PHP y envia la página html resultante.

Una de las ventajas que tiene PHP es su potente API para poder conectar con servidores de
Bases de datos como PostgreSQL y MySQL. En este caso, vamos a usar este último, ya que
es ideal para bases de datos de pequeño y mediano tamaño por su rapidez.

Al finalizar la unidad, dispondremos de nuestro propio servidor web para poder alojar, por
ejemplo, un sitio Wordpress o un Moodle (en ambos caso páginas web dinámicas,
programadas en PHP y usando bases de datos MySQL o derivados.

Para saber más


XAMPP es un paquete de software libre, que consiste principalmente en el sistema de
gestión de bases de datos MySQL, el servidor web Apache y los intérpretes para lenguajes
de script PHP y Perl. El nombre es en realidad un acrónimo: X, Apache, MariaDB/MySQL,
PHP, Perl. A partir de la versión 5.6.15, XAMPP cambió la base de datos MySQL por
MariaDB, un fork de MySQL con licencia GPL.

XAMPP Apache + MariaDB + PHP + Perl

AW – UT 3 – Servidor Web Página 3 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1. Servidor Web

1.1. Introducción
La wikipedia define el servidor web como “un programa que implementa el protocolo HTTP
(hypertext transfer protocol). Este protocolo está diseñado para transferir lo que llamamos hipertextos,
páginas web o páginas HTML (hypertext markup language): textos complejos con enlaces, figuras,
formularios, botones y objetos incrustados como animaciones, reproductores de sonidos.”
La arquitectura utilizada es cliente/servidor, es decir, el equipo cliente hace una solicitud o
petición al equipo servidor, y éste atiende dicha solicitud.
En el equipo cliente se ejecuta una aplicación llamada 'navegador o cliente web' que:
▪ Sirve de interfaz con el usuario: atiende sus peticiones, muestra los resultados de las consultas y
proporciona al usuario un conjunto de herramientas que facilitan su comunicación con el
servidor.
▪ Se comunica con el servidor web: transmite las peticiones de los usuarios.
En el equipo servidor la única tarea es atender las diferentes peticiones recibidas desde los
diferentes navegadores o clientes web y hacerlo de forma eficiente y segura. Este es el caso de los
servidores web seguros que solicitan un nombre de usuario y una contraseña para permitir el acceso
sólo a usuarios registrados y por tanto, con permiso para visualizar la página/s.
El objetivo de un servidor web es servir o suministrar páginas web a los clientes web o
navegadores que las solicitan.
Un usuario, por ejemplo desde el navegador Firefox, al hacer 'click' sobre un enlace a una página
web está enviando una solicitud al servidor web que aloja dicha página para que se la muestre (servir la
página). El servidor web si la encuentra la envía y si no la encuentra devuelve al cliente un mensaje de
error. El cliente cuando recibe la página web interpreta el código HTML mostrando las fuentes, colores,
imágenes que la componen, etc, de forma correcta.
Pero el servidor web, además de servir páginas web HTML estáticas también permite la
ejecución de una serie scripts, en diferentes lenguajes de programación, que proporcionan dinamismo a
las páginas web. Estos lenguajes son PHP, CGI3, applets de Java4, etc.

1.1.2. Navegación Web


Para que el navegador pueda llegar al servidor web (ya sea en una red local o en Internet) el
servidor debe tener asignada una dirección IP (Internet Protocol) única que identifica el equipo en la red.
Cuando el navegador hace una petición al servidor web utiliza un nombre que identifica al
servidor y esta solicitud se transmite a un servidor DNS. Éste resuelve el nombre y devuelve la dirección
IP que corresponde al nombre. La solicitud del navegador entonces se encamina al servidor web
correcto. La información que el usuario proporciona al navegador para conectar con un servidor web se
llama URL (Uniform Resource Locators).

protocolo://servidor/ruta/recurso

URL de solicitud de un recurso consta de:

AW – UT 3 – Servidor Web Página 4 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1. Protocolo a utilizar: http, https, ftp, ftps,...


2. Servidor: es la dirección IP o el nombre del servidor (FQDN) que contiene el recurso.
3. Ruta_al_recurso: directorio y subdirectorios del sitio web donde está ubicado el recurso
4. Recurso: recurso al que se quiere acceder.

Ejercicio Resuelto
Identifica las partes de la que consta la siguiente URL:

http://es.wikipedia.org/wiki/Localizador_uniforme_de_recursos

Protocolo: http

Servidor: es.wikipedia.org

Ruta al recurso: wiki


Recurso: Localizador_uniforme_de_recursos

1.1.3. Protocolo HTTP


Las siglas HTTP significan Hyper Text Transfer Protocol, Protocolo de Transferencia de
HiperTexto y es el protocolo usado en las transacciones de la web (www). El hipertexto es el contenido
de las páginas web, y el protocolo de transferencia es el conjunto de normas mediante las que se envían
las peticiones de acceso a una web y la respuesta de esa web.
HTTP es el protocolo de la web. Se define como un conjunto de normas que permiten la comunicación
entre el servidor y los clientes y la transferencia de información (archivos de texto, imágenes, archivos de
música, ...) entre ambos.
HTTP es un protocolo cliente/servidor cuyo funcionamiento está basado en el envío de mensajes y
consiste en que:
▪ El usuario especifica en el cliente web (navegador) la dirección de la página que quiere consultar
según un formato http://dirección[:puerto][path].
▪ El cliente web decodifica la información de la URL diferenciando el protocolo de acceso, IP o
nombre de dominio del servidor, puerto,...
▪ El cliente web establece una conexión (socket) con el servidor web y solicita la página (mensaje
request).
▪ El servidor envía dicha página (si no existe envía un código de error) y el cliente web interpreta el
código HTML recibido. Mensaje response del servidor.
▪ Se cierra la conexión.
El protocolo HTTP es un protocolo sin estado, es decir, no recuerda nada relativo a conexiones
anteriores a la actual

AW – UT 3 – Servidor Web Página 5 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Para cada objeto que se transfiere por la red se realiza una conexión independiente. Ejemplo: si el
cliente web solicita una página que incorpora varias imágenes se realizan las siguientes conexiones: una
para el documento HTML y una por cada una de las imágenes.
Para resolver estas situaciones de “falta de memoria” del protocolo, además de recordar la información
de la sesión actual (cuya información se pierde, por ejemplo, al cerrar el navegador), se utilizan las
cookies.
Las cookies son archivos de texto que se intercambian entre el cliente web y el servidor. Cuando se
solicite de nuevo un intercambio de información entre estos mismos puntos se tendrá en cuenta
la información almacenada en esos archivos.

Autoevaluación
Selecciona las opciones correctas:

El servidor web, utiliza la arquitectura es cliente/servidor, es decir, el equipo servidor hace


una solicitud o petición al equipo cliente, y éste atiende dicha solicitud.

El objetivo de un servidor web es servir o suministrar páginas web a los clientes web o
navegadores que las solicitan.

Para poder acceder al servidor web, el servidor debe tener asignada una dirección IP única
que identifica el equipo en la red.

El protocolo HTTP es un protocolo con estado, es decir, recuerda lo relativo a conexiones


anteriores a la actual.

Solución en versión completa y guiada.

1.1.4. Servidor Web Apache


El servidor web apache es una de las aplicaciones estrella del mundo Linux. Es el servidor web
más implantado entre los distintos servidores que ofertan servicios web en Internet.
Apache es un servidor Web que surgió a partir del servidor de HTTP más famoso y difundido en
su época: NCSA. Desde entonces se convirtió en un poderoso rival de todos los servidores Unix
utilizados hasta la fecha por su eficiencia, funcionalidad y rapidez. Es por ello que se conoce como el rey
de los servidores Web. Se desarrolla de forma estable y segura gracias a la cooperación y los esfuerzos
de un grupo de personas conocidas como grupo Apache (Apache Group), los cuales se comunican a
través de Internet y del Web. Juntos se dedican a perfeccionar el servidor y su documentación regidos
por la ASF (Apache Software Foundation).
En la actualidad Apache es el servidor Web más utilizado en el mundo de acuerdo con las
estadísticas de http://news.netcraft.com que lo colocan en más de 100 millones de servidores, lo cual
significa más del 45% en todo el mundo. Entre las características principales del Apache se encuentran:
▪ Estable: es un servicio muy robusto y que no se cuelga con facilidad.

AW – UT 3 – Servidor Web Página 6 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

▪ Es un servidor Web potente, flexible y altamente configurable.


▪ Extensible, modular. Puede ser ajustado a través de la definición de módulos empleando su
propio API (Aplication Programming Interface).
▪ Puede crear servidores virtuales. Éstos pueden ser seguros.
▪ Software libre. Provee todo su código fuente de forma libre y se distribuye bajo una licencia no
restrictiva. Tiene su propia licencia.
▪ Multiplataforma. Está disponible para casi todos los sistemas operativos: Windows
Cliente/Servidor, Macintosh, Linux, Unix,...
▪ La versión 2.4.X es con la que se recomendaba trabajar.
▪ Apache significa ``A PAtCHy sErver'', o sea se basa en un código y un conjunto de ficheros
``parches''. Otros desarrolladores relacionan su nombre con el de las tribus nativas americanas
de Apaches.
En los repositorios de las nuevas versiones de ubuntu se instalará la versión de Apache 2.4.x

Recomendación
Debes ser capaz de consultar la documentación de la página web oficial de apache2:

Apache HTTP Server Versión 2.4 Documentación - Servidor HTTP Apache Versión 2.4

Autoevaluación
Apache es un proyecto de Software propietario.

Verdadero Falso

Solución en versión completa y guiada.

AW – UT 3 – Servidor Web Página 7 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1.2. Instalación de Apache

Vamos a realizar una instalación de apache en una distribución Ubuntu.


Gracias al sistema de paquetes de Ubuntu (basado en Debian), la instalación de nuevas
aplicaciones es muy sencilla. Basta con usar el comando aptitude install o apt-get install y a
continuación el nombre del paquete a instalar. Instalaremos apache2.
Hay que recordar que en linux sólo el administrador del sistema, root, puede instalar
aplicaciones, así que necesitaremos permisos para hacerlo. Se podría instalar desde una consola de
root, o, siguiendo la filosofía de ubuntu desde una consola normal añadiendo el comando sudo y
escribiendo la contraseña.

Versión 2.4 de la documentación del Servidor de HTTP Apache

// Instalar Apache2
$ sudo apt-get install apache2

Por defecto, al instalarse el servicio se inicia cuando arranca el sistema, sin necesidad de iniciar sesión
ningún usuario.
Abrimos el Navegador y escribimos localhost en la barra de direcciones

Localhost, es una palabra que el sistema siempre identifica con la IP de lopback (normalmente
127.0.0.1), de esta manera podemos acceder a nuestro propio pc desde nuestro pc. Si queremos
navegar desde otros pc hay que usar la dirección IP asignada. Si la dirección IP de nuestro servidor
fuera 192.168.1.100, podemos ir con el navegador a la dirección http://192.168.1.100 y obtendremos el
mismo resultado.
Como vemos en la pantalla anterior, la instalación de Apache se produjo de forma adecuada, así pues
hemos completado este apartado satisfactoriamente.

AW – UT 3 – Servidor Web Página 8 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1.2.1 Arranque y parada del servidor web apache


El servidor web apache2, al igual que todos los servicios en Debian, dispone de un script de
arranque y parada en la carpeta /etc/init.d.

// Arrancar o reiniciar el servidor apache2


$ sudo /etc/init.d/apache2 restart
// Parar el servidor apache
$ sudo /etc/init.d/apache2 stop
// Recargar apache con la nueva configuración
$ sudo /etc/init.d/apache2 reload

AW – UT 3 – Servidor Web Página 9 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1.3 Estructura de Apache

1.3.1 Archivos de configuración


Apache se configura poniendo directivas en los ficheros de configuración en texto simple. El
fichero principal de configuración suele llamarse httpd.conf, o bien apache2.conf En las distribuciones
basadas en Debian apache2.conf es el que se usa. Además, se pueden adicionar otros ficheros de
configuración usando la directiva Include. Cualquier directiva se puede colocar en cualquiera de estos
ficheros de configuración. Apache solo reconocerá los cambios en los ficheros de configuración durante
el arranque o reinicio.
Directivas include que hay dentro de apache2.conf. Todos estos ficheros se tendrán en
cuenta para la configuración de Apache. Se separa en diferentes ficheros para organizar mejor la
configuración, pero realmente da igual en qué fichero se escriban las directivas.

# Include module configuration:


Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

# Include all the user configurations:


Include /etc/apache2/httpd.conf

# Include ports listing


Include /etc/apache2/ports.conf

# Include generic snippets of statements


Include /etc/apache2/conf.d/

# Include the virtual host configurations:


Include /etc/apache2/sites-enabled/

El directorio de configuración por defecto es /etc/apache2.


Dentro de este directorio tenemos la siguiente estructura:

Ficheros:

AW – UT 3 – Servidor Web Página 10 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

▪ apache2.conf: Fichero de configuración general.


▪ ports.conf: Fichero de configuración de los puertos en los que escucha Apache.
▪ httpd.conf: Archivo vacío que no se usa en la distribución Ubuntu.

Directorios:
▪ conf.d: Son archivos de configuración de los distintos módulos instalados. Se llaman (cargan)
desde el fichero apache2.conf.
▪ mods-available: Todos los módulos que dispone Apache.
▪ mods-enabled: Los módulos que están activos en este momento. Contiene enlaces simbólicos a
algunos mods-available
▪ sites-available: Sitios preparados para ponerlos en marcha cuando sea necesario.
▪ sites-enabled: Sitios activos en este momento. Contiene enlaces simbólicos a sites-available

Comandos útiles para configurar


▪ a2enmod: activa módulos
▪ a2dismod: desactiva módulos
▪ a2ensite: activa sitios
▪ a2dissite: desactiva sitios

1.3.2 Sintaxis de los ficheros de configuración


Los ficheros de configuración de Apache contienen una directiva por línea.
En las directivas, dentro de los ficheros de configuración, no se hace distinción entre mayúsculas
y minúsculas.
Las líneas que comiencen con el carácter "#" serán consideradas comentarios, siendo ignoradas.
No se pueden incluir comentarios en una línea, después de una directiva de configuración.
Los espacios y líneas en blanco antes de una directiva de configuración se ignoran, de manera
que se puede dejar una sangría en las directivas para mayor claridad. Se puede hacer un chequeo de la
sintaxis de sus ficheros de configuración sin tener que reiniciar el servidor, usando apache2ctl
configtest ó apache2 -S ( si falla este último hay que poner en apache2.conf dos líneas: User www-data
y Group www-data)

1.3.3 Encontrar errores


Se debe consultar el registro de errores: es posible que el problema pueda deducirse de un
mensaje de error. El archivo de registro de errores se encuentra en /var/log/apache2/error.log.
Se recomienda mostrar los archivos de registro en una consola mientras se accede al servidor para ver
cómo reacciona éste en cada momento. Con este fin, ejecute en una consola el siguiente comando como
root.
El fichero de log de apache está en /var/log, para verlo hay que ejecutar la orden:
$ tail -f /var/log/apache2/*.log

AW – UT 3 – Servidor Web Página 11 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1.4. Configuración de Apache

1.4.1 Directivas de Configuración


Las directivas de configuración las podemos agrupar en 3 secciones.
▪ Configuración general. Directivas que definen los parámetros del servidor principal y las
opciones por defecto para los hosts virtuales.
▪ Optimización. Configuran los recursos y la eficacia de apache.
▪ De secciones. Directivas que configuran partes concretas del funcionamiento de apache.

Directivas de Configuración General

ServerRoot
Define el directorio donde reside toda la información de configuración y registro que necesita el servidor.

ServerRoot "/etc/apache2/"

DocumentRoot
Esta directiva le indica a Apache la carpeta raíz que se ubica en el servidor, desde la que se servirán los
documentos. Por defecto, todas las peticiones tendrán como raíz esta carpeta, a no ser que se utilicen
alias. Esta directiva está en la configuración de un sitio o un Virtual Host.

DocumentRoot "/var/www/html"

Por ejemplo, en la versión de Apache 2.4, en el archivo de configuración 000-default.conf

: DocumentRoot "/var/www/html"

En Apache 2.4 por defecto está denegado el acceso fuera de /var/www como se indica en el archivo de
configuración apache2.conf:

AW – UT 3 – Servidor Web Página 12 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

ServerName
Define el nombre de host del servidor. Se suele utilizar cuando se crean redirecciones. Si no se define el
nombre de servidor, intentará deducirlo a través de su dirección IP.

ServerName www.iesrioja.red

DirectoryIndex
Mediante este parámetro, indicamos a Apache qué fichero debe buscar, por defecto, en caso de que no
se especifique ninguno. Este fichero, de forma predeterminada es index.html, es decir, si desde el
navegador tratamos de acceder a www.iesrioja.red el servidor por defecto servirá
www.iesrioja.red/index.html.
Podemos indicarle más de un fichero a buscar. El orden con el que se especifica el nombre del fichero
determinará la prioridad a la hora de decidir que fichero es el que se muestra.

DirectoryIndex index.html index.php inicio.html ....

Esta directiva forma parte de un módulo de apache (dir.c) y por eso su configuración en Ubuntu está
fuera de apache2, en el fichero mods-available/dir.conf
También se puede indicar esta directiva en la configuración de un host virtual para que se aplique solo
en ese caso.
User / Group
User establece el identificador de usuario (userid) que utiliza el servidor para ejecutarse y responder a
las peticiones.
El valor de User determina el tipo de acceso que tendrá el servidor web a los archivos y directorios en los
que se encuentran las páginas. Si User no puede acceder a un archivo tampoco podrá hacerlo el
servidor web y, por tanto, también inaccesible al cliente web. Por defecto:

User www-data

El proceso Apache2 padre se inicia como root y a continuación pasa al usuario www-data. El servidor
debe arrancar como root porque necesita un puerto por debajo de 1024 (por defecto 80) y los puertos por
debajo de 1024 están reservados para el sistema y sólo pueden ser utilizados por el root. Una vez que el
servidor se ha conectado al puerto, pasa el proceso a User antes de aceptar peticiones.
Group establece el identificador de grupo que utiliza el servidor para ejecutarse y responder a las
peticiones. Por defecto:

Group www-data

Include
Permite que se incluyan otros archivos de configuración en tiempo de ejecución. Los paths o rutas dadas
de los archivos pueden ser absolutos o relativos respecto al valor de la directiva ServerRoot.

Include /etc/apache2/mods-enabled/*.load

AW – UT 3 – Servidor Web Página 13 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Include /etc/apache2/mods-enabled/*.conf

Alias
Permite colocar contenido web en un directorio fuera del directorio DocumentRoot.
Alias <url-path> <recurso>
<url-path> indica la URL del contenido web
<recurso> especifica la posición del recurso en el sistema de archivos Ejemplo:

Alias /icons/ "/usr/share/apache2/icons/"

Indica que, si esta directiva está incluida en el archivo apache2.conf, cuando se escriba /icons/ en el
navegador (http://localhost/icons/) se accederán a los recursos del sistema ubicados en el directorio
/usr/share/apache2/icons/.
Listen
La directiva Listen indica al servidor que acepte peticiones entrantes solamente en los puertos y en las
combinaciones de puertos y direcciones IP que se especifiquen.
Si sólo se especifica un número de puerto en la directiva Listen el servidor escuchará en ese puerto, a
través de todas las interfaces de red de la máquina.
Si se especifica una dirección IP y un puerto, el servidor escuchará solamente en la interfaz de red a la
que pertenezca esa dirección IP y solamente en el puerto indicado.
Se pueden usar varias directivas Listen para especificar varias direcciones IP y puertos de escucha. El
servidor responderá a las peticiones de todas las direcciones y puertos que se incluyan.
Por ejemplo, para hacer que el servidor acepte conexiones tanto en el puerto 80 como en el puerto 8000,
se puede usar:

Listen 80
Listen 8000

Para hacer que el servidor acepte conexiones en dos interfaces de red y puertos específicos, usar

Listen 192.168.1.1:80
Listen 192.168.1.5:8000

Esta directiva se encuentra en el fichero ports.conf

Directivas de Optimización

PidFile
Indica el fichero en el que el servidor graba el identificador de proceso (PID).

PidFile /var/run/apache2.pid

Timeout
El tiempo que el servidor web esperará para recibir y enviar peticiones durante la comunicación.
Expresado en segundos.

AW – UT 3 – Servidor Web Página 14 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Timeout 300

KeepAlive
Activa o desactiva {On | Off} las conexiones persistentes.

KeepAlive On

MaxKeepAliveRequests
Establece el número máximo de peticiones permitidas por cada conexión. El valor 0 indica un número
ilimitado.

MaxKeepAliveRequests 100

KeepAliveTimeout
Indica el número de segundos que el servidor esperará la siguiente petición desde la misma conexión.
Pasado este tiempo se considerará que se ha terminado y cerrará la conexión.
Si se establece un valor muy grande se estarán utilizando muchos recursos de la máquina. Por defecto:

KeepAliveTimeout 15

Directivas de Secciones

Sección Directory
La sección <Directory /ruta> </Directory> engloba una o más directivas de configuración que sólo se
aplican al directorio y subdirectorios especificados.
El argumento /ruta puede ser un nombre de directorio (ruta absoluta) o una expresión regular

<Directory "/usr/share/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
Dentro de <Directory> se usan las siguientes directivas:
Options: [+|-] opcion:
Controla que características están disponibles para un directorio en particular. La opción se puede definir
a None, de forma que ninguna característica extra se habilita o a All de forma que todas se habilitan
menos MultiViews.
Otras características extra son: ExecCGI , FollowSymLinks, Includes, IncludesNOEXEC, Indexes,
MultiViews, SymLinksIfOwnerMatch.
La opción más interesante puede ser Indexes: que si está activa indica que se mostrará el contenido del
directorio.

Options Includes FollowSymLinks -Indexes

AW – UT 3 – Servidor Web Página 15 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Indica que el directorio en cuestión tiene activados FollowSymLinks e Includes, pero no estará activa
Indexes.
AllowOverride
Permite especificar qué partes del servidor pueden ser establecidas en los archivos .htaccess.
Con None Los archivos .htaccess son totalmente ignorados.
Con All, se permite todo tipo de configuración desde los archivos .htaccess
La configuración del archivo .htaccess sobreescribe la configuración dada en el sitio correspondiente y
sólo para el directorio en el que se especifica
Require, Opción nueva, directiva a partir de la versión 2.4
Por ejemplo:
Permitir desde la red 192.168.10.0:

<Directory /var/www/html/misitio>
Require ip 192.168.10.0 / 255.255.255.0
</Directory>

Denegar el acceso desde la ip 192.168.5.1:

<RequireAll>
Require all granted
Require not ip 192.168.5.1
</RequireAll>

Se puede acceder a un sitio web fuera de var/www, tan solo hay que indicar "Permitir todo el acceso",
por ejemplo,:

<Directory /home/jose/htdocs/misitio>
Require all granted
</Directory>

Para permitir todo el acceso y denegar todo el acceso: Require all denied --> Deniega cualquier acceso
(tanto usuarios como ip) Require all granted --> Permite cualquier acceso (tanto usuarios como ip)
Require all 0.0.0.0/0.0.0.0 --> Permite acceso a todas las ips Deny all 0.0.0.0/0.0.0.0 --> Deniega el
acceso a todas las ips
Sección Files
Las directivas de una sección Files sirven para limitar el acceso a ciertos ficheros o directorios.
En el ejemplo siguiente las directivas de configuración, cuando se colocan en la sección principal del
archivo de configuración, deniegan el acceso a cualquier archivo llamado privado.html sin tener en
cuenta donde se encuentre.

<Files "privado.html">
Require all denied
</Files>

AW – UT 3 – Servidor Web Página 16 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

El argumento de <Files> puede ser un nombre de archivo, o una expresión regular. Por ejemplo, para
indicar que el argumento es cualquier archivo con formato gif, jpg, jpeg o png utilizaríamos la siguiente
expresión regular: (Indicando con ~ que se trata de una expresión regular)

<Files ~ "\.(gif|jpe?g|png)$">
Require all denied
</Files>

Sección IfModule
La sección IfModule engloba directivas que se procesarán si el módulo dado como argumento se compila
con Apache2.
Una de las directivas permitidas en IfModule es UserDir.

<IfModule mod_userdir.c>
Userdir directorio
</IfModule>

Userdir, define el nombre del directorio que será añadido al directorio HOME del usuario si se recibe una
petición ~usuario.

AW – UT 3 – Servidor Web Página 17 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1.5 Hosts Virtuales

1.5.1 Introducción
Configurando Hosts Virtuales podemos alojar varios sitios web en el mismo servidor, siendo uno
totalmente independiente del otro.
Con host virtuales, cuando una petición entra en el servidor Apache2 desde un navegador web a
través de una IP dada, Apache2 comprueba el nombre de dominio que se está solicitando, la dirección IP
y el puerto, y muestra el contenido asociado a dicho nombre de dominio.
Actualmente, el sitio por defecto que viene configurado en apache, es un virtual host más.
Apache soporta varios tipos de hosts virtuales:
1. Hosts virtuales basados en nombres: permiten alojar varios nombres de host (o dominios) en
una misma máquina (IP).
2. Hosts virtuales basados en puerto: una máquina responde de diferente manera si se accede a
un puerto u otro..
3. Hosts virtuales basados en IP: una máquina responde de diferente manera si la petición llega
a diferente dirección Ip. Es decir, tenemos múltiples IPs asignadas al sistema y queremos que
cada una de ellas soporte un sitio web.
Hay que tener en cuenta que:
1. El host virtual heredará los parámetros de la configuración global, que no se cambien para él de
forma explícita.
2. Para la definición de hosts virtuales se utiliza la sección <VirtualHost> y en ella se incluyen las
directivas que se aplican a un determinado host virtual. Como mínimo debe incluir la directiva
DocumentRoot y ServerName.
Directivas comunes al configurar Host Virtuales:
▪ DocumentRoot: Directorio donde Apache2 va a buscar los documentos el servidor virtual.
▪ ServerName: Define el nombre del servidor virtual .
▪ VirtualHost: Define una sección para un host virtual con las directivas aplicables a él.

1.5.2 Pasos para crear un nuevo host


1. Crear una nueva carpeta (normalmente dentro de /var/www/html), y copiar allí dentro el
contenido del sitio web. mkdir /var/www/html/nombresitio
2. Crear un nuevo archivo de configuración en el directorio sites-avaliable. Lo más cómodo es
copiar el que viene por defecto. cp /etc/apache2/sites-available/000-default.conf
/etc/apache2/sitesavailable/nombresitio.conf
3. Configurar en el nuevo fichero las opciones necesarias. Lo más importante que DocumentRoot
apunte al directorio creado.
4. Activar este nuevo sitio con el comando: a2ensite nombresitio.conf. Si luego lo queremos
desactivar a2dissite nombresitio.conf

AW – UT 3 – Servidor Web Página 18 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Tened en cuenta que en apache 2.4 los archivos de configuración en el directorio sites-availables deben
tener extensión .conf
5. Reiniciar el servicio apache.

1.5.3 Hosts Virtuales basados en nombre


Supongamos que queremos alojar dos sitios web www.iesrioja.red y www.aparioja.red en la
misma máquina, respondiendo ambos a una sola IP y con una sola instancia de Apache2 configurada en
el puerto 80.
Usando hosts virtuales podemos conseguir que, en el caso de que sea invocado
www.iesrioja.red, Apache2 le responda con una página web alojada en un directorio y en el caso que sea
convocado como www.aparioja.red, vaya a leer los archivos a otro directorio. Es decir, habrá un
directorio (DocumentRoot) para cada uno de los servidores virtuales que definamos.

¿Cómo sabe Apache2 si una petición va dirigida a uno u otro host virtual?
La respuesta está en las cabeceras del HTTP/1.1. Cuando un navegador envía una petición al
servidor usando el protocolo HTTP/1.1 envía una cabecera del tipo host: nombre_de_un_host con la que
Apache2 puede diferenciar las peticiones de los distintos hosts virtuales.
Ahora necesitamos crear la directiva <VirtualHost IP:Puerto> para cada host diferente que se
quiera alojar en el servidor, los parámetros de configuración (Ip:Puerto) de VirtualHost indican IP del
servidor (* indica que es válido para cualquier IP que tenga el servidor) y puerto por el que escuchará la
petición.

<VirtualHost *:80 >

Dentro de cada bloque <VirtualHost>, necesitará como mínimo una directiva ServerName para
indicar qué host se sirve y una directiva DocumentRoot para indicar dónde están los contenidos a servir
dentro del sistema de archivos.
El servidor web existente (host virtual por defecto) dispone de su configuración como host virtual en el
archivo /etc/apache2/sites-available/000-default.conf.
Supongamos que ya se está sirviendo el dominio www.iesrioja.red y se quiere añadir el host
virtual www.aparioja.red, que apunta a la misma dirección IP.
Crear un nuevo sitio virtual con esta configuración y activarlo.

<VirtualHost *:80 >


ServerName www.aparioja.red
DocumentRoot /var/www/html/aparioja
<Directory /var/www/html/aparioja>
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>

AW – UT 3 – Servidor Web Página 19 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

La sección Directory, en este ejemplo es opcional, la opción Indexes está activa por defecto.

Para que se pudiese acceder desde otros ordenadores debería existir un servidor DNS donde
introducir el nombre.

Aclaración: como nosotros no disponemos de un DNS (resolución de nombre de dominio),


realizamos la resolución local de nombres editando el fichero hosts del pc desde el que se desea
acceder al servidor.

No debes olvidar que si no tenemos DNS hay que editar el archivo /etc/hosts para hacer la
resolución local de nombre, y añadir la línea:
Si estamos comprobando el acceso desde el propio servidor, hacemos la resolución en el
servidor, por lo tanto la ip es 127.0.0.1
127.0.0.1 localhost www.iesrioja.red www.aparioja.red

Si estamos accediendo desde cualquier otro pc_cliente (en red), hacemos la resolución en el
cliente, pondríamos la ip del servidor:

IP_del_servidor www.iesrioja.red www.aparioja.red

Las directivas <VirtualHost *:80>...</VirtualHost> definen los hosts virtuales de nuestro servidor.
En cada uno de estos bloques, se le indica a Apache2 el DocumentRoot del host y el ServerName con el
que deben responder.
En caso de acceder de otra manera al servidor habrá un virtual host que actúe por defecto,
normalmente el primero que esté especificado. Si queremos configurar un virtual host 'oficial' o por
defecto se puede hacer definiéndolo de la siguiente manera:
<VirtualHost _default_:80>

1.5.4 Hosts Virtuales basados en puerto


Si queremos que apache funcione en dos puertos diferentes y que responda diferente según el
puerto crearemos dos VirtualHost cada uno con su configuración de la manera siguiente.

<VirtualHost *:80 >


ServerName www.iesrioja.red
DocumentRoot /var/www/html/iesrioja
</VirtualHost>

<VirtualHost *:8080 >


ServerName www.aparioja.red
DocumentRoot /var/www/html/aparioja
</VirtualHost>

Además es indispensable, añadir en el fichero ports.conf el nuevo puerto con:

AW – UT 3 – Servidor Web Página 20 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Listen 8080

1.5.5 Hosts Virtuales basados en IP


La técnica de hosts virtuales basada en direcciones IP requiere que el computador que alberga
los dos hosts tenga dos direcciones IP diferentes (dos interfaces de red). En este caso cada sección
VirtualHost hace referencia a cada una de las direcciones.

<VirtualHost 192.168.1.1>
ServerName www.iesrioja.red
DocumentRoot /var/www/html/iesrioja
</VirtualHost>

<VirtualHost 192.168.1.2>
ServerName www.aparioja.red
DocumentRoot /var/www/html/aparioja
</VirtualHost>

AW – UT 3 – Servidor Web Página 21 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1.6 SSL en Apache

1.6.1 Introducción
Una página web segura o un sitio web seguro es un sitio web que utiliza el protocolo https en
lugar de utilizar el protocolo http.
El protocolo https es idéntico al protocolo http, pero añadiendo el protocolo SSL (Secure Socket
Layer) que permite establecer de forma sencilla, conexiones seguras cifrando la información trasmitida
entre cliente y servidor.
Los algoritmos de cifrado utilizados reúnen las características necesarias para garantizar que la
información que sale desde el servidor hacia el cliente, esté cifrada y solamente pueda ser descifrada por
el cliente y que la información que sale desde el cliente hacia el servidor, esté cifrada y solamente pueda
ser descifrada por el servidor.
Para comprender mejor esta parte hay que conocer algunos términos de criptografía, como clave
pública y privada, certificados digitales y Autoridades de Certificación. Puedes aprender sobre ello en el
siguiente Anexo de Criptografía

1.6.2 Requisitos previos


Para que apache2 funcione con SSL, necesita dos cosas.
▪ Por un lado un módulo llamado ssl, que viene con la instalación pero que habrá que activarlo.
▪ Por otro lado necesitaremos generar nuestras claves (privada y pública) y el certificado (que en este
caso nos lo firmaremos nosotros mismos), para ello necesitamos tener instalado el paquete openssl en
nuestra distribución. Podemos comprobar si está instalado con dpkg -l | grep openssl, y si no está lo
instalamos con aptitude install openssl.

1.6.3 Generar el certificado


Para que nuestro servidor pueda servir páginas seguras con el protocolo https, necesita un
certificado. Dicho certificado permitirá que nuestro servidor utilizar cifrado asimétrico para intercambiar
las claves de cifrado con los clientes, antes de iniciar una trasmisión segura de información.
Inicialmente, el cliente deberá aceptar el certificado del servidor, ya que generaremos un
certificado autofirmado. Si queremos evitarlo, deberíamos contratar un certificado a una entidad
certificadora confiable, pero tiene un coste que no merece la pena soportar en un entorno educativo.
Para generar nuestro certificado autofirmado, ejecutaremos los siguientes comandos (antes
existía un script llamado apache2-ssl-certificate, ahora hay que usar directamente las funciones de
openssl):.
Lo primero que vamos a hacer es crear una carpeta ssl en /etc/apache2 para situar allí todos
los archivos que generamos y desde allí ejecutamos los siguientes comandos (necesitaremos permisos
de root puesto que estamos escribiendo en una carpeta del sistema): sudo mkdir /etc/apache2/ssl

// Generar una clave privada

AW – UT 3 – Servidor Web Página 22 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

$ sudo openssl genrsa -out iesrioja.key 2048


// Generar el certificado
$ sudo openssl req -new -key iesrioja.key -out iesrioja.csr

Tendremos que responder a algunas preguntas sobre nuestra ubicación geográfica, nombre de nuestra
organización,..., respondemos como queremos, a la última opción de password la dejamos en blanco si
no queremos que nos la pida cada vez que lo usemos.

// Generar certificado autofirmado


$ sudo openssl x509 -req -days 360 -in iesrioja.csr -signkey iesrioja.key -out iesrioja.crt

De esta manera tendríamos tres ficheros: iesrioja.key con la clave privada, iesrioja.csr con un certificado
sin firmar y iesrioja.crt con el certificado firmado por nosotros mismos. Estas extensiones se ponen por
diferenciar, aunque su formato de guardado es el formato pem.
También podemos generar la clave y el certificado autofirmado (que es lo que se usa) de un solo
comando:

// Generar clave privada y certificado autofirmado directamente


$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout clave.pem -out certi.pem

El siguiente paso será configurar un servidor virtual para que utilice dicho certificado.

1.6.4 Crear servidor virtual seguro en apache2


Hemos visto como crear hosts virtuales basados en puerto, básicamente esto es lo que hay que
hacer usando el puerto 443 y configurando algunas directivas de seguridad en este virtual host. Además,
en la instalación de apache viene un site llamado default-ssl.conf (en sites-availabes) preconfigurado ya
con todo lo básico para activarlo rápidamente (si queremos activarlo para una carpeta distinta de
/var/www/html, hay que crear la carpeta e introducir el contenido web allí, indicar la ruta aquí y permitir el
acceso si es necesario). Así pues, editamos ese fichero y nos aseguramos que está la siguiente
configuración como minimo, que es la que caracteriza a un sitio seguro.

<VirtualHost _default_:443>
DocumentRoot /var/www/html/iesrioja
…………
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/iesrioja.crt
SSLCertificateKeyFile /etc/apache2/ssl/iesrioja.key
</VirtualHost>

Estas son las directivas esenciales para que funcione mediante certificado, pero hay otras muchas
directivas.
Por ejemplo si queremos que un directorio sólo funcione con SSL hay que poner dentro de Directory la
directiva SSLRequireSSL. Otra opción puede ser pedir un certificado al cliente con SSLVerifyClient
require.

AW – UT 3 – Servidor Web Página 23 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

El protocolo https utiliza el puerto 443, por lo tanto, tendremos habilitar (si no lo está) dicho puerto para
que apache lo utilice:

// Añadir en /etc/apache2/ports.conf (Está configurado para funcionar si está activado el modulo


ssl)
Listen 443

Posteriormente debemos habilitar el módulo ssl del servidor apache:

// Habilitar el módulo ssl


$ sudo a2enmod ssl

Habilitamos el sitio ssl:

// Habilitar el sitio que hemos modificado o creado


$ sudo a2ensite default-ssl.conf

Finalmente reiniciamos el servidor apache:

// Reinicio de apache
$ sudo /etc/init.d/apache2 restart

1.6.5 Probando el acceso al sitio web seguro


Para acceder a las páginas seguras de nuestro servidor web, tecleamos desde el navegador
'https://www.iesrioja.red'. Lo primero que se muestra es la alerta de seguridad que nos indica que el
certificado no está emitido por una CA en la que confiamos:

AW – UT 3 – Servidor Web Página 24 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Si pulsamos sobre Entiendo los riesgos, y luego sobre Añadir excepción, el botón 'Examinar
certificado', nos aparecerá una pantalla donde podemos obtener el certificado y verlo. Veremos la
información tanto del certificado como de la entidad certificadora que lo firma:

Si aceptamos el certificado significa que, a pesar de estar firmado por una entidad certificadora
que no es de confianza para el navegador (lo hemos firmado nosotros mismos), lo aceptamos.
Tendremos que indicar al navegador si aceptamos el certificado para siempre o solo para ahora.

AW – UT 3 – Servidor Web Página 25 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

(se muestra, en este caso el fichero index.html contenido en el sitio seguro)


Ahora ya tenemos acceso a la web segura mediante el protocolo https lo que nos garantiza que
la información de la página antes de salir del servidor, ha sido cifrada y por tanto la trasferencia de datos
desde el servidor a nuestro navegador se ha producido de forma segura. Al llegar a nuestro navegador,
se han descifrado los datos. Los navegadores indican que es segura de diferentes formas, con candado,
con colores,...
Una opción interesante por si te interesa conocerla, si ponemos la url sin https y queremos que
nos redirija a https podemos lograrlo configurando la redirección en el archivo correspondiente de
configuración del sitio seguro: es decir si accedemos por el puerto 80 que lo redirija a https:// …….

AW – UT 3 – Servidor Web Página 26 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1.7 Otras opciones de Apache

Apache permite una variedad enorme de opciones y configuraciones. Hemos visto algunas de
ellas, ahora veremos otras que también se usan bastante.

1.7.1 Control de Acceso


Visitar la web de apache.org para ver las directivas Require, RequireAll, RequireAny,
RequireNone
Si lo que se quiere es restringir algunas zonas del sitio web, basándonos en la dirección del
visitante, esto puede ser realizado de manera fácil con el módulo mod_authz_host.
La directiva Require proporciona una variedad de diferentes maneras de permitir o denegar el
acceso a los recursos. Además puede ser usada junto con las directivas: RequireAll, RequireAny, y
RequireNone, estos requerimientos pueden ser combinados de forma compleja y arbitraria, para cumplir
cualquiera que sean tus políticas de acceso.

Las directivas Allow, Deny, y Order, proporcionadas por mod_access_compat, están obsoletas y
serán quitadas en futuras versiones. Deberá evitar su uso, y también los tutoriales desactualizaos que
recomienden su uso.

Es posible permitir el acceso a los usuarios en función de la máquina desde la que hacen las
solicitudes de información.
Estas directivas van normalmente dentro de la sección <Directory>, en la sección <Files> o en
los archivos .htaccess

OPCION: Require (Visite este enlace)


Require --> directiva utilidad para limitar las ips
Ejemplo: Permitir el acceso únicamente desde la red 192.168.10.0/24

Require ip 192.168.10.0 / 255.255.255.0

Ejemplo: Denegar el acceso desde la red 192.168.1.0/24 y la ip 192.168.5.1

Require not ip 192.168.1.0 / 255.255.255.0

Require not ip 192.168.5.1

Nota: Puede ser insertado not para negar un requisito en particular. Note que, ya que not es una
negación de un valor, no puede ser usado por sí solo para permitir o denegar una petición, como
not true que no constituye ser false. En consecuencia, para denegar una visita usando una
negación, el bloque debe tener un elemento que se evalúa como verdadero o falso. Por ejemplo, si
tienes a alguien espameandote tu tablón de mensajes, y tú quieres evitar que entren o dejarlos
fuera, puedes realizar lo siguiente:

AW – UT 3 – Servidor Web Página 27 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

<RequireAll>

Require all granted

Require not ip 10.252.46.165

</RequireAll>

Permitir todo el acceso y denegar todo el acceso

Require all denied --> Deniega cualquier acceso (tanto usuarios como ip)

Require all granted -->Permite cualquier acceso(tanto usuarios como ip)

Require all 0.0.0.0/0.0.0.0 -->Permite acceso a todas las ips

1.7.2 Autenticación
La autentificación se basa en el principio de que el cliente envía su nombre y su password al
servidor, un módulo de Apache chequea si las credenciales son correctas, y si lo son devuelve la página
solicitada. Si el usuario no tiene permitido el acceso o el password no es válido, el servidor Apache
devuelve un código de estado 401 (Acceso no autorizado).
Para utilizar los mecanismos proporcionados por Apache para el proceso de autenticación deben
esta activado el módulo correspondiente al método que se vaya a utilizar. Para autenticación básica: $
sudo a2enmod auth_basic. Otros métodos son digest o mysql.
Para configurar la autenticación habrá que añadir una sección <Directory>...</Directory> por
cada directorio que se quiera proteger:

<Directory "/var/www/html/privado">
AuthType Basic
AuthName "Este directorio es privado, introduce tus datos"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>

AuthType
Indica cuál es el tipo de autenticación que va a utilizar. Puede ser Basic (transferencia sin cifrar) o Digest
(cifrada).

AuthType Basic

AuthName
Especifica un nombre del dominio para el cual se solicita el acceso, este nombre figurará en la pantalla
donde se pide la clave, y a su vez servirá para que el cliente identifique la contraseña que debe utilizar al
enviar una petición a un área determinada.

AW – UT 3 – Servidor Web Página 28 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

AuthName "Este directorio es privado, introduce tus datos"

AuthUserFile
Ubicación del archivo que contendrá los nombres de usuario y contraseñas usadas en la autenticación
HTTP básica. Se suele llamar .htpasswd.

AuthUserFile /etc/apache2/.htpasswd

AuthGroupFile
Ubicación del archivo que contendrá los nombres de los grupos y los usuarios pertenecientes a cada
grupo. Se suele llamar .htgroup

AuthGroupFile /etc/apache2/.htgroup

Para trabajar con grupos, es necesario activar el módulo: authz_groupfile


Require
Selecciona qué usuarios autenticados pueden acceder a un recurso
Permito el acceso a alumno y a profesor.

Require user alumno profesor

Sólo el usuario juan puede acceder al recurso

Require user juan

Sólo los usuarios del grupo oficina puede acceder al recurso

Require group oficina

Cualquier usuario dado de alta en el sistema puede acceder

Require valid-user

Crear fichero de usuarios para autenticar


Para poder usar la autenticación de usuarios, hay que tener crear un fichero con los usuarios y sus
contraseñas. Elegimos un nombre y una ruta (que deberá coincidir con la directiva AuthUserFile y lo
creamos.
Se puede hacer con un comando que tiene apache para ello:

// Crear el fichero y añadir el primer usuario. Pedirá la contraseña.


$ sudo htpasswd -c /etc/apache2/.htpasswd usuario1
// Añadir usuarios al fichero ya creado. Pedirá la contraseña.
$ sudo htpasswd /etc/apache2/.htpasswd juan

También se puede hacer con algún editor: sudo nano /etc/apache2/.htpasswd

AW – UT 3 – Servidor Web Página 29 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Dentro del fichero escribiremos los usuarios y contraseñas siguiendo este formato:

usuario1:contraseña
juan:1234
perico:perico#57

¡¡IMPORTANTE ¡¡ En las últimas versiones de apache se requiere que estas contraseñas estén cifradas
para que funcione, se pueden conseguir las contrseñas cifradas en varios sitios como
en http://home.flash.net/cgi-bin/pw.pl o en http://www.htaccesstools.com/htpasswd-generator/
Quedando el fichero:

usuario1:/g42H/M0YGX2.
juan:qvApimGRgQOyo
perico:cKH2sP2WY6XIE

Crear fichero de grupos para autenticar


Si se quiere trabajar con grupos, se podría hacer con la directiva AuthGroupFile y un fichero
/etc/apache2/.htgroup con la sintaxis: nombre del grupo: nombre de usuarios del grupo

grupo1: usuario1 usuario2


amigos: juan perico

¡¡IMPORTANTE!! En la versión de apache 2.4, para trabajar con grupos, es necesario activar el
módulo: mod_authz_groupfile

Redirecciones

Se puede configurar un directorio para que él y su contenido sean redirigidos de modo transparente
hacia cualquier otra dirección. Para ello se utiliza la directiva Redirect:

Redirect 301 /blog http://miblog.wordpress.com/

Ejemplo para Redireccionar el tráfico web:

Redirect /index.html http://www.servernuevo.red/index.html

En el ejemplo se indica que si un usuario trata de acceder al subdirectorio /blog en el servidor, Apache2
le deberá redirigir hacia http://miblog.wordpress.com/. El número 301 corresponde al mensaje del
protocolo HTTP para indicar que la redirección es permanente.

1.7.3 Archivos .htaccess


Apache, además de la configuración por medio del fichero apache2.conf (y los incluidos en
este), se puede configurar de otra manera, por medio de ficheros .htaccess, estos ficheros los puede
generar cualquier usuario en un directorio de los que son mostrados por apache. Gracias a esto no hay

AW – UT 3 – Servidor Web Página 30 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

que dar acceso a la configuración general (por defecto sólo puede configurar el root) y cualquier usuario
que pueda escribir en el directorio se podrá configurar su fichero .htaccess.
Hay que tener en cuenta que para permitir la opción de estos ficheros, es necesario el permiso
por parte del administrador por medio de la directiva AllowOverride que con All permite reescribir todo
tipo de configuración con .htaccess, con none ninguna y con otras directivas se especifica que podrá
incluir estos ficheros.
Ejemplo:
<VirtualHost *:80>
……
……
<Directory /home/charo/htdocs/miSitio>
AllowOverride All
</ Directory>
</ VirtualHost>

Estos ficheros son muy usados en los hosting virtuales que alquilamos en Internet, no tenemos
acceso al servidor Apache, pero si tenemos acceso por ftp a sus carpetas, así que podemos configurar
ciertas cosas.
.htaccess es un archivo de texto (oculto en los sistemas linux) que contiene una serie de
directivas para el servidor Apache. Cuando un cliente solicita un archivo al servidor, este busca (desde el
directorio raíz hasta el subdirectorio que contiene el archivo solicitado) el archivo .htaccess y tiene en
cuenta estas reglas antes de proceder con la petición, es decir, se aplican las normas especificadas al
directorio en el que se encuentre .htaccess y los directorios por debajo de él.
Se puede configurar gran cantidad de cosas, y el lenguaje, las directivas son las mismas que
hemos aprendido.
Sólo hay que crear un fichero .htaccess, con las directivas elegidas dentro y copiarlo al
directorio a configurar.
Proteger con usuario y contraseña

AuthType Basic
AuthName "Este directorio es privado, introduce tus datos"
AuthUserFile .htpasswd
Require valid-user

Continuación del ejemplo:


En el directorio /home/charo/htdocs/miSitio creo el fichero .htaccess, lo edito y escribo, por ejemplo, las siguientes
directivas para la autenticación de usuarios para el acceso al sitio:

Si solo quiero la autenticación:

AW – UT 3 – Servidor Web Página 31 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

1.8 LAMPP:LINUX+APACHE+MYSQL+PHP+PHPMYADMIN
Para poder aprovechar al máximo las características del servidor web apache, es muy
conveniente que pueda ejecutar scripts en servidor y pueda acceder a bases de datos.
Las aplicaciones web más interesantes como los gestores de contenidos para crear y mantener
sitios web dinámicos, wikis, blogs, foros-web, repositorios de arhivos, etc... requieren de lenguaje script
en servidor y sistema gestor de bases de datos.
En el desarrollo web del mundo Linux el lenguaje script en servidor más utilizado es el lenguaje
php y el sistema gestor de bases de datos más utilizado es mysql. Phpmyadmin es una excelente
herramienta para administrar bases de datos mysql.

1.8.1 PHP
Introducción
PHP es un lenguaje de programación interpretado, de alto nivel, ejecutado en el servidor y usado
frecuentemente para la creación de contenido para webs dinámicas. Su código está embebido en el
código HTML y al ser ejecutado en el servidor PHP nunca es enviado al cliente. El servidor es quien
procesa la petición del cliente ejecutando el código PHP y devolviendo el HTML generado.
Instalación de PHP
Para instalar PHP en nuestro servidor la haremos desde los repositorios. El paquete a instalar
depende de la versión que deseemos instalar.

// Instalación de php para apache 2


# $ sudo apt-get install php

Reiniciar Apache.
IMPORTANTE ¡¡¡Si todo va bien, al instalar php también se instalará el paquete libapache2-mod-php,
que es el encargado de "introducir" el soporte php dentro de apache!!!.
Si al poner el comando nos da algún tipo de aviso, podemos usar el comando

sudo apt-get install libapache2-mod-php .

Además, automáticamente se configura creando los archivos necesarios en la carpeta de módulos


disponibles de apache (/etc/apache2/mods-available), los enlaces necesarios para habilitarlos en la
carpeta de módulos habilitados de apache (/etc/apache2/mods-enabled) y el fichero de configuración en
/etc/php/apache2/php.ini
Una muy buena forma de saber si tenemos soporte php y además cómo está configurando es
haciendo lo siguiente: Creemos un nuevo archivo de la siguiente manera
nano /var/www/html/info.php, y escribimos las siguiente línea.
<?php phpinfo(); ?>
Ahora podemos ir a http://localhost/info.php y allí nos tendría que salir información sobre la
configuración de php.

AW – UT 3 – Servidor Web Página 32 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Configuración de PHP
El archivo de configuración de php es el archivo /etc/php/apache2/php.ini, dos parámetros
destacables a configurar son:
▪ Safe Mode = Off (Modo Seguro. Si el Modo seguro está activado, se deshabilitan todas las
funciones del php consideradas peligrosas. Para servicios de hosting se recomienda activar el
modo seguro.)
▪ Display errors = On (Mostrar Errores. Muestra los errores en las mismas páginas, cuando les
haya.

1.8.2 MySQL
Introducción
MySQL es un SGBDR (Sistema Gestor de Bases de Datos Relacional) muy completo y muy
utilizado hoy en día sobre todo en los hosting en Internet.
MySQL se ofrece con licencia GNU GPL y es multiplataforma.
Si disponemos de un servidor web con soporte php y base de datos mysql, tendremos la
arquitectura ideal para crear un portal dinámico utilizando gestores de contenidos como Joomla, drupal o
wordpress, así como aplicaciones web orientadas al trabajo colaborativo y al desarrollo rápido de
contenidos como Wikis y para plataformas learning como moodle.

Instalación de mysql
Para la instalación del servidor y el cliente de mysql en su última versión, basta con instalar el
metapaquete mysql-server, el cual instala la última versión disponible de mysql.
Durante la instalación nos pedirá que elijamos la contraseña del usuario root para la base de
datos, es decir el usuario que podrá manejar toda la configuración de la base de datos.

// Instalación de mysql
$ sudo aptitude install mysql-server

Si durante la instalación no pide contraseña para root, deberemos asignarle una:


Asignar contraseña al usuario root de mysql-server

AW – UT 3 – Servidor Web Página 33 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Para poder acceder a phpmyadmin con el usuario root, deberemos asignarle una contraseña.

Arranque y parada del SGBD mysql


MySQL es un servicio más, al igual que apache, y como tal está escuchando en un puerto
(normalmente 3306) a futuras conexiones. El servidor de datos mysql, al igual que todos los servicios en
Debian, dispone de un script de arranque y parada en la carpeta /etc/init.d.

// Iniciar o reiniciar el servidor mysql


$ sudo /etc/init.d/mysql restart
// Parar el servidor mysql
$ sudo /etc/init.d/mysql stop

Configuración del SGBD mysql


El archivo de configuración de mysql es el archivo: /etc/mysql/my.cnf
En dicho archivo se configuran aspectos generales como la contraseña, el puerto a utilizar y
algún otro aspecto pero para hacer un uso normal de mysql, no es necesario realizar ninguna
modificación del archivo original.

AW – UT 3 – Servidor Web Página 34 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Además mysql se puede administra desde línea de comandos, bastaría con poner mysql -u root
-p, introducir la password que hemos puesto en la instalación y tendríamos acceso a toda la base de
datos, para crear usuarios, bases de datos, tablas....

1.8.3 phpMyAdmin
Introducción
phpMyAdmin es una herramienta escrita en PHP para llevar la administración de MySQL vía
web. Permite crear y eliminar BBDD, crear, eliminar y modificar tablas, borrar, editar y añadir campos,
ejecutar cualquier sentencia SQL, administrar claves y privilegios, etc. Disponible bajo la licencia GPL.

Instalación de phpMyAdmin
PhpMyAdmin también está en los repositorios de Ubuntu, así que bastará con poner:

// Instalación de phpMyAdmin
$ sudo apt-get install phpmyadmin

Recordad, que para seleccionar durante la instalación cualquier opción, se debe pulsar la barra
espaciadora.
Entre otros paquetes, se instala uno muy importante, es el paquete con la última versión X
instalada de php: phpX-mysql, que es necesario para que cualquier aplicación escrita en php pueda
acceder a una base de datos mysql. Si no queremos instalar phpMyAdmin, no hay que olvidar instalar
este paquete.
La instalación necesitará la contraseña del usuario root de la base de datos para poder acceder
a ella y crear las tablas necesarias.
Para poder manejar phpMyAdmin se necesita que el directorio donde se ha copiado,
normalmente /usr/share/phpmyadmin sea un directorio que se muestre en Apache.
Lo que hace la instalación normalmente es añadir al sitio por defecto de apache, un alias de tal
manera que al poner la URL http://ip-del-servidor-web/phpmyadmin/ se muestre el directorio de
phpMyAdmin.
Si esta dirección no funciona habrá que configurar Apache para mostrar phpMyAdmin. En el
fichero /etc/phpmyadmin/apache.conf está toda la configuración necesaria. Basta con copiar esta
configuración a un sitio activo en apache, o crear uno nuevo con ella.
También se puede crear un simple enlace en el directorio de un sitio activo a la carpeta
/usr/share/phpmyadmin. Por ejemplo: ln -s /usr/share/phpmyadmin /var/www/
Al acceder nos pide un usuario y contraseña con privilegios para gestionar mysql. El manejo es
bastante sencillo.
El archivo de configuración de phpmyadmin es el archivo: /etc/phpmyadmin/config.inc.php, en
él, están los parámetros que permitirán a phpmyadmin conectar con mysql como el host, puerto y
autenticación.

AW – UT 3 – Servidor Web Página 35 de 36


Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web UT 3 – Servidor web APACHE

Recordad, que para seleccionar durante la instalación cualquier opción, se debe pulsar la
barra espaciadora.

Para poder acceder con la url http://localhost/phpmyadmin el servidor (o host) virtual 000-
default.conf debe estar habilitado.

AW – UT 3 – Servidor Web Página 36 de 36

También podría gustarte