Sicherheitsleitfaden
Dieser Leitfaden behandelt bewährte Sicherheitspraktiken für den Betrieb einer Chamilo 2.0-Plattform im Produktivbetrieb. Sicherheit ist eine gemeinsame Verantwortung zwischen der Plattformsoftware, Ihrer Serverkonfiguration und den laufenden Betriebspraktiken.
Chamilo aktuell halten
Die wichtigste Sicherheitsmaßnahme ist, Ihre Chamilo-Installation stets auf dem neuesten Stand zu halten.
Abonnieren Sie den Chamilo-Sicherheitsaccount auf X (@chamilosecurity) oder beobachten Sie das GitHub-Repository für Ankündigungen zu neuen Releases.
Wenden Sie Sicherheitspatches zeitnah an. Kleinere Updates innerhalb der 2.0-Branch sind so gestaltet, dass sie sicher angewendet werden können.
Folgen Sie dem Upgrade-Prozess für jedes Update.
HTTPS
Betreiben Sie Chamilo im Produktivbetrieb immer über HTTPS.
Besorgen Sie sich ein SSL/TLS-Zertifikat (Let's Encrypt bietet kostenlose Zertifikate über Certbot an).
Konfigurieren Sie Ihren Webserver so, dass der gesamte HTTP-Verkehr auf HTTPS umgeleitet wird.
Aktivieren Sie den HSTS-Header (HTTP Strict Transport Security), um Downgrade-Angriffe zu verhindern:
Strict-Transport-Security: max-age=31536000; includeSubDomains
Ohne HTTPS werden Anmeldedaten, Sitzungscookies und alle Benutzerdaten unverschlüsselt übertragen und können im Netzwerk abgefangen werden.
Dateiberechtigungen
Beschränken Sie Dateiberechtigungen auf das absolut notwendige Minimum.
Anwendungsdateien (Quellcode)
root oder Deploy-Benutzer
755 (Verzeichnisse), 644 (Dateien)
Webserver benötigt nur Lesezugriff.
var/
Webserver-Benutzer
775
Muss für Symfony-Cache, Logs und Datei-Uploads beschreibbar sein.
.env
root oder Deploy-Benutzer
640
Enthält sensible Daten. Webserver benötigt nur Lesezugriff im normalen Betrieb, aber Schreibzugriff während der Installation.
config/
root oder Deploy-Benutzer
750
Enthält sensible Daten. Webserver benötigt nur Lesezugriff im normalen Betrieb, aber Schreibzugriff während der Installation.
Setzen Sie niemals Berechtigungen auf 777. Betreiben Sie den Webserver niemals als root.
Passwortrichtlinien
Konfigurieren Sie strenge Passwortanforderungen in den Sicherheitseinstellungen:
Mindestlänge von 8 Zeichen (12+ empfohlen).
Fordern Sie eine Mischung aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen.
Erwägen Sie die Aktivierung eines Passwortablaufs für Umgebungen mit Compliance-Anforderungen.
Schulen Sie Benutzer darin, starke und einzigartige Passwörter zu wählen.
Rate Limiting und Schutz vor Brute-Force-Angriffen
Anwendungsebene
Setzen Sie Maximale Anmeldeversuche vor Kontosperrung (
login_max_attempt_before_blocking_account) auf einen kleinen Wert (z. B. 5).Aktivieren Sie CAPTCHA auf der Anmeldeseite. CAPTCHA ist entweder ein- oder ausgeschaltet – es wird nicht automatisch nach einer bestimmten Anzahl fehlgeschlagener Anmeldungen aktiviert. Kombinieren Sie es mit CAPTCHA-Fehler vor Sperrung (
captcha_number_mistakes_to_block_account), um ein Konto zu sperren, das wiederholt am CAPTCHA scheitert.
Serverebene
Verwenden Sie fail2ban, um Anmeldefehler zu überwachen und angreifende IP-Adressen zu blockieren:
Erstellen Sie einen passenden Filter in /etc/fail2ban/filter.d/chamilo-auth.conf, um fehlgeschlagene Authentifizierungsversuche in den Logeinträgen zu erkennen.
Sitzungsmanagement
Legen Sie eine angemessene Sitzungslebensdauer fest (z. B. 3600 Sekunden / 1 Stunde) in den Sicherheitseinstellungen.
Konfigurieren Sie Sitzungscookie-Flags in Ihrer Symfony-Konfiguration:
Erwägen Sie, die Option "Angemeldet bleiben" auf Plattformen mit sensiblen Inhalten zu deaktivieren.
HTTP-Sicherheitsheader
Konfigurieren Sie Ihren Webserver so, dass Sicherheitsheader gesendet werden:
X-Content-Type-Options
nosniff
Verhindert MIME-Type-Sniffing.
X-Frame-Options
SAMEORIGIN
Verhindert Clickjacking über IFrames.
X-XSS-Protection
1; mode=block
Älterer XSS-Schutz für ältere Browser.
Referrer-Policy
strict-origin-when-cross-origin
Kontrolliert das Auslaufen von Referrer-Informationen.
Content-Security-Policy
Variiert
Kontrolliert, welche Ressourcen geladen werden können. Erfordert sorgfältige Anpassung für Chamilo.
Beispiel für Apache:
Beispiel für Nginx:
Sicherheit bei Datei-Uploads
Blockieren Sie ausführbare Dateierweiterungen (exe, bat, sh, php, phtml, cgi) in den Sicherheitseinstellungen.
Konfigurieren Sie Ihren Webserver so, dass hochgeladene Dateien niemals ausgeführt werden. Für Apache fügen Sie Folgendes zum gesamten var/-Verzeichnis hinzu:
Scannen Sie hochgeladene Dateien mit einem Antivirus-Programm (ClamAV), falls dies in Ihrer Umgebung erforderlich ist.
Datenbanksicherheit
Verwenden Sie einen dedizierten Datenbankbenutzer für Chamilo mit nur den benötigten Berechtigungen (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, INDEX auf die Chamilo-Datenbank).
Verwenden Sie nicht das Root-Datenbankkonto.
Stellen Sie sicher, dass die Datenbank nicht über das öffentliche Internet zugänglich ist. Binden Sie sie an localhost oder ein privates Netzwerk.
Aktivieren Sie die Datenbank-Audit-Protokollierung für umgebungen mit hohen Compliance-Anforderungen.
Backups
Planen Sie tägliche automatisierte Backups sowohl der Datenbank als auch der hochgeladenen Dateien.
Speichern Sie Backups an einem separaten Ort vom Server (offsite oder Cloud-Speicher).
Testen Sie regelmäßig die Wiederherstellung von Backups, um sicherzustellen, dass sie verwendbar sind.
Verschlüsseln Sie Backups, wenn sie sensible Daten enthalten.
Siehe Backups für detaillierte Anweisungen.
Überwachung
Überwachen Sie die Chamilo-Protokolle unter
var/log/prod.logauf Fehler und verdächtige Aktivitäten.Richten Sie eine Serverüberwachung (CPU, Speicher, Festplatte) ein, um Ressourcenengpässe zu erkennen.
Konfigurieren Sie Benachrichtigungen für wiederholte fehlgeschlagene Authentifizierungsversuche.
Überprüfen Sie regelmäßig Benutzerkonten auf unbefugte oder inaktive Konten.
Checkliste
Verwenden Sie diese Checkliste bei der Bereitstellung oder Überprüfung einer Chamilo-Installation:
Zuletzt aktualisiert
War das hilfreich?