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

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

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

Возможности

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

Настройка

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

Настройки

Таблица настроек и их описаний:

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

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

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

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

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

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


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

3 лайка

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

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

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

1 лайк

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

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

1 лайк

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

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

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

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

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