Beveiligingsgids

Deze gids behandelt de beste praktijken voor beveiliging bij het draaien van een Chamilo 2.0-platform in productie. Beveiliging is een gedeelde verantwoordelijkheid tussen de platformsoftware, uw serverconfiguratie en doorlopende operationele praktijken.

Houd Chamilo Bijgewerkt

De belangrijkste beveiligingspraktijk is het up-to-date houden van uw Chamilo-installatie.

  • Abonneer u op het Chamilo beveiligingsaccount op X (@chamilosecurity) of volg de GitHub-repository voor aankondigingen van releases.

  • Pas beveiligingspatches snel toe. Kleine updates binnen de 2.0-branch zijn ontworpen om veilig toe te passen.

  • Volg het upgradeproces voor elke update.

HTTPS

Serveer Chamilo altijd via HTTPS in productie.

  • Verkrijg een SSL/TLS-certificaat (Let's Encrypt biedt gratis certificaten via Certbot).

  • Configureer uw webserver om al het HTTP-verkeer om te leiden naar HTTPS.

  • Schakel de HSTS (HTTP Strict Transport Security) header in om downgrade-aanvallen te voorkomen:

    Strict-Transport-Security: max-age=31536000; includeSubDomains

Zonder HTTPS worden inloggegevens, sessiecookies en alle gebruikersgegevens in platte tekst verzonden en kunnen ze op het netwerk worden onderschept.

Bestandsrechten

Beperk bestandsrechten tot het minimaal noodzakelijke.

Pad
Eigenaar
Rechten
Opmerkingen

Applicatiebestanden (broncode)

root of deploy-gebruiker

755 (mappen), 644 (bestanden)

Webserver heeft alleen leesrechten nodig.

var/

webservergebruiker

775

Moet schrijfbaar zijn voor Symfony cache, logs en bestandsuploads

.env

root of deploy-gebruiker

640

Bevat geheimen. Webserver heeft alleen leesrechten nodig tijdens normaal gebruik, maar schrijfrechten tijdens installatie.

config/

root of deploy-gebruiker

750

Bevat geheimen. Webserver heeft alleen leesrechten nodig tijdens normaal gebruik, maar schrijfrechten tijdens installatie.

Stel rechten nooit in op 777. Draai de webserver nooit als root.

Wachtwoordbeleid

Configureer sterke wachtwoordvereisten in Beveiligingsinstellingen:

  • Minimale lengte van 8 tekens (12+ aanbevolen).

  • Vereis een mix van hoofdletters, kleine letters, cijfers en speciale tekens.

  • Overweeg het inschakelen van wachtwoordverloop voor omgevingen waar naleving vereist is.

  • Informeer gebruikers over het kiezen van sterke, unieke wachtwoorden.

Beperking van Verzoeken en Bescherming tegen Brute-Force

Applicatieniveau

  • Stel Maximaal aantal inlogpogingen voordat account wordt geblokkeerd (login_max_attempt_before_blocking_account) in op een kleine waarde (bijvoorbeeld 5).

  • Schakel CAPTCHA in op de inlogpagina. CAPTCHA is aan/uit — het wordt niet automatisch ingeschakeld na N mislukte inlogpogingen. Combineer het met CAPTCHA-fouten voordat account wordt geblokkeerd (captcha_number_mistakes_to_block_account) om een account te blokkeren dat steeds de CAPTCHA niet haalt.

Serverniveau

Gebruik fail2ban om inlogfouten te monitoren en aanvallende IP-adressen te blokkeren:

Maak een bijpassend filter in /etc/fail2ban/filter.d/chamilo-auth.conf om authenticatiefouten in logbestanden te matchen.

Sessiebeheer

  • Stel een redelijke sessieleeftijd in (bijvoorbeeld 3600 seconden / 1 uur) in de beveiligingsinstellingen.

  • Configureer sessiecookie-vlaggen in uw Symfony-configuratie:

  • Overweeg het uitschakelen van "Onthoud mij" op platforms met gevoelige inhoud.

HTTP Beveiligingsheaders

Configureer uw webserver om beveiligingsheaders te verzenden:

Header
Waarde
Doel

X-Content-Type-Options

nosniff

Voorkomt MIME-type sniffing.

X-Frame-Options

SAMEORIGIN

Voorkomt clickjacking via iframes.

X-XSS-Protection

1; mode=block

Verouderde XSS-bescherming voor oudere browsers.

Referrer-Policy

strict-origin-when-cross-origin

Beheert lekken van referrer-informatie.

Content-Security-Policy

Varieert

Beheert welke bronnen geladen kunnen worden. Vereist zorgvuldige afstemming voor Chamilo.

Voorbeeld voor Apache:

Voorbeeld voor Nginx:

Beveiliging van Bestandsuploads

  • Blokkeer uitvoerbare bestandsextensies (exe, bat, sh, php, phtml, cgi) in Beveiligingsinstellingen.

  • Configureer uw webserver om nooit geüploade bestanden uit te voeren. Voor Apache, voeg toe aan de gehele var/-map:

  • Scan geüploade bestanden met een antivirusprogramma (ClamAV) als uw omgeving dit vereist.

Databasebeveiliging

  • Gebruik een specifieke databasegebruiker voor Chamilo met alleen de benodigde rechten (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, INDEX op de Chamilo-database).

  • Gebruik niet het root-databaseaccount.

  • Zorg ervoor dat de database niet toegankelijk is vanaf het openbare internet. Bind deze aan localhost of een privénetwerk.

  • Schakel database-auditlogging in voor omgevingen waar naleving cruciaal is.

Back-ups

  • Plan dagelijkse geautomatiseerde back-ups van zowel de database als de geüploade bestanden.

  • Sla back-ups op een aparte locatie op van de server (offsite of cloudopslag).

  • Test periodiek het herstellen van back-ups om te verifiëren dat ze bruikbaar zijn.

  • Versleutel back-ups als ze gevoelige gegevens bevatten.

Zie Back-ups voor gedetailleerde instructies.

Monitoring

  • Controleer Chamilo-logboeken op var/log/prod.log voor fouten en verdachte activiteiten.

  • Stel servermonitoring in (CPU, geheugen, schijf) om uitputting van bronnen te detecteren.

  • Configureer waarschuwingen voor herhaalde authenticatiefouten.

  • Controleer periodiek gebruikersaccounts op ongeautoriseerde of inactieve accounts.

Checklist

Gebruik deze checklist bij het implementeren of controleren van een Chamilo-installatie:

Laatst bijgewerkt

Was dit nuttig?