Práctica: Acceso Restringido con apache
Podemos restringir el acceso a determinados directorios de nuestro servidor, de manera que cuando accedamos a ellos con el navegador se nos pedirá un nombre de usuario y una clave. Esos usuarios y esas claves no van a guardar ninguna relación con los del sistema Linux.
Queremos que cuando accedamos al /var/www/restringido <(http://localhost/resgringido) nos pida un usuario y un password para ver su contenido.
1.- Creamos un directorio clavesapache donde vamos a guardar el fichero de usuarios y claves .clavesapache y le damos permiso de lectura, escritura y ejecución para el usuario www-data, que es el usuario por defecto de apache, lectura y ejecución para el grupo www-data y sin permisos para el resto de usuarios:
sudo mkdir /var/www/clavesapache
sudo chown www-data:www-data /var/www/clavesapache
sudo chmod 750 /var/www/clavesapache
Vamos a añadir diferentes /var/www/clavesapache y ajustamos propietario y permisos:
sudo htpasswd -c /var/www/clavesapache/.clavesusuarios usuario1
(introducimos el password y la verificación de su password, por ejemplo clave1)
sudo chown www-data:www-data /var/www/clavesapache/.clavesusuarios
sudo chmod 640 /var/www/clavesapache/.clavesusuarios
Podemos añadir más usuarios (sin el -c, ya que ya existe el fichero .clavesusuarios):
sudo htpasswd /var/www/clavesapache/.clavesusuarios usuario2
Vemos que hemos creado los usuarios con sus respectivas claves encriptadas en el fichero oculto .clavesusuarios:
cat .clavesusuario
usuario1:$apr1$e4xMiIKy$9NzX8TEmqWiMTkqGHp.0G0
usuario2:$apr1$YC5LjTlX$IyXaaKqNK997HSV78BtUF1
2.- Configuramos el fichero /etc/apache2/sites-available/default para que nos solicite un password. Para ello sustituimos AllowOverride None por AllowOverride AuthConfig:
<Directory /var/www/> Options Indexes
FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all
</Directory>
3.- Creamos el directorio restringido y dentro creamos el fichero /var/www/restringido/.htaccess con el siguiente contenido:
AuthType Basic
AuthName "Acceso Restringido"
AuthUserFile /var/www/clavesapache/.clavesusuarios
Require user usuario1
Además creamos el fichero index.html con una página de bienvenida y les damos permisos con el susuario y grupo www-data.
cd /var/www/restringido sudo chown www-data:www-data /var/www/restringido/.htaccess
sudo chown www-data:www-data /var/www/restringido/index.html
sudo chown www-data:www-data /var/www/restringido
4.- Reiniciamos y probamos:
/etc/init.d/apache2 restart
Entramos en el navegador a localhost/restringido e introducimos el usuario y password.
========================================== Esta práctica ha cambiado en nuevas versiones. Apache actualmente tiene como directorio raiz /var/www/html El AuthConfig hay que ponerlo en /etc/apache2/apache2.conf