Sicherheitsempfehlungen: Unterschied zwischen den Versionen

Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „{{Sicherheit}} {{Zum Übersetzen}} All web application software is highly complex, and every application has security issues that are found from time to time, u…“)
 
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
{{Sicherheit}}
 
{{Sicherheit}}
  
{{Zum Übersetzen}}
+
Jede Web-Applikation-Software ist hoch komplex, und jede Software hat Sicherheitsrisiken bzw. -lücken, die von Zeit zu Zeit entdeckt werden. Häufig ist das der Fall, wenn bei der Programmierung bestimmte Eingabemöglichkeiten nicht berücksichtigt wurden. Im Moodle-Projek wird das Thema [[Sicherheit]] sehr ernst genommen, und identifizierte Sicherheitslücken werden so schnell wie möglich geschlossen.
  
All web application software is highly complex, and every application has security issues that are found from time to time, usually involving some combination of input that the programmers did not anticipate. The Moodle project takes security seriously, and is continuously improving Moodle to close such holes as we find them.
 
  
 +
==Einführung==
  
==Introduction==
+
*Dieser Artikel enthält wichtige Sicherheitshinweise für Ihre Moodle-Installation.
*This page contains important security measures for your Moodle installation.
+
*Sicherheitsprobleme sollten Sie im [http://tracker.moodle.org/secure/CreateIssue!default.jspa  Moodle tracker] melden und als "Security issue" kennzeichnen, damit die Moodle-Entwickler/innen es schnell beheben können und registrierte Moodle-Administrator/innen entsprechend informieren können.
*You should report security problems to the [http://tracker.moodle.org/secure/CreateIssue!default.jspa  Moodle tracker] (and mark it as a security issue!) so that developers can see it and inform  registered Moodle sites about fixes as soon as possible.
+
*Sie sollten keine Exploits in Foren auf moodle.org oder sonstwo im Web posten, um Moodle-Administrator/innen bzw. deren Installationen zu schützen, die nicht rechtzeitig aktualisiert haben bzw. wurden.
*You should not post actual exploits in the forums or elsewhere on the web (to protect Moodle admins who have not upgraded yet).
 
  
==Simple security measures==
+
==Einfache Sicherheitsmaßnahmen==
*The best security strategy is a good backup! But you don't have a good backup unless you are able to restore it. Test your restoration procedures!
+
*Die beste Sicherheitsstrategie ist ein gutes [[Sicherung der Moodle-Installation|Backup]].
*Load only software or services you will use
+
:'''Wichtig''': Ein Backup ist erst dann "gut", wenn Sie es wiederherstellen können. Testen Sie also, ob Sie die Sicherung Ihrer Moodle-Installation auch wiederherstellen können!
*Perform regular updates
+
*Installieren Sie nur Software, die Sie auch wirklich benötigen und nutzen.
*Model your security after the layers of clothing you wear on a cold winter day
+
*Führen Sie regelmäßig Updates durch.
 +
*Kümmern Sie sich um die Sicherheit auf verschiedenen Ebenen (Betriebssystem/Server, Webserver, Datenbankserver, Moodle).
  
==Basic recommendations==
+
==Grundlegende Empfehlungen==
*Update Moodle regularly on each release
+
*[[Aktualisierung von Moodle|Aktualisieren]] Sie Ihre Moodle-Installation regelmäßig und verwenden Sie möglichst immer die aktuellste Version.
:Published security holes draw crackers attention after release. The older the version, the more vulnerabilities it is likely to contain.
+
:Veröffentlichte Sicherheitslücken ziehen die Aufmerksamkeit von Hacker/innen auf sich! Je älter Ihre Moodle-Version ist, um so mehr Schwachstellen kann sie enthalten.  
*Register globals '''MUST''' be disabled!
+
*Die Einstellung ''register_globals'' in der PHP-Konfigurationsdatei ''php.ini'' '''muss deaktiviert''' sein!
:This will help prevent against possible XSS problems in third-party scripts.
+
:Das hilft, XSS-Probleme durch Skripte von Dritten zu vermeiden.
*Use strong passwords for admin and teachers
+
*Verwenden Sie starke Passwörter für Administrator/innen und Trainer/innen!
:Choosing "difficult" passwords is a basic security practice to protect against "brute force" cracking of accounts.
+
:Die Verwendung von "schwierigen" Passwörtern ist die beste Maßnahme gegen das Knacken von Nutzerkonten ("brute force" Attacken).
*Only give teacher accounts to trusted users. Avoid creating public sandboxes with free teacher accounts on production servers.
+
*Vergeben Sie die [[Trainer-Rolle]] nur an vertrauenswürdige Nutzer/innen. Vermeiden Sie freie Trainer-Nutzerkonten auf produktiven Moodle-Servern.
:Teacher accounts have much freer permissions and it is easier to create situations where data can be abused or stolen.
+
:Nutzer/innen in der [[Trainer-Rolle]] haben weitreichende [[Rechte]], so dass hier viel schneller Situationen entstehen können, die zum Missbrauch von Daten führen.
*Separate your systems as much as possible
+
*Separieren Sie Ihr System so weit wie möglich von anderen Systemen und Anwendungen.
:Another basic security technique is to use different passwords on different systems, use different machines for different services and so on.  This will prevent damage being widespread even if one account or one server is compromised.
+
:Eine grundlegende Sicherheitsvorkehrung ist die Verwendung von verschiedenen Passwörtern auf verschiedenen Systemen und die Nutzung von verschiedenen Rechnern für verschiedene Anwendungen und Dienste. Dadurch verhindern Sie die Ausbreitung des Schadens im Fall, dass ein System oder Nutzerkonto kompromittiert wurde.
  
==Run regular updates==
+
==Regelmäßige Aktualisierungen durchführen==
*Use auto update systems
+
*Verwenden Sie automatische Update-Systeme.
 
*Windows Update  
 
*Windows Update  
 
*Linux: up2date, yum, apt-get
 
*Linux: up2date, yum, apt-get
:Consider automating updates with a script scheduled via cron
+
:Eine Möglichkeit ist die Durchführung automatischer Aktualisierungen per Skript und Cron-Job.
*Mac OSX update system
+
*Mac OS X Update-System
*Stay current with php, apache, and moodle
+
*Verwenden Sie aktuelle Versionen von PHP, Apache, MySQL und Moodle.
  
==Use mailing lists to stay updated==
+
==Mailinglisten verwenden==
 +
Nutzen Sie Mailinglisten, um auf aktuellem Stand zu bleiben:
 
*CERT - http://www.us-cert.gov/cas/signup.html
 
*CERT - http://www.us-cert.gov/cas/signup.html
*PHP - http://www.php.net/mailing-lists.php - sign up for Announcements list
+
*PHP - http://www.php.net/mailing-lists.php - abonnieren Sie die '''PHP Announcements'''
*MySQL - http://lists.mysql.com - sign up for MySQL Announcements
+
*MySQL - http://lists.mysql.com - abonnieren Sie die '''MySQL Announcements'''
  
==Firewalls==
+
==Firewall==
*Security experts recommend a dual firewall
+
*Sicherheitsexperten empfehlen eine duale Firewall.
:Differing hardware/software combinations
+
:Unterschiedliche Hardware- und Software-Kombinationen
*Disabling unused services is often as effective as a firewall
+
*Das Deaktivieren von Diensten, die nicht benötigt werden, ist häufig genau so effektiv wie eine Firewall.
:Use netstat -a to review open network ports
+
:Verwenden Sie den Befehl <code>netstat -a</code>, um offene Ports zu prüfen.
*Not a guarantee of protection
+
*Eine Firewall allein bietet keine Garantie auf Schutz!
*Allow ports
+
*Erlaubte Ports:
:80, 443(ssl), and 9111 (for chat),  
+
:80 (http), 443(ssl) und 9111 (für Chat),  
:Remote admin: ssh 22, or rdp 3389
+
:Remote Admin: 22 (ssh) oder 3389 (rdp)
  
==Password policy==
+
==Kennwortregeln==
 +
Sie können über den Menupunkt ''Website-Administration'' (oder im Block ''[[Einstellungen-Block|Einstellungen]] > Website-Administration'')'' > Sicherheit > [[Sicherheitsregeln der Website]]'' Kennwortregeln festlegen.  Wenn Sie auf dieser Seite die Checkbox ''Kennwortregeln'' aktivieren, dann prüft Moodle die Kennwörter der Nutzer hinsichtlich der nachsteheneden Kennwortregeln:
 +
* ''Kennwortlänge'' legt die minimale Anzahl von Zeichen im Kennwort fest.
 +
* ''Ziffern'' legt die minimale Anzahl von Ziffern fest, die ein Kennwort enthalten muss.
 +
* ''Kleinbuchstaben'' legt die minimale Anzahl von Kleinbuchstaben fest, die ein Kennwort enthalten muss.
 +
* ''Großbuchstaben'' legt die minimale Anzahl von Großbuchstaben fest, die ein Kennwort enthalten muss.
 +
* ''Sonderzeichen'' legt die minimale Anzahl von Sonderzeichen fest, die ein Kennwort enthalten muss.
 +
Wenn Nutzer/innen ein Kennwort eingeben, dass diesen Regeln nicht genügt, erscheint eine entsprechende Fehlermeldung.
  
A password policy may be set up in ''Settings > Site administration > Security > [[Site policies]]''.
+
Wenn Sie diese Kennwortregeln aktivieren und Ihre Nutzer/innen anhalten, ihr Anfangskennwort beim erstmaligen Login zu ändern, dann sind Sie auf einem guten Weg hin zur Nutzung von "starken" Passwörtern. Doch Achtung: Wenn Sie die Regeln zu strikt wählen, können sich die Nutzer/innen ihre Kennwörter nicht merken und schreiben sie einfach auf einen Zettel!
  
There is a check box to determine if password complexity should be enforced or not, the option to set the minimum length of the password, the minimum number of digits, the minimum number of lowercase characters, the minimum number of uppercase characters and the minimum number of non alphanumeric characters.
+
==Kennwortverschlüsselung (Salt)==
 +
Kennwörter werden als MD5 Hashwerte in der Moodle-Datenbank gespeichert. Es ist relativ einfach, einfache Passörter aus einem einfachen Hashwert zu entschlüsseln. Um dies zu verhindern, verwendet Moodle eine [[Kennwortverschlüsselung (Salt)]].
  
If a user enters a password that does not meet those requirements, they are given an error message indicating the nature of the problem with the entered password.
+
==Seien Sie auf das Schlimmste vorbereitet!==
 
+
*Halten Sie Ihre [[Sicherung der Moodle-Installation|Backups]] bereit.
Enforcing password complexity along with requiring users to change their initial password go a long way in helping ensure that users choose and are in fact using "good passwords".
+
*Testen Sie, ob Sie Ihre Backups wiederherstellen können.
 
+
*Nutzen Sie in regelmäßigen Abständen einen Rootkit Detector, z.B.
However, making the check too onerous just results in them writing it down so be realistic.
+
**Linux /Mac OS X - http://www.chkrootkit.org/  
 
 
==Password salting==
 
 
 
User passwords are stored as MD5 hashes in the database. It is relatively easy to derive original simple password from simple hash, this can be prevented by setting up password salt. See [[Password salting]] for more details.
 
 
 
==Be prepared for the worst==
 
*Have backups ready
 
*Practice recovery procedures ahead of time
 
*Use a rootkit detector on a regular basis
 
**Linux/MacOSX - http://www.chkrootkit.org/  
 
 
**Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html
 
**Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html
  
==Moodle security alerts==
+
==Moodle Sicherheitwarnungen==
*Register your site with Moodle.org
+
*Registrieren Sie Ihre Moodle-Installation auf moodle.org.
:Registered users receive email alerts
+
:Administrator/innen registrierter Moodle-Installationen erhalten E-Mail-Benachrichtigungen, wenn Sicherheitslücken in Moodle entdeckt wurden.
*Security alerts also posted online
+
*Sicherheitswarnungen werden auch online herausgegeben:
*Web - http://moodle.org/security
+
**Web - http://moodle.org/security
*RSS feed - http://moodle.org/rss/file.php/1/1/forum/996/rss.xml
+
**RSS feed - http://moodle.org/rss/file.php/1/1/forum/996/rss.xml
  
==Miscellaneous considerations==
+
==Weitere Maßnahmen==
These are all things you might consider that impact your overall security:
+
Um die Gesamtsicherheit Ihres Systems zu verbessern, beachten Sie bitte folgende Hinweise:
*Use the secure forms setting
+
*Alktivieren Sie die strenge Prüfung der Pflichtfelder in Formularen, siehe [[Sicherheitsregeln der Website]].
*Always set a mysql root user password
+
*Setzen Sie das MySQL Root Passwort.
*Turn off mysql network access
+
*Deaktivieren Sie den MySQL Netzwerkzugriff.
*Use SSL, httpslogins=yes
+
*Verwenden Sie SSL, d.h. aktivieren Sie zumindest die [[HTTP-Sicherheit|Einstellung ''loginhttps'']].
*Use good passwords - set up a password policy in ''Settings > Site administration > Security > [[Site policies]]''
+
*Verwenden Sie starke Passwörter und aktivieren Sie die [[Sicherheitsregeln der Website|Kennwortregeln]].
*Do not enable the ''opentogoogle'' setting (in ''Settings > Site administration > Security > [[Site policies]]'')
+
*Öffnen Sie Ihre Moodle-Installation '''nicht''' für Google, siehe [[Sicherheitsregeln der Website]].
*Disable guest access
+
*Schalten Sie das Gast-Login ab, siehe ''Website-Administration'' (oder im Block ''[[Einstellungen-Block|Einstellungen]] > Website-Administration'')'' > Plugins > Authentifizierung > Übersicht''.
*Place enrollment keys on all courses or set Course Enrollable = No for all courses
+
*Verwenden Sie in allen Kursen [[Kursschlüssel]].
*Disable the enrolment key hint in ''Settings > Site administration > Courses > [[Enrolment plugins|Enrolments]]''
+
*Deaktivieren Sie den Hinweis zum Kursschlüssel.
  
==Most secure/paranoid file permissions==
+
==Die sichersten/paranoidesten Dateirechte==
  
'''Note''': <u>The following information applies to Linux/Unix based installations only, as MS Windows permission system is quite different</u>.
+
'''Hinweis: Die folgenden Empfehlungen gelten nur für Linux-basierte Systeme. Dateirechte unter MS Windows funktionieren ganz anders!'''
  
Depending on your server setup there are two different scenarios:
+
Es gibt zwei verschiedene Szenarien für Ihre Serverkonstellation:
# You are running Moodle on your own dedicated server.
+
# Ihr Moodle läuft auf einem eigenen Server.
# You are running Moodle on a shared hosting environment.
+
# Ihr Moodle läuft in einer Shared Hosting Umgebung.
  
In the sections below, you are required to use the web service user account and group to set the permissions, so you need to know them. This can vary quite a bit from server to server but if this feature has not been disabled in your server, you can go to http://your.moodle.site/admin/phpinfo.php (logging in as admin), and then search for the line that reads 'User/Group', inside the 'apache' table. For example, I get 'www-data' for the user account and 'www-data' for the group too.
+
In der nachfolgenden Beschreibung ist immer wieder vom Webserver-Nutzer und von der Webserver-Gruppe die Rede, für den Dateirechte gesetzt werden. Wie dieser Nutzer bzw. diese Gruppe heißt kann von System zu System variieren (z.B. ''apache'' oder ''www-data''). Um das herauszufinden, melden Sie sich in Ihrem Moodle-System als Administrator/in an und schauen dann unter ''Website-Administration'' (oder im Block ''[[Einstellungen-Block|Einstellungen]] > Website-Administration'')'' > Server > [[PHP-Informationen]]'' im Abschnitt ''apache2handler'', Einstellung ''User/Group'' nach.
  
=== Running Moodle on a dedicated server ===
+
=== Moodle auf einem eigenen Server ===
Assuming you are running Moodle on a sealed server (i.e. no user logins allowed on the machine) and that root takes care of the modifications to both moodle code and moodle config (config.php), then this are the most tight permissions I can think of:
+
In diesem Fall gehen wir davon aus, dass
 +
*Ihr Moodle auf einem eigenen Server läuft,
 +
*auf diesem Server sind keine Anmeldungen von Nutzern erlaubt sind
 +
*und Sie als Server-Administrator verantwortlich für Änderungen im Moodle-Code in der Moodle-Konfigurationsdatei ''config.php'' sind.
  
1. moodledata directory and all of its contents (and subdirectories, includes sessions):
+
Dann sind die striktesten Dateirechte folgende:
owner: apache user (apache, httpd, www-data, whatever; see above)
+
* Moodle-Datenverzeichnis und alle darin enthaltenen Unterverzeichnisse und Dateien:
group: apache group (apache, httpd, www-data, whatever; see above)
+
  Besitzer (owner): apache user (apache, httpd, www-data, o.ä. - siehe oben)
permissions: 700 on directories, 600 on files
+
  Gruppe (group): apache group (apache, httpd, www-data, o.ä. - siehe oben)
 +
  Dateirechte (permissions): 700 für Verzeichnisse, 600 für Dateien
  
2. moodle directory and all of its contents and subdirectories (including config.php):
+
*Moodle-Verzeichnis und alle darin enthaltenen Unterverzeichnisse und Dateien (inclusive ''config.php''):
owner: root
+
  Besitzer (owner): root
group: root
+
  Gruppe (group): root
permissions: 755 on directories, 644 on files.
+
  Dateirechte (permissions): 755 für Verzeichnisse, 644 für Dateien
  
If you allow local logins for regular users, then 2. should be:
+
Wenn Sie lokale Anmeldungen für "echte" Nutzer auf Ihrem Server zulassen, dann sollten Sie für das [[Moodle-Verzeichnis]] folgende Einstellungen wählen:
owner: root
+
  Besitzer (owner): root
group: apache group (apache, httpd, www-data, whatever; see above)
+
  Gruppe (group): apache group (apache, httpd, www-data, o.ä. - siehe oben)
permissions: 750 on directories, 640 on files.
+
  Dateirechte (permissions): 750 für Verzeichnisse, 640 für Dateien
  
Think of these permissions as the most paranoid ones. You can be secure enough with less tighter permissions, both in moodledata and moodle directories (and subdirectories).
+
Betrachten Sie diese Rechte als die "paranoidesten". Sie können Ihren Server auch mit weniger strengen Dateirechten für das Moodle-Verezichnis und das Moodle-Datenverzeichnis sicher betreiben.
  
=== Running Moodle on a shared hosting environment ===
+
=== Moodle in einer Shared Hosting Umgebung ===
If you are running Moodle on a shared hosting environment, then above permissions are probably wrong. If you set 700 as the permission for directories (and 600 for files), you are probably denying the web service user account access to your directories and files.
+
Wenn Ihr Moodle-System in einer Shared Hosting Umgebung läuft, dann sind die obigen Einstellungen wahrscheinlich nicht geeignet bzw. falsch. Wenn Sie nämlich die Dateirechte auf 700 für Verzeichnisse und 600 für Dateien setzen, dann hat der Webserver-Nutzer wahrscheinlich keinen Zugriff auf Ihre Verzeichnisse und Dateien.  
  
If you want to tighten your permissions as much as possible, you will need to know:
+
Wenn Sie Ihre Dateirechte dennoch so strikt wie möglich setzen möchten, benötigen Sie folgende Informationen:
 +
*den Nutzer und die Gruppe des Webserver-Nutzers (siehe oben),
 +
*den Besitzer der Verzeichnisse und Dateien im Moodle-Verzeichnis und im Moodle-Datenverzeichnis (normalerweise ist das der Nutzer, als der Sie bei Ihrem Provider registriert sind und als der Sie sich auf den Server des Providers anmelden) sowie die Gruppe dieser Verzeichnisse und Dateien. An diese Informationen gelangen Sie über den Dateimanager Ihres Hosting Control Panels: Wechseln Sie ins Moodle-Verzeichnis und versuchen Sie, dessen Besitzer/Gruppe/Dateirechte zu ändern. Dann erhalten Sie normalerweise die aktuellen Daten (Besitzer/Gruppe/Dateirechte) angezeigt. Tun Sie dasselbe mit dem Moodle-Datenverzeichnis.
  
# the user account and the group the web service is running under (see above).
+
In Abhängigkeit davon, wie Ihre Situation ist, setzen Sie für das Moodle-Datenverzeichnis folgende Dateirechte (die Auflistung erfolgt mit abnehmender Sicherheit, d.h. die strikteste Einstellung steht an erster Stelle in der Liste):
# the owner of the directories/files of both moodledata and the moodle directory (this should normally be your client user account), and the group of the directories/files. You can usually get this information from the file manager of your hosting control panel. Go to the moodle folder and pick any directory or file and try to view/change the permissions, owner and group of that file. That would normally show the current permissions, owner and group. Do the same for the moodledata directory.
+
# Wenn der Webserver-Nutzer und der Besitzer der Dateien und Unterverzeichnisse im Moodle-Datenverzeichnis übereinstimmen, wählen Sie 700 für Verzeichnisse und 600 für Dateien.
 +
# Wenn die Webserver-Gruppe und die Gruppe der Dateien und Unterverzeichnisse im Moodle-Datenverzeichnis übereinstimmen, wählen Sie 770 für Verzeichnisse und 660 für Dateien.  
 +
# Wenn keine der beiden obigen Situationen vorliegt, können Sie nur die (unsichere) Einstellung 777 für Verzeichnisse und 666 für Dateien wählen. Die Einstellungen 707 für Verzeichnisse und 606 für Dateien wäre sicherer und kann funktionieren, muss aber nicht.
  
Then, depending on the following scenarios you should use a different set of permissions (listed from more secure to less secure) for your moodledata directory:
+
Tatsächlich müssen Sie die obigen Einstellungen nur für das Moodle-Datenverzeichnis vornehmen, da alle Dateien und Unterverzeichnisse innerhalb des Moodle-Datenverzeichnisses vom Webserver-Nutzer erzeugt werden und daher automatisch die richtigen Dateirechte haben.
  
# if the web service account and the owner of the directories/files is the same, you should use 700 for directories and 600 for files.
+
Für das Moodle-Verzeichnis gilt folgendes: Solange der Webserver-Nutzer Dateien innerhalb des Verzeichnisses lesen und Unterverzeichnisse lesen und ausführen kann, genügt das. Einziger Nachteil ist, dass Sie die Moodle-Konfigurationsdatei ''config.php'' während der Installation manuell erstellen müssen, da Moodle (bzw. der Webserver-Nutzer) diese nicht erstellen kann (weil er keine Schreibrechte auf dem Moodle-Verzeichnis hat).
# if the web service group and the group of the directories/files is the same, you should use 770 for directories and 660 for the files.
 
# if none of the above, you will need to use 777 for directories and 666 for files, which is less secure but it is your only option. 707 and 606 would be more secure, but it might or might not work, depending on your particular setup.
 
  
In fact, you just need to set moodledata the permissions specified above, as all the directories and files inside are created by the web service itself, and will have the right permissions.
+
==Siehe auch==
  
Regarding the moodle directory, as long as the web service user account can read the files plus read and execute the directories, that should be enough. There is no need to grant write permission to the web service account/group on any of the files or subdirectories. The only drawback is that you will need to create the config.php by hand during the installation process, as Moodle will not be able to create it. But that should not be a big problem.
+
*[[Sicherheit FAQ]]
 
+
Diskussionsbeiträge im Kurs ''Using Moodle'' auf moodle.org:
==See also==
+
*[http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]
 +
*[http://moodle.org/mod/forum/discuss.php?d=93561 How to secure Moodle website from hacking] - Empfehlungen für den Ernstfall
  
*[[Security FAQ]]
 
Using Moodle forum discussions:
 
*[http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]
 
*[http://moodle.org/mod/forum/discuss.php?d=93561 How to secure Moodle website from hacking] including recommendations on emergency recovery
 
  
 
[[en:Security recommendations]]
 
[[en:Security recommendations]]
 +
[[es:Recomendaciones de Seguridad]]
 +
[[fr:Sécurité]]

Aktuelle Version vom 8. März 2019, 15:11 Uhr


Jede Web-Applikation-Software ist hoch komplex, und jede Software hat Sicherheitsrisiken bzw. -lücken, die von Zeit zu Zeit entdeckt werden. Häufig ist das der Fall, wenn bei der Programmierung bestimmte Eingabemöglichkeiten nicht berücksichtigt wurden. Im Moodle-Projek wird das Thema Sicherheit sehr ernst genommen, und identifizierte Sicherheitslücken werden so schnell wie möglich geschlossen.


Einführung

  • Dieser Artikel enthält wichtige Sicherheitshinweise für Ihre Moodle-Installation.
  • Sicherheitsprobleme sollten Sie im Moodle tracker melden und als "Security issue" kennzeichnen, damit die Moodle-Entwickler/innen es schnell beheben können und registrierte Moodle-Administrator/innen entsprechend informieren können.
  • Sie sollten keine Exploits in Foren auf moodle.org oder sonstwo im Web posten, um Moodle-Administrator/innen bzw. deren Installationen zu schützen, die nicht rechtzeitig aktualisiert haben bzw. wurden.

Einfache Sicherheitsmaßnahmen

  • Die beste Sicherheitsstrategie ist ein gutes Backup.
Wichtig: Ein Backup ist erst dann "gut", wenn Sie es wiederherstellen können. Testen Sie also, ob Sie die Sicherung Ihrer Moodle-Installation auch wiederherstellen können!
  • Installieren Sie nur Software, die Sie auch wirklich benötigen und nutzen.
  • Führen Sie regelmäßig Updates durch.
  • Kümmern Sie sich um die Sicherheit auf verschiedenen Ebenen (Betriebssystem/Server, Webserver, Datenbankserver, Moodle).

Grundlegende Empfehlungen

  • Aktualisieren Sie Ihre Moodle-Installation regelmäßig und verwenden Sie möglichst immer die aktuellste Version.
Veröffentlichte Sicherheitslücken ziehen die Aufmerksamkeit von Hacker/innen auf sich! Je älter Ihre Moodle-Version ist, um so mehr Schwachstellen kann sie enthalten.
  • Die Einstellung register_globals in der PHP-Konfigurationsdatei php.ini muss deaktiviert sein!
Das hilft, XSS-Probleme durch Skripte von Dritten zu vermeiden.
  • Verwenden Sie starke Passwörter für Administrator/innen und Trainer/innen!
Die Verwendung von "schwierigen" Passwörtern ist die beste Maßnahme gegen das Knacken von Nutzerkonten ("brute force" Attacken).
  • Vergeben Sie die Trainer-Rolle nur an vertrauenswürdige Nutzer/innen. Vermeiden Sie freie Trainer-Nutzerkonten auf produktiven Moodle-Servern.
Nutzer/innen in der Trainer-Rolle haben weitreichende Rechte, so dass hier viel schneller Situationen entstehen können, die zum Missbrauch von Daten führen.
  • Separieren Sie Ihr System so weit wie möglich von anderen Systemen und Anwendungen.
Eine grundlegende Sicherheitsvorkehrung ist die Verwendung von verschiedenen Passwörtern auf verschiedenen Systemen und die Nutzung von verschiedenen Rechnern für verschiedene Anwendungen und Dienste. Dadurch verhindern Sie die Ausbreitung des Schadens im Fall, dass ein System oder Nutzerkonto kompromittiert wurde.

Regelmäßige Aktualisierungen durchführen

  • Verwenden Sie automatische Update-Systeme.
  • Windows Update
  • Linux: up2date, yum, apt-get
Eine Möglichkeit ist die Durchführung automatischer Aktualisierungen per Skript und Cron-Job.
  • Mac OS X Update-System
  • Verwenden Sie aktuelle Versionen von PHP, Apache, MySQL und Moodle.

Mailinglisten verwenden

Nutzen Sie Mailinglisten, um auf aktuellem Stand zu bleiben:

Firewall

  • Sicherheitsexperten empfehlen eine duale Firewall.
Unterschiedliche Hardware- und Software-Kombinationen
  • Das Deaktivieren von Diensten, die nicht benötigt werden, ist häufig genau so effektiv wie eine Firewall.
Verwenden Sie den Befehl
netstat -a
, um offene Ports zu prüfen.
  • Eine Firewall allein bietet keine Garantie auf Schutz!
  • Erlaubte Ports:
80 (http), 443(ssl) und 9111 (für Chat),
Remote Admin: 22 (ssh) oder 3389 (rdp)

Kennwortregeln

Sie können über den Menupunkt Website-Administration (oder im Block Einstellungen > Website-Administration) > Sicherheit > Sicherheitsregeln der Website Kennwortregeln festlegen. Wenn Sie auf dieser Seite die Checkbox Kennwortregeln aktivieren, dann prüft Moodle die Kennwörter der Nutzer hinsichtlich der nachsteheneden Kennwortregeln:

  • Kennwortlänge legt die minimale Anzahl von Zeichen im Kennwort fest.
  • Ziffern legt die minimale Anzahl von Ziffern fest, die ein Kennwort enthalten muss.
  • Kleinbuchstaben legt die minimale Anzahl von Kleinbuchstaben fest, die ein Kennwort enthalten muss.
  • Großbuchstaben legt die minimale Anzahl von Großbuchstaben fest, die ein Kennwort enthalten muss.
  • Sonderzeichen legt die minimale Anzahl von Sonderzeichen fest, die ein Kennwort enthalten muss.

Wenn Nutzer/innen ein Kennwort eingeben, dass diesen Regeln nicht genügt, erscheint eine entsprechende Fehlermeldung.

Wenn Sie diese Kennwortregeln aktivieren und Ihre Nutzer/innen anhalten, ihr Anfangskennwort beim erstmaligen Login zu ändern, dann sind Sie auf einem guten Weg hin zur Nutzung von "starken" Passwörtern. Doch Achtung: Wenn Sie die Regeln zu strikt wählen, können sich die Nutzer/innen ihre Kennwörter nicht merken und schreiben sie einfach auf einen Zettel!

Kennwortverschlüsselung (Salt)

Kennwörter werden als MD5 Hashwerte in der Moodle-Datenbank gespeichert. Es ist relativ einfach, einfache Passörter aus einem einfachen Hashwert zu entschlüsseln. Um dies zu verhindern, verwendet Moodle eine Kennwortverschlüsselung (Salt).

Seien Sie auf das Schlimmste vorbereitet!

Moodle Sicherheitwarnungen

  • Registrieren Sie Ihre Moodle-Installation auf moodle.org.
Administrator/innen registrierter Moodle-Installationen erhalten E-Mail-Benachrichtigungen, wenn Sicherheitslücken in Moodle entdeckt wurden.

Weitere Maßnahmen

Um die Gesamtsicherheit Ihres Systems zu verbessern, beachten Sie bitte folgende Hinweise:

  • Alktivieren Sie die strenge Prüfung der Pflichtfelder in Formularen, siehe Sicherheitsregeln der Website.
  • Setzen Sie das MySQL Root Passwort.
  • Deaktivieren Sie den MySQL Netzwerkzugriff.
  • Verwenden Sie SSL, d.h. aktivieren Sie zumindest die Einstellung loginhttps.
  • Verwenden Sie starke Passwörter und aktivieren Sie die Kennwortregeln.
  • Öffnen Sie Ihre Moodle-Installation nicht für Google, siehe Sicherheitsregeln der Website.
  • Schalten Sie das Gast-Login ab, siehe Website-Administration (oder im Block Einstellungen > Website-Administration) > Plugins > Authentifizierung > Übersicht.
  • Verwenden Sie in allen Kursen Kursschlüssel.
  • Deaktivieren Sie den Hinweis zum Kursschlüssel.

Die sichersten/paranoidesten Dateirechte

Hinweis: Die folgenden Empfehlungen gelten nur für Linux-basierte Systeme. Dateirechte unter MS Windows funktionieren ganz anders!

Es gibt zwei verschiedene Szenarien für Ihre Serverkonstellation:

  1. Ihr Moodle läuft auf einem eigenen Server.
  2. Ihr Moodle läuft in einer Shared Hosting Umgebung.

In der nachfolgenden Beschreibung ist immer wieder vom Webserver-Nutzer und von der Webserver-Gruppe die Rede, für den Dateirechte gesetzt werden. Wie dieser Nutzer bzw. diese Gruppe heißt kann von System zu System variieren (z.B. apache oder www-data). Um das herauszufinden, melden Sie sich in Ihrem Moodle-System als Administrator/in an und schauen dann unter Website-Administration (oder im Block Einstellungen > Website-Administration) > Server > PHP-Informationen im Abschnitt apache2handler, Einstellung User/Group nach.

Moodle auf einem eigenen Server

In diesem Fall gehen wir davon aus, dass

  • Ihr Moodle auf einem eigenen Server läuft,
  • auf diesem Server sind keine Anmeldungen von Nutzern erlaubt sind
  • und Sie als Server-Administrator verantwortlich für Änderungen im Moodle-Code in der Moodle-Konfigurationsdatei config.php sind.

Dann sind die striktesten Dateirechte folgende:

  • Moodle-Datenverzeichnis und alle darin enthaltenen Unterverzeichnisse und Dateien:
 Besitzer (owner): apache user (apache, httpd, www-data, o.ä. - siehe oben)
 Gruppe (group): apache group (apache, httpd, www-data, o.ä. - siehe oben)
 Dateirechte (permissions): 700 für Verzeichnisse, 600 für Dateien
  • Moodle-Verzeichnis und alle darin enthaltenen Unterverzeichnisse und Dateien (inclusive config.php):
 Besitzer (owner): root
 Gruppe (group): root
 Dateirechte (permissions): 755 für Verzeichnisse, 644 für Dateien

Wenn Sie lokale Anmeldungen für "echte" Nutzer auf Ihrem Server zulassen, dann sollten Sie für das Moodle-Verzeichnis folgende Einstellungen wählen:

 Besitzer (owner): root
 Gruppe (group): apache group (apache, httpd, www-data, o.ä. - siehe oben)
 Dateirechte (permissions): 750 für Verzeichnisse, 640 für Dateien

Betrachten Sie diese Rechte als die "paranoidesten". Sie können Ihren Server auch mit weniger strengen Dateirechten für das Moodle-Verezichnis und das Moodle-Datenverzeichnis sicher betreiben.

Moodle in einer Shared Hosting Umgebung

Wenn Ihr Moodle-System in einer Shared Hosting Umgebung läuft, dann sind die obigen Einstellungen wahrscheinlich nicht geeignet bzw. falsch. Wenn Sie nämlich die Dateirechte auf 700 für Verzeichnisse und 600 für Dateien setzen, dann hat der Webserver-Nutzer wahrscheinlich keinen Zugriff auf Ihre Verzeichnisse und Dateien.

Wenn Sie Ihre Dateirechte dennoch so strikt wie möglich setzen möchten, benötigen Sie folgende Informationen:

  • den Nutzer und die Gruppe des Webserver-Nutzers (siehe oben),
  • den Besitzer der Verzeichnisse und Dateien im Moodle-Verzeichnis und im Moodle-Datenverzeichnis (normalerweise ist das der Nutzer, als der Sie bei Ihrem Provider registriert sind und als der Sie sich auf den Server des Providers anmelden) sowie die Gruppe dieser Verzeichnisse und Dateien. An diese Informationen gelangen Sie über den Dateimanager Ihres Hosting Control Panels: Wechseln Sie ins Moodle-Verzeichnis und versuchen Sie, dessen Besitzer/Gruppe/Dateirechte zu ändern. Dann erhalten Sie normalerweise die aktuellen Daten (Besitzer/Gruppe/Dateirechte) angezeigt. Tun Sie dasselbe mit dem Moodle-Datenverzeichnis.

In Abhängigkeit davon, wie Ihre Situation ist, setzen Sie für das Moodle-Datenverzeichnis folgende Dateirechte (die Auflistung erfolgt mit abnehmender Sicherheit, d.h. die strikteste Einstellung steht an erster Stelle in der Liste):

  1. Wenn der Webserver-Nutzer und der Besitzer der Dateien und Unterverzeichnisse im Moodle-Datenverzeichnis übereinstimmen, wählen Sie 700 für Verzeichnisse und 600 für Dateien.
  2. Wenn die Webserver-Gruppe und die Gruppe der Dateien und Unterverzeichnisse im Moodle-Datenverzeichnis übereinstimmen, wählen Sie 770 für Verzeichnisse und 660 für Dateien.
  3. Wenn keine der beiden obigen Situationen vorliegt, können Sie nur die (unsichere) Einstellung 777 für Verzeichnisse und 666 für Dateien wählen. Die Einstellungen 707 für Verzeichnisse und 606 für Dateien wäre sicherer und kann funktionieren, muss aber nicht.

Tatsächlich müssen Sie die obigen Einstellungen nur für das Moodle-Datenverzeichnis vornehmen, da alle Dateien und Unterverzeichnisse innerhalb des Moodle-Datenverzeichnisses vom Webserver-Nutzer erzeugt werden und daher automatisch die richtigen Dateirechte haben.

Für das Moodle-Verzeichnis gilt folgendes: Solange der Webserver-Nutzer Dateien innerhalb des Verzeichnisses lesen und Unterverzeichnisse lesen und ausführen kann, genügt das. Einziger Nachteil ist, dass Sie die Moodle-Konfigurationsdatei config.php während der Installation manuell erstellen müssen, da Moodle (bzw. der Webserver-Nutzer) diese nicht erstellen kann (weil er keine Schreibrechte auf dem Moodle-Verzeichnis hat).

Siehe auch

Diskussionsbeiträge im Kurs Using Moodle auf moodle.org: