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:
- El nombre ha de ser exactamente: .htaccess, empezando con un punto y sin extensión
- Hay que tener cuidado al hacer el FTP y subirlo siempre en modo ASCII en vez del Binary que suelen tener configurado por defecto los programas de FTP.
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:
- La ruta parece que debe establecerse a partir del directorio raiz del disco donde está instalado Apache, es decir: C:/..../
- Igual que ocurre cuando utilizaba el fichero access.conf el fichero de claves puede ser encriptado o sin encriptar siguiendo del mismo proceso de creación que en aquel caso.
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.
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:
- Crearlo con extensión .txt
- Subirlo al servidor con esa extensión (utilizando el modo ASCII)
- Renombrarlo en servidor (allí si me dejó quitarle la extensión..)
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...