Foros del Web » Administración de Sistemas » Apache »

Seguridad de archivos en servidor

Estas en el tema de Seguridad de archivos en servidor en el foro de Apache en Foros del Web. Hola. Quisiera resolver un inconveniente que supongo debe ser lo más sencillo del mundo. Supongamos unas páginas alojadas en: undominio.com, y tenemos una carpeta undominio.com/include ...
  #1 (permalink)  
Antiguo 11/03/2009, 20:44
Avatar de cchaparro  
Fecha de Ingreso: febrero-2009
Ubicación: Medellín
Mensajes: 80
Antigüedad: 15 años, 9 meses
Puntos: 2
Pregunta Seguridad de archivos en servidor

Hola.

Quisiera resolver un inconveniente que supongo debe ser lo más sencillo del mundo.

Supongamos unas páginas alojadas en: undominio.com, y tenemos una carpeta undominio.com/include y otra undominio.com/servicios.

En include, hay un archivo conexion.php y otros encabezado.php y pie.php;
En servicios, hay un archivo instrucciones.php y sonido.mp3;

La cuestión es que si alguien entra en las páginas, las lee con normalidad, hasta aquí todo correcto; el problema es que si alguien escribe en el navegador: undominio.com/include, el servidor le muestra el listado de archivos, es mas, hasta puede descargarse el archivo conexion.php, donde supuestamente existen los datos de acceso para una BD MySQL; incluso si no tuviera esos datos tan importantes, el listado no debería aparecer para nadie; con la carpeta servicios pasa lo mismo.

Al restringir los permisos de carpetas y archivos, nadie puede ver esos listados, pero entonces tampoco nadie puede navegar por la página principal porque están completamente restringidos.

Ni una cosa ni la otra, es decir, intento que las páginas sean navegables y lea los archivos de la carpeta include porque no leer sería como si no existieran las páginas; pero no quiero que se vea el directorio listado; hay forma de que el directorio sea listado pero no se pueda descargar nada, sin embargo tampoco me parece buena opción que tan siquiera se vean.

Si alguien puede contarme cómo se hace, que imagino debe ser con los .htaccess, se lo agradezco; el objetivo es simple, los archivos deben tener permiso para ser leídos, caso contrario las páginas ni funcionarían, pero si alguien escribe la ruta de acceso no debe verse nada. Y el truco de meter un "index" en cada subcarpeta no vale, porque más que un truco es un absurdo.

En fin, ojalá que alguien pueda echarme una mano con esto, que se que hay excelentes técnicos por aquí, y por eso les consulto :).

Muchas gracias por adelantado amigos.
  #2 (permalink)  
Antiguo 12/03/2009, 06:49
Avatar de Kai_Rainer  
Fecha de Ingreso: abril-2008
Ubicación: 1 de las 7 islas
Mensajes: 37
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Seguridad de archivos en servidor

Pon un .htaccess en la carpeta include con
Código:
Deny from all
lo que tendrás que cambiar es la ruta del fichero mp3 y las imágenes si las tuvieras allí, porque no se mostrarían
  #3 (permalink)  
Antiguo 12/03/2009, 09:58
Avatar de cchaparro  
Fecha de Ingreso: febrero-2009
Ubicación: Medellín
Mensajes: 80
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Seguridad de archivos en servidor

Gracias por tu respuesta Kai_Rainer, eso era lo que necesitaba para empezar.

La carpeta include ya queda perfectamente así, es leída internamente por la página y al mismo tiempo poniendo la url no se listan los archivos que contiene.

Ahora estoy investigando cómo hacer casi lo mismo con la carpeta servicios; por ejemplo, en ella hay dos archivos, instrucciones.php y sonido.mp3; en una parte de las páginas se requiere internamente leer el archivo sonido.mp3, pero si aplico el .htaccess, no se listan esos archivos, pero tampoco se ejecuta el sonido desde las páginas.... ¿ cómo podría hacer para que no se liste lo contenido en la carpeta servicios por url pero sí se pueda leer internamente el archivo sonido.mp3 ?.

Agradezco mucho tu respuesta, que la verdad por ahí empiezo muy bien.

Nota: He probado acceso a las páginas y por lo visto la carpeta include no es leída tampoco del todo; tengo un archivo logout.php para desconectar usuario y acabo de darle y me indica que está restringido con el deny all :(.... sigo investigando cómo hacer para que los archivos internamente puedan ser leídos pero no por url, a ver si doy con la solución.

Última edición por cchaparro; 12/03/2009 a las 11:16
  #4 (permalink)  
Antiguo 12/03/2009, 11:24
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: Seguridad de archivos en servidor

Debes agregar en tu .conf algo como
Options -Indexes
Para este directorio, impedira el direccionamiento directo de carpetas
salu2
  #5 (permalink)  
Antiguo 12/03/2009, 12:16
Avatar de cchaparro  
Fecha de Ingreso: febrero-2009
Ubicación: Medellín
Mensajes: 80
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Seguridad de archivos en servidor

Pues sí, parece que por ahí estaba leyendo algo:

"
Bloquear la navegación en directorios

Algo que es común en algunos sitios web es que no protegan sus directorios por lo que cualquiera que entre puede navegar entre los archivos contenidos en dicho directorio (si este no contiene un archivo index.html). Recuerdo hace unos meses donde en la página web del congreso se descubrieron varios directorios que contenian archivos de mp3, y videos pornográficos. Asi que ya saben es mejor no permitir la navegación por los directorios de nuestro servidor. Para esto se aplica la siguiente directiva:

Options All -Indexes
"

Ahora el archivo logout.php funciona perfectamente y el directorio no se ve, pero sigo teniendo problemas; por ejemplo, aplicando esa línea en el htaccess, pasa lo siguiente cuando pongo las url's:

undominio.com/prueba - la página se ve bien.
undominio.com/prueba/include - no se listan los archivos.
undominio.com/prueba/include/micss.css - se ve todo el contenido de este archivo.
undominio.com/prueba/include/miscriptjs.js - se ve todo el contenido de este archivo.

En fin, la verdad estoy buscando mucha información pero no logro dar con la tecla; lo que me pregunto es si al menos se podrá hacer lo que comento, ya que imagino es un asunto de seguridad bastante serio para todo webmaster.

Hasta ahora he conseguido o restringirlo todo o nada; con este nuevo código de htaccess consigo que se restringa bastante más y no se vean los directorios, pero si se conoce el nombre de archivo se puede acceder al mismo; ya sólo me falta esa parte... estoy cercaaaaaa.... de lloraaaa.

Agradezco a todos su tan buena colaboración, a ver si consigo la solución si es que existe.
  #6 (permalink)  
Antiguo 12/03/2009, 12:33
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: Seguridad de archivos en servidor

Prueba a poner .htaccess en cada directorio, con la misma directiva
Pregunta: Tienes acceso al .conf de apache??
  #7 (permalink)  
Antiguo 12/03/2009, 13:58
Avatar de Kai_Rainer  
Fecha de Ingreso: abril-2008
Ubicación: 1 de las 7 islas
Mensajes: 37
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Seguridad de archivos en servidor

mmMMmmmM... a ver... no te vale de la siguiente manera:

undominio.com/prueba/include = .htaccess(deny from all)
undominio.com/prueba/file = -indexes(en tu fichero conf como dijo eulloa)
undominio.com/prueba/sound = -indexes(en tu fichero conf como dijo eulloa)

Si bloqueas el acceso lo 'bloqueas' todo. Puedes hacer que no sean visibles, porque si lo bloqueas no lo puede cargar el navegador, porque no lo deja entrar.

Otra opción que es la que hago yo, es: los archivos que incluyo los tengo en otra parte del PC, dándole al fichero php.ini la ruta de la carpeta a incluir. Y no lo tengo en el mismo directorio de la web
  #8 (permalink)  
Antiguo 13/03/2009, 09:40
Avatar de cchaparro  
Fecha de Ingreso: febrero-2009
Ubicación: Medellín
Mensajes: 80
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Seguridad de archivos en servidor

Bueno amigos, he seguido buscando e intentando alguna de las opciones que me comentáis pero está complicado.

En resumen, por ahora lo he puesto como sigue:

undominio.com - .htaccess con "Options All -Indexes"
undominio.com/include - .htaccess con "deny from all".

De esta forma, ningún directorio es listado, y los archivos de la carpeta include tampoco se listan y además si escribo undominio.com/include/conexion.php, el archivo no permite ser leído; pero tengo el inconveniente de que al ejecutar el logout.php de la carpeta include no me lo ejecuta, por lo que el .htaccess de la carpeta include lo tengo que quitar.

Entonces, los directorios no son listados, lo cual ya es bueno; ahora lo que me sigue preocupando es que si alguien rastrea el dominio, puede dar con los nombres de archivos y ver lo que contienen, pero al menos no el de los más relevantes.

Por ejemplo si escriben estas rutas pasaría lo siguiente:

undominio.com/include/conexion.php - la página se queda en blanco.
undominio.com/include/misestilos.css - se muestra todo el contenido.
undominio.com/include/misjs.js - se muestra todo el contenido.
undominio.com/include/sonido.mp3 - el archivo lo puede abrir o descargar.

De momento es mejor que lo que antes había, al menos los .php no se muestran.

Lo que me comentáis de modificar php.ini y archivo .conf del Apache, localmente si que puedo modificarlos, pero en el hosting no se puede hacer, así que todo cuanto pueda realizar es sobre los .htaccess y sobre los permisos de archivos y carpetas.

Seguiré investigando a ver si encuentro la fórmula que permita restringir esos otros archivos, pero si localizara algún método que dependiera de los archivos internos propios de PHP y Apache, entonces sabré que se puede hacer pero tendría que buscarme un hosting con permisos para tocar en esas zonas.

Total, tampoco es que ande haciendo las páginas web de la NASA jajaja, pero la verdad, este asunto es preocupante, porque no es nada bueno estar viendo la tele pensando en que por ahí te están tomando el código sin preguntar, o que montes algún negocito y te lo estropicien por estas cosas. Son cuestiones de seguridad de las que deberían poner algún manual para webmasters, y antes de aprender a realizar páginas, enseñarnos bien a poner seguridad.

Pero tenemos buena comunidad para eso ¿ verdad ? :).

Muchas gracias de corazón siempre por toda la ayuda, esto es lo bonito de Internet.
  #9 (permalink)  
Antiguo 13/03/2009, 13:13
Avatar de shaggikpo  
Fecha de Ingreso: junio-2008
Ubicación: Paysandú, Uruguay
Mensajes: 85
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Seguridad de archivos en servidor

usa en tu .htaccess en la raiz del sitio
esto:
Options All -Indexes
<Files "includes/conexion.php">
Order Deny,Allow
Deny from all
Allow from localhost
</Files>

<Files "servicios/instruciones.php">
Order Deny,Allow
Deny from all
Allow from localhost
</Files>

Es directiva la podes usar con todos los archivos que quiereas y lo que hace es permitira localhost el acceso a los archvio y denegarle al resto

Nota: existen manuales en apache.org revisa especialemte la parte de directivas aplicadas a l .htacces con el puedes hace maravillas
  #10 (permalink)  
Antiguo 15/03/2009, 09:17
Avatar de cchaparro  
Fecha de Ingreso: febrero-2009
Ubicación: Medellín
Mensajes: 80
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Seguridad de archivos en servidor

Hola.

Ya había probado lo de denegar archivos con ese formato y permitiendo al localhost el acceso desde servidor, aunque la parte del localhost no me salía bien; acabo de aplicar el código que me indicas y restringe los archivos, por ejemplo si pongo undominio.com/include/miestilo.css ya no lo muestra, pero tristemente tampoco lo aplica, pues no lo consigue leer el localhost, al parecer también se lo restringe al servidor.

Si consiguiera que el server pueda leerlo pero no así los usuarios que navegan, entonces sí estaría avanzando mucho; ya digo que lo intenté antes de esto y no me funcionó, quizás porque no lo puse bien, pero ahora lo confirmo al utilizar este código.

Miraré la información que me anexas, así como también seguiré probando más opciones a ver qué consigo; por cierto, en el caso que querer restringir varios archivos, imagino que sería *.php, algo que ya utilicé pero que no me sirvió; lo digo porque tengo varios archivos en determinadas carpetas y desearía restringirlos por sus extensiones; leí que era como *.ext, y apliqué el htaccess pero no me sirvió.

Bueno, te agradezco mucho todo, miraré lo que me indicas a ver qué más sigo averiguando. De veras gracias.
  #11 (permalink)  
Antiguo 16/03/2009, 08:18
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: Seguridad de archivos en servidor

Cita:
Iniciado por cchaparro Ver Mensaje
Y el truco de meter un "index" en cada subcarpeta no vale, porque más que un truco es un absurdo.
Bueno, esto no te gustará, y confieso ami tampoco, pero es totalmente válido, digas lo que digas
Aun no entiendo porque el Options -Indexes no te resuelve. ¿Se lista todavía el directorio donde pones el htaccess? Eso está más que raro.
Claro q al denegar el acceso con deny from all, tendrás el problema que nadie podrá cargar los archivos que están denegados por el htaccess, así q tu solución no es denegar el servicio, sino no permitir que se listen, y eso debería resolverlo -Indexes.
Pregunta: ¿Tienes acceso al .conf de apache?
  #12 (permalink)  
Antiguo 17/03/2009, 07:42
Avatar de shaggikpo  
Fecha de Ingreso: junio-2008
Ubicación: Paysandú, Uruguay
Mensajes: 85
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Seguridad de archivos en servidor

intenta cambira localhost por 127.0.0.1 asi:
Options All -Indexes
<Files "includes/conexion.php">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Files>

<Files "servicios/instruciones.php">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Files>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:55.