Menú
AsturGoogle
Buscar en AsturLiNUX con Google

Esta página cumple con el estandar HTML 4.01 estricto

Esta página cumple con el estandar CSS

 

Archivos de Lista de Correo de AsturLiNUX

[AsturLinux] de permisos y apache va la cosa

[AsturLinux] de permisos y apache va la cosa

Write haof XML files: Urriellu <yo_at_urriellu.net>
Fecha: mar 20 sep 2005 - 17:49:46 CEST

Me encuentro con un problema de seguridad para el que no le encuentro solución
útil.

El tema es que las contraseñas de algunos directorios están en archivos que
por defecto apache impide ver, hasta ahí no hay problema. No obstante si
apache permite ejecutar scripts en php, como es mi caso (y el de la mayoría),
también se pueden ejecutar comandos del sistema con funciones de php que hay
para ello. Entonces con esas funciones puedes hacer por ejemplo
"cat .htpasswd" y ahí apache no te restringe nada, y la lista de contraseñas
quedan expuestas.

Ese archivo debe ser legible por el usuario que ejecuta el servidor http, para
que las contraseñas tengan efecto. Por otro lado todo lo que se ejecute desde
php será ejecutado con los permisos del usuario que ejecute el servidor http,
así que estamos jodidos, porque cualquiera podría ver las listas de
contraseñas de todos los demás usuarios en todos sus directorios, porque
tiene acceso desde php con los permisos de quien ejecuta el servidor http a
todos los comandos del sistema y todos los directorios de usuario visibles
por apache.

Restringir la ejecución de comandos o permitir la ejecución de unos pocos
comandos específicos parece la solución obvia, pero no es factible puesto que
mi servidor http es principalmente para uso privado, y yo soy quien quiere
poder ejecutar cualquier comando, pero claro, aquí no estoy solo yo y los
demás pueden darme por el culo.

Un chroot para el servidor http no creo que solucionase nada porque los
directorios de los usuarios del sistema serían visibles dentro del chroot
(claro, si no, no podrían tener su espacio web)

Me comentan que podría modificarse el código fuente de apache para que quien
haga uso del intérprete de php lo haga con otros permisos que no sean los del
usuario propietario del proceso del servidor http, pero claro, ya entramos en
"palabras mayores", porque a la próxima actualización mis modificaciones se
eliminan con la nueva versión de apache, a no ser que envíe un bug a
apache.org y pase a ser una función oficial del proyecto apache, pero no me
parece que ésta sea la solución, seguro que alguien más en algún momento tuvo
el mismo dilema que yo y se solucionó de otra manera, pero no sé cual.
Supongo que todo el mundo restringiría las funciones de php para la ejecución
de comandos del sistema, pero yo no lo voy a hacer.

Modificar el código fuente del intérprete de php tampoco lo veo factible por
lo mismo que lo de apache, o se podría preparar de tal manera que se evitase
cualquier comando que involucre ciertos archivos, pero me parece una solución
bastante cutre. Además, apache puede incluir otros intérpretes como python o
tcl, no necesariamente es php el único culpable, y habría que hacer los
cambios en todos los intérpretes.

De momento, y como solución temporal, encripté las contraseñas con SHA, vamos,
el argumento "s" para el comando htpasswd2, y me imagino que sea SHA-0 o
SHA-1, y si no me equivoco solo es relativamente seguro el uso de SHA-224 y
SHA-256 en adelante. Además, MD5, SHA-0 y SHA-1 que yo sepa son algoritmos
para hashes, no para encriptación como tal, y son cadenas lo suficientemente
cortas como para que no me extrañase que fuesen crackeadas por fuerza bruta
en muy poco tiempo

¿qué soluciones veis?

Muchas gracias
Nearby Tue Sep 20 17:49:48 2005

Esta página ha sido generada automáticamente como parte del archivo de listas de correo de AsturLiNUX (http://www.asturlinux.org).

Página creada y mantenida por Diego Berrueta Muñoz y por Pablo López Cienfuegos, publicada bajo una licencia Creative Commons.