Security voor Magento 2
Magento webshops zijn een target voor hackers vanwege klantdata en transacties. Goede security is essentieel.
Admin beveiliging
Custom admin URL
Verander standaard /admin:
In app/etc/env.php:
``php
'backend' => [
'frontName' => 'jouwgeheimeadmin'
]
`
Sterke wachtwoorden
Stores > Configuration > Advanced > Admin > Security
- Password Lifetime: 90 dagen
- Password Change: Minimaal 3 keer per jaar
- Login Failures: 6 pogingen
- Lockout Time: 30 minuten
Two-Factor Authentication
Verplicht in Magento 2.4+:
Elke admin user moet 2FA instellen
Google Authenticator of andere provider
Geen uitzonderingen
Admin sessie limiet
- Admin Session Lifetime: 900 (15 minuten inactiviteit)
IP restricties
Beperk admin toegang tot specifieke IP's:
- Via .htaccess
- Via hosting firewall
- Via Cloudflare Access
Security patches
Waarom kritiek?
Adobe release regelmatig security patches. Niet patchen = kwetsbaar.
Patch monitoring
- Abonneer op Adobe Security Bulletin
- Check https://helpx.adobe.com/security.html
Patches installeren
`bash
# Backup eerst!
bin/magento maintenance:enable
composer update
bin/magento setup:upgrade
bin/magento cache:flush
bin/magento maintenance:disable
`
Patch testing
Test patches op staging
Verifieer functionaliteit
Dan pas naar productie
HTTPS/SSL
Verplicht
SSL is verplicht voor:
- Klantdata bescherming
- Google ranking
- Browser waarschuwingen voorkomen
Configuratie
Stores > Configuration > General > Web
- Use Secure URLs on Storefront: Yes
- Use Secure URLs in Admin: Yes
HSTS
HTTP Strict Transport Security forceer HTTPS:
`
Header always set Strict-Transport-Security "max-age=31536000"
`
Content Security Policy (CSP)
Wat is CSP?
CSP voorkomt XSS aanvallen door te specificeren welke resources mogen laden.
Configuratie
Stores > Configuration > Security > Content Security Policy
Report-Only modus
Begin in report mode om te zien wat geblokkeerd wordt:
- Analyseer reports
- Whitelist legitieme bronnen
- Schakel enforcement in
File permissions
Juiste permissions
`bash
find var generated vendor pub/static pub/media app/etc -type f -exec chmod u+w {} +
find var generated vendor pub/static pub/media app/etc -type d -exec chmod u+w {} +
chmod u+x bin/magento
`
Geen write access web user
Web user mag niet schrijven naar:
app/code
app/etc (na installatie)
composer.json/lock
Database security
Sterke credentials
- Uniek wachtwoord
- Geen root user
- Beperkte privileges
Geen remote toegang
MySQL alleen lokaal toegankelijk of via SSH tunnel.
Regelmatige backups
Geëncrypteerde backups op externe locatie.
Monitoring en scanning
Security scans
Regelmatige scans:
- MageReport: https://www.magereport.com
- Sansec: Malware detectie
- Adobe Security Scan: Via Magento admin
File integrity monitoring
Detecteer ongeautoriseerde wijzigingen:
- Vergelijk met clean installatie
- Monitor kritieke bestanden
Log monitoring
Check logs op verdachte activiteit:
var/log/exception.log
var/log/system.log`
WAF (Web Application Firewall)
Waarom WAF?
WAF blokkeert bekende aanvalspatronen:
- SQL injection
- XSS
- Brute force
Opties
- Cloudflare: Populair, goede free tier
- Sucuri: E-commerce gespecialiseerd
- Hosting WAF: Hypernode, AWS WAF
Malware response
Bij infectie
Prevention
- Regelmatige updates
- Security scans
- Beperkte toegang
- Sterke authenticatie
Checklist
Basis
- [ ] Custom admin URL
- [ ] 2FA voor alle admin users
- [ ] Sterke wachtwoorden
- [ ] HTTPS everywhere
- [ ] Regelmatige patches
Geavanceerd
- [ ] WAF geïmplementeerd
- [ ] CSP geconfigureerd
- [ ] File permissions correct
- [ ] IP restricties admin
- [ ] Security scanning actief
Monitoring
- [ ] Log monitoring
- [ ] Uptime monitoring
- [ ] Security scan scheduled
- [ ] Backup verificatie
Veelvoorkomende kwetsbaarheden
SQL Injection
Via invoervelden. Voorkomen door:
- Prepared statements
- Input validatie
- WAF regels
XSS (Cross-Site Scripting)
Via user input. Voorkomen door:
- Output escaping
- CSP headers
- Input sanitization
Brute Force
Via login pagina's. Voorkomen door:
- Account lockout
- CAPTCHA
- Rate limiting
- IP blocking
File Upload
Via admin of forms. Voorkomen door:
- File type validatie
- Upload directory buiten webroot
- Virus scanning