internet.nl is een belangrijke site voor veel mensen om te bekijken hoe veilig je website en domeinnaam geconfigureerd zijn. Deze pagina legt uit wat je moet doen om een 100% score te halen en op de
https://internet.nl/halloffame/ terecht te komen!
We gaan ervan uit dat de certificaten goed geinstalleerd zijn. Om internet.nl tevreden te stellen moeten echter nog een paar stappen doorlopen worden.
- Configureer DNSSEC
- Configureer IPv6
- Zet de bij dit artikel geplaatste dhparam.pem in de locate /etc/ssl/dhparam.pem
Apache
internet.nl wil dat je alles redirect naar HTTPS. Je HTTP-VirtualHost ziet er dus (ongeveer) zo uit. Hier is de 'rewrite' module van Apache nodig.
<VirtualHost *:80>
ServerName <a href="www.example.com">www.example.com</a>
RedirectMatch / <a href="https://www.example.com/">https://www.example.com/</a>
</VirtualHost>
Zet de volgende configuratieregels in de HTTPS-VirtualHost die je wilt beveiligen:
# Schakel onveilige TLS versies uit
SSLProtocol -all +TLSv1.3 +TLSv1.2
# Gebruik de juist curves
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
# Gebruik alleen veilige ciphers
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256
# Veilige ciphers eerst
SSLHonorCipherOrder on
# Geen SSL Compression
SSLCompression off
# Gebruik de eerder geplaatste Diffie Hellman parameters
SSLOpenSSLConfCmd DHParameters "/etc/ssl/dhparam.pem"
Om de boel af te ronden moeten er ook een aantal headers meegestuurd worden. Hier is de 'headers' module van Apache nodig. Dit kan in de virtualhost gezet worden, maar het mag ook in de .htaccess.
Header add X-Content-Type-Options nosniff
Header add Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header add X-Frame-Options SAMEORIGIN
Header add X-XSS-Protection "1; mode=block"
Header add Referrer-Policy "no-referrer"
NGINX
internet.nl wil dat je alles redirect naar HTTPS. Je HTTP-VirtualHost
ziet er dus (ongeveer) zo uit.
server {
listen 80 default_server;
listen [::]:80 default_server;
return 301 https://$host$request_uri;
}
Zet de volgende configuratieregels in de HTTPS-VirtualHost die je wilt beveiligen:
ssl_dhparam /etc/ssl/dhparam.pem; #path to the dhparam.pem file created above
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256;
add_header X-Content-Type-Options nosniff;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer";
CSP
internet.nl spreekt ook nog over CSP,
Content-Security-Policy. Via deze header geef je als website aan de browser door waar dingen vandaan geladen mogen worden. Hier kan een site een stuk minder goed van gaan werken. We laten die hier buiten beschouwing.