Skip to Content

Flarum

Flarum için resmi ProxyTracer entegrasyonu. Bu uzantı topluluğunuza kurumsal düzeyde IP istihbaratı getirir; bilinen VPN'leri, proxy'leri, veri merkezlerini ve Tor çıkış düğümlerini otomatik olarak tespit ederek kayıt olmalarını, giriş yapmalarını veya Flarum forumunuzu tamamen görüntülemelerini engelleme seçeneği sunar.

Kaynak kodunun tamamı GitHub üzerinde bulunabilir. Uzantı Packagist üzerinden dağıtılmaktadır.

Özellikler

  • Yöneticilerin yeni kullanıcı kayıtları, mevcut kullanıcı girişleri veya genel olarak tüm site ziyaretçileri için IP doğrulamasını zorunlu kılmasına olanak tanıyan ayrıntılı denetim.
  • Flarum'un yerel Laravel Cache API'sini kullanan yerleşik önbellekleme, son IP adresi değerlendirmelerini saklayarak harici API çağrılarını büyük ölçüde azaltır ve sıfır gecikme sağlar.
  • API zaman aşımı veya ağ arızası durumunda uzantı, geniş çaplı erişim engellemelerini önlemek için kullanıcı erişimine öncelik verir (fail-open). Bu davranış ayarlardan değiştirilebilir.
  • Tam IP ve CIDR alt ağ beyaz listesi (whitelist) için yerleşik destek (ör. 192.168.1.0/24).

Kurulum

  1. Sunucunuza SSH ile bağlanın ve Flarum kök dizininize gidin (composer.json dosyanızın bulunduğu dizin):
    cd /var/www/flarum
  2. Uzantıyı Composer ile yükleyin:
    composer require proxytracer/flarum-proxytracer
  3. Yeni frontend varlıklarını derlemek için Flarum önbelleğini temizleyin:
    php flarum cache:clear

Yapılandırma:

  1. ProxyTracer Kontrol Panelinden standart bir API anahtarı edinin.
  2. Ayarlar penceresini açmak için Flarum yönetim panelinize gidin: Yönetici → Özellikler → ProxyTracer.
  3. API anahtarınızı API Key alanına girin.
  4. Block Signups, Block Logins ve/veya Block All Site Access seçeneklerini açarak koruma parametrelerini etkinleştirin.
  5. Güvenilir IP'leri veya CIDR aralıklarını IP Whitelist alanına (her satıra bir tane) ekleyin.
  6. (İsteğe bağlı) API zaman aşımını ve Önbellek Süresi sınırlarını sunucunuzun özel trafik gereksinimlerine göre ayarlayın.
  7. (İsteğe bağlı) Engellenen kullanıcılara gösterilecek Engelleme Mesajını özelleştirin. Örneğin, engellemenin hatalı olduğunu düşünen kullanıcılar için site yönetimiyle iletişime geçme yönergeleri ekleyebilirsiniz.

Settings Screenshot

Ağ Yapılandırması: Cloudflare ve Ters Proxy'ler

ProxyTracer'ın doğru çalışabilmesi için Flarum uygulamasının gerçek istemci IP adresini alması gerekir. Altyapınız Cloudflare veya başka bir ters proxy kullanıyorsa, Flarum varsayılan olarak proxy düğümünün IP adresini (Cloudflare edge sunucuları gibi) kaydedebilir ve bu da ProxyTracer'ın tespitlerini geçersiz kılar.

Doğru IP iletimini sağlamak için lütfen sunucu mimarinize uygun aşağıdaki yapılandırma yönergelerini izleyin.

Doğrudan Cloudflare Entegrasyonu (Standart Kurulum)

Flarum sunucunuz doğrudan internete bağlıysa ve Cloudflare'i yalnızca DNS ve edge proxy için kullanıyorsa, uzantının yerleşik Cloudflare bypass özelliğini kullanabilirsiniz.

ProxyTracer Flarum ayarları içinde Extract IPs from Cloudflare Headers seçeneğini etkinleştirmeniz yeterlidir.

ProxyTracer, gerçek istemci IP'sini Cloudflare'in özel CF-Connecting-IP başlığından otomatik olarak çıkaracaktır. Not: Bu ayarı yalnızca sunucunuz doğrudan Cloudflare'e bakıyorsa etkinleştirin. Cloudflare kullanılmayan bir kurulumda bunu açmak, kötü niyetli kullanıcıların IP başlıklarını taklit ederek kısıtlamaları atlamasına neden olabilir.

Çok Katmanlı Proxy Mimarisi (Cloudflare + Yerel Ters Proxy)

Bu senaryo, Flarum sunucunuz Cloudflare'in arkasında yerel bir sunucu yönetim paneli veya ters proxy (ör. Nginx Proxy Manager, CloudPanel, Traefik, Plesk) üzerinden yönlendirildiğinde geçerlidir. Çok katmanlı bir ters proxy mimarisinde basit bir anahtar yeterli olmaz; çünkü trafik Flarum'a doğrudan Cloudflare tarafından değil, yerel ağ arayüzünüz tarafından iletilir.

Yerel ters proxy'nizi, gerçek istemci IP'sini CF-Connecting-IP başlığından çıkaracak şekilde yapılandırmalısınız; ancak bu işlem yalnızca güvenilir Cloudflare IP adreslerinden gelen trafik için yapılmalıdır. Kaynağı doğrulamadan bu başlığı doğrudan iletmek, kötü niyetli kullanıcıların IP adreslerini taklit ederek hız sınırlarını ve yasakları atlamasına yol açar.

Nginx Örneği: İlk olarak, server bloğu yapılandırmanızda (location bloğunun dışında) Cloudflare IP aralıklarını güvenilir proxy'ler olarak tanımlayın. Bu IP'leri Nginx düzeyinde tanımlamak en yüksek hız ve güvenlik seviyesini sağlar.
# IPv4 Cloudflare IP'leri, bkz. [https://www.cloudflare.com/ips/](https://www.cloudflare.com/ips/) 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; # IPv6 Cloudflare IP'leri set_real_ip_from 2405:b500::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2c0f:f248::/32; set_real_ip_from 2a06:98c0::/29; real_ip_header CF-Connecting-IP;

Ardından location / yönergenizi bulun. Yukarıdaki yapılandırma sayesinde Nginx, yalnızca istek gerçekten Cloudflare üzerinden geçmişse $remote_addr değişkenini gerçek istemci IP'sine güvenle çözecektir. IP iletme başlıklarınızı aşağıdaki gibi düzenleyin:

location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ... }

Yapılandırmayı kaydedin ve Nginx servisinizi yeniden yükleyin (systemctl reload nginx).

Acil Durum Erişimi

💡
Erişiminiz mi kesildi? ProxyTracer'ı yapılandırırken yanlışlıkla kendi IP adresinizi engellerseniz (örneğin o sırada bir VPN'e bağlıysanız ve "Block All" seçeneğini açtıysanız), uzantıyı doğrudan SSH üzerinden devre dışı bırakarak erişimi yeniden kazanabilirsiniz:
cd /var/www/flarum php flarum extension:disable proxytracer-proxytracer php flarum cache:clear
(Docker kullanıyorsanız bu komutları PHP konteynerinizin içinde çalıştırın). Alternatif olarak veritabanı üzerinden devre dışı bırakabilirsiniz: settings tablonuzu açın, proxytracer.block_all anahtarını bulun, değerini 0 yapın ve php flarum cache:clear komutunu çalıştırın.

Lisans

Bu yazılım GNU Affero Genel Kamu Lisansı v3.0 (AGPLv3) kapsamında lisanslanmıştır. Tüm ayrıntılar için LICENSE dosyasına bakın.

Son güncelleme tarihi