Aunque puedes utilizar las directivas Allow y Deny para restringir el acceso mediante direcciones IP o nombres de dominio a los sitios web publicados por el servidor web de Apache, una medida de seguridad más estricta es solicitar al usuario una contraseña para acceder a los directorios publicados.

Para realizar esta configuración, es necesario disponer de un archivo de contraseñas donde se almacenarán las parejas de nombres de usuarios con sus contraseñas correspondientes (encriptadas). Este archivo puede crearse en cualquier carpeta, aunque es recomendable tenerlo fuera de las carpetas publicadas por el servidor web. Si no puedes hacerlo así, porque estés utilizando un servidor que no administras, procura asignarle un nombre poco significativo a este archivo.

La creación del archivo se realiza con la siguiente instrucción:

htpasswd -c /ruta/al/archivo/nombre_archivo nombre_usuario

En Windows puedes encontrar la aplicación htpasswd en la carpeta bin de la instalación del servidor web Apache.

La opción -c indica que deseas crear el archivo, por lo que no debes usar esa opción si estás haciendo una modificación posterior al archivo indicado.

Ahora debes indicar en la configuración del servidor que quieres utilizar este tipo de seguridad en un determinado directorio, por lo que debes añadir las líneas siguientes dentro de la sección Directory correspondiente al directorio que deseas proteger, o bien dentro de un archivo .htaccess que se almacene en la carpeta a proteger.

AuthType Basic
AuthName "Sitio restringido"
AuthUserFile /ruta/al/archivo/nombre_archivo
Require user nombre_usuario

En las líneas anteriores puedes sustituir el mensaje "Sitio restringido" por el mensaje que desees que aparezca al usuario cuando intente acceder al directorio, como puedes ver en la siguiente imagen:

restringido01

Además, ese mensaje se puede utilizar para identificar distintos directorios con la misma contraseña. De esta manera, si un usuario se identifica de correctamente en un directorio con un determinado AuthName, puede acceder a los otros directorios que tengan el mismo AuthName sin tener que identificarse de nuevo.

Recuerda también indicar en la directiva AuthUserFile la ruta al archivo en el que se encuentren almacenadas las contraseñas.