Actions

Consejos de seguridad para la instalación

From LimeSurvey Manual

This page is a translated version of the page Installation security hints and the translation is 100% complete.

Generales

LimeSurvey cuenta con su propia seguridad, que está activada de forma predeterminada. Los autores de este software no asumen ninguna responsabilidad y no hacen ningún reclamo con respecto a la idoneidad o el nivel de seguridad de este software. Sin embargo, nos tomamos muy en serio los problemas de seguridad y reaccionamos rápidamente. Por lo tanto, si conoce algún problema de seguridad dentro de LimeSurvey, háganoslo saber enviándonos un correo electrónico a info@limesurvey.org o abriendo un informe de error en nuestro [http:// rastreador de errores bugs.limesurvey.org] (márquelo como privado).

Restricción del servidor web

Si usa Apache, LimeSurvey incluye un archivo htaccess diferente para restringirlo. verifique que permita incluir htaccess con AllowOverride .

Con otro servidor web o si desea utilizar AllowOverride None : debe

  • (opción) deshabilitar el acceso a todos los archivos en la aplicación, protegidos, marco y temas/*/views
  • deshabilitar el acceso a la carga de archivos por parte del usuario /upload/surveys/.*/fu_[a-z0-9]!N !* (opción) deshabilita el acceso al archivo ejecutable en el directorio de carga

Puede encontrar una muestra de nginx en nuestras Preguntas frecuentes generales

Permisos de archivos de Linux

Si está utilizando un servidor Linux, es necesario configurar los permisos de archivos correspondientes para proteger su instalación de LimeSurey.

Datos básicos sobre los permisos de archivos de Linux/*nix

Un sistema operativo Linux/*nix es multiusuario. Esto significa que, además de su cuenta personal, pueden existir otras cuentas de usuario en el sistema y usted debe tener cuidado con los permisos que otorga a otros usuarios.

Sugerencia: configurar los permisos de los archivos es especialmente importante para proteger los archivos de configuración que contienen datos críticos, como contraseñas.

Tenga en cuenta que a la cuenta 'root' siempre se le otorgará permiso para acceder a sus archivos (sin importar qué permisos de archivo establezca), ya que es el usuario superadministrador.

El servidor web (que ejecuta LimeSurvey) también se ejecuta bajo una identidad determinada (usuario). En Linux, suele ser el usuario 'www', 'www-data' (en Debian/Ubuntu), 'apache' o 'nadie'. Sin embargo, algunas empresas de alojamiento utilizan sistemas (como suexec) que permiten ejecutar scripts de LimeSurvey con su usuario personal. Por supuesto, el usuario del servidor web debe tener derecho a leer los archivos de LimeSurvey. Sin embargo, el usuario del servidor web sólo debe poder escribir en un pequeño subconjunto de subdirectorios de LimeSurvey.

Archivo:help.png Sugerencia: es muy valioso revocar el permiso de escritura del usuario del servidor web en estos subdirectorios de LimeSurvey que no lo requieren. De hecho, incluso si se descubriera una vulnerabilidad de LimeSurvey, los archivos principales seguirán estando protegidos contra modificaciones ilícitas gracias a los permisos del sistema de archivos.

Configurar permisos de archivos en un sistema Linux autoadministrado

Si está administrando su servidor web y la configuración del sistema operativo (es el propietario del servidor físico o está alquilando un servidor virtual en el que tiene acceso raíz), puede considerar las siguientes recomendaciones.

Primero puede configurar el propietario y el grupo de sus archivos de LimeSurvey para facilitar la configuración de los permisos de los archivos. Una posible estrategia es configurar el propietario de los archivos LimeSurvey con su nombre de usuario personal y el grupo de archivos LimeSurvey con el grupo del servidor web. Normalmente, este grupo de servidores web sólo contiene la cuenta del servidor web (y posiblemente otra cuenta de webmaster). Por ejemplo, si su nombre de usuario es 'micuenta' y el usuario del servidor web es 'apache' en el grupo 'apache', entonces, desde un acceso de shell, puede usar el siguiente comando: $ chown -R myaccount:apache limesurvey/ . Posteriormente, configure los permisos de archivos y subdirectorios.

Para que el script funcione correctamente, se necesita acceso de escritura a algunos directorios:

  • El directorio /limesurvey/application/config requiere Leer y escribir para guardar los ajustes de configuración de la aplicación
  • El /limesurvey/ ¡El directorio tmp y sus subdirectorios se utilizan para importaciones/cargas y deben configurarse en Leer y escribir para su servidor web
  • El directorio/cargar y todos sus subdirectorios también deben tener configurado Leer & Permisos de escritura para permitir la carga de imágenes y archivos multimedia. ¡N!* Todos los demás directorios y archivos se pueden configurar en Solo lectura.
Archivo:help.png Sugerencia: suponiendo que haya seguido las recomendaciones anteriores sobre propietario/grupo, estas configuraciones se pueden aplicar mediante los siguientes comandos:

$ chmod -R o-r-w-x limesurvey/

$ chmod -R -w limesurvey/

$ chmod -R 770 limesurvey/application/config

$ chmod -R 770 limesurvey/tmp

$ chmod -R 770 limesurvey/upload

Configurar permisos de archivos en un servidor web alojado

Dada la dificultad de un procedimiento estándar para proteger una aplicación web en un entorno alojado, es bastante difícil porque los entornos alojados difieren en muchos aspectos.

En el caso del servidor administrado, el servidor necesita acceso de escritura a algunos directorios para que el script funcione correctamente:

  • El directorio /limesurvey/tmp se usa para importaciones/cargas y debe configurarse en Leer y escribir' ' para su servidor web
  • El directorio/carga y todos sus subdirectorios también deben tener Lectura y escritura para su servidor web para permitir la carga de imágenes y archivos multimedia.N!* Los otros directorios y Los archivos deben configurarse en "Solo lectura".
Archivo:help.png Sugerencia:
  • Dependiendo de la configuración de su servidor web, tendrá que cambiar los derechos de las carpetas de escritura a 755 o 777 para que se puedan escribir en la web. servidor. Pruebe primero con 755, si no funciona, 'actualice' a 777
  • También puede intentar eliminar el acceso de lectura de otros usuarios a config.php estableciendo los permisos de este archivo en 750; si no funciona, 'actualice' ' a 755

Permisos de archivos de Windows

Si está utilizando un servidor Windows, debe asegurarse de que la carpeta de administración permita al propietario del proceso del servidor web escribir archivos en este directorio. El resto de los archivos se pueden configurar como de solo lectura y ejecutarse.

Otros problemas de seguridad

Las siguientes son sólo recomendaciones. LimeSurvey en general es muy seguro sin estas medidas adicionales. Sin embargo, si recopila datos extremadamente confidenciales, un poco de seguridad adicional puede ayudar:

Uso de SSL

Generalmente recomendamos el uso de SSL para datos confidenciales de encuestas. Por lo general, habilita SSL configurando su servidor web correctamente y utilizando un certificado SSQL. Si ha habilitado SSL, debe aplicar SSL todo el tiempo desde la configuración global de LimeSurvey. Además, solo puede configurar el uso de cookies 'seguras' editando la opción respectiva en config.php.

El acceso al archivo config.php

Template:Alerta

El archivo /application/config/config.php contiene un nombre de usuario y una contraseña para su servidor de base de datos. Esto plantea ciertos problemas de seguridad, especialmente si utiliza un inicio de sesión que tiene acceso administrativo de alto nivel a su base de datos. En caso de algún error al devolver el contenido de este archivo PHP al navegador de un usuario, la contraseña de su base de datos y otros detalles podrían verse comprometidos (sin embargo, este es un escenario muy poco probable). La mejor manera de minimizar el riesgo es configurar un inicio de sesión específico que tenga derechos específicos solo para su base de datos LimeSurvey.

Otra forma de proteger esta información puede ser colocar la información del archivo /application/config/config.php en un directorio que no sea web, es decir, para los usuarios de Apache, este es el directorio que se encuentra encima de la carpeta htdocs (también conocida como public_html o www). . Básicamente, usará config.php, pero tendrá una línea, una línea que incluye el archivo con información de configuración REAL (por ejemplo:<?php return include("/home/hostfolder/safedata/configreal.php"); ?> ). Elimine toda la información de configuración real de /application/config/config.php y péguela en el otro archivo (configreal.php) que se menciona en el archivo /application/config/config.php. Este otro archivo debe estar ubicado en un directorio que no sea web. Entonces, /application/config/config.php no contendrá contraseñas de bases de datos, etc., solo el nombre del archivo que contiene la información de la base de datos.

Esto evita tener que cambiar todos los demás archivos que incluyen /application/config/config.php, ya que config.php 'los redirige' hacia el archivo de configuración que se encuentra en un directorio no web que incluye toda la información de configuración real. . Sin embargo, necesitarás editar configreal.php y cambiar los siguientes parámetros para usar rutas de directorio absolutas para que funcione correctamente:

'basePath' => dirname(dirname('''FILE''')),
'runtimePath' => dirname(dirname(dirname('''FILE'''))).DIRECTORY_SEPARATOR.'tmp'. DIRECTORY_SEPARATOR.'tiempo de ejecución',
[...]

'urlManager' => array(
 [...]
 'rules' => require('routes.php'),
 [...]
);

Ejemplo:

'basePath' => '/var/www/htdocs/limesurvey',
'runtimePath' => '/var/www/htdocs/limesurvey/tmp/runtime',
[...]

'urlManager' => array(
 [...]
 'rules' => require('/var/www/htdocs/limesurvey/config/routes.php'),
 [... ]
);

Además, no utilice "admin" como usuario predeterminado. Vaya a su base de datos MySQL (o aquella en la que instaló LimeSurvey) y cambie el nombre de usuario predeterminado "admin" al que prefiera (por ejemplo, "admin_xyz"). Ahora será mucho más difícil adivinar el nuevo nombre de usuario del administrador. Recuerde, esta es una de las dos variables que los intrusos pueden utilizar para obtener acceso. La contraseña de administrador es la otra variable. Así que elige ambos con extrema precaución.


Política de seguridad de contenido (CSP)

DESCARGO DE RESPONSABILIDAD: El CSP proporcionado aquí es solo un ejemplo y no debe usarse palabra por palabra. Está pensado como un punto de partida y DEBES adaptarlo a tus necesidades y probarlo a fondo. <IfModule mod_headers.c> El encabezado siempre establece Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'none '; formulario-acción 'yo'; ancestros del marco 'yo'; solicitudes-inseguras-de-actualización" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i "</IfModule>