Blog

Infrastructuur 10 min leestijd

Cloudflare-installatie voor zakelijke websites: snelheid en veiligheid, stap voor stap

Het plaatsen van een zakelijke website achter Cloudflare neemt een middag in beslag en verwijdert hele categorieën van problemen: trage pagina's voor verre bezoekers, verkeersstromen, bots die je login lastig vallen. Het introduceert ook nieuwe manieren om dingen kapot te maken als het onzorgvuldig wordt gedaan. Deze handleiding behandelt de installatievolgorde, de instellingen die ertoe doen en de fouten die we het vaakst tegenkomen.

Omslagillustratie: Cloudflare-installatie voor zakelijke websites: snelheid en veiligheid, stap voor stap

In het kort

  • Cloudflare doet drie taken voor u: DNS, een globale cache (CDN) en een beveiligingslaag voor uw server (DDoS-bescherming, firewallregels, botfiltering).
  • Gebruik SSL-modus Volledig (strikt), nooit flexibel. Vergrendel vervolgens uw server zodat deze alleen webverkeer van Cloudflare accepteert, anders kunnen aanvallers deze eenvoudigweg omzeilen.
  • Cache statische bestanden agressief in de cache, cache nooit privé- of beheerderspagina's en leeg de cache automatisch wanneer u deze implementeert.
  • Voeg een paar gerichte regels toe: beperk het aantal aanmeldingen en afrekenen, en stel betalingswebhooks uit van uitdagingen.
  • E-mailrecords moeten alleen DNS blijven en voor uw logbestanden moet het echte bezoekers-IP worden hersteld. Deze twee details zorgen ervoor dat de meeste 'it brak after Cloudflare-tickets.

Cloudflare zit tussen uw bezoekers en uw server. Bezoekers maken verbinding met het nabijgelegen datacenter van Cloudflare, dat in de cache opgeslagen bestanden rechtstreeks serveert, vijandig verkeer filtert en de rest doorstuurt naar uw server. Voor een bedrijf betekent dit snellere pagina's voor klanten ver van uw hostinglocatie, bescherming tegen eenvoudige denial-of-service-overstromingen en een plek om beveiligingsregels af te dwingen zonder de applicatiecode te wijzigen. Veel abonnementen beginnen gratis, en betaalde abonnementen voegen functies toe, dus controleer de huidige abonnementsvergelijking voordat je een beslissing neemt.

Het is geen vervanging voor gepatchte software en veilige code. Onze PHP-beveiligingschecklist is nog steeds van toepassing. Beschouw Cloudflare als een sterke voordeur, en niet als vervanging voor het afsluiten van de kamers binnenin.

Voordat je begint

  • Maak een inventaris van uw DNS. Exporteer of maak een screenshot van elk record bij uw huidige DNS-provider, inclusief e-mail (MX, SPF, DKIM, DMARC) en verificatierecords. Een gemist record is de klassieke manier om e-mail te verbreken tijdens een migratie.
  • Weet wie de eigenaar is van het domeinregistreerderaccount en zorg ervoor dat het een bedrijfsaccount is met meervoudige authenticatie. Daar wijzigt u de naamservers.
  • Verlaag de TTL van uw sleutelrecords indien mogelijk een dag van tevoren, zodat veranderingen zich sneller verspreiden.
  • Kies een rustig moment en vertel het aan het team. Plan een rollback: de oude nameservers, opgeschreven.

Stap 1: voeg de site toe en controleer DNS

Voeg uw domein toe in het Cloudflare dashboard. Het scant bestaande records. Vergelijk ze met uw inventaris en corrigeer hiaten. Kies voor elke record tussen twee modi:

  • Proxied (oranje wolk): verkeer gaat via Cloudflare. Gebruik hostnamen voor uw website en webapplicatie.
  • Alleen DNS (grijze wolk): Cloudflare beantwoordt alleen de DNS-query. Gebruik voor mailservers, SSH- of FTP-hostnamen en alles dat geen HTTP- of HTTPS-verkeer is.

Update vervolgens de naamservers bij uw registrar. Zodra de site als actief wordt weergegeven, controleert u uw site en verzendt u een test-e-mail.

Stap 2: stel de encryptie correct in

Dit is de instelling die de meeste sites kapot maakt. Cloudflare heeft verschillende SSL/TLS-modi:

  • Flexibel: versleutelt de bezoeker van Cloudflare maar stuurt verkeer ongecodeerd naar uw server. Het lijkt erop dat het werkt, maar het tweede been is open en veroorzaakt vaak omleidingslussen. Vermijd het.
  • Volledig: codeert beide benen, maar verifieert het certificaat van uw server niet.
  • Volledig (strikt): codeert beide benen en verifieert het certificaat op uw server. Dit is degene die je moet gebruiken.

Installeer eerst een geldig certificaat op uw server. Een Cloudflare Origin CA-certificaat of een gratis Let's Encrypt-certificaat werken beide. Schakel vervolgens over naar Volledig (strikt), schakel Altijd HTTPS gebruiken in, stel een minimale TLS-versie van 1.2 in en schakel HSTS pas in nadat alles via HTTPS werkt, omdat HSTS browsers vertelt dat ze gewone HTTP voor een lange tijd moeten weigeren.

Stap 3: zorg ervoor dat Cloudflare onmogelijk te omzeilen is

Als aanvallers het echte IP-adres van uw server kennen, kunnen ze verkeer er rechtstreeks naartoe sturen en elke door u geconfigureerde beveiliging overslaan. Los dit op twee manieren op:

  • Sta webverkeer naar uw server alleen toe vanuit de gepubliceerde IP-bereiken van Cloudflare.
  • Herstel het echte bezoekers-IP in uw webserver, omdat anders elk verzoek in uw logs, tarieflimieten en analyses afkomstig lijkt te zijn van Cloudflare.
#!/usr/bin/env bash
# /opt/cf/update_cloudflare_ips.sh - run weekly from cron
set -euo pipefail
IPS="$(curl -fsS https://www.cloudflare.com/ips-v4) $(curl -fsS https://www.cloudflare.com/ips-v6)"

# 1) real visitor IP for Nginx
OUT=/etc/nginx/conf.d/cloudflare_real_ip.conf
{
  for r in $IPS; do echo "set_real_ip_from $r;"; done
  echo "real_ip_header CF-Connecting-IP;"
} > "$OUT.tmp" && mv "$OUT.tmp" "$OUT"
nginx -t && nginx -s reload

# 2) firewall: allow HTTPS only from Cloudflare (remove any generic "allow 443" rule first)
for r in $IPS; do ufw allow proto tcp from "$r" to any port 443 comment 'cloudflare'; done

Een belangrijk detail voor Docker gebruikers: door Docker gepubliceerde poorten omzeilen ufw-regels. Bind containers aan localhost achter een omgekeerde proxy, of beperk de toegang in Docker 's DOCKER-USER firewallketen. Voor een sterkere isolatie laat Cloudflare Tunnel uw server alleen een uitgaande verbinding maken, zodat er helemaal geen open inkomende webpoorten nodig zijn. Voor betalingswebhooks en andere server-naar-server-integraties moet u ervoor zorgen dat de IP-regels deze verzoeken nog steeds doorlaten als ze niet via Cloudflare gaan.

Stap 4: cachingregels

Standaard cachet Cloudflare statische bestanden zoals afbeeldingen, CSS en JavaScript, maar geen HTML. Een verstandig beleid voor een typische PHP site:

  • Statische assets: cache voor een lange tijd (een maand of langer). Gebruik bestandsnamen met versiebeheer of een queryreeks zoals app.css?v=123, zodat een nieuwe implementatie onmiddellijk wordt opgepikt.
  • Openbare HTML-pagina's (marketingpagina's, blog): kunnen minuten tot uren in de cache worden opgeslagen met een cacheregel. Zorgvuldig testen.
  • Nooit cachen: admin, account, winkelwagen, afrekenen, API-eindpunten en elke pagina die afhankelijk is van een login-cookie. Maak een bypass-regel voor deze paden en voor verzoeken die uw sessiecookie bevatten.

Automatisch opschonen na elke implementatie, zodat klanten nooit verouderde bestanden zien. Maak een API-token met alleen de machtiging 'Cache Purge' voor deze zone en roep deze aan vanuit uw implementatiescript:

# purge selected files after a deployment
curl -sS -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"files":["https://example.com/css/app.css","https://example.com/js/app.js"]}'

Snellere pagina's helpen ook bij zoeken en conversies. Zie onze Core Web Vitals handleiding voor PHP sites voor wat u aan de serverzijde moet oplossen zodra het CDN is geïnstalleerd.

Stap 5: firewall, bots en snelheidsbeperking

  • Schakel de beheerde WAF-regels in die beschikbaar zijn in uw abonnement. Ze blokkeren algemene aanvalspatronen voordat ze uw code bereiken.
  • Schakel botbescherming in die past bij uw plan en bekijk de analyses voordat u iets aanscherpt.
  • Snelheidslimietgevoelige eindpunten: inloggen, wachtwoord opnieuw instellen, aanmelden en afrekenen. Brute force- en kaarttestaanvallen zijn precies hierop gericht.
  • Vertrouwd machineverkeer vrijstellen: webhooks van betalingsproviders, monitoringdiensten en uw eigen integraties mogen niet worden getroffen door browserproblemen, aangezien een uitdagingspagina die wordt teruggestuurd naar een webhook op een mislukking lijkt.
# Custom rule 1: block probes for secrets and repositories (action: Block)
(http.request.uri.path contains "/.env" or http.request.uri.path contains "/.git" or http.request.uri.path contains "wp-config")

# Custom rule 2: let payment webhooks through (action: Skip, security features)
(http.request.uri.path in {"/webhooks/stripe" "/webhooks/paypal"})

# Rate limiting rule: at most 10 login attempts per minute per IP
(http.request.uri.path eq "/login" and http.request.method eq "POST")  =>  10 requests / 1 minute / IP

De syntaxis van de regels en de beschikbare velden variëren per plan, dus behandel deze als sjablonen en test eerst in de "log"-modus. Behoud ook bescherming op applicatieniveau: controles van webhook-handtekeningen zijn, zoals in onze Stripe webhooks-gids, nooit alleen afhankelijk van netwerkregels.

Stap 6: controleer de configuratie

# is traffic going through Cloudflare?
curl -sI https://example.com | grep -iE "^(server|cf-cache-status|cf-ray)"

# does the origin refuse direct access? (replace with your server IP; expect a timeout or refusal)
curl -sI --max-time 8 https://203.0.113.10 -H "Host: example.com" -k

# are the nameservers and mail records right?
dig NS example.com +short
dig MX example.com +short
dig TXT example.com +short

Controleer een statisch bestand twee keer: het tweede antwoord zou cf-cache-status: HIT moeten tonen. Controleer de login-, checkout- en admin-stromen met een echte browser en verzend en ontvang een test-e-mail.

Veel voorkomende fouten

  • Flexibele SSL en de omleidingslussen die volgen.
  • Het proxyeren van de mailhostnaam (dit mag alleen DNS zijn) of het vergeten van een mailrecord tijdens de verplaatsing.
  • Privépagina's in cache opslaan, zodat de ene klant de accountpagina van een andere klant ziet. Omzeil altijd de cache voor ingelogd verkeer.
  • De oorsprong zichtbaar laten: het echte IP-adres is zichtbaar in oude DNS-records, e-mailheaders of certificaatlogboeken. Beperk de firewall en overweeg om het IP-adres te wijzigen als deze is gelekt.
  • Het echte IP-adres wordt niet hersteld, waardoor tarieflimieten, logboeken en fraudecontroles worden overtreden.
  • Uitdagende webhooks en API's, die stille fouten in betalingen en integraties veroorzaken.
  • Limieten voor de grootte van verzoeken: proxyverzoeken hebben een maximale lichaamsgrootte, afhankelijk van het plan. Controleer de huidige limiet als uw applicatie grote uploads accepteert.
  • Controle vergeten. Voeg waarschuwingen toe voor het verlopen van certificaten en domeinen en houd de uptime-controles bij, zoals beschreven in onze handleiding voor back-up en monitoring.

Een checklist van één pagina

  1. DNS-inventaris geëxporteerd, registraraccount beveiligd.
  2. Site toegevoegd, records beoordeeld, alleen proxy voor webhostnamen.
  3. Origin-certificaat geïnstalleerd, SSL-modus Volledig (strikt), Gebruik altijd HTTPS aan.
  4. Firewall beperkt tot Cloudflare reeksen, IP van echte bezoekers hersteld.
  5. Cacheregels voor statische assets, omzeilen voor privépaden, opschonen in het implementatiescript.
  6. Beheerde WAF aan, tarieflimieten voor inloggen en afrekenen, webhooks uitgesloten.
  7. Verificatieopdrachten uitgevoerd, waarschuwingen geconfigureerd, terugdraaien gedocumenteerd.

Hoe wij kunnen helpen

We configureren Cloudflare, hosting- en implementatiepijplijnen voor PHP applicaties en verbinden deze met betalings-, CRM- en berichtensystemen. Lees meer over onze integratieservice of boek een kort gesprek, zodat we uw DNS-, SSL- en caching-instellingen kunnen beoordelen aan de hand van deze checklist.

Veelgestelde vragen

Is Cloudflare de moeite waard voor een website voor een klein bedrijf?

Voor de meeste openbare websites wel. Snellere levering van statische bestanden, DDoS-bescherming, gratis beheerde DNS en gemakkelijke HTTPS zijn zelfs met een gratis abonnement waardevol. Betaalde abonnementen voegen sterkere firewall-, bot- en prestatiefuncties toe. Bekijk de huidige abonnementsvergelijking om te zien wat u nodig heeft.

Welke SSL-modus moet ik gebruiken?

Volledig (strikt). Het versleutelt het verkeer tussen de bezoeker en Cloudflare en tussen Cloudflare en uw server, en verifieert het certificaat van uw server. Vermijd flexibel, waardoor de verbinding met uw server niet-versleuteld blijft en vaak omleidingslussen ontstaan.

Kunnen aanvallers Cloudflare omzeilen?

Ja, als ze het echte IP-adres van uw server vinden en deze verkeer van waar dan ook accepteert. Beperk uw firewall tot de gepubliceerde IP-bereiken van Cloudflare, of gebruik Cloudflare Tunnel, en verander het IP-adres als het is gelekt.

Waarom werkte mijn e-mail niet meer nadat ik DNS naar Cloudflare had verplaatst?

Meestal werd er bij de migratie een e-mailrecord gemist, of was de hostnaam van de e-mail ingesteld op proxy. Mailrecords zoals MX, SPF, DKIM en DMARC moeten aanwezig zijn en de hostnaam van de mailserver mag alleen DNS zijn.

Moet ik HTML-pagina's op Cloudflare in de cache plaatsen?

U kunt voor openbare pagina's zoals marketing- en bloginhoud gebruik maken van cacheregels en een verstandige vervaldatum. Nooit de beheerder, het account, het winkelwagentje, de kassa of een gepersonaliseerde pagina in de cache opslaan en de cache bij elke implementatie leegmaken.

Gratis ontdekkingsgesprek

Breng een rommelige stack of vastgelopen integratie - Integrono schetst de slimste eerste zet.

U krijgt een senior blik op budgetvallen, afhankelijkheden en of u moet kopen, lijmen of bouwen - voordat betaald werk start. De CEO blijft in the loop.