Inicio / Tutoriales / Autenticación con MySQL en Apache2

Autenticación con MySQL en Apache2

Apache2 nos permite utilizar una amplia variedad de mecanismos de autenticación, algunos más seguros que otros pero sin embargo todos tienen su utilidad dentro del entorno adecuado.

Hoy queremos explicaros cómo implantar la autenticación con MySQL en Apache2, ideal para aquellas personas que tengan una base de datos con una vasta cantidad de usuarios y por lo tanto, no sea algo muy inteligente, práctico ni seguro tenerlos todos guardados en un archivo de texto.

Tener una autenticación en Apache con MySQL nos permitirá guardar una mayor cantidad de campos para cada usuario y además es uno de los métodos de autenticación más seguros hasta la fecha, así que si quieres saber cómo hacerlo, a continuación nosotros te lo explicamos.

autenticacion mysql en apache2

Autenticación con MySQL en Apache2

Paso uno: Instalación de módulos y dependencias necesarias de MySQL

Primero debemos resolver las dependencias e instalar los módulos necesarios para apache, para ello ejecuta los siguientes comandos:

  • Instalación y activación de los módulos necesarios en Apache
apt-get install libapache2-mod-auth-mysql | a2enmod auth_mysql | service apache2 restart

Ahora para instalar las librerías de PHP necesarias:

  • Resolución de dependencias
apt-get install phpmyadmin | apt-get install php5 | apt-get install mysql-common mysql-client mysql-server

Finalizado esto nos iremos a nuestro navegador y nos iremos a la dirección http://localhost/phpmyadmin y crearemos una nueva base de datos (auth_mysql), una tabla (usuarios) y dos columnas (login y passwd). Si lo deseamos podemos insertar más columnas, pero sin embargo con esas dos será más que suficiente para tener una configuración básica.

También tendremos que crear un usuario en MySQL (apacheauth) y darle acceso todas estas tablas para que de esta manera Apache2 pueda tener privilegios de lectura (select).

Paso dos: Creación de registros en la base de datos

Una vez tenemos todo lo anterior configurado, debemos de crear los registros correspondientes, es decir, insertar todos los usuarios en la base de datos dentro de la tabla correspondiente.

También debemos de crear un archivo index.html dentro de /srv/www/mysql en el cual pondremos un mensaje de bienvenida para poder probar el entorno de forma más eficiente.

Es recomendable la creación de un script para MySQL para que de esta forma podamos insertar todos los registros en la base de datos de una sola vez en lugar de tener que hacerlo uno por uno.

Paso tres: Modificación del fichero de Virtualhost

Ahora debemos modificar el fichero del virtualhost de Apache2 para que de esta forma, este pueda utilizar el mecanismo de autenticación de MySQL el cual activamos previamente con el módulo.

Para ello simplemente introduce dentro del virtualhost los siguientes campos y rellénalos con la información que te indicamos.

  • AuthType – Tipo de autenticación que vamos a utilizar (Digest).
  • AuthName – Nombre de dominio que hemos definido en htpasswd (mysql).
  • AuthUserFile – Lugar donde se almacenan los nombre de usuario, dominios y contraseñas encriptadas.
  • AuthMySQL_DB — nombres de la base de datos.
  • Auth_MySQL_Host – determinan el servidor donde esta reside, que usaremos para la autenticación de usuarios.
  • Auth_MySQL_User – nombre de usuario con privilegios select que apache usará para leer la base de datos.
  • Auth_MySQL_Password – es la contraseña que hemos generado del usuario MySQL con privilegios de lectura (select).
  • AuthMySQL_Password_Table – nombre de la tabla (usuarios).
  • AuthMySQL_Username_Field – campo Login
  • AuthMySQL_Password_Field campo pwd
  • AuthMySQL_Encryption_Types Crypt – nos permite definir la forma en que la contraseña se guarda en nuestra base de datos. En nuestro caso encriptada.

Debería quedar algo similar a esto, pero con la información correspondiente de nuestro servidor:

archivo de virtualhost

Paso cuatro: Generación de claves encriptadas para los usuarios

Ahora debemos generar contraseñas encriptadas para los usuarios, aunque parezca algo difícil para nada es así ya que simplemente tendremos que introducir un simple comando:

  • Generación de claves encriptadas
htdigest -c /etc/apache2/claves/digest.txt mysql usuario1

Introduciremos una clave y nos creará dentro del fichero el usuario con la clave encriptada, ahora debemos de coger esta clave encriptada, copiarla al portapapeles, conectarnos a MySQL como Root o algún usuario que tenga privilegios de escritura sobre la base de datos que vayamos a utilizar.

Hecho esto nos iremos al registro del usuario correspondiente y editaremos el campo passwd pegando la clave encriptada que copiamos recientemente.

Cuando finalicemos, reiniciaremos el servicio de apache2:

  • Reinicio del servicio
Service apache2 restart

Y entonces ahora si lo hemos hecho todo bien, accederemos al virtualhost en el que hemos habilitado la autenticación por MySQL desde el navegador y nos debe aparecer un recuadro en el que nos pide un nombre de usuario y contraseña.

cuadro de login

Introduciremos para poder entrar dicho nombre de usuario y contraseña y si el usuario está en la base de datos y la contraseña coincide con la del fichero digest.txt, nos debe dejar entrar. Si es así entonces ya está completamente implantado el servicio de Autenticación de MySQL en Apache2, ahora sólo te queda repetir este proceso con todos los usuarios de tu servidor.

Acerca de CarlosMarco

Vea Tambien

Linux

Como limpiar Linux a fondo

Una de las ventajas mas grandes de Linux es que nos otorga total libertad en ...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *