Ana içeriğe geç
Kategoriye Dön

Cloudflare Entegrasyonu: DDoS Koruma ve CDN

Cloudflare kurulumu, DNS yapılandırması, WAF kuralları, Page Rules, Under Attack modu ve origin IP gizleme ile sunucunuzu DDoS saldırılarından koruma rehberi.

Okuma süresi: 15 dk DDoS Koruma ve Güvenlik
cloudflareddoscdnwafdnsgüvenlikpage-rules

İçindekiler

Cloudflare Entegrasyonu: DDoS Koruma ve CDN

Cloudflare, web sitenizi DDoS saldırılarından koruyan, içerik dağıtım ağı (CDN) sunan ve performansı artıran güçlü bir platformdur. Bu rehberde Cloudflare'i sunucunuza entegre etme, DNS yapılandırması, WAF kuralları oluşturma ve ileri düzey koruma özelliklerini ele alacağız.

REXE sunucularında Cloudflare entegrasyonu, Path Panel DDoS korumasıyla birlikte kullanılarak çok katmanlı güvenlik sağlanabilir.

Cloudflare Hesap Oluşturma ve Site Ekleme

Cloudflare'e başlamak için önce bir hesap oluşturmanız ve sitenizi eklemeniz gerekir.

Hesap Oluşturma

  1. cloudflare.com adresine gidin
  2. "Sign Up" butonuna tıklayın
  3. E-posta ve şifre ile kayıt olun
  4. E-posta doğrulamasını tamamlayın

Site Ekleme

  1. Dashboard'da "Add a Site" butonuna tıklayın
  2. Domain adınızı girin (örn: example.com)
  3. Plan seçin (Free plan DDoS koruması içerir)
  4. Cloudflare mevcut DNS kayıtlarınızı otomatik tarar

DNS Yapılandırması

Cloudflare'in çalışması için domain'inizin nameserver'larını Cloudflare'e yönlendirmeniz gerekir.

Nameserver Değişikliği

Cloudflare size iki nameserver adresi verir:

ns1.cloudflare.com
ns2.cloudflare.com

Bu adresleri domain kayıt firmanızın (registrar) panelinden güncelleyin.

DNS Kayıtları Yönetimi

Cloudflare DNS panelinde kayıtlarınızı yönetin:

Tip    İsim           İçerik              Proxy
A      example.com    185.x.x.x          Proxied (turuncu bulut)
A      www            185.x.x.x          Proxied
A      api            185.x.x.x          Proxied
MX     example.com    mail.example.com    DNS only (gri bulut)
TXT    example.com    v=spf1 ...         DNS only

MX, SPF, DKIM gibi e-posta kayıtlarını "DNS only" (gri bulut) modunda bırakın. Proxy modunda e-posta servisleri çalışmaz.

Proxy Durumu (Turuncu/Gri Bulut)

DurumAçıklama
Proxied (Turuncu)Trafik Cloudflare üzerinden geçer, DDoS koruması aktif
DNS Only (Gri)Sadece DNS çözümleme, koruma yok
hljs bash
# DNS çözümleme kontrolü
dig +short example.com
# Cloudflare proxy aktifse Cloudflare IP'leri görünür

# Gerçek IP kontrolü
curl -s https://www.cloudflare.com/ips-v4

Origin IP Gizleme

Cloudflare'in en önemli avantajlarından biri sunucunuzun gerçek IP adresini gizlemesidir. Ancak bazı sızıntı noktalarına dikkat etmelisiniz.

IP Sızıntı Noktaları ve Çözümleri

hljs bash
# 1. Mail sunucusu header'larından IP sızıntısı
# Çözüm: E-posta için farklı IP/sunucu kullanın

# 2. Eski DNS kayıtları (SecurityTrails, Shodan)
# Çözüm: Cloudflare sonrası IP değiştirin

# 3. Doğrudan IP erişimi
# Çözüm: Sunucuda sadece Cloudflare IP'lerinden gelen trafiğe izin verin

Sunucuda Cloudflare IP Kısıtlaması

hljs bash
# iptables ile sadece Cloudflare IP'lerine izin ver
#!/bin/bash

# Cloudflare IPv4 aralıkları
CF_IPS=$(curl -s https://www.cloudflare.com/ips-v4)

# Mevcut HTTP/HTTPS kurallarını temizle
iptables -D INPUT -p tcp --dport 80 -j ACCEPT 2>/dev/null
iptables -D INPUT -p tcp --dport 443 -j ACCEPT 2>/dev/null

# Sadece Cloudflare IP'lerine izin ver
for ip in $CF_IPS; do
    iptables -A INPUT -p tcp --dport 80 -s $ip -j ACCEPT
    iptables -A INPUT -p tcp --dport 443 -s $ip -j ACCEPT
done

# Diğer HTTP/HTTPS trafiğini engelle
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP

echo "Cloudflare IP kısıtlaması uygulandı."

Nginx ile Gerçek IP Alma

Cloudflare proxy kullandığında, sunucunuz tüm istekleri Cloudflare IP'sinden geliyormuş gibi görür. Gerçek ziyaretçi IP'sini almak için:

hljs nginx
# /etc/nginx/conf.d/cloudflare.conf

# Cloudflare IPv4
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;

real_ip_header CF-Connecting-IP;
hljs bash
# Nginx yapılandırmasını test et ve yeniden yükle
sudo nginx -t
sudo systemctl reload nginx

WAF (Web Application Firewall) Kuralları

Cloudflare WAF, web uygulamanızı SQL injection, XSS ve diğer saldırılardan korur.

Managed Rules

Cloudflare Dashboard > Security > WAF bölümünden:

  1. Cloudflare Managed Ruleset: OWASP kurallarını içerir
  2. Cloudflare OWASP Core Ruleset: SQL injection, XSS koruması
  3. Cloudflare Leaked Credentials Check: Sızdırılmış kimlik bilgisi kontrolü

Custom WAF Kuralları

# Belirli ülkelerden gelen trafiği engelle
(ip.geoip.country eq "XX") -> Block

# Belirli User-Agent'ları engelle
(http.user_agent contains "BadBot") -> Block

# wp-admin'e sadece belirli IP'den erişim
(http.request.uri.path contains "/wp-admin" and not ip.src eq 1.2.3.4) -> Block

# Rate limiting: Dakikada 100'den fazla istek
(http.request.uri.path eq "/api/*") -> Rate Limit (100 req/min)

Firewall Rules Örnekleri

Dashboard > Security > WAF > Custom Rules:

Kural Adı: Block Bad Bots
Koşul: (cf.client.bot) or (http.user_agent contains "scanner")
Eylem: Block

Kural Adı: Challenge Suspicious
Koşul: (cf.threat_score gt 14)
Eylem: Managed Challenge

Kural Adı: Allow Known IPs
Koşul: (ip.src in {1.2.3.4 5.6.7.8})
Eylem: Allow

Page Rules Yapılandırması

Page Rules, belirli URL kalıpları için özel davranışlar tanımlamanızı sağlar.

Yaygın Page Rules

# 1. Her zaman HTTPS kullan
URL: http://*example.com/*
Ayar: Always Use HTTPS

# 2. API için cache devre dışı
URL: *example.com/api/*
Ayar: Cache Level = Bypass

# 3. Statik dosyalar için agresif cache
URL: *example.com/static/*
Ayar: Cache Level = Cache Everything
       Edge Cache TTL = 1 month

# 4. Admin paneli için güvenlik artır
URL: *example.com/admin/*
Ayar: Security Level = High
       Browser Integrity Check = On

Cache Yapılandırması

# Dashboard > Caching > Configuration

Caching Level: Standard
Browser Cache TTL: 4 hours
Always Online: On

# Purge Cache
# Dashboard > Caching > Purge Cache
# - Purge Everything (tüm cache'i temizle)
# - Custom Purge (belirli URL'leri temizle)

Under Attack Modu

Aktif bir DDoS saldırısı sırasında Under Attack modunu etkinleştirin.

Manuel Etkinleştirme

  1. Cloudflare Dashboard'a giriş yapın
  2. Üst menüden "Under Attack Mode" seçin
  3. Veya: Security > Settings > Security Level > I'm Under Attack!

API ile Etkinleştirme

hljs bash
# Under Attack modunu aç
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/ZONE_ID/settings/security_level" \
  -H "Authorization: Bearer API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"value":"under_attack"}'

# Normal moda dön
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/ZONE_ID/settings/security_level" \
  -H "Authorization: Bearer API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"value":"medium"}'

Under Attack Modu Davranışı

ÖzellikAçıklama
JavaScript ChallengeTüm ziyaretçilere 5 saniyelik kontrol
Bot FiltrelemeOtomatik bot trafiğini engeller
SüreManuel kapatılana kadar aktif
EtkiMeşru kullanıcılar kısa gecikme yaşar

Under Attack modunu saldırı bittikten sonra kapatmayı unutmayın. Sürekli aktif bırakmak kullanıcı deneyimini olumsuz etkiler.

SSL/TLS Yapılandırması

Cloudflare üzerinden SSL/TLS yapılandırması:

# Dashboard > SSL/TLS > Overview

Şifreleme Modu:
- Off: SSL yok (önerilmez)
- Flexible: Cloudflare-ziyaretçi arası SSL (origin HTTP)
- Full: Origin'de self-signed sertifika
- Full (Strict): Origin'de geçerli sertifika (önerilen)

Origin Sertifikası Oluşturma

hljs bash
# Cloudflare Origin CA sertifikası
# Dashboard > SSL/TLS > Origin Server > Create Certificate

# Sertifikayı sunucuya kur
sudo mkdir -p /etc/ssl/cloudflare
sudo nano /etc/ssl/cloudflare/origin.pem    # Sertifika
sudo nano /etc/ssl/cloudflare/origin-key.pem # Özel anahtar

# Nginx yapılandırması
server {
    listen 443 ssl;
    server_name example.com;
    
    ssl_certificate /etc/ssl/cloudflare/origin.pem;
    ssl_certificate_key /etc/ssl/cloudflare/origin-key.pem;
    
    # Sadece Cloudflare'den gelen bağlantıları kabul et
    # (Cloudflare IP listesi yukarıda)
}

Cloudflare API Kullanımı

Cloudflare API ile otomasyon yapabilirsiniz:

hljs bash
# API Token oluşturma
# Dashboard > My Profile > API Tokens > Create Token

# Zone bilgilerini al
curl -s "https://api.cloudflare.com/client/v4/zones" \
  -H "Authorization: Bearer API_TOKEN" | jq '.result[] | {name, id}'

# DNS kayıtlarını listele
curl -s "https://api.cloudflare.com/client/v4/zones/ZONE_ID/dns_records" \
  -H "Authorization: Bearer API_TOKEN" | jq '.result[] | {name, type, content}'

# DNS kaydı ekle
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/dns_records" \
  -H "Authorization: Bearer API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"type":"A","name":"sub","content":"1.2.3.4","proxied":true}'

# Cache temizle
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache" \
  -H "Authorization: Bearer API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"purge_everything":true}'

Performans Optimizasyonu

Minification ve Sıkıştırma

# Dashboard > Speed > Optimization

Auto Minify: JavaScript, CSS, HTML
Brotli: On
Early Hints: On
HTTP/2: On
HTTP/3 (QUIC): On

Rocket Loader

JavaScript dosyalarının asenkron yüklenmesini sağlar:

# Dashboard > Speed > Optimization > Rocket Loader
Rocket Loader: On

REXE + Cloudflare En İyi Uygulamalar

  1. Çift katmanlı koruma: Path Panel + Cloudflare WAF
  2. Origin IP gizleme: Cloudflare proxy + iptables kısıtlaması
  3. SSL Full Strict: Origin sertifikası ile uçtan uca şifreleme
  4. Rate Limiting: API endpoint'leri için istek sınırlaması
  5. Bot Management: Kötü niyetli botları filtreleme
  6. Cache optimizasyonu: Statik içerik için CDN cache

Cloudflare Free planı bile güçlü DDoS koruması sunar. Pro ve Business planları daha gelişmiş WAF kuralları ve öncelikli destek sağlar.

Sorun Giderme

hljs bash
# Cloudflare bağlantı kontrolü
curl -sI https://example.com | grep -i 'cf-ray\|server\|cf-cache'

# DNS propagasyon kontrolü
dig +trace example.com

# SSL sertifika kontrolü
openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -dates

# Cloudflare hata kodları
# 520: Web sunucusu bilinmeyen hata döndürüyor
# 521: Web sunucusu kapalı
# 522: Bağlantı zaman aşımı
# 523: Origin erişilemiyor
# 524: Zaman aşımı oluştu

Sonuç

Cloudflare entegrasyonu, REXE sunucunuz için güçlü bir DDoS koruma katmanı, CDN performansı ve WAF güvenliği sağlar. DNS yapılandırması, origin IP gizleme ve WAF kurallarını doğru şekilde ayarlayarak sunucunuzu kapsamlı bir şekilde koruyabilirsiniz.