ProxyTracer: Блокировщик VPN и прокси

:information_source: Резюме Обнаружение и блокировка трафика VPN, Tor и прокси-серверов во время регистрации пользователей, входа в систему и/или глобально с использованием API ProxyTracer.
:hammer_and_wrench: Ссылка на репозиторий https://github.com/ProxyTracer/discourse-proxytracer
:open_book: Руководство по установке Как установить плагины в Discourse

Этот плагин использует API ProxyTracer для обнаружения и блокировки трафика VPN, Tor и прокси-серверов в Discourse.

Возможности

  • Предоставляет гибкий контроль над блокировкой пользователей VPN, Tor и прокси-серверов при регистрации новых пользователей, аутентификации существующих пользователей или глобально для всех посетителей сайта. Если вы допускаете наличие у пользователей VPN, Tor и прокси-серверов прав на чтение вашего форума, вы можете сэкономить запросы к API и включить защиту только для регистрации и аутентификации пользователей.
  • Использует кэширование для хранения результатов недавних проверок IP-адресов, что снижает количество запросов к API и уменьшает задержки. Вы можете настроить срок хранения результатов проверки IP-адреса в настройках.
  • В случае тайм-аута API или сбоя сети плагин приоритизирует доступ пользователей, чтобы предотвратить массовую блокировку. Это поведение можно изменить через настройки.
  • Встроенная поддержка точного добавления IP-адресов и подсетей CIDR в белый список.

Настройка

  1. Получите стандартный API-ключ в панели управления ProxyTracer.
  2. Перейдите в панель администрирования Discourse: Администрирование → Плагины → ProxyTracer, чтобы найти настройки ProxyTracer.
  3. Введите ваш API-ключ в поле API-ключ ProxyTracer.
  4. Включите параметры защиты, переключив Включено при регистрации, Включено при входе и/или Включено для всех посетителей.
  5. Добавьте доверенные IP-адреса или диапазоны CIDR в список Белый список IP-адресов.
  6. (Опционально) Отрегулируйте тайм-аут API и лимиты времени кэширования Redis в соответствии с требованиями трафика вашего сервера.
  7. (Опционально) Настройте сообщение о блокировке, которое отображается заблокированным пользователям. Например, вы можете добавить инструкции по контакту с администрацией сайта, если пользователь считает, что блокировка необоснованна и он не использует прокси, Tor или VPN для доступа к сайту.

Настройки

Включает таблицу настроек и их описаний

Название Описание
Тайм-аут API (мс) Время ожидания ответа от API перед истечением срока ожидания.
Длительность кэша (часы) Время хранения IP-адреса перед повторной проверкой через API.
Открыть при ошибке Если API аварийно завершает работу или истекает время ожидания, разрешить пользователю регистрацию/вход в любом случае, чтобы предотвратить блокировку всех пользователей.
Включено при регистрации Блокировать прокси и VPN, когда новый пользователь пытается зарегистрироваться.
Включено при входе Блокировать прокси и VPN, когда существующий пользователь пытается войти в систему.
Включено для всех посетителей Блокировать прокси и VPN от доступа или просмотра любой страницы форума. (Предупреждение: это проверяет каждого посетителя и значительно увеличивает использование квоты API).
Сообщение о блокировке Точное сообщение об ошибке, отображаемое пользователю при блокировке.
Белый список IP-адресов IP-адреса или диапазоны CIDR (например, 192.168.1.0/24), которые строго разрешены для обхода блокировки.

Настройка сети: Cloudflare и обратные прокси

:warning: Для эффективной работы ProxyTracer приложение Discourse должно получать настоящий IP-адрес клиента.

Чтобы обеспечить правильную передачу IP-адреса, вы можете следовать этим подробным инструкциям.

Экстренный доступ

Если вы заблокировали себя, вы можете восстановить доступ, выполнив эти простые шаги.


Если вы хотите протестировать функциональность, вы можете зарегистрироваться в ProxyTracer и получить бесплатные кредиты API для тестирования.

4 лайка

кредиты сбрасываются каждый следующий месяц?

Вы спрашиваете о бесплатном кредите при регистрации? Если так, то это одноразовое пополнение.

Разве это не сводит на нет всю суть плагина? Любой может использовать безопасный режим.

1 лайк

Это зависит от ситуации. Существует настройка сайта, позволяющая отключить безопасный режим, что полезно для компонента с ограниченным доступом к темам и других компонентов/плагинов, которые пользователям не следует легко отключать таким образом (реклама, ограничение доступа для гостей и т. д.). Однако, если вы не авторизованы, это также затруднит использование безопасного режима администраторами. Я думаю, что они всё ещё могут включить его, используя вход в систему как администратор.

Для этого плагина, думаю, безопасный режим не поможет. Безопасный режим отключает только фронтенд-часть плагинов, а этот плагин написан на 100% на Ruby. Поэтому я не думаю, что отключение JavaScript-кастомизаций будет полезным. Этот факт, а также то, что плагин включает файл about.json, как будто он является компонентом темы, вызывает у меня некоторый скептицизм. Но в конечном счёте каждый сам отвечает за код, который устанавливает на своём форуме.

2 лайка

Вы абсолютно правы в этом, я могу подтвердить это на основе собственных тестов с только что запущенным экземпляром Discourse. Я обновил документацию инструкциями, которые действительно работают: вход на сервер и ручное отключение дополнения:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.proxytracer_enabled = false
exit
exit

Я подтверждаю, что безопасный режим недоступен, когда включена настройка «Включено для всех посетителей», и кто-то пытается получить доступ к безопасному режиму, подключаясь через VPN/прокси.

Действительно, about.json избыточен для стандартных плагинов, я удалил его из репозитория.

Спасибо за всю вашу обратную связь @Moin. Если у вас есть другие замечания или предложения, не стесняйтесь оставлять их здесь. Код полностью открыт, и любой вклад приветствуется: GitHub - ProxyTracer/discourse-proxytracer.

@ProxyTracer При попытке входа через Cloudflare Warp возвращается «неизвестная ошибка», а не сообщение о блокировке.

Отличное замечание! Это должно быть исправлено в версии 0.1.1. Не могли бы вы подтвердить, что обновление решает проблему?

1 лайк