[Ir al menú de PHP]
Protegiendo directorios

Protegiendo directorios en un servidor local

Nos referiremos ahora al método de protección de ficheros en un servidor en el que poseemos privilegios de acceso a los ficheros .conf del servidor Apache

En el caso de nuestro servidor local tendremos siempre acceso a esos ficheros, si se trata de servidor remoto en el que no tenemos ese acceso... otro gallo nos cantaría...

El fichero access.conf

La localización y los contenidos de ese fichero los tienes aquí al margen, así que ya sabes... para no ser redundantes mira allí :-)

Ese fichero debe contener -para cada directorio a proteger-una etiqueta de apertura:

<Directory "path" >

y otra de cierre:

< /Directory >

Entre esas dos etiquetas debe contener:

AuthType Basic

Por lo que se ve -no me hagas demasiado caso- solo hay un tipo por el momento (el Basic) pero debes ponerlo.

AuthName "tu texto "

El texto que escribas aquí aparecerá en la ventana de contraseñas a continuación de la palabra Dominio.

Queda muy bonito... ¿verdad? :-)

AuthUserFile "path"

Entre esas comillas debes escribir el nombre del fichero de contraseñas especificando su path completo.

<Limit GET POST PUT>
require valid-user
</Limit>


Esto ponlo exactemente así (si te parece, claro) lo que hace es establecer las limitaciones de acceso al directorio, en este caso required valid-user se especifica que solo tengan acceso los usuarios especificados en el fichero de claves, pero existen otras posibilidades -excluir dominios, excluir IP concretas, autorizar dominios, autorizar unicamente a IP concretas, etc. etc.- que no voy a contarte ahora (bueno... mejor dicho... que no me se la lección... jejeje..)

ErrorDocument 401 "texto

Amig@... esto si es OPCIONAL. Se trata de poner un mensaje de advertencia para los casos en los que el usuario fracasa con la clave y las password tres veces o cuando pulsa en el botoncito de Cancelar.

Fíjate en que lleva " inmediatamente detrás de ErrorDocument 401 y que además, en este caso... no se cierran.

Fíjate también en el ejemplo... He puesto etiquetas HTML y por lo que he visto funcionan...

¡¡Cuidadín...!!

Por lo que he leido por ahí, cuando Apache funciona bajo Windows al escribir los path hay que utilizar / y no \.

¡¡Ah..!! ... y los path ... completos...

Avisad@ quedas...

El fichero claves sin encriptar

Puedes crear el fichero de claves y password que vas utilizar en AuthUserFile sin más que escribir:

usuario1:clave1
usuario2:clave2
.....

separando la clave de la password con dos puntos (:) e introduciendo cada usuario en una línea distinta.

Puedes construirlo perfectamente con el block de notas y guardarlo donde te plazca y con el nombre y extensión que te plazca.

El encriptado de claves

Justo aquí a la derecha, tienes explicado todo el proceso para crear ese tipo de ficheros. Así que venga... leételo allí... que pa'mi el trabajo es castigo y no virtud...

Directorios distintos con usuarios distintos

Cuando se activa una protección no solo se protege ese directorio sino todo su contenido, incluidos subdirectorios, etc. etc.

Pero si tienes el antojo de más de un directorio y no están en la misma rama.. (bendita sea la rama... que al troco sale... :-)...) lo tienes chupao.. escribes -en access.conf otro

<Directory "path" >

y otra de cierre:

< /Directory >

y pones dentro las nuevas limitaciones en las que puedes usar otro fichero de claves distinto.

Protegiendo directorios en un servidor remoto

Leerás -o habrás leido- por ahi cosas relativas a un fichero -bastante famoso- llamado .htaccess

Por lo que he visto por la gües puede que cada sitio utilice su procedimiento particular.

En lo que se refiere a Freesurf tiene una explicación muy detallada pero obliga a guardar el fichero de claves en un directorio especifico y para generar claves encriptadas tiene una utilidad on line a través de una página web.

La sintaxis del fichero .htaccess es similar a la utilizada en access.conf. Aquí tienes un ejemplo:

AuthType Basic
AuthName "
Texto"
AuthTextUserFile
fichero
require valid-user
AuthTextCrypt Off


Este tipo de ficheros tienen algunas peculiaridades:

Utilizando .htaccess en un servidor local

Una vez hecha modificación del fichero httpd.conf ya estamos en condiciones de proteger los directorios que queramos sin más que insertar en ellos un fichero con el nombre .htaccess y dentro de él las directrices de protección.

Aquí tienes un ejemplo del contenido de .htaccess para restringir el acceso al directorio a cualquier usuario que no esté registrado en el fichero de usuarios.

Authuserfile ruta y fichero
AuthName " tu texto"
AuthType Basic
require valid-user


Un par de precisiones al respecto:

 
 


El fichero access.conf

En el directorio donde tienes instalado el Apache hay un subdirectorio llamado conf donde seguro que ya has estado si es que seguiste los pasos de instalación de servidor que te comenté al principio de estas Memorias.

Allí debes tener un fichero llamado access.conf-dist y seguramente otro llamado access.dafault.conf.

Si abres uno de esos ficheros con el editor de textos te encontrarás con algo parecido a esto:


#
# This is the default file for the AccessConfig directive in httpd.conf.
# It is processed after httpd.conf and srm.conf.
#
# To avoid confusion, it is recommended that you put all of your
# Apache server directives into the httpd.conf file and leave this
# one essentially empty.
#


Este fichero será el que editaremos y modificaremos dentro de un rato. Ten un poco de paciencia... antes vamos a crear un fichero de claves de acceso y contraseñas.

Crear fichero de contraseñas sin encriptar

Para creear fichero de claves y contraseñas sin encriptar basta con abrir el block de notas y escribir la clave seguida de dos puntos (:) y a continuación escribir la contraseña.
Puedes poner tantas como desees sin más limitaciones que poner cada conjunto clave:contraseña en una línea distinta.

Una vez escrito puedes guardar el fichero en el sitio que desees de tu disco duro, ya que no es necesario que dentro del directorio donde están tus páginas.

Este es ejemplo que yo he hecho. Cree un subdirectorio llamado claves en D:/Apache/Apache, con el editor de textos creé el fichero que tienes aquí debajo y lo guardé en ese directorio como misclaves.txt.

También podría haberlo guardado en un fichero sin extensión.


pepe:abcd
luis:efghij

De este proceso debemos tomar en consideración que el path del fichero de claves y contraseñas es:

D:/Apache/Apache/claves/misclaves.txt


Protección de un directorio

Vamos a proteger -utilizando las claves anteriores- un directorio cualquiera (p. ejemplo: uno llamado protegido que está situado en el directorio raiz de nuestro servidor local.

Si recuerdas nuestra configuración (si tienes una distinta tendrías que modificarlo, por supuesto) el directorio raiz es: D:/Apache/Apache/htdocs y por la tanto, el path de l directorio a proteger sería:

D:/Apache/Apache/htdocs/protegido

Ahora editamos el fichero access.conf (o lo creamos nuevo, si no existe) y escribimos en el lo siguiente:


<Directory "D:/Apache/Apache/htdocs/protegido">
AuthUserFile "D:/Apache/Apache/claves/misclaves.txt"
AuthName "Pruebas de autentificación"
AuthType Basic
<Limit GET POST PUT>
require valid-user 
</Limit>
ErrorDocument 401 "<h1><center><font color="#ff0000">
                          Lo siento tu no puedes entrar aquí
</Directory>

Si guardas ese fichero acces.conf (exactemente con esa extensión) en el directorio conf, cierras tu servidor y lo reinicias de nuevo (para que cargue la nueva configuración), al abrir tu navegador e intentar acceder a:
http://localhost/protegido

te aparecerá una ventanita como esta:


Si después de tres intentos no escribes la clave y la password adecuada te aparecerá una página con el mensaje especificado en ErrorDocument 401.

Si pulsas cancelar te aparecerá el mismo mensaje.


Crear un fichero de contraseñas encriptadas

Apache posee una utilidad de creacioón de ficheros de claves con encriptación de contraseñas. Es un programa llamado htpasswd.exe que está en el subdirectorio bin del servidor.

Para crear un nuevo fichero de claves el procedimiento sería la siguiente:

En la línea de comandos: Inicio->Ejecutar


deberemos escribir:
path htpasswd -c nombre y path del fichero de claves usuario

En nuestra configuración y para crear un fichero con la palabra clave pepe escribiríamos:
d:\apache\apache\bin\htpasswd -c D:/Apache/Apache/claves/misclaves.txt pepe

y aparecería una ventana de MS-DOS en la que deberemos escribir la password para ese usuario.



Añadir usuarios a un fichero de contraseñas encriptadas

Lo haríamos de misma forma. Veríamos a ejecutar htpasswd con la nueva clave pero sin utilizar -c.

¡¡Cuidado...!!
El modificador -c destruiría el fichero anterior, si existiera y crearía uno nuevo.

El proceso ahora sería:


d:\apache\apache\bin\htpasswd D:/Apache/Apache/claves/misclaves.txt luis

Habríamos creado nuestro fichero con claves encriptadas. Si pretendiéramos visualizarlo nos aparecería esto:


   pepe:$apr1$EC4.....$7Z3.p2tv2QpzrZbo4bI2j0
   luis:$apr1$SU4.....$iU8a.YTo.ZvYyRggDAvTC.



Creación de ficheros .htaccess

Mis sudores me ha costado crear los ficheros .htaccess. Resulta que mi block de notas me los guardaba con extensión txt y al intentar quitarle la extensión... .. que si quieres arroz... Catalina... no me dejaba...
La solución chapuza que encontré fue la siguiente:

Si te sirve de algo... ya sabes...


Configurando Apache para utilizar .htaccess

Para poder utilizar .htaccess en Apache bajo Windows (en el servidor local) hay que hacer un par de modificaciones en el fichero httpd.conf.

Se trata de cambiar AllowOverride None por AllowOverride All en estas posiciones que te indico a continuación.

La primera de ellas es esta (que quedaría así):
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    


y la segunda (que quedaría con esta configuración que ves aquí debajo) sería:

    <Directory "C:/Apache/htdocs">
        .....
        .....
        AllowOverride All


Una vez añadidas estas modificaciones al fichero httpd.conf ya estarás en condiciones de utilizar los ficheros .htaccess en los directorios que creas más conveniente.

No te olvides de hacer estas modificaciones... si las olvidas... la protección mediante .htaccess no funcionará.... avisad@ quedas...


Sugerir a un/a amig@ Envíame tus comentarios
Anterior
Indice
Siguiente