Restringir acceso a una web mediante apache con htpasswd y htaccess
1. Crear archivo .htpasswd
En este archivo es donde vamos a configurar los usuarios y sus claves. Para ello basta con crear un archivo llamado .htpasswd en cualquier lugar de la máquina, en nuestro caso lo vamos a situar en la raíz de la web por si no tuvierais acceso a rutas más seguras pero lo mejor sería hacerlo en una ruta segura como por ejemplo /etc/apache/ en el caso de que tengamos acceso a todo nuestro servidor, dentro configuramos un usuario separado con dos puntos (:) de su clave encriptada y por cada línea.
Podemos generar la clave por consola si tenemos acceso a ella o usar algún generador online como http://www.htaccesstools.com/htpasswd-generator/
En el caso de hacerlo mediante el generador online, símplemente copiamos el resultado de crear el .htpasswd en nuestro fichero, en mi caso, voy a generar un usuario llamado pepe con clave 1234. El resultado es:
pepe:$apr1$Jnx.37dh$YbEaAE.no1INWn6ZsObOF1
Con el comando por consola se genera la clave y escribe el fichero:
$ htpasswd -c /ruta/fichero/.htpasswd pepe
Tras el comando nos pedirá que introduzcamos la clave para el usuario y escribirá el fichero. Ya sólo nos quedará usar el .htaccess para que la web nos pida al usuario a intentar entrar.
2. Configurar .htpasswd para que requiera autenticación.
En cualquier lugar de nuestro .htaccess añadimos las siguientes líneas.
AuthUserFile /ruta/fichero/.htpasswd AuthName "MENSAJE QUE QUEREMOS QUE APAREZCA" AuthType Basic require valid-user