Actions

Installation security hints/de: Difference between revisions

From LimeSurvey Manual

(Created page with "Wenn Sie einem Windows-Server benutzen, sollten Sie sicherstellen, dass im Ordner "admin" es dem Eigentümer des webserver-Prozesses erlaubt ist Dateien in dieses Verzeichnis ...")
No edit summary
 
(72 intermediate revisions by 3 users not shown)
Line 4: Line 4:
==Generelles==
==Generelles==


LimeSurvey hat ein eigenes Sicherheitssystem eingebaut, welches standardmäßig aktiviert ist. Das LimeSurvey-Projekt übernimmt keine wie immer gearteten Forderungen, Haftungen, Ansprüche etc., welche sich aus ihrem Einsatz mit LimeSurvey ergeben, natürlich auch jenen, welche auf mangelnde Sicherheitsvorkehrungen ihrerseits beruhen. Kurz: gehen sie davon aus, dass LimeSurvey als unsicher gilt, solange sie nicht selber für entsprechende Sicherheitsvorkehrungen sorgen. Trotzdem nehmen wir Sicherheitsprobleme sehr ernst und reagieren schnell - wenn Sie also von einem Sicherheitsproblem mit LimeSurvey Kenntnis haben, so lassen Sie uns dies bitte wissen: info@limesurvey.org oder erstellen Sie einen Fehlerreport in unserem [http://bugs.limesurvey.org Bug Tracker] (markieren Sie diesen bitte als 'private').
LimeSurvey setzt auf eine eigene Sicherheit, die standardmäßig aktiviert ist. Die Autoren dieser Software übernehmen keine Verantwortung und machen keine Ansprüche hinsichtlich der Angemessenheit oder des Sicherheitsniveaus dieser Software. Allerdings nehmen wir Sicherheitsbelange sehr ernst und reagieren schnell. Wenn Sie daher von Sicherheitsproblemen in LimeSurvey wissen, teilen Sie uns dies bitte mit, indem Sie uns entweder eine E-Mail an [mailto:info@limesurvey.org info@limesurvey.org] senden oder einen Fehlerbericht in unserem [http:// bugs.limesurvey.org Bugtracker] (bitte als privat markieren).
 
==Webserver-Einschränkung==
 
Wenn Sie Apache verwenden, fügt LimeSurvey zur Einschränkung eine andere htaccess-Datei hinzu. Stellen Sie sicher, dass Sie htaccess mit <code>AllowOverride</code> aktiviert haben.
 
Mit einem anderen Webserver oder wenn Sie <code>AllowOverride None</code> verwenden möchten, müssen Sie:
 
* (Option) Zugriff auf alle Dateien in application, protected, framework und themes/*/views deaktivieren
* (Option) Zugriff auf die vom Benutzer hochgeladene Datei /upload/surveys/.*/fu_[a-z0-9] deaktivieren
* (Option) Zugriff auf die ausführbare Datei im Upload-Verzeichnis deaktivieren
 
Ein Beispiel für Nginx finden Sie in unseren [[General_FAQ#With_nginx_webserver|Allgemeinen FAQ]]


==Dateirechte in Linux==
==Dateirechte in Linux==


Wenn sie einen Linux-Server verwenden, sollten Sie entsprechende Dateiberechtigungen setzen, damit Ihre Installation gesichert ist.
Wenn Sie einen Linux-Server verwenden, müssen Sie die Dateiberechtigungen entsprechend festlegen, um Ihre LimeSurey-Installation zu sichern.


===Grundlegende Fakten über Linux/*nix Dateiberechtigungen===
===Grundlegende Fakten über Linux/*nix Dateiberechtigungen===
Line 14: Line 26:
Ein Linux/*nix System ist normalerweise ein Mehrbenutzersystem. Das bedeutet, dass abgesehen von Ihrem persönlichen Zugang noch andere Benutzerzugänge auf dem System bestehen könnten und daher sollten Sie darauf achten, welche Berechtigungen Sie diesen anderen Benutzern geben.
Ein Linux/*nix System ist normalerweise ein Mehrbenutzersystem. Das bedeutet, dass abgesehen von Ihrem persönlichen Zugang noch andere Benutzerzugänge auf dem System bestehen könnten und daher sollten Sie darauf achten, welche Berechtigungen Sie diesen anderen Benutzern geben.


<div class="simplebox">[[File:help.png]] '''Hinweis:''' Das Setzen von Dateiberechtigungen ist besonders wichtig bei Konfigurationsdateien, die normalerweise sensible Daten enthalten, wie z.B. Kennworte.</div>
<div class="simplebox">[[File:help.png]] '''Hinweis:''' Das Festlegen von Dateiberechtigungen ist besonders wichtig, um Konfigurationsdateien mit kritischen Daten wie Passwörtern zu schützen.</div>


"Sie sollten aber wissen, dass ein 'root' Zugang immer Zugriff auf Ihre Dateien hat (egal welche Berechtigungen Sie setzen), da diese der Super-Admin Benutzer ist."
''Bedenken Sie, dass dem Root-Konto immer die Berechtigung zum Zugriff auf Ihre Dateien gewährt wird (unabhängig von den von Ihnen festgelegten Dateiberechtigungen), da es sich um den Superadministrator handelt.''


Der Webserver (auf dem LimeSurvey läuft) läuft normalerweise auch unter einem bestimmten Identität/User. Unter Linux ist dies üblicherweise der 'www','www-data' (auf Debian/Ubuntu), 'apache' oder 'nobody' User. Einige Webhoster nutzen eine System (wie z.B. suexec) welches es ermöglicht, LimeSurvey unter einem persönlichen Nutzer laufen zu lassen. Natürlich muss der Webserver User die Berechtigung zum Lesen der LimeSurvey Dateien haben. Aber nur eine begrenzte Anzahl an Unterverzeichnissen im LimeSurvey Verzeichnisbaum muss auch durch den Webserver-Benutzer beschreibbar sein.
Der Webserver (auf dem LimeSurvey läuft) läuft ebenfalls unter einer bestimmten Identität (Benutzer). Unter Linux ist dies normalerweise der Benutzer „www“, „www-data“ (unter Debian/Ubuntu), „Apache“ oder „nobody“. Einige Hosting-Unternehmen verwenden jedoch Systeme (wie z. B. suexec), die es ermöglichen, LimeSurvey-Skripte mit Ihrem persönlichen Benutzer auszuführen. Natürlich muss der Webserver-Benutzer das Recht haben, LimeSurvey-Dateien zu lesen. Allerdings darf nur eine kleine Teilmenge der LimeSurvey-Unterverzeichnisse vom Webserverbenutzer beschreibbar sein.


<div class="simplebox">[[File:help.png]] '''Hinweis''': Es ist auf jeden Fall sinnvoll die Schreibrechte auf allen nicht benötigen Verzeichnissen zu entfernen. Selbst wenn eine LimeSurvey SIcherheitslücke entdeckt werden sollte, sind die Hauptdateien dank der Dateiberechtigungen dann immer noch vor Manipulationen geschützt.</div>
<div class="simplebox">[[File:help.png]] '''Hinweis''': Es ist sehr nützlich, dem Webserverbenutzer die Schreibberechtigung für diese LimeSurvey-Unterverzeichnisse zu entziehen, die diese nicht benötigen. Selbst wenn eine LimeSurvey-Schwachstelle entdeckt wird, sind die Hauptdateien dank der Dateisystemberechtigungen dennoch vor einer unerlaubten Änderung geschützt.</div>


===Setzen von Berechtigungen auf einem selbstverwalteten Linux-System===
===Setzen von Berechtigungen auf einem selbstverwalteten Linux-System===


If you're managing your webserver and operating system configuration (you are the owner of the physical server or are renting a virtual server on which you have root access), you can follow these recommendations.
Wenn Sie die Konfiguration Ihres Webservers und Betriebssystems verwalten (Sie sind Eigentümer des physischen Servers oder mieten einen virtuellen Server, auf den Sie Root-Zugriff haben), können Sie die folgenden Empfehlungen berücksichtigen.
*Für das LimeSurvey Stammverzeichnis (oder wie immer sie es benannt haben) - chmod 755 (lesen/ausführen - für die gesamte Welt)
*Für die Dateien im LimeSurvey Verzeichnis - chmod 755 (lesen/ausführen - für die gesamte Welt)
*Für das tmp Verzeichnis - chmod 755 - dieses Verzeichnis ist beim Erstellen leer und wird danach verwendet um Dateien hochzuladen, Grafiken, welche mit JPGraph erstellt wurden zu speichern, ebenso werden dort Dateien vom Vorlagen-Editor abgelegt.
* Für Dateien im admin Verzeichnis - chmod 755 (lesen/ausführen - für die gesamte Welt)


Die Standard-Dateien in diesem Verzeichnis benötigen keine Schreibrechte - de facto sollten sie auch keine bekommen, da bei normalen Gebrauch von LimeSurvey sie nie welche benötigen werden.
Sie können zunächst den Eigentümer und die Gruppe Ihrer LimeSurvey-Dateien festlegen, um die Einrichtung der Dateiberechtigungen zu vereinfachen. Eine mögliche Strategie besteht darin, den Eigentümer der LimeSurvey-Dateien auf Ihren persönlichen Benutzernamen und die Gruppe der LimeSurvey-Dateien auf die Webservergruppe festzulegen. Normalerweise enthält diese Webservergruppe nur das Webserverkonto (und möglicherweise ein weiteres Webmasterkonto). Wenn Ihr Benutzername beispielsweise „myaccount“ lautet und der Webserver-Benutzer „apache“ in der Gruppe „apache“ ist, können Sie über einen Shell-Zugriff den folgenden Befehl verwenden: <code>$ chown -R myaccount:apache limesurvey/</code> . Anschließend legen Sie die Datei- und Unterverzeichnisberechtigungen fest.


Eine mögliche Strategie ist es, den Besitzer der LimeSurvey-Dateien auf Ihre persönlichen Benutzernamen und die Gruppe der LimeSurvey-Dateien auf die Webserver-Gruppe zu setzen. Normalerweise enthält die Webserver-Gruppe nur das Webserver-Konto (und evtl. noch ein Webmaster-Konto).
Damit das Skript ordnungsgemäß funktioniert, ist Schreibzugriff auf einige Verzeichnisse erforderlich:
*Das Verzeichnis /limesurvey/application/config erfordert „Lesen und Schreiben“, um die Anwendungskonfigurationseinstellungen zu speichern
*Das Verzeichnis /limesurvey/tmp und seine Unterverzeichnisse werden für Importe/Uploads verwendet und sollten für Ihren Webserver auf „Lesen und Schreiben“ eingestellt sein
*Das Verzeichnis upload/directory und alle seine Unterverzeichnisse müssen ebenfalls über Lese- und Schreibrechte verfügen, damit Bilder und Mediendateien hochgeladen werden können
* Alle anderen Verzeichnisse und Dateien können auf „Schreibgeschützt“ gesetzt werden.


Zum Beispiel, wenn Sie Ihr Benutzername 'myaccount' ist und der Webserver-Benutzer ist 'apache' in der 'apache'-Gruppe, dann können Sie von einem Shell-Zugang folgenden Befehl verwenden:
<div class="simplebox">[[File:help.png]] '''Hinweis:''' Angenommen, Sie haben die oben genannten Empfehlungen für Eigentümer/Gruppe befolgt, können diese Einstellungen mit den folgenden Befehlen angewendet werden:


$ chown -R myaccount:apache limesurvey/
<code>$ chmod -R o-r-w-x limesurvey/</code>


Legen Sie dann die Datei- und Unterverzeichniss-Berechtigungen fest.
<code>$ chmod -R -w limesurvey/</code>


Damit das Skript funktioniert muss es Schreibzugriff auf einige Verzeichnisse haben:
<code>$ chmod -R 770 limesurvey/application/config</code>
*Das "/limesurvey/tmp" Verzeichnis und dessen Unterverzeichnisse sind für Importe/Uploads sollte auf "Lesen & Schreiben" für deinen Webserver gesetzt sein.
 
*Das upload/ Verzeichnis und alle Unterverzeichnisse müssen auch "Lesen & Schreiben" für Ihren Webserver gesetzt habe, um es zu ermöglichen Bild-und Mediendateien hoch zu laden.
<code>$ chmod -R 770 limesurvey/tmp</code>
*Alle anderen Verzeichnisse und Dateien können auf "Nur Lesen" gesetzt werden.


<div class="simplebox">[[Datei:help.png]] '''Hinweis:''' Angenommen, dass Sie die oben genannten Empfehlungen für Besitzer/Gruppe befolgt haben, können diese Einstellungen mit folgenden Befehlen angewendet werden:
<code>$ chmod -R 770 limesurvey/upload</code>


$ chmod -R o-r-w-x limesurvey/
</div>


$ chmod -R -w limesurvey/
===Festlegen von Dateiberechtigungen auf einem gehosteten Webserver===


$ chmod -R 770 limesurvey/tmp
Angesichts der Schwierigkeit eines Standardverfahrens zum Sichern einer Webanwendung in einer gehosteten Umgebung ist dies ziemlich schwierig, da sich gehostete Umgebungen in vielerlei Hinsicht unterscheiden.


$ chmod -R 770 limesurvey/upload
Damit das Skript funktioniert, muss es Schreibzugriff auf einige Verzeichnisse haben:
*Das "/limesurvey/tmp" Verzeichnis und dessen Unterverzeichnisse sind für Importe/Uploads und sollte auf "Lesen & Schreiben" für deinen Webserver gesetzt sein.
*Das upload/ Verzeichnis und alle Unterverzeichnisse müssen auch "Lesen & Schreiben" für Ihren Webserver gesetzt haben, um es zu ermöglichen Bild- und Mediendateien hochzuladen.
*Alle anderen Verzeichnisse und Dateien können auf "Nur Lesen" gesetzt werden.


</div>
<div class="simplebox">[[File:help.png]] '''Hint:'''
* Depending on your web server configuration, you will have to chmod the rights on the writable folders to 755 or 777 to make it writable for the web server. Try 755 first, if it does not work, 'upgrade' to 777
* You can also try to remove other users' read access to config.php by setting this file's permissions to 750 - if it does not work, 'upgrade' to 755</div>


===Dateirechte mit Windows===
==Dateirechte in Windows==


Wenn sie einen Windows Webserver verwenden sollten sie sicherstellen, dass der Benutzer des Webserver-Prozess Schreibrechte auf das admin Verzeichnis hat. Für alle anderen Dateien genügen "nur Lesen" und "Ausführen"-Rechte.
Wenn Sie einen Windows-Server verwenden, sollten Sie sicherstellen, dass der Admin-Ordner es dem Eigentümer des Webserverprozesses ermöglicht, Dateien in dieses Verzeichnis zu schreiben. Die restlichen Dateien können auf "Nur Lesen" ausgeführt werden.


As in the managed server case, for the script to work properly it needs write access to some directories:
===Weitere Sicherheitsvorkehrungen===
*The "/limesurvey/tmp" directory is used for imports/uploads and should be set to ''Read & Write'' for your webserver.
*The upload/ directory and all its sub directories must also have ''Read & Write'' for your webserver in order to enable picture and media files upload.
* The other directories and files should be set to ''Read Only''


<div class="simplebox">[[Datei:help.png]] '''Hinweis:''
Im Folgenden handelt es sich lediglich um Empfehlungen. Ohne diese zusätzlichen Maßnahmen ist LimeSurvey im Allgemeinen sehr sicher. Wenn Sie jedoch äußerst sensible Daten sammeln, kann ein wenig zusätzliche Sicherheit helfen:
* Je nach Webserver-Konfiguration müssen Sie mit denm Befehl chmod die Rechte für beschreibbare Ordner auf 755 oder 777 setzen, um diese für den Webserver beschreibbar zu machen. Versuchen 755 zuerst - wenn es nicht funktioniert 'aktualisiere' auf 777.
* Sie können auch versuchen, den Zugriff auf config.php für anderen zu beschränken, indem Sie diese Datei-Berechtigungen auf 750 setzen - wenn es nicht funktioniert 'aktualisiere' auf 755.</div>


==Dateirechte in Windows==
===SSL-Nutzung===
Wir empfehlen generell die Verwendung von SSL für sensible Umfragedaten. Normalerweise aktivieren Sie SSL, indem Sie Ihren Webserver richtig konfigurieren und ein SSQL-Zertifikat verwenden. Wenn Sie SSL aktiviert haben, sollten Sie SSL in den [[Global_settings|globalen Einstellungen]] von LimeSurvey ständig erzwingen. Darüber hinaus können Sie nur die Verwendung von „sicheren“ Cookies festlegen, indem Sie die [[Optional_settings|entsprechende Option]] in config.php bearbeiten.


Wenn Sie einem Windows-Server benutzen, sollten Sie sicherstellen, dass im Ordner "admin" es dem Eigentümer des webserver-Prozesses erlaubt ist Dateien in dieses Verzeichnis zu schreiben, aber alle anderen Dateien können auf nur Lesen und Ausführen gesetzt werden.
=== Der Zugriff auf die Datei config.php ===


===Weitere Sicherheitsvorkehrungen===
{{Alarm| Sie müssen application/config/''config.php'' erst aktualisieren, nachdem die erste Installation abgeschlossen ist und es funktioniert.}}


Die Datei config.php beinhaltet den Benutzernamen und das dazugehörige Passwort für den Datenbankserver. Dieses zieht weitere Sicherheitsaspekte nach sich, insbesondere, wenn sie einen Benutzer mit weitreichenden Zugriffsrechten auf die Datenbank verwenden. Wenn sie das Risiko etwas minimieren möchten, empfiehlt es sich, einen eigenen Benutzer anzulegen, welche nur über die entsprechenden Rechte verfügt, welche für eine Verwendung von LimeSurvey von Nöten sind.
Die Datei /application/config/config.php enthält einen Benutzernamen und ein Passwort für Ihren Datenbankserver. Dies wirft bestimmte Sicherheitsprobleme auf, insbesondere wenn Sie eine Anmeldung verwenden, die über einen hohen Verwaltungszugriff auf Ihre Datenbank verfügt. Im Falle eines Fehlers bei der Rückgabe des Inhalts dieser PHP-Datei an den Browser eines Benutzers könnten Ihr Datenbankkennwort und andere Daten kompromittiert werden (dies ist jedoch ein sehr unwahrscheinliches Szenario). Der beste Weg, das Risiko zu minimieren, besteht darin, ein bestimmtes Login einzurichten, das nur bestimmte Rechte für Ihre LimeSurvey-Datenbank hat.


Der beste Weg wäre es, wenn sie die Datei config.php in einem nicht dem Webserver zugeordneten Verzeichnis ablegen. Für Apache-Benutzer bedeutet dies, dass sie die config.php in einem Verzeichnis oberhalb der htdocs-Order ablegen. Von Seiten der Entwickler wurde diese Vorgehensweise zwar noch nicht getestet, aber es spricht von Skript-Seite nichts dagegen, wieso eine solche Einstellung nicht machbar sein sollte. Sie müssen in diesem Fall nur all jene PHP-Dateien des Skripts modifizieren, welche (meist am Dateianfang) die Befehlszeile `include ("config.php");` beinhalten und diese so abändern, dass diese  auf den vollständigen Pfad zu ihrer config.php zeigt, zum Beispiel: `include("c:/Programme/apache group/apache/phpsafe/config.php");` Wie gesagt, dies wurde noch nicht getestet, wenn sie es versuchen, teilen sie uns bitte ihre Erfahrungen hierzu im Forum oder Bugtracker mit. Für zukünftige Versionen wird vielleicht noch ein einfacherer Weg gefunden.
Eine andere Möglichkeit, diese Informationen zu sichern, besteht darin, die Informationen aus der Datei /application/config/config.php in einem Nicht-Web-Verzeichnis abzulegen, d. h. für Apache-Benutzer ist dies das Verzeichnis über dem Ordner htdocs (auch bekannt als public_html oder www). Grundsätzlich verwenden Sie config.php, haben aber eine Zeile darin – eine Zeile, die die Datei mit den TATSÄCHLICHEN Konfigurationsinformationen enthält (z. B.:<?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Entfernen Sie alle tatsächlichen Konfigurationsinformationen aus /application/config/config.php und fügen Sie sie in die andere Datei (configreal.php) ein, die in der Datei /application/config/''config.php'' erwähnt wird. Diese andere Datei sollte sich in einem Nicht-Webverzeichnis befinden. Dann enthält /application/config/config.php keine Datenbankkennwörter usw., sondern nur den Namen der Datei, die die Datenbankinformationen enthält.  


Another way to secure this information can be to put the certain information from the /application/config/config.php file in a non-web directory, i.e. for Apache users this is the directory above the htdocs (aka public_html or www) folder. So you will use config.php, but have one line in it - a line that includes the file with ACTUAL configuration information (ex: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Remove all actual configuration information from /application/config/config.php, and paste it into the other file (configreal.php) that is included by /application/config/config.php. This other file should be located in a non-Web directory. Then /application/config/config.php will not contain database passwords, etc. - just the name of the file that DOES contain the database info. This avoids having to change all the other files that include /application/config/config.php, since they can still include it, and it will include the real config information. However you will need to edit configreal.php and change the follow parameters
Dadurch wird vermieden, dass alle anderen Dateien, zu denen /application/config/config.php gehört, geändert werden müssen, da config.php sie auf die Konfigurationsdatei „umleitet“, die sich in einem Nicht-Webverzeichnis befindet und alle tatsächlichen Konfigurationsinformationen enthält. Sie müssen jedoch configreal.php bearbeiten und die folgenden Parameter ändern, um absolute Verzeichnispfade zu verwenden, damit es ordnungsgemäß funktioniert:


<syntaxhighlight lang="php" enclose="div">
<syntaxhighlight lang="php">


'basePath' => dirname(dirname('''FILE''')),
'basePath' => dirname(dirname('''FILE''')),
Line 95: Line 107:
</syntaxhighlight>
</syntaxhighlight>


to use absolute directory paths to work properly. Example:
Beispiel:


<syntaxhighlight lang="php" enclose="div">
<syntaxhighlight lang="php" enclose="div">
Line 109: Line 121:
</syntaxhighlight>
</syntaxhighlight>


Also don't use "admin" as the default user. Go to your MySQL database (or other one if you installed LimeSurvey on different database) and change default user name "admin" to whatever you prefer (e.g. "admin_xyz"). It will be now much harder to guess 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 it with extreme care.
Außerdem gilt: „Verwenden Sie nicht „admin“ als Standardbenutzer“. Gehen Sie zu Ihrer MySQL-Datenbank (oder der Datenbank, in der Sie LimeSurvey installiert haben) und ändern Sie den Standardbenutzernamen „admin“ in einen beliebigen Namen (z. B. „admin_xyz“). Es wird jetzt viel schwieriger sein, den neuen Benutzernamen des Administrators zu erraten. Denken Sie daran, dass dies eine der beiden Variablen ist, die Eindringlinge nutzen können, um sich Zugang zu verschaffen. Das Admin-Passwort ist die andere Variable. Wählen Sie beide daher mit äußerster Vorsicht aus.
 
 
=== Inhaltssicherheitsrichtlinie (CSP) ===
 
'''HAFTUNGSAUSSCHLUSS – Das hier bereitgestellte CSP ist nur ein Beispiel und darf nicht wörtlich verwendet werden. Es ist als Ausgangspunkt gedacht und Sie MÜSSEN es an Ihre Bedürfnisse anpassen und gründlich testen.'''
<nowiki><IfModule mod_headers.c>
Header setzt immer 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></nowiki>

Latest revision as of 09:15, 26 March 2024

Generelles

LimeSurvey setzt auf eine eigene Sicherheit, die standardmäßig aktiviert ist. Die Autoren dieser Software übernehmen keine Verantwortung und machen keine Ansprüche hinsichtlich der Angemessenheit oder des Sicherheitsniveaus dieser Software. Allerdings nehmen wir Sicherheitsbelange sehr ernst und reagieren schnell. Wenn Sie daher von Sicherheitsproblemen in LimeSurvey wissen, teilen Sie uns dies bitte mit, indem Sie uns entweder eine E-Mail an info@limesurvey.org senden oder einen Fehlerbericht in unserem [http:// bugs.limesurvey.org Bugtracker] (bitte als privat markieren).

Webserver-Einschränkung

Wenn Sie Apache verwenden, fügt LimeSurvey zur Einschränkung eine andere htaccess-Datei hinzu. Stellen Sie sicher, dass Sie htaccess mit AllowOverride aktiviert haben.

Mit einem anderen Webserver oder wenn Sie AllowOverride None verwenden möchten, müssen Sie:

  • (Option) Zugriff auf alle Dateien in application, protected, framework und themes/*/views deaktivieren
  • (Option) Zugriff auf die vom Benutzer hochgeladene Datei /upload/surveys/.*/fu_[a-z0-9] deaktivieren
  • (Option) Zugriff auf die ausführbare Datei im Upload-Verzeichnis deaktivieren

Ein Beispiel für Nginx finden Sie in unseren Allgemeinen FAQ

Dateirechte in Linux

Wenn Sie einen Linux-Server verwenden, müssen Sie die Dateiberechtigungen entsprechend festlegen, um Ihre LimeSurey-Installation zu sichern.

Grundlegende Fakten über Linux/*nix Dateiberechtigungen

Ein Linux/*nix System ist normalerweise ein Mehrbenutzersystem. Das bedeutet, dass abgesehen von Ihrem persönlichen Zugang noch andere Benutzerzugänge auf dem System bestehen könnten und daher sollten Sie darauf achten, welche Berechtigungen Sie diesen anderen Benutzern geben.

Hinweis: Das Festlegen von Dateiberechtigungen ist besonders wichtig, um Konfigurationsdateien mit kritischen Daten wie Passwörtern zu schützen.

Bedenken Sie, dass dem Root-Konto immer die Berechtigung zum Zugriff auf Ihre Dateien gewährt wird (unabhängig von den von Ihnen festgelegten Dateiberechtigungen), da es sich um den Superadministrator handelt.

Der Webserver (auf dem LimeSurvey läuft) läuft ebenfalls unter einer bestimmten Identität (Benutzer). Unter Linux ist dies normalerweise der Benutzer „www“, „www-data“ (unter Debian/Ubuntu), „Apache“ oder „nobody“. Einige Hosting-Unternehmen verwenden jedoch Systeme (wie z. B. suexec), die es ermöglichen, LimeSurvey-Skripte mit Ihrem persönlichen Benutzer auszuführen. Natürlich muss der Webserver-Benutzer das Recht haben, LimeSurvey-Dateien zu lesen. Allerdings darf nur eine kleine Teilmenge der LimeSurvey-Unterverzeichnisse vom Webserverbenutzer beschreibbar sein.

Hinweis: Es ist sehr nützlich, dem Webserverbenutzer die Schreibberechtigung für diese LimeSurvey-Unterverzeichnisse zu entziehen, die diese nicht benötigen. Selbst wenn eine LimeSurvey-Schwachstelle entdeckt wird, sind die Hauptdateien dank der Dateisystemberechtigungen dennoch vor einer unerlaubten Änderung geschützt.

Setzen von Berechtigungen auf einem selbstverwalteten Linux-System

Wenn Sie die Konfiguration Ihres Webservers und Betriebssystems verwalten (Sie sind Eigentümer des physischen Servers oder mieten einen virtuellen Server, auf den Sie Root-Zugriff haben), können Sie die folgenden Empfehlungen berücksichtigen.

Sie können zunächst den Eigentümer und die Gruppe Ihrer LimeSurvey-Dateien festlegen, um die Einrichtung der Dateiberechtigungen zu vereinfachen. Eine mögliche Strategie besteht darin, den Eigentümer der LimeSurvey-Dateien auf Ihren persönlichen Benutzernamen und die Gruppe der LimeSurvey-Dateien auf die Webservergruppe festzulegen. Normalerweise enthält diese Webservergruppe nur das Webserverkonto (und möglicherweise ein weiteres Webmasterkonto). Wenn Ihr Benutzername beispielsweise „myaccount“ lautet und der Webserver-Benutzer „apache“ in der Gruppe „apache“ ist, können Sie über einen Shell-Zugriff den folgenden Befehl verwenden: $ chown -R myaccount:apache limesurvey/ . Anschließend legen Sie die Datei- und Unterverzeichnisberechtigungen fest.

Damit das Skript ordnungsgemäß funktioniert, ist Schreibzugriff auf einige Verzeichnisse erforderlich:

  • Das Verzeichnis /limesurvey/application/config erfordert „Lesen und Schreiben“, um die Anwendungskonfigurationseinstellungen zu speichern
  • Das Verzeichnis /limesurvey/tmp und seine Unterverzeichnisse werden für Importe/Uploads verwendet und sollten für Ihren Webserver auf „Lesen und Schreiben“ eingestellt sein
  • Das Verzeichnis upload/directory und alle seine Unterverzeichnisse müssen ebenfalls über Lese- und Schreibrechte verfügen, damit Bilder und Mediendateien hochgeladen werden können
  • Alle anderen Verzeichnisse und Dateien können auf „Schreibgeschützt“ gesetzt werden.
Hinweis: Angenommen, Sie haben die oben genannten Empfehlungen für Eigentümer/Gruppe befolgt, können diese Einstellungen mit den folgenden Befehlen angewendet werden:

$ 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

Festlegen von Dateiberechtigungen auf einem gehosteten Webserver

Angesichts der Schwierigkeit eines Standardverfahrens zum Sichern einer Webanwendung in einer gehosteten Umgebung ist dies ziemlich schwierig, da sich gehostete Umgebungen in vielerlei Hinsicht unterscheiden.

Damit das Skript funktioniert, muss es Schreibzugriff auf einige Verzeichnisse haben:

  • Das "/limesurvey/tmp" Verzeichnis und dessen Unterverzeichnisse sind für Importe/Uploads und sollte auf "Lesen & Schreiben" für deinen Webserver gesetzt sein.
  • Das upload/ Verzeichnis und alle Unterverzeichnisse müssen auch "Lesen & Schreiben" für Ihren Webserver gesetzt haben, um es zu ermöglichen Bild- und Mediendateien hochzuladen.
  • Alle anderen Verzeichnisse und Dateien können auf "Nur Lesen" gesetzt werden.
Hint:
  • Depending on your web server configuration, you will have to chmod the rights on the writable folders to 755 or 777 to make it writable for the web server. Try 755 first, if it does not work, 'upgrade' to 777
  • You can also try to remove other users' read access to config.php by setting this file's permissions to 750 - if it does not work, 'upgrade' to 755

Dateirechte in Windows

Wenn Sie einen Windows-Server verwenden, sollten Sie sicherstellen, dass der Admin-Ordner es dem Eigentümer des Webserverprozesses ermöglicht, Dateien in dieses Verzeichnis zu schreiben. Die restlichen Dateien können auf "Nur Lesen" ausgeführt werden.

Weitere Sicherheitsvorkehrungen

Im Folgenden handelt es sich lediglich um Empfehlungen. Ohne diese zusätzlichen Maßnahmen ist LimeSurvey im Allgemeinen sehr sicher. Wenn Sie jedoch äußerst sensible Daten sammeln, kann ein wenig zusätzliche Sicherheit helfen:

SSL-Nutzung

Wir empfehlen generell die Verwendung von SSL für sensible Umfragedaten. Normalerweise aktivieren Sie SSL, indem Sie Ihren Webserver richtig konfigurieren und ein SSQL-Zertifikat verwenden. Wenn Sie SSL aktiviert haben, sollten Sie SSL in den globalen Einstellungen von LimeSurvey ständig erzwingen. Darüber hinaus können Sie nur die Verwendung von „sicheren“ Cookies festlegen, indem Sie die entsprechende Option in config.php bearbeiten.

Der Zugriff auf die Datei config.php

Template:Alarm

Die Datei /application/config/config.php enthält einen Benutzernamen und ein Passwort für Ihren Datenbankserver. Dies wirft bestimmte Sicherheitsprobleme auf, insbesondere wenn Sie eine Anmeldung verwenden, die über einen hohen Verwaltungszugriff auf Ihre Datenbank verfügt. Im Falle eines Fehlers bei der Rückgabe des Inhalts dieser PHP-Datei an den Browser eines Benutzers könnten Ihr Datenbankkennwort und andere Daten kompromittiert werden (dies ist jedoch ein sehr unwahrscheinliches Szenario). Der beste Weg, das Risiko zu minimieren, besteht darin, ein bestimmtes Login einzurichten, das nur bestimmte Rechte für Ihre LimeSurvey-Datenbank hat.

Eine andere Möglichkeit, diese Informationen zu sichern, besteht darin, die Informationen aus der Datei /application/config/config.php in einem Nicht-Web-Verzeichnis abzulegen, d. h. für Apache-Benutzer ist dies das Verzeichnis über dem Ordner htdocs (auch bekannt als public_html oder www). Grundsätzlich verwenden Sie config.php, haben aber eine Zeile darin – eine Zeile, die die Datei mit den TATSÄCHLICHEN Konfigurationsinformationen enthält (z. B.:<?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Entfernen Sie alle tatsächlichen Konfigurationsinformationen aus /application/config/config.php und fügen Sie sie in die andere Datei (configreal.php) ein, die in der Datei /application/config/config.php erwähnt wird. Diese andere Datei sollte sich in einem Nicht-Webverzeichnis befinden. Dann enthält /application/config/config.php keine Datenbankkennwörter usw., sondern nur den Namen der Datei, die die Datenbankinformationen enthält.

Dadurch wird vermieden, dass alle anderen Dateien, zu denen /application/config/config.php gehört, geändert werden müssen, da config.php sie auf die Konfigurationsdatei „umleitet“, die sich in einem Nicht-Webverzeichnis befindet und alle tatsächlichen Konfigurationsinformationen enthält. Sie müssen jedoch configreal.php bearbeiten und die folgenden Parameter ändern, um absolute Verzeichnispfade zu verwenden, damit es ordnungsgemäß funktioniert:

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

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

Beispiel:

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

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

Außerdem gilt: „Verwenden Sie nicht „admin“ als Standardbenutzer“. Gehen Sie zu Ihrer MySQL-Datenbank (oder der Datenbank, in der Sie LimeSurvey installiert haben) und ändern Sie den Standardbenutzernamen „admin“ in einen beliebigen Namen (z. B. „admin_xyz“). Es wird jetzt viel schwieriger sein, den neuen Benutzernamen des Administrators zu erraten. Denken Sie daran, dass dies eine der beiden Variablen ist, die Eindringlinge nutzen können, um sich Zugang zu verschaffen. Das Admin-Passwort ist die andere Variable. Wählen Sie beide daher mit äußerster Vorsicht aus.


Inhaltssicherheitsrichtlinie (CSP)

HAFTUNGSAUSSCHLUSS – Das hier bereitgestellte CSP ist nur ein Beispiel und darf nicht wörtlich verwendet werden. Es ist als Ausgangspunkt gedacht und Sie MÜSSEN es an Ihre Bedürfnisse anpassen und gründlich testen. <IfModule mod_headers.c> Header setzt immer 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>