Skip to Content

Flarum

Oficjalna integracja ProxyTracer dla platformy Flarum. To rozszerzenie wprowadza zaawansowaną analizę adresów IP klasy enterprise do Twojej społeczności, automatycznie wykrywając znane sieci VPN, serwery proxy, centra danych i węzły Tor, a także dając możliwość blokowania rejestracji, logowania lub całego dostępu do forum Flarum.

Pełny kod źródłowy znajduje się na platformie GitHub. Rozszerzenie jest dystrybuowane za pośrednictwem serwisu Packagist.

Funkcje

  • Szczegółowa kontrola pozwalająca administratorom wymusić walidację IP podczas rejestracji nowych kont, logowania istniejących użytkowników lub globalnie dla wszystkich odwiedzających forum.
  • Wbudowana pamięć podręczna korzystająca z natywnego API Laravel Cache we Flarum przechowuje ostatnie wyniki oceny IP, drastycznie zmniejszając liczbę zapytań do zewnętrznego API i eliminując opóźnienia.
  • W przypadku przekroczenia limitu czasu API lub awarii sieci rozszerzenie stawia na dostępność dla użytkowników (fail-open), aby zapobiec masowym blokadom. Zachowanie to można zmienić w ustawieniach.
  • Wbudowana obsługa białej listy (whitelist) dla konkretnych adresów IP oraz podsieci CIDR (np. 192.168.1.0/24).

Instalacja

  1. Połącz się z serwerem przez SSH i przejdź do głównego katalogu instalacji Flarum (gdzie znajduje się plik composer.json):
    cd /var/www/flarum
  2. Zainstaluj rozszerzenie za pomocą Composera:
    composer require proxytracer/flarum-proxytracer
  3. Wyczyść pamięć podręczną Flarum, aby skompilować nowe zasoby frontendu:
    php flarum cache:clear

Konfiguracja:

  1. Pobierz standardowy klucz API z Panelu ProxyTracer.
  2. Przejdź do panelu administracyjnego Flarum: Admin → Rozszerzenia → ProxyTracer, aby otworzyć okno ustawień.
  3. Wklej swój klucz API w polu Klucz API.
  4. Włącz parametry ochrony, zaznaczając Blokuj rejestracje, Blokuj logowania i/lub Blokuj cały dostęp do witryny.
  5. Dodaj zaufane adresy IP lub zakresy CIDR do pola Biała lista IP (jeden wpis na linię).
  6. (Opcjonalnie) Dostosuj limit czasu API (timeout) oraz czas ważności pamięci podręcznej do specyfiki ruchu na Twoim serwerze.
  7. (Opcjonalnie) Dostosuj komunikat blokady wyświetlany zablokowanym użytkownikom. Możesz na przykład dodać instrukcję kontaktu z administracją witryny w przypadku podejrzenia fałszywego zablokowania.

Settings Screenshot

Konfiguracja sieciowa: Cloudflare i Reverse Proxy

Aby ProxyTracer działał efektywnie, aplikacja Flarum musi otrzymywać prawdziwy adres IP klienta. Jeśli Twoja infrastruktura korzysta z Cloudflare lub innego reverse proxy, Flarum może domyślnie rejestrować adres IP węzła proxy (np. serwerów brzegowych Cloudflare), uniemożliwiając poprawną pracę ProxyTracer.

Postępuj zgodnie z poniższymi instrukcjami konfiguracyjnymi odpowiadającymi architekturze Twojego serwera, aby zapewnić prawidłowe przekazywanie adresów IP.

Bezpośrednia integracja z Cloudflare (Instalacja standardowa)

Jeśli Twój serwer Flarum łączy się bezpośrednio z internetem i korzysta z Cloudflare wyłącznie do obsługi DNS i proxy brzegowego, możesz użyć wbudowanej w rozszerzenie obsługi nagłówków Cloudflare.

W ustawieniach ProxyTracer we Flarum wystarczy włączyć opcję Pobieraj adresy IP z nagłówków Cloudflare.

ProxyTracer automatycznie wyodrębni prawdziwy adres IP klienta z dedykowanego nagłówka CF-Connecting-IP. Uwaga: Włącz tę opcję wyłącznie wtedy, gdy Twój serwer komunikuje się bezpośrednio z Cloudflare. Włączenie jej w innym środowisku mogłoby pozwolić atakującym na omijanie ograniczeń poprzez fałszowanie nagłówków IP.

Architektura wielowarstwowego proxy (Cloudflare + lokalny reverse proxy)

Dotyczy sytuacji, gdy instancja Flarum działa za lokalnym panelem zarządzania serwerem lub reverse proxy (np. Nginx Proxy Manager, CloudPanel, Traefik, Plesk), który znajduje się za Cloudflare. W architekturze wielowarstwowego proxy samo włączenie opcji nie wystarczy, ponieważ ruch jest przekazywany do Flarum przez lokalny interfejs sieciowy, a nie bezpośrednio przez Cloudflare.

Musisz skonfigurować lokalne reverse proxy tak, aby wyodrębniało prawdziwy adres IP klienta z nagłówka CF-Connecting-IP, ale wyłącznie dla ruchu pochodzącego z zaufanych adresów IP Cloudflare. Bezwarunkowe przekazywanie tego nagłówka bez weryfikacji źródła pozwala złośliwym użytkownikom omijać limity i bany poprzez fałszowanie nagłówków IP.

Przykład Nginx: Najpierw zdefiniuj zakresy IP Cloudflare jako zaufane proxy w konfiguracji bloku serwera (poza blokiem location). Zdefiniowanie tych adresów IP na poziomie Nginx zapewnia najwyższą szybkość i bezpieczeństwo.
# Adresy IPv4 Cloudflare, zobacz [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; # Adresy IPv6 Cloudflare 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;

Następnie znajdź dyrektywę location /. Dzięki powyższej konfiguracji Nginx bezpiecznie przypisze zmiennej $remote_addr prawdziwy adres IP klienta tylko wtedy, gdy żądanie rzeczywiście przeszło przez Cloudflare. Zmodyfikuj nagłówki przekazywania IP w następujący sposób:

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

Zapisz konfigurację i przeładuj usługę Nginx (systemctl reload nginx).

Dostęp awaryjny

💡
Zostałeś zablokowany? Jeśli przypadkowo zablokujesz swój własny adres IP podczas konfigurowania ProxyTracer (np. jesteś połączony przez VPN i masz włączoną opcję „Blokuj wszystko”), możesz odzyskać dostęp, wyłączając rozszerzenie bezpośrednio przez SSH:
cd /var/www/flarum php flarum extension:disable proxytracer-proxytracer php flarum cache:clear
(Jeśli używasz Dockera, wykonaj te polecenia wewnątrz kontenera PHP). Alternatywnie możesz wyłączyć rozszerzenie w bazie danych: otwórz tabelę settings, znajdź klucz proxytracer.block_all, zmień jego wartość na 0 i uruchom php flarum cache:clear.

Licencja

To oprogramowanie jest objęte licencją GNU Affero General Public License v3.0 (AGPLv3). Pełną treść licencji znajdziesz w pliku LICENSE.

Ostatnia aktualizacja: