2. ANTONIO HERMOSO GONZÁLEZ
Autentificación de usuarios en apache con mysql
Para realizar esta práctica utilizaremos el módulo libapache2-mod-auth-mysql
Lo instalamos :
aptitude install libapache2-mod-auth-mysql
Y lo activamos con el comando: a2enmod auth_mysql y posteriormente
reiniciamos apache
En mi caso ya lo tenía activado
Antes de crear la base de datos utilizamos el programa htpasswd. Este
programa se instala al instalar uno de los modulos de apache2. Seria de la
siguiente manera.
aptitude install libapache2-mod-auth-pam
PRÁCTICA 2
3. ANTONIO HERMOSO GONZÁLEZ
Ya tendriamos instalado el programa. Para usarlo simplemente:
htpasswd -c claves.txt hermoso
*claves.txt, seria el fichero donde se guardan usuario y contraseña. hermoso
seria el usuario y la contraseña te la pediría. Después simplemente a el insertar
los datos, hacemos un insert normal, y ponemos la contraseña del fichero.
Para este modulo, necesitaremos crear una base de datos y unas tablas.
Por ejemplo:
mysql> create database seguridad
mysql> grant all on seguridad.* to hermoso@'localhost'
identified by 'hermoso';
mysql> use seguridad;
mysql> create table clientes(
nombre varchar(25) not null,
pass varchar(44) not null,
primary key (nombre));
PRÁCTICA 3
4. ANTONIO HERMOSO GONZÁLEZ
Para encriptar las contraseñas utilizaremos el cifrado Crypt. Para ello
podemos hacer dos cosas.
Al crear la base de datos, en el insert, ponemos un parámetro para que la
encripte. Los insert serian así:
INSERT INTO `seguridad`.`clientes`
VALUES (
'hermoso', ENCRYPT( 'hermoso' )
);
PRÁCTICA 4
5. ANTONIO HERMOSO GONZÁLEZ
Tras estos pasos, ya tenemos configurada nuestra base de datos con los
usuarios y sus contraseñas. Ahora tenemos que configurar el VirtualHost. Para
ello creamos el arhcivo /etc/apache2/sites-available/seguridad. Lo editamos, y
tiene que quedar de este modo:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName seguridad.mysql
DocumentRoot /var/www/seguridad
<Directory /var/www/seguridadl/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthType Basic
AuthName "Usuario y contraseña" # Texto que te aparecerá
AuthBasicAuthoritative Off
AuthUserFile /dev/null
AuthMYSQL on
AuthMySQL_Authoritative on
AuthMySQL_DB seguridad # Nombre de la base de datos
AuthMySQL_Host localhost
AuthMySQL_User hermoso # Usuario de la base de datos
AuthMySQL_Passwordhermoso # Contraseña del usuario
AuthMySQL_Password_Table clientes # Nombre de la tabla
AuthMySQL_Username_Field nombre # Fila de los nombres
AuthMySQL_Password_Field pass # Fila de las contraseñas
AuthMySQL_Empty_Passwords off
AuthMySQL_Encryption_Types Crypt # Tipo de cifrado
Require valid-user
</Directory>
</VirtualHost>
las directivas que tienen comentarios, son las mas importantes, pueden
cambiar dependiendo de como sea nuestra base de datos o de la encriptación
en el caso de Crypt. Se podría encriptar también con otro tipo de encriptación
como sha1 o md5.
PRÁCTICA 5
6. ANTONIO HERMOSO GONZÁLEZ
Y activamos el modulo con a2ensite seguridad y reiniciamos apache
Yo también lo tenía ya activado
PRÁCTICA 6