Sicherheit: Unterschied zwischen den Versionen
K (→Firewall) |
Keine Bearbeitungszusammenfassung |
||
Zeile 21: | Zeile 21: | ||
*Die Einstellung ''register_globals'' in der [[PHP|PHP-Konfigurationsdatei]] ''php.ini'' '''muss deaktiviert''' sein! | *Die Einstellung ''register_globals'' in der [[PHP|PHP-Konfigurationsdatei]] ''php.ini'' '''muss deaktiviert''' sein! | ||
:Das hilft, XSS-Probleme durch Skripte von Dritten zu vermeiden. | :Das hilft, XSS-Probleme durch Skripte von Dritten zu vermeiden. | ||
*Verwenden Sie starke Passwörter! | *Verwenden Sie sog. starke Passwörter! | ||
:Die Verwendung von "schwierigen" Passwörtern ist die beste Maßnahme gegen das Knacken von Nutzerkonten ("brute force" Attacken). | :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. Vermeiden Sie freie Trainer-Nutzerkonten auf produktiven Moodle-Servern. | *Vergeben Sie die [[Trainer-Rolle]] nur an vertrauenswürdige Nutzer. Vermeiden Sie freie Trainer-Nutzerkonten auf produktiven Moodle-Servern. | ||
Zeile 39: | Zeile 39: | ||
Nutzen Sie Mailinglisten, um auf aktuellem Stand zu bleiben: | 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 - abonnieren Sie die PHP Announcements | *PHP - http://www.php.net/mailing-lists.php - abonnieren Sie die '''PHP Announcements''' | ||
*MySQL - http://lists.mysql.com - abonnieren Sie die MySQL Announcements | *MySQL - http://lists.mysql.com - abonnieren Sie die '''MySQL Announcements''' | ||
==Firewall== | ==Firewall== | ||
Zeile 49: | Zeile 49: | ||
*Eine Firewall allein bietet keine Garantie auf Schutz! | *Eine Firewall allein bietet keine Garantie auf Schutz! | ||
*Erlaubte Ports: | *Erlaubte Ports: | ||
:80, 443(ssl) und 9111 (für Chat), | :80 (http), 443(ssl) und 9111 (für Chat), | ||
:Remote | :Remote Admin: 22 (ssh) oder 3389 (rdp) | ||
==Passwort-Policy== | ==Passwort-Policy== | ||
{{Moodle 1.9}}Ab Moodle 1.9 können Sie unter ''Website-Administration > Sicherheit > [[Website-Rechte]]'' Kennwortregeln festlegen. | {{Moodle 1.9}}Ab Moodle 1.9 können Sie unter ''Website-Administration > Sicherheit > [[Website-Rechte]]'' 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 ein Nutzer ein Kennwort angibt, dass diesen Regeln nicht genügt, erscheint eine entsprechende Fehlermeldung. | |||
Wenn Sie diese Kennwortregeln aktivieren und Ihre Nutzer anhalten, Ihr Anfangskennwort beim erstmaligen Login zu ändern, dann sind Sie auf einem guten Weg hin zur Nutzung von "starken" Passwörtern. | |||
==Seien Sie auf das Schlimmste vorbereitet!== | |||
*Halten Sie Ihre [[Sicherung der Moodle-Installation|Backups]] bereit. | |||
*Testen Sie, ob Sie Ihre Backups wiederherstellen können. | |||
*Nutzen Sie in regelmäßigen Abständen einen Rootkit Detector, z.B. | |||
== | **Linux /Mac OS X - http://www.chkrootkit.org/ | ||
* | |||
* | |||
* | |||
**Linux/ | |||
**Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html | **Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html | ||
==Moodle | ==Moodle Sicherheitwarnungen== | ||
* | *Registrieren Sie Ihre Moodle-Installation auf moodle.org. | ||
: | :Die Administratoren registrierter Moodle-Installationen erhalten E-Mail-Benachrichtigungen, wenn Sicherheitslücken in Moodle entdeckt wurden. | ||
* | *Sicherheitswarnungen werden auch online herausgegeben: | ||
* | **eb - 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 | ||
== | ==Weitere Maßnahmen== | ||
Um die Gesamtsicherheit Ihres Systems zu verbessern, beachten Sie bitte folgende Hinweise:T | |||
* | *Setzen Sie das MySQL Root Passwort. | ||
* | *Deaktivieren Sie den MySQL Netzwerkzugriff. | ||
* | *Verwenden Sie SSL, d.h. aktivieren Sie zumindest die [[HTTP-Sicherheit|Einstellung ''loginhttps'']]. | ||
*Verwenden Sie starke Passwörter und aktivieren Sie die [[Website-Rechte|Kennwortregeln]] (ab Moodle 1.9, siehe oben). | |||
*Öffnen Sie Ihre Moodle-Installation '''nicht''' für Google, siehe [[Website-Rechte|Einstellung ''opentogoogle'']]. | |||
* | *Schalten Sie das Gast-Login ab, siehe ''Website-Administration > Nutzer/innen > Authentifizierung > [[Module für die Authentifizierung verwalten|Übersicht]]''. | ||
* | *Verwenden Sie in allen Kursen [[Kurseinstellungen#Zugangsschlüssel|Zugangsschlüssel]]. | ||
*Deaktivieren Sie den Hinweis zum Zugangsschlüssel bei der internen Einschreibung in Kurse: | |||
* | ** unter ''Website-Administration > Kurse > Einschreibung > [[Interne Einschreibung]]'' (ab Moodle 1.9.3) | ||
** durch Änderung des Strings ''enrolmentkeyhint'' in der Sprachdatei ''moodle.php'' (Zugriff über ''Website-Administration > Sprache > [[Texte bearbeiten]]): Ändern Sie den Originaltext ''Der Zugangsschlüssel war falsch, bitte versuchen Sie es erneut.<br /> (Hinweis: Der Schlüssel beginnt mit \'$a\') '' in ''Der Zugangsschlüssel war falsch, bitte versuchen Sie es erneut oder kontaktieren Sie Ihren Kursverantwortlichen.'' | |||
== | ==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: | |||
# You are running Moodle on your own dedicated server. | # You are running Moodle on your own dedicated server. | ||
# You are running Moodle on a shared hosting environment. | # You are running Moodle on a shared hosting environment. | ||
Zeile 101: | Zeile 101: | ||
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 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. | ||
=== | === 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: | 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: | ||
Zeile 121: | Zeile 121: | ||
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). | 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). | ||
=== | === 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. | 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. | ||
Version vom 12. Mai 2009, 08:00 Uhr
Diese Seite ist noch nicht vollständig übersetzt.
Siehe en:Security
Jede Webapplikationssoftware ist hochkomplex, und jede Software kann Sicherheitslücken aufweisen. Das Entwickler-Team von Moodle nimmt Sicherheitsfragen sehr ernst und bemüht sich, Sicherheitslücken schnellstmöglich zu schließen.
Einleitung
- 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 Entwickler es schnell beheben können und registrierte Moodle-Administratoren entsprechend informieren können.
- Sie sollten keine Exploits in Foren auf moodle.org oder sonstwo im Web posten, um Moodle-Administratoren 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 Hackern 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 sog. starke Passwörter!
- 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. Vermeiden Sie freie Trainer-Nutzerkonten auf produktiven Moodle-Servern.
- Nutzer 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.
Mailinglisten verwenden
Nutzen Sie Mailinglisten, um auf aktuellem Stand zu bleiben:
- CERT - http://www.us-cert.gov/cas/signup.html
- PHP - http://www.php.net/mailing-lists.php - abonnieren Sie die PHP Announcements
- MySQL - http://lists.mysql.com - abonnieren Sie die MySQL Announcements
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)
Passwort-Policy
Moodle1.9 Ab Moodle 1.9 können Sie unter Website-Administration > Sicherheit > Website-Rechte 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 ein Nutzer ein Kennwort angibt, dass diesen Regeln nicht genügt, erscheint eine entsprechende Fehlermeldung.
Wenn Sie diese Kennwortregeln aktivieren und Ihre Nutzer anhalten, Ihr Anfangskennwort beim erstmaligen Login zu ändern, dann sind Sie auf einem guten Weg hin zur Nutzung von "starken" Passwörtern.
Seien Sie auf das Schlimmste vorbereitet!
- Halten Sie Ihre Backups bereit.
- Testen Sie, ob Sie Ihre Backups wiederherstellen können.
- Nutzen Sie in regelmäßigen Abständen einen Rootkit Detector, z.B.
- Linux /Mac OS X - http://www.chkrootkit.org/
- Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html
Moodle Sicherheitwarnungen
- Registrieren Sie Ihre Moodle-Installation auf moodle.org.
- Die Administratoren registrierter Moodle-Installationen erhalten E-Mail-Benachrichtigungen, wenn Sicherheitslücken in Moodle entdeckt wurden.
- Sicherheitswarnungen werden auch online herausgegeben:
Weitere Maßnahmen
Um die Gesamtsicherheit Ihres Systems zu verbessern, beachten Sie bitte folgende Hinweise:T
- 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 (ab Moodle 1.9, siehe oben).
- Öffnen Sie Ihre Moodle-Installation nicht für Google, siehe Einstellung opentogoogle.
- Schalten Sie das Gast-Login ab, siehe Website-Administration > Nutzer/innen > Authentifizierung > Übersicht.
- Verwenden Sie in allen Kursen Zugangsschlüssel.
- Deaktivieren Sie den Hinweis zum Zugangsschlüssel bei der internen Einschreibung in Kurse:
- unter Website-Administration > Kurse > Einschreibung > Interne Einschreibung (ab Moodle 1.9.3)
- durch Änderung des Strings enrolmentkeyhint in der Sprachdatei moodle.php (Zugriff über Website-Administration > Sprache > Texte bearbeiten): Ändern Sie den Originaltext Der Zugangsschlüssel war falsch, bitte versuchen Sie es erneut.
(Hinweis: Der Schlüssel beginnt mit \'$a\') in Der Zugangsschlüssel war falsch, bitte versuchen Sie es erneut oder kontaktieren Sie Ihren Kursverantwortlichen.
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:
- You are running Moodle on your own dedicated server.
- You are running Moodle on a shared hosting environment.
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.
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:
1. moodledata directory and all of its contents (and subdirectories, includes sessions):
owner: apache user (apache, httpd, www-data, whatever; see above) group: apache group (apache, httpd, www-data, whatever; see above) permissions: 700 on directories, 600 on files
2. moodle directory and all of its contents and subdirectories (including config.php):
owner: root group: root permissions: 755 on directories, 644 on files.
If you allow local logins for regular users, then 2. should be:
owner: root group: apache group (apache, httpd, www-data, whatever; see above) permissions: 750 on directories, 640 on files.
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).
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.
If you want to tighten your permissions as much as possible, you will need to know:
- the user account and the group the web service is running under (see above).
- 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.
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:
- 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.
- 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.
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.
Siehe auch
Diskussionsbeiträge im Kurs Using Moodle auf moodle.org:
- Guide to Securing your Moodle Server
- How to secure Moodle website from hacking - Empfehlungen für den Ernstfall