Плагин позволяет полностью блокировать доступ к вашему форуму из определённых стран или сетей, например, для предотвращения мошенничества или соблюдения санкций.
Плагин использует базу данных MaxMindDB, которая уже доступна в Discourse.
Настройка
Включите плагин.
Добавьте все сети, которые нужно заблокировать, в geo_blocking_asn_blocklist. Префиксуйте номера символом AS, например AS12345.
Добавьте все страны и регионы, которые нужно заблокировать, в geo_blocking_country_region_blocklist. Поддерживаются следующие форматы:
Полное название страны (например: Belgium)
ISO-код страны (например: JP для Японии)
Полное название страны, за которым следует точка и название региона (например: Switzerland.Jura).
Я попробую это прямо сейчас. Как я мог это пропустить
Мне нужно заблокировать несколько стран и автономных систем, но по очевидным причинам я не могу использовать для этой задачи Varnish, как на других моих сайтах. Это решает эту головную боль, если сервис всё ещё работает.
Спасибо за разработку этого полезного плагина, Ричард.
Я внес несколько незначительных изменений, чтобы адаптировать его под свой случай: блокировку определённых URL для пользователей из определённых регионов. Что я сделал, так это в add_model_callback(:application_controller, :before_action) добавил дополнительные правила сопоставления с использованием request.fullpath, например:
Я обнаружил, что такая геоблокировка на уровне URL работает, если я открываю URL, вводя его напрямую в адресной строке браузера. Однако, если я перехожу по этому URL, кликнув по нему на главной странице Discourse, блокировка не срабатывает. (Но после нажатия F5 для обновления страницы она блокируется.)
Не могли бы вы дать мне какой-нибудь совет, как исправить эту проблему? Спасибо.
Вам также потребуется добавить код на Ember, который перехватывает маршрутизатор.
Однако, я считаю, что в данном случае вам следует выбрать другой подход. Этот плагин не предназначен для такой специфической фильтрации.
Вероятно, гораздо эффективнее будет создать отдельный плагин с механизмом добавления/удаления пользователей в группы на основе их геолокации. Тогда вы сможете использовать существующую безопасность групп для ограничения или предоставления доступа к определенным разделам форума.
Спасибо за подсказку. Я не учитывал выходные узлы и понятия не имею, где именно на соединениях они находятся. Для меня было достаточно информации «какой у меня IP», так как она совпадала с регионом/страной, для которой тестировалось географическое ограничение.
Итак, давайте перевернём ситуацию: я заблокировал зону, в которой нахожусь, не используя VPN. Я использую другое устройство, на котором могу тестировать как фиксированное, так и сотовое соединение, но всё равно ничего не происходит. Гео-блокировка, как ожидалось, при подключении не срабатывает.
Пожалуйста, имейте в виду, что прокси, VPN или Tor всегда смогут обойти подобные механизмы. Плагин не предназначен для блокировки таких средств. Географическая блокировка применяется либо по юридическим причинам, либо для ограничения доступа случайным посетителям.
Вы это сделали?
1 лайк
RGJ
(Richard - Communiteq)
Разделил(а) эту тему
12
Спасибо за этот отличный плагин.
Если его цель — предотвратить спам или доступ нежелательных стран к публичным страницам, может ли он также предотвратить сканирование вредоносными ботами в случае приватного экземпляра Discourse?
В какой-то мере и то, и другое, но это зависит от ситуации. Официально он блокирует нежелательные страны, но не делает различий между, вероятно, людьми и ботами.
Если ваш экземпляр приватный (т. е. требуется вход), то боты не могут получить к нему доступ в любом случае (если только они не были специально созданы для создания учетной записи и входа в систему).
У нас уже есть боты, которые создают учётные записи
Скраперы — это совсем другое дело, ведь они воруют контент. Спам-боты, которые являются проблемой на публичных инстансах, представляют точно такую же проблему для частных форумов. Вот почему мы используем ИИ для сканирования контента.
Для меня географическая блокировка отсекает значительную часть нежелательных звонков и попыток входа. Я могу её использовать, потому что у меня полностью финский форум [1], но глобальный форум, конечно, не может этого сделать.
Каждый «стучащийся» увеличивает нагрузку на веб-сервер, но Discourse отличается от мира PHP. Бот легко может вызвать эффект, похожий на DDoS-атаку на WordPress, и тогда географическая блокировка может стать частью стратегии защиты. Но Discourse, я полагаю, гораздо более устойчив к этому.
Однако против спам-ботов географическая блокировка не помогает, если необходимо разрешить доступ из всех стран.
переводчик может изменить это условие, если когда-нибудь это станет готовым к продакшену решением ↩︎
Спасибо за ваш ответ. Да, действительно, они не получат никаких данных, но я всё ещё вижу их в логах nginx, и они продолжают создавать нежелательные подключения. Поэтому я установил этот простой инструмент для блокировки подключений к VPS из определённых стран ещё до того, как они достигнут экземпляра Docker Discourse: GitHub - friendly-bits/geoip-shell: User-friendly and versatile geoblocker for Linux · GitHub
Да, это отличный инструмент. Обратите внимание, что он вызывает «жесткий» блок, тогда как плагин предоставляет вам красивое и настраиваемое сообщение, которое можно показывать заблокированным пользователям.