Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

.htaccess allow only для конкретной страны

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Привет. Нужен совет.

Есть сайт на LAMP (локальный интернет магазин на опенкарт). После очередной индексации поисковиками фиксируется дикая активность с роийских и китайских IP.

Начали масово регистрировать юзеров, но это полечилось капчей. Решил что наверное лучше всего футболить этих друзяшек потому нагуглилось решение заблочить пул китая и рашки через htaccess. Поскольку мир мне тоже не особо то нужен (в этом и вопрос) решил сделать deny всем кроме пула из нужного региона, но теперь не понятно будет ли нормально индексироваться ресурс гуглом как повлияет это на сторонние сервисы типа пикселя и т.д. В общем если кто сталкивался с подобным поделитесь подводными камнями.

P.S: хостится это дело на VPS (ubuntu 16.04) но помимо LAMP там еще всякие вещи крутятся (почтовый сервер, ssh тунели, etc) так что если есть варианты что бы блочить нежелательные конекшены средствами линукса то буду признателен если подскажете.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Кстати, от массовой регистрации юзверей мне в своё время помогла фильтрация одноразовых почтовых ящиков. Но я это лапками делал, по вручную собранной таблице.

Для проверки имейлов еще есть специальные сервисы типа такого:
www.mailgun.com/...​alidation/email-validator

Халява только первые 100 в месяц. А вот за алгоритмы сказать сложно. Бывают перегруженные сервера, которые хорошо если с третьей попытки отзовутся. Есть случаи что приходится саппортом валидировать, особенно когда у компаний свой антиспам, обученный какими-нить доморощеными SEOшниками

Если использовать платный Mailgun, то там в платных планах включено 1000-5000 validations.

Используйте бесплатный cloudflare
Он и ботов чуть отсеет и страну в хттп заголовках возврашает и от атак помагает

Как вариант — фронтить Nginx-ом и использовать готовый велосипед:
nginx.org/...​gx_http_geoip_module.html на базе MaxMind
admins.su/...​m-iz-nezhelatelnyx-stran
С обновлением актуальной БД принадлеждности ip-ов странам — проблем не должно быть.
Трафик разрулить можно на уровне конфига Nginx без изменения кода самого приложения. Имея переменные $geoip_country_code и $geoip_country_name можно отрулить на страницу-заглушку для клиентов из нежелательного региона + можно разрешить серфинг/индексацию для поисковых ботов по USER_AGENT. Блочить вполне легальный http трафик на уровне файервола не совсем корректно — замахаешься искать в логах ответы на вопросы, если не догадаешься заглянуть в конфиг iptables, такой трафик приемлемо блочить на уровне файервола в случае атак, чтоб не засирало логи и не нагружало Nginx|Apache или что там на раздаче стоит.
P.S.: Если таки нужно блочить на уровне iptables — можно опять же кидать в syslog или какой другой log сообщение об ошибке и натравить на этот лог-файл fail2ban чтоб избавиться от ручной работы и не сильно раздувать таблицы в файерволе, что непременно скажется на производительности при огромном размере таблиц.

Я своим тупо по IP блочу прямо на файрволе. Дёшево и сердито. Проблема в том, что принадлежность диапазонов меняется, надо регулярно переписывать.
habr.com/post/214055

В Cloudflare разве нет доп фильтров по геолокации?

Приветствую, для получения IP использую сайт www.ip2location.com/free/visitor-blocker там есть варианты под разные конфиги (апач, iptables, etc). У меня все сделано на уровне iptables. Как будут работать другие сервисы, если разрешить только одну страну, трудно сказать, высока вероятность того, что может отвалится что-то.

Я бы лучше сделал все на уровне .htaccess, добавив дополнительно подсети того же гугла для индексации и тех, кто нужен.

Есть возможность регулярного апдейта скриптом?

лично у меня такой необходимости нет, пока не пригорело. Просто у меня задача наоборот — запретить пользователям, а там под iptables только на INPUT на OUTPUT DROP-а нет)

Но быстрое гугление показало www.ip2location.com/free/downloader вижу там внизу есть wget и curl, но не вникал

А в чём смысл дропать output, если запрос будет забанен уже на инпуте?
Кстати, лично я не фанат дропа, предпочитаю REJECT. На случай если кого вменяемого отпугнул, это не повод завесить браузер в ожидании, даже если это робот.

Мискузи, темный попутал, даже в скрипт залез перепроверить) «iptables -A FORWARD -o ethX -d 2.16.154.0/24 -j DROP» цепочка форварда. Сейчас уже не помню, чем руководствовались, но между дропом и реджектом выбрали дроп.

Лично я бы сделал так. Пусть трафик идет без лимитов, это не будет нагружать сервер, а вот на странице регистрации в php определить страну и выдать чтото типа «Не*** шастать». Определить можно например так: sypexgeo.net/ru/download

тоже вариант. Потому как даже для одной России там порядка 13000+ записей, у меня только само правило применяется около двух минут )

Если хотите рубить по ip, сервисы типа maxmind (geoip) или взять какую-нибудь готовую бд, просто в .ht не выйдет. Обрезать нужно как минимум на уровне nginx, еще лучше iptables (одна из статей с гугла daenney.github.io/...​/geoip-filtering-iptables)

Підписатись на коментарі