Entrada

Proteger carpeta con htaccess y .htpasswd

Una forma básica de ofrecer seguridad sobre directorios web en Linux es utilizando el archivo de Apache htaccess. Este se combina con el archivo .htpasswd, o como lo queramos llamar, para ofrecer seguridad y la posibilidad de denegar el acceso a carpetas o directorios que queremos ofrecer un nivel adicional de seguridad.

Para proteger, primero colocaremos el archivo oculto .htaccess en la raiz del directorio que queremos proteger.

Editando con nuestro editor preferido empezamos

1
# vi /var/www/mi_web/administracion/.htaccess

Insertamos lo siguiente en el archivo .htaccess

1
2
3
4
AuthUserFile /home/pedro/.htpasswd
AuthName "Panel para identificar usuario"
AuthType Basic
require valid-user

AuthUserFile indica donde se encuentra el archivo que contiene los usuarios y las contraseñas codificadas en md5 contra las que nos logearemos. Hay que indicar el path completo.

AuthName, es el titulo que contendrá la ventana emergente donde introduciremos las credenciales para logearnos y poder acceder a nuestra carpeta protegida.

en required, se puede poner valid-user, esta sentencia indica que cualquier usuario que aparezca en el archivo .htpasswd se puede logear o se puede poner directamente un usuario o serie de usuarios separados por espacios forzando así que usuarios son los permitidos.

Bueno ahora continuamos editando y creando nuestro archivo que contiene los usuarios que tendrán acceso.

1
2
# cd /home/pedro/
#touch .htpasswd

Con el comando htpasswd creamos usuarios para archivos de autenticación. El comando permite varios modificadores. El uso básico es el siguiente:

1
2
3
4
# htpasswd .htpasswd usuario_pepito
New password:
Re-type new password:
Adding password for user usuario_pepito

O bien para hacerlo todo seguido creando usuario y contraseña todo desde tan solo una linea

1
# htpasswd -bc /home/pedro/.htpasswd usuario_pepito xxxx 

El modificador-b es para que acepte la password que hemos metido después del usuario. -c es para crear el fichero .htpasswd (o el que queramos definir), lo crea desde cero y sobre-escribe lo que haya. Cuidado con este modificador, si ya existe un fichero con usuarios.

Ahora si comprobamos el contenido del fichero con los usuarios disponibles para autenticación podremos ver lo siguiente:

1
2
# more /home/pedro/.htpasswd
usuario_pepito:dDYIlDNOpNcX2

También se puede especificar reglas para proteger carpetas directamente desde un virtualhost

1
2
3
4
5
6
<Directory "/var/www/mi_web/administracion/">
        AuthName "Panel para identificar usuario"
        AuthType Basic
        AuthUserFile /home/pedro/.htpasswd
        require valid-user
</Directory>
Esta entrada está licenciada bajo CC BY 4.0 por el autor.