Skip to Content

Flarum

Flarum에 대한 공식 ProxyTracer 통합입니다. 이 확장 프로그램은 엔터프라이즈급 IP 인텔리전스를 커뮤니티에 제공하여 알려진 VPN, 프록시, 데이터 센터 및 Tor 노드를 자동으로 감지하고 이들이 등록, 로그인 또는 Flarum 포럼을 보는 것을 완전히 방지하는 옵션을 제공합니다.

전체 소스코드는 Github에서 확인하실 수 있습니다. 확장 프로그램은 Packagist를 통해 배포됩니다.

특징

  • 관리자가 신규 사용자 등록, 기존 사용자 인증 중 또는 모든 사이트 방문자에 대해 전역적으로 IP 검증을 시행할 수 있도록 세분화된 제어가 가능합니다.
  • Flarum의 기본 Laravel Cache API를 활용하는 내장 캐싱은 최근 IP 주소 평가를 저장하여 외부 API 호출을 대폭 줄이고 대기 시간을 보장합니다.
  • API 시간 초과 또는 네트워크 오류가 발생하는 경우 확장 프로그램은 사용자 액세스(페일오픈)에 우선순위를 두어 대규모 잠금을 방지합니다. 이 동작은 설정에서 전환할 수 있습니다.
  • 정확한 IP 및 CIDR 서브넷 화이트리스트(예: 192.168.1.0/24)에 대한 기본 지원이 제공됩니다.

설치

  1. SSH를 통해 서버에 액세스하고 Flarum 루트 디렉터리(composer.json이 있는 위치)로 이동합니다.
    cd /var/www/flarum
  2. Composer를 통해 확장 기능을 설치합니다.
    composer require proxytracer/flarum-proxytracer
  3. Flarum 캐시를 지워 새 프런트엔드 자산을 컴파일하세요.
    php flarum cache:clear

구성:

  1. ProxyTracer 대시보드에서 표준 API 키를 확보하세요.
  2. Flarum 관리 패널(관리자 → 기능 → ProxyTracer)로 이동하여 설정 모달을 엽니다.
  3. 'API Key' 필드에 API 키를 입력하세요.
  4. '가입 차단', '로그인 차단' 및/또는 '모든 사이트 액세스 차단'을 전환하여 보호 매개변수를 활성화하세요.
  5. 신뢰할 수 있는 IP 또는 CIDR 범위를 'IP 화이트리스트'(한 줄에 하나씩)에 추가하세요.
  6. (선택 사항) 서버의 특정 트래픽 요구 사항에 맞게 API 시간 초과 및 캐시 만료 제한을 조정합니다.
  7. (선택 사항) 차단된 사용자에게 표시되는 차단 메시지를 사용자 정의합니다. 예를 들어, 차단이 보증되지 않고 프록시나 VPN을 통해 사이트에 액세스하지 않는다고 판단되는 경우 사이트 관리팀에 문의하기 위한 지침을 추가할 수 있습니다.

Settings Screenshot

네트워크 구성: Cloudflare 및 리버스 프록시

ProxyTracer가 효과적으로 작동하려면 Flarum 애플리케이션이 실제 클라이언트 IP 주소를 받아야 합니다. 인프라가 Cloudflare 또는 다른 역방향 프록시를 활용하는 경우 Flarum은 기본적으로 프록시 노드의 IP 주소(예: Cloudflare의 에지 서버)를 기록하여 ProxyTracer의 작업을 신뢰할 수 없게 만들 수 있습니다.

정확한 IP 전달을 보장하려면 서버 아키텍처와 일치하는 아래 구성 지침을 따르십시오.

직접 Cloudflare 연동 (기본 설치)

Flarum 서버가 인터넷에 직접 연결하고 DNS 및 에지 프록시에만 Cloudflare를 활용하는 경우 확장 프로그램에 내장된 Cloudflare 우회 기능을 사용할 수 있습니다.

ProxyTracer Flarum 설정 내에서 Cloudflare 헤더에서 IP 추출을 켜기만 하면 됩니다.

ProxyTracer는 Cloudflare의 독점 CF-Connecting-IP 헤더에서 실제 클라이언트 IP를 자동으로 추출합니다. 참고: 서버가 Cloudflare를 직접 향하고 있는 경우에만 이 설정을 활성화하세요. Cloudflare가 아닌 설정에서 이 기능을 활성화하면 악의적인 사용자가 IP 헤더를 스푸핑하여 제한을 우회할 수 있습니다.

다중 계층 프록시 아키텍처 (Cloudflare + 로컬 리버스 프록시)

이는 Flarum 인스턴스가 Cloudflare 에 있는 로컬 서버 관리 패널이나 역방향 프록시(예: Nginx Proxy Manager, CloudPanel, Traefik, Plesk)를 통해 라우팅되는 경우에 적용됩니다. 다중 계층(또는 "이중") 역방향 프록시 아키텍처에서는 트래픽이 Cloudflare에 의해 직접 전달되는 것이 아니라 로컬 네트워크 인터페이스에 의해 Flarum으로 전달되기 때문에 간단한 토글만으로는 충분하지 않습니다.

'CF-Connecting-IP' 헤더에서 실제 클라이언트 IP를 추출하도록 로컬 역방향 프록시를 구성해야 합니다. 단, 신뢰할 수 있는 Cloudflare IP 주소에서 발생하는 트래픽에만 해당됩니다. 소스를 확인하지 않고 이 헤더를 무작정 전달하면 악의적인 사용자가 IP 주소를 스푸핑하여 속도 제한과 차단을 우회할 수 있습니다.

Nginx 예: 먼저, 서버 블록 구성(위치 블록 외부)에서 Cloudflare의 IP 범위를 신뢰할 수 있는 프록시로 정의하세요. Nginx 수준에서 이러한 IP를 하드코딩하면 최고 수준의 속도와 보안이 제공됩니다.
# IPv4 Cloudflare IP, [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 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;

다음으로 location / 지시문을 찾으세요. 위 구성으로 인해 Nginx는 이제 요청이 실제로 Cloudflare를 통과한 경우에만 '$remote_addr'을 실제 클라이언트 IP로 안전하게 확인합니다. IP 전달 헤더를 다음과 같이 수정하십시오.

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

구성을 저장하고 Nginx 서비스를 다시 로드합니다(systemctl reload nginx).

긴급 접근

💡
잠김? ProxyTracer를 구성하는 동안 실수로 자신의 IP 주소를 차단한 경우(예: 현재 VPN에 연결되어 있고 "모두 차단"이 활성화된 경우) SSH를 통해 직접 확장 프로그램을 비활성화하여 액세스를 다시 얻을 수 있습니다.
cd /var/www/flarum php flarum extension:disable proxytracer-proxytracer php flarum cache:clear
(Docker를 사용하는 경우 PHP 컨테이너 내에서 다음 명령을 실행하세요.) 또는 데이터베이스를 통해 비활성화할 수 있습니다. settings 테이블을 열고 proxytracer.block_all 키를 찾아 해당 값을 0으로 변경한 다음 php flarum cache:clear를 실행하세요.

라이센스

이 소프트웨어는 GNU Affero General Public License v3.0(AGPLv3)에 따라 라이센스가 부여되었습니다. 자세한 내용은 'LICENSE' 파일을 참조하세요.

최종 수정일: