Actions

Installation security hints/nl: Difference between revisions

From LimeSurvey Manual

No edit summary
No edit summary
Line 43: Line 43:
Alle andere directories en bestanden kunnen af met alleen leesrechten.
Alle andere directories en bestanden kunnen af met alleen leesrechten.


<div class="simplebox">[[File:help.png]] '''Hint:''' Als je bovenstaand adves over het aanmaken van de eigenaar en groep, dan stel je met de volgende commando's de rechten in:
<div class="simplebox">[[File:help.png]] '''Hint:''' Als je het bovenstaand advies over het aanmaken van de eigenaar en groep hebt opgevolgd, stel dan met de volgende commando's de rechten in:


<syntaxhighlight lang="c" enclose="div">$ chmod -R o-r-w-x limesurvey/
<syntaxhighlight lang="c" enclose="div">$ chmod -R o-r-w-x limesurvey/

Revision as of 17:34, 25 May 2013

Algemeen

LimeSurvey vertrouwt op zijn eigen beveiligingssysteem, dat standaard geactiveerd is. Echter, de auteurs van de software accepteren geen verantwoordelijkheid voor, en maken geen claims over de veiligheid of geschikheid van de software. Dat gezegd hebbende zijn we uiteraard zeer benieuwd naar veiligheidslekken. Kom je zoiets tegen, mail ons dan op info@limesurvey.org, of open een foutrapport op onze bug tracker (zet deze wel graag op privé).

Linux bestandsrechten

Als je een Linux server gebruikt, bepalen de bestandsrechten mede de veiligheid van de LimeSurvey installatie.

Een primer over Linux/*nix bestandsrechten

Een Linux/*nix systeem is multiuser. Dat betekent dat er behalve jouw account mogelijk ook andere "gebruikers" actief zijn op het systeem. Deze "gebruikers" moeten de juiste rechten hebben.

Hint: Het instellen van bestandsrechten is bijzonder belangrijk bij configuratiebestanden, omdat hier gevoelige informatie, zoals wachtwoorden instaan.

Het 'root'-account geeft altijd toegang tot alle bestanden (ongeacht de toegekende rechten), omdat het de super-admin is

De webserver (waar LimeSurvey op draait) is ook zo'n gebruiker. Op Linux is dit waarschijnlijk de 'www','www-data' (op Debian/Ubuntu), 'apache' of 'nobody'-gebruiker. Ook kan de webhost er voor kiezen om systemen zoals 'suexec' te gebruiken om LimeSurvey-scripts uit te voeren onder jouw account. De webserver moet uiteraard de LimeSurvey-bestanden kunnen lezen. Maar slechts een klein gedeelte hoeft hij ook te kunnen overschrijven.

Hint: Het is zeer nuttig om de schrijfrechten voor de webservergebruiker in te trekken op bepaalde mappen. Mocht er dan een beveiligingslek in de software ontdekt worden, dan worden de bestanden nog steeds beschermd door de bestandsrechten van het systeem.

Instellen van bestandsrechten op een Linuxsysteem in eigen beheer

Als je zelf de webserver beheert (omdat je ofwel de hardware bezit of omdat je een (virtuele) server huurt met root-toegang), volg dan de volgende aanbevelingen:

Je kunt optioneel eerst een eigenaar en groep aanmaken zodat de toewijzing van rechten gemakkelijker gaat.

Een mogelijke aanpak daarbij is jezelf eigenaar maken van de bestanden, en de groep toewijzen aan de webservergroep. Daarbij is het gebruikelijk dat alleen de webservergebruiker lid is van deze groep (en mogelijk ook een andere webmaster).

Als bijvoorbeeld jouw gebruikersnaam 'mijnaccount' is, de webservergebruiker 'apache' die lid is van de groep 'apache', dan kun je het volgende commando gebruiken:

$ chown -R mijnaccount:apache limesurvey/

Nu kun je de bestands- en directoryrechten instellen.

Om het script te laten werken heeft het schrijfrechten op de volgende mappen nodig:

  • De /limesurvey/tmp directory en alle subdirectories er onder voor het importeren en uploaden
  • de upload/ directory en alle subdirectories om media te uploaden

Alle andere directories en bestanden kunnen af met alleen leesrechten.

Hint: Als je het bovenstaand advies over het aanmaken van de eigenaar en groep hebt opgevolgd, stel dan met de volgende commando's de rechten in:
$ chmod -R o-r-w-x limesurvey/

$ chmod -R -w limesurvey/

$ chmod -R 770 limesurvey/tmp

$ chmod -R 770 limesurvey/upload

Instellen van bestandsrechten op een beheerde webserver

Het lastige van een standaardprocedure geven voor een webapplicatie in een beheerde omgeving is omdat de inrichting er van veel kan verschillen.

Zoals bij het systeem in eigen beheer moet het script om te werken schrijfrechten op de volgende mappen nodig:

  • De /limesurvey/tmp directory en alle subdirectories er onder voor het importeren en uploaden
  • de upload/ directory en alle subdirectories om media te uploaden

Alle andere directories en bestanden kunnen af met alleen leesrechten.

Hint:
  • Afhankelijk van de configuratie van de webserver moet je de rechten met chmod wijzigen naar 755 of 777 om ze beschrijfbaar te maken voor de webserver. Probeer eerst 755: mocht dat niet werken zet ze dan op 777
  • Trek de leesrechten van anderen in door config.php te wijzigen met chmod naar 750. Werkt dat niet, zet dan de waarde op 755

Windows bestandsrechten

Als je een server op basis van Windows gebruikt, verzeker je er dan van dat alleen de eigenaar van het webserver-proces bestanden in de admin-directory kan schrijven. Alle andere bestanden kunnen op lees- en uitvoerrechten blijven.

Andere beveiligingszaken

De volgende tips zijn adviezen: LimeSurvey zelf is in het algemeen best veilig zonder deze aanvullende maatregelen. Mocht je enqûetes met zeer vertrouwelijke data moeten uitschrijven, dan kan deze aanvullende veiligheid helpen:

De /application/config/config.php bevat een naam en wachtwoord voor de database server. Dit kan een beveiligingsissue zijn, zeker als je een login gebruikt die (te)veel in de database "mag". Mocht deze dus op straat komen te liggen, dan ben je mogelijk meer data kwijt dan alleen de enqûetes. Daarom ben je beter af een specifiek account op te zetten dat alleen op de LimeSurvey database rechten heeft.

Een andere manier om config.php te beveiligen is deze te verplaatsen naar een lokatie buiten de webroot, bijvoorbeeld (in het geval van apache) in de directory boven /htdocs. Je gebruikt dan config.php, maar plaatst één verwijzing erin naar het échte bestand. Een voorbeeld is <?php return include("/home/hostfolder/safedata/configreal.php"); ?>. Zet vervolgens in dat bestand de gehele configuratie uit config.php. Pas daarbij wel de volgende instellingen aan:

'basePath' => dirname(dirname('''FILE''')),
'runtimePath' => dirname(dirname(dirname('''FILE'''))).DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'runtime',
[...]

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

om absolute paden mogelijk te maken. Voorbeeld:

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

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

Gebruik ook niet de naam "admin" als de standaardgebruiker. Ga naar de MySQL database (of diegene waar je LimeSurvey op hebt draaien) en wijzig de naam naar iets als "admin_xyz". Nu wordt het voor vreemden lastiger om te raden welke naam de beheerder heeft. Bedenk dat dit slechts één van de twee waarden is die iemand nodig heeft om binnen te komen: de andere is het wachtwoord. Kies deze dus ook met zorgvuldigheid.