Installationssikkerhedstip
From LimeSurvey Manual
Generelt
LimeSurvey er afhængig af sin egen sikkerhed, som er aktiveret som standard. Forfatterne af denne software påtager sig intet ansvar og fremsætter ingen krav vedrørende denne softwares passende eller sikkerhedsniveau. Vi tager dog sikkerhedsproblemer meget alvorligt og reagerer hurtigt. Derfor, hvis du kender til sikkerhedsproblemer inden for LimeSurvey, bedes du give os besked enten ved at sende os en e-mail til info@limesurvey.org eller ved at åbne en fejlrapport i vores [http:// bugs.limesurvey.org bug tracker] (mærk det som privat).
Webserverbegrænsning
Hvis du bruger apache, inkluderer LimeSurvey en anden htaccess-fil til begrænsning. bekræft, at du tillader inkluderet htaccess med AllowOverride
.
Med en anden webserver eller hvis du vil bruge AllowOverride None
: du skal
- (mulighed) deaktiver adgang til alle filer i applikation, beskyttet, framework og temaer/*/views
- deaktiver adgang til fil upload af bruger /upload/surveys/.*/fu_[a-z0-9]
- (valgmulighed) deaktiver adgang til eksekverbar fil i upload-mappen
Du kan finde et eksempel på nginx på vores General Faq
Linux-filtilladelser
Hvis du bruger en Linux-server, er det nødvendigt at indstille filtilladelser i overensstemmelse hermed for at sikre din LimeSurey-installation.
Grundlæggende fakta om Linux/*nix-filtilladelser
Et Linux/*nix-operativsystem er flerbruger. Det betyder, at der udover din personlige konto kan eksistere andre brugerkonti på systemet, og du skal passe på, hvilke tilladelser du giver til andre brugere.
Husk på, at 'root'-kontoen altid vil få tilladelse til at få adgang til dine filer (uanset hvilke filtilladelser du angiver), da det er superadmin-brugeren.
Webserveren (som kører LimeSurvey) kører også under en given identitet (bruger). På Linux er dette normalt 'www', 'www-data' (på Debian/Ubuntu), 'apache' eller 'nobody'-brugeren. Nogle hostingfirmaer bruger dog systemer (såsom suexec), der gør det muligt at køre LimeSurvey-scripts med din personlige bruger. Webserverbrugeren skal naturligvis have ret til at læse LimeSurvey-filer. Det er dog kun en lille delmængde af LimeSurvey-undermapper, der skal kunne skrives af webserverbrugeren.
Indstilling af filtilladelser på et selvadministreret Linux-system
Hvis du administrerer din webserver og operativsystemkonfiguration (du er ejeren af den fysiske server eller lejer en virtuel server, som du har root-adgang på), kan du overveje følgende anbefalinger fra nedenfor.
Du kan først indstille ejeren og gruppen af dine LimeSurvey-filer, så det letter opsætningen af filtilladelser. En mulig strategi er at indstille ejeren af LimeSurvey-filerne til dit personlige brugernavn, og gruppen af LimeSurvey-filerne til webservergruppen. Normalt indeholder denne webservergruppe kun webserverkontoen (og muligvis en anden webmasterkonto). For eksempel, hvis dit brugernavn er 'myaccount' og webserverbrugeren er 'apache' i 'apache'-gruppen, så kan du fra en shell-adgang bruge følgende kommando: $ chown -R myaccount:apache limesurvey/
. Indstil derefter fil- og undermappernes tilladelser.
For at scriptet skal fungere korrekt, kræves skriveadgang til nogle mapper:
- Mappen /limesurvey/application/config kræver Read & Write for at gemme applikationskonfigurationsindstillingerne
- /limesurvey/ tmp-biblioteket og dets undermapper bruges til import/uploads og skal være indstillet til Læs og skriv for din webserver
- Uploaden/biblioteket og alle dets underbiblioteker skal også have indstillet Læs' & Skrive tilladelser for at muliggøre upload af billeder og mediefiler
- Alle andre mapper og filer kan indstilles til Skrivebeskyttet
$ 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
Indstilling af filtilladelser på en hostet webserver
Giver vanskeligheden ved en standardprocedure til at sikre en webapplikation på et hostet miljø, er det ret vanskeligt, fordi hostede miljøer er forskellige på mange måder.
I tilfældet med administreret server skal serveren skriveadgang til nogle mapper, for at scriptet kan fungere korrekt:
- Mappen /limesurvey/tmp bruges til import/upload og bør indstilles til Læs og skriv' ' til din webserver
- Uploaden/biblioteket og alle dets undermapper skal også have Læs og skriv til din webserver for at muliggøre upload af billeder og mediefiler
- De andre mapper og filer skal indstilles til Skrivebeskyttet
- Afhængigt af din webserverkonfiguration skal du ændre rettighederne på de skrivbare mapper til 755 eller 777 for at gøre det skrivbart til internettet server. Prøv først 755, hvis det ikke virker, 'opgrader' til 777
- Du kan også prøve at fjerne andre brugeres læseadgang til config.php ved at sætte denne fils tilladelser til 750 - hvis det ikke virker, 'opgrader' ' til 755
Windows-filtilladelser
Hvis du bruger en Windows-server, skal du sikre dig, at admin-mappen tillader ejeren af webserverprocessen at skrive filer til denne mappe. Resten af filerne kan indstilles til skrivebeskyttet og udføres.
Andre sikkerhedsproblemer
Følgende er kun anbefalinger. LimeSurvey er generelt meget sikker uden disse yderligere foranstaltninger. Hvis du imidlertid indsamler ekstremt følsomme data, kan lidt ekstra sikkerhed hjælpe:
SSL-brug
Vi anbefaler generelt brugen af SSL til følsomme undersøgelsesdata. Du aktiverer normalt SSL ved at konfigurere din webserver korrekt og bruge et SSQL-certifikat. Hvis du har aktiveret SSL, bør du håndhæve SSL hele tiden fra globale indstillinger i LimeSurvey. Derudover kunne du kun indstille til at bruge 'sikre' cookies ved at redigere respektive valgmulighed i config.php.
Adgangen til filen config.php
Filen /application/config/config.php indeholder et brugernavn og en adgangskode til din databaseserver. Dette giver visse sikkerhedsproblemer, især hvis du bruger et login, der har administrativ adgang på højt niveau til din database. I tilfælde af en fejl ved at returnere indholdet af denne PHP-fil til en brugers browser, kan din databaseadgangskode og andre detaljer blive kompromitteret (dette er dog et meget usandsynligt scenarie). Den bedste måde at minimere risikoen på er at oprette et specifikt login, der kun har specifikke rettigheder til din LimeSurvey-database.
En anden måde at sikre denne information på kan være at lægge informationen fra filen /application/config/config.php i en ikke-webmappe, dvs. for Apache-brugere er dette mappen over htdocs (også kendt som public_html eller www) mappen . Grundlæggende vil du bruge config.php, men har en linje i det - en linje, der inkluderer filen med FAKTISK konfigurationsinformation (f.eks.:<?php return include("/home/hostfolder/safedata/configreal.php"); ?> ). Fjern al faktisk konfigurationsinformation fra /application/config/config.php og indsæt den i den anden fil (configreal.php), der er nævnt i filen /application/config/config.php. Denne anden fil skal være placeret i en ikke-webmappe. Så vil /application/config/config.php ikke indeholde databaseadgangskoder osv. - kun navnet på filen, som KØR indeholder databaseinformationen.
Dette undgår at skulle ændre alle de andre filer, der inkluderer /application/config/config.php, da config.php 'omdirigerer dem' mod konfigurationsfilen, der er placeret i en ikke-webmappe, som indeholder al den reelle konfigurationsinformation . Du bliver dog nødt til at redigere configreal.php og ændre følgende parametre for at bruge absolutte mappestier for at fungere korrekt:
'basePath' => dirname(dirname('''FILE''')),
'runtimePath' => dirname(dirname(dirname('''FILE'''))).DIRECTORY_SEPARATOR.'tmp'. DIRECTORY_SEPARATOR.'runtime',
[...]
'urlManager' => array(
[...]
'rules' => require('routes.php'),
[...]
);
Eksempel:
'basePath' => '/var/www/htdocs/limesurvey',
'runtimePath' => '/var/www/htdocs/limesurvey/tmp/runtime',
[...]
'urlManager' => array(
[...]
'rules' => require('/var/www/htdocs/limesurvey/config/routes.php'),
[... ]
);
Also, don't use "admin" as the default user. Go to your MySQL database (or the one in which you installed LimeSurvey) and change default user name "admin" to whatever you prefer (e.g. "admin_xyz"). It will now be much harder to guess the administrator's new user name. Remember, this is one of the two variables intruders can use to gain access. The admin password is the other variable. So choose both of them with extreme caution.
Content Security Policy (CSP)
DISCLAIMER - The CSP provided here is an example only and is not meant to used verbatim. It is meant as a starting point and you MUST adapt it to your needs and test it thoroughly.
<IfModule mod_headers.c> Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'none'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i" </IfModule>