[Ayuda] Seguridad en Apache

Sandino Araico Sánchez sandino en sandino.net
Mar Feb 1 05:06:58 CST 2005


Marcos R Garcia wrote:

>Hola, buen dia Sandino!
>Veo que comentaste en una de tus respuestas sobre seguridad en el
>Servidor Apache, pues bien, me permito preguntarte donde puedo leer o
>conseguir una relación de opciones para hacer segura "una pagina" Web
>hecha en PHP (realmente son varios programas).
>
No hay mucha información al respecto, pero una buena fuente son los 
omentarios del php.ini.

> En particular deseo: 
>a) denegar el acceso a los fuentes de PHP para que no vean el código
>(esta en un subdirectorio)
>  
>
Si tienes acceso a un subdirectorio que esté fuera del DocumentRoot y al 
mismo tiempo se encuentre en tu include_path te conviene mover todo lo 
que puedas a ese directorio; de otra manera tendrás que limitar el 
acceso con archivos .htaccess.

>b) evitar que naveguen en otros subdirectorios de mi sitio donde guardo
>documentos con informacion confidencial. 
>  
>
La información confidencial no debe vivir en los subdirectorios públicos 
de tu sitio aunque la podrías tener encriptada y trepar la llave a 
memoria compartida para que tu aplicación la pueda desencriptar; con la 
desventaja de que cada vez que reinicie el Apache tendrás que volver a 
trepar la llave a memoria compartida.

>El sitio es un area asignada por un proveedor de internet, al cual tengo
>acceso via FTP.
>  
>
¿Tienes acceso sólamente al directorio donde tienes tu DocumentRoot o 
tienes acceso a más directorios que se encuentren al mismo nivel que tu 
DocumentRoot?
Dependiendo de las políticas de tu proveedor si tienes acceso a 
directorios fuera de tu DocumentRoot puedes agregar a tu .htaccess una 
línea php_value include_path con la ruta relativa hacia ese directorio 
../otro_directorio y ahí meter tus librerías.  Algo parecido puedes 
hacer con tus documentos confidenciales, moverlos a  un directorio fuera 
de tu DocumentRoot y abrirlos con 
$archivo=fopen("../confidencial/archivo", "r");

Desde luego que si tu proveedor sólamente te da acceso al directorio 
donde se encuentra tu DocumentRoot pues la única alternativa que te 
queda es la de los archivos .htaccess.

>Hasta ahora he conseguido algunos tips viendo otros sitios: colocar un
>index.html en cada subdirectorio, usar robot.txt y hacer uso del
>archivo .htaccess
>  
>
Para que no vean el cófigo fuente de tus librerías cámbiales la 
extensión de .inc a .inc.php. Desde luego que tendrás que actualizar 
todas las sentencias include y require donde cargues esas librerías.
Tus librerías no deberían mandar ningún output y deberían verificar que 
si $_SERVER["SCRIPT_NAME"] es igual a su propio nombre mejor terminar la 
ejecución con exit 0; porque es alguien que está tratando de leer su 
contenido o de forzarlas por medio de variables GET, POST y COOKIE a 
ejecutarse con un comportamiento arbitrario.
 

>La pregunta especifica es, son estos los unicos elementos con que cuento
>para hacer mi sitio seguro? 
>
Puedes pedirle a tu proveedor que instale mod_security y configurar las 
reglas desde tu .htaccess
Y desde luego, debes auditar todas tus aplicaciones de web línea por 
línea, validando todos los parámetros que recibes de fuera para prevenir 
ataques de SQL injection, code injection y cross site scripting.
Si puedes apaga el reporte de errores, de esa manera los atacantes que 
buscan provocar errores en tu aplicación para obtener más pistas del 
funcionamiento interno de tu aplicación se quedarían sin nada....

>existe algun otro ? donde localizo ejemplos
>de .htaccess especificos 
>
La sintaxis es exactamente la misma que la de tu httpd.conf.
en google podrás encontrar ejemplos.
http://www.google.com.mx/search?q=.htaccess

>(en apache.org no se me hace claro o didactico,
>ya que esta dispersa la informacion)?
>
>Gracias de antemano
>  
>


-- 
Sandino Araico Sánchez
-- ... there's no spoon ...


 
_______________________________________________
Ayuda mailing list
Ayuda en linux.org.mx
Para salir de la lista: http://mail.linux.org.mx/cgi-bin/mailman/listinfo/ayuda/



Más información sobre la lista de distribución Ayuda