Publicidad

Proteger directorio en apache con htpasswd


Por Alex el 28/09/2022, Comentar el artículo

Comparte este artículo:      




Proteger un directorio con la utilidad htpasswd de Apache es bastante sencillo y solo requiere de uno pocos paso que vamos a ver a continuación.


Indice


Paso 1: Requisitos previos

Para poder utilizar esta utilidad htpasswd de Apache2 hay que tenerla instalada, podéis comprobarlo ejecutando en el terminal: htpasswd, si devuelve resultados y no da error este todo esta OK. Si no esta instalada se instala a través de este paquete de Apache2, aunque deberia instalarse por defecto cuando se instala Apache2.

sudo apt install apache2-utils

Aquí tenéis información sobre este paquete: https://packages.debian.org/es/sid/apache2-utils

Podéis comprobar si están en el sistema y activos con el siguiente comando

apache2ctl -M | grep auth

Y además hay que tener en el sistema los siguiente modulos de Apache2:

auth_basic_module,authn_core_module,authn_file_module,
authz_core_module,authz_host_module,authz_user_module


Apache2 - Módulos de autentificacion

Y si alguno no esta activo, no aparece en la lista, lo activáis de esta forma:

a2enmod nombre_de_modulo

Aunque esto viene por defecto instalado y no deberíais tener ningún problema.

Paso 2: Crear un archivo para guardar las contraseñas

Ahora vamos a crear el archivo de passwords y guardarlo en una ruta, donde queramos, y lo enlazaremos en el fichero de virtualhost. El fichero de passwords se tiene que llamar .htpasswd y por ejemplo podéis crear uno en /etc/apache2/.htpasswd y utilizarlo para todas las webs que queréis proteger, o podemos crear uno diferente para cada web que queremos proteger.

En el ejemplo lo ponemos en /etc/apache2

Y la forma de crear el usuario y password es

sudo htpasswd -c /etc/apache2/.htpasswd alex

alex es el usuario y nos pedirá un password que se asocia a ese nombre de usuario y el parámetro -c solo se utiliza si es la primera vez y se tiene que crear el fichero.

Apache2 - proteger directorio con contraseña

Y el fichero de passwords (.htpasswd) queda de esta forma:

Apache2 - Fichero de contraseña .htpasswd

Paso 3: Configurar el directorio a proteger

Ahora que tenemos creado el fichero de contraseñas y guardado vamos a el directorio del web que queremos o si queremos proteger el web completo. Comentar que se puede ir protegiendo diferentes directorios con diferentes passwords.

Para proteger nuestro web tenemos que poner en el fichero .htaccess las siguientes líneas el principio del fichero:

AuthType Basic
AuthName "Password Required"
Require valid-user
AuthUserFile /etc/apache2/.htpasswd

Apache2 - Fichero .htaccess

Esto protege desde donde está el fichero .htaccess, todo lo que está a su nivel y todos sus subdirectorios.

Una vez configurado el fichero .htaccess vamos a probarlo

Paso 4: Probar que funciona

Ponemos la url en el navegador ver y tiene que salir la ventana de petición de login.

Apache2 - Ejemplo de petición de login al acceder al web

Para esto vamos a crear un web con un virtualhost y vamos a ponerle el password. Si no recordáis muy bien cómo crear un virtualhost os dejo este artículo de repaso Crear un Apache virtualhost en Linux

El árbol del directorio quedaría de esta forma:

Apache2 - Directorio de ejemplo a proteger

En esta estructura de directorios vemos que el fichero .htaccess esta al nivel de la raíz del web con lo que lo protegerá todo, si el fichero .htaccess lo hubiéramos puesto dentro de uno de los directorios solo protegerá es directorio y sus subdirectorios pero no el web raiz y tampoco el subdirectorio dos.

Si quereis saber más sobre el comando Tree podéis mirar este artículo tree - ver el árbol de directorios y ficheros, o si quereis saber mas de Linux

Y esto es todo, y feliz programming
Saludos
Alex.



Si te ha gustado el artículo compartelo en:      




Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.