Geoestacionado en la Termosfera

Mis inquietudes en la red


Deja un comentario

Instalación y configuración de servidor Web Apache con autenticación mediante base de datos MySQL

1. Instalación


En primer lugar vamos a proceder a instalar los servicios y paquetes necesarios.
Actualizar nuestros gestor de paquetes:

$ sudo apt-get update

Instalar servidor Web apache:

$ sudo apt-get install apache2

Instalar sistema gestor de base de datos MySQL:

$ sudo apt-get install mysql-server mysql-client

Ahora vamos a instalar el modulo de apache necesario para autenticarnos contra la base de datos MySQL:

$ sudo apt-get install libapache2-mod-auth-mysql

Y lo habilitamos:

$ sudo a2enmod auth_mysql

Por último para asegurarnos de que todo funciona correctamente reiniciamos el servidor:

$ sudo service apache2 restart

Accedemos a http://localhost y comprobando que nos muestra el famoso “It works”.

Imagen

2. Creación de base de datos

A continuación vamos a crear la base de datos, crear una tabla e insertar los datos mediante los que autenticarnos y poder así acceder al contenido del servidor.

Iniciar shell de MySQL con un usuario que disponga de los permisos necesarios para crear y manipular bases de datos:

$ mysql -h localhost -u root -p

Creamos la base de datos (podemos utilizar cualquier nombre):

  • > CREATE DATABASE httpauthdb;

Creamos el usuario mediante el cual apache se conectará con la base de datos:

  • > CREATE USER httpauth IDENTIFIED BY ‘httpauth’;

Asignamos permisos al usuario creado, siempre dependiendo de nuestros intereses. En un servidor de producción la mejor opción sería simplemente darle permisos de lectura. Para esta práctica le vamos a dar todos los permisos:

  • > GRANT ALL on httpauthdb.* TO httpauth IDENTIFIED BY ‘httpauth’;

Creamos la tabla:

  • > CREATE TABLE mysql_auth (
  • > userID INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  • > username VARCHAR(50),
  • > password VARCHAR(100));

Insertamos valores. Al insertar el campo ‘password’ le aplicaremos un hash md5 para encriptar su valor:

  • > INSERT INTO mysql_auth(username, password) VALUES (‘test’, MD5(‘test’));

A continuación se muestra la descripción de la tabla y su contenido consecutivamente.

Quedando de la siguiente manera:

Imagen

3. Configuración

Es necesario configurar nuestro servidor apache como se explica a continuación.
Editamos el archivo de configuración /etc/apache2/sites-available/default a través de tu editor de
texto favorito o disponible. Para este tutorial utilizaré VIM, aquí os dejo un enlace a un
tutorial básico sobre manejo de este editor que se encuentra disponible prácticamente en todas las
distribuciones gnu/linux.

Editamos archivo de configuración:

vim /etc/apache2/sites-available/default

Cambiando o añadiendo la directiva AllowOverride dentro de la etiqueta <Directory /ruta> que
deseamos configurar:

AllowOverride None

Por:

AllowOverride AuthConfig

Imagen

Deberemos modificar o crear el fichero .htaccess dentro del directorio en el cual se restringirá el acceso añadiendo una serie de directivas.Por supuesto también es posible añadirlas en el fichero httpd.conf [/etc/apache2/sites-available/defaults en Ubuntu] dentro de <Directory /ruta>.En nuestro caso optaremos por la primera opción, creándolo dentro del directorio /var/www/ y añadiendo las siguientes directivas:

Imagen

Por último volvemos a reiniciar el servidor, y ya debería mostrarnos una ventana modal mediante la cual autenticarnos para poder acceder al contenido en http://localhost.

Imagen

En la captura de pantalla utilizo una dirección IP local, debido a que trato de acceder desde el navegador Web de mi sistema anfitrión, al servidor Web del sistema huesped.