ЗАКРЫТЬ
Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

^Место доступно для покупки - 3500 руб/мес^

Наши новости:

02-дек
17-апр
30-дек
29-дек

> Важная информация

Перед тем как создать тему или задать вопрос, ознакомьтесь с данной темой, там собраны наиболее распространенные уязвимости и способы устранения.
Так же не поленитесь воспользоваться поиском, вполне возможно, что ваш вопрос уже поднимался на форуме.
При создании новой темы уделите внимание ее названию, оно должно кратко описывать суть вашего вопроса/проблемы. Все вновь созданные темы с названиями "Помогите", "Объясните", "Подскажите" и т.д. будут удалены, а их авторы наказаны.
Раскрутка Counter-Strike 1.6

Whois Ban (боремся с прокси)

Статус пользователя SISA
сообщение 21.6.2019, 21:01
Сообщение #1
Стаж: 9 лет 3 месяца

Сообщений: 2740
Благодарностей: 2915
Полезность: 992

В виду большого количества тем и явной потребности в подобной системе, выкладываю свою наработку.

Что делает плагин ?

Через стандартный модуль sockets, он обращается на API сайта http://ip-api.com/ для получения Whois данных. К сожалению, альтернативных сайтов практически нет, т.к. все перешли на https, а предлагаемый AMX модуль такое не поддерживает (правда есть сторонние решения в виде модуля Curl, но об этом в другой раз).

Сайт ip-api.com имеет ряд ограничений на бесплатном тарифе (регистрация не требуется), по этому в плагине встроено кеширование, чтобы он по дружески относился к вашему серверу и сайту.

Что можно получить через Whois данные ?

В нашем случае, мы можем получить самое главное - это AS провайдера (вики), с которого заходит игрок. Проще говоря, нам не нужно определять диапазоны IP адресов и заниматься подобной дичью, а можем выдавать бан сразу по AS, отрубив всего провайдера целиком.

Подобную идею реализовал Lev и своем плагине СубнетБан, в виде отдельного амх модуля, но та разработка реально старая, а модуль на новых билдах серверов (в частности на линуксе), толком не работает.

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

Как это работает ?

При получении данных с Whois через Api, плагин их кеширует и сверяется со списком из файла whois_banlist.ini
Если AS игрока совпадает, он кикается.
В сам файли я уже добавил несколько AS хостингов и дата-центров из сообщения: https://c-s.net.ua/forum/topic90266.html?vi...t&p=1093799
Я предлагаю продолжить тему и публиковать IP адреса AS провайдеров игроков, которые играют через прокси. Я, по мере возможности, буду их добавлять и обновлять список.

Что такое Whois данные и что с ними делать ?

Самый простой способ получения Whois данных и AS по IP адресу здесь: https://2ip.ru/whois/
Отличить хостинг/дата-центр от домашнего провайдера достаточно легко. Многие указывают в данных слова Hosting, vds, и т.д.
Так же, практически всегда есть почта, которая и является сайтом провайдера или название фирмы, которое легко гуглится. С хостингов и дата-центров обычные игроки не заходят.

Минимальные требования: Amxmdox 1.8.3 и выше с поддержкой SOCK_NON_BLOCKING

Дополнительно:

В плагин добавлено логгирование, в тех случаях, когда не удается получить ответ от сайта или определить AS. Это бывает редко и я грешу на сам модуль sockets, т.к. тот же Curl справляется с более сложными задачами без проблем.

Отредактировал: SISA, - 22.6.2019, 15:37
Прикрепленные файлы:
Прикрепленный файл  whois_ban.zip ( 3,7 килобайт ) Кол-во скачиваний: 34
Прикрепленный файл  whois_ban_v2.zip ( 5,31 килобайт ) Кол-во скачиваний: 25
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 5 раз
   Цитировать сообщение
Статус пользователя vladboss
сообщение 21.6.2019, 21:40
Сообщение #2


Стаж: 8 лет 6 месяцев

Сообщений: 312
Благодарностей: 87
Полезность: 236

Еще один из вариантов жмяк.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя esterio
сообщение 21.6.2019, 21:44
Сообщение #3
Стаж: 7 лет
Город: Украина

Сообщений: 214
Благодарностей: 142
Полезность: 508

SISA,
К сожалению, альтернативных сайтов практически нет, т.к. все перешли на https, а предлагаемый AMX модуль такое не поддерживает (правда есть сторонние решения в виде модуля Curl, но об этом в другой раз)
Я как раз хотел бы и сказать про модуль grip от Inline. Он как раз умеет спокойно общаться по https без блока основного потока.
Также есть модуль http://aghl.ru/forum/viewtopic.php?f=19&p=24798 который умеет напрямую брать данные с whois без постороннего API.

SISA,
Цитата
Самый простой способ получения Whois данных и AS

Читал ваше сообщение и возник вопрос. А почему не хранить диапазон IPшников выдаваемый whois? Разве их диапазоны часто изменяются? Вопрос конешно глупый: но хотелось бы для себя уточнить


Нужно больше %
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 21.6.2019, 22:12
Сообщение #4
Стаж: 9 лет 3 месяца

Сообщений: 2740
Благодарностей: 2915
Полезность: 992

Цитата
Также есть модуль http://aghl.ru/forum/viewtopic.php?f=19&p=24798 который умеет напрямую брать данные с whois без постороннего API.


Он использует такой же Api, только от другого сайта, но работает по https. После установки его на Линукс сервер, я получил +20% к нагрузки + там есть ошибки (в теме на aghl о них писал).

Цитата
Читал ваше сообщение и возник вопрос. А почему не хранить диапазон IPшников выдаваемый whois? Разве их диапазоны часто изменяются? Вопрос конешно глупый: но хотелось бы для себя уточнить


Для этого есть база от maxmind https://dev.maxmind.com/geoip/geoip2/geolite2/ но разработчики AMX отказываются делать реализацию для её работы.

Цитата
Еще один из вариантов жмяк.


Опять же, там отдельный модуль Curl и Whois (о котором выше писал), что может вызвать страдания у перфекционистов. У меня же, все реализовано дефолтными возможностями с минимальным количеством кода. Но идея с проверкой через http://proxy.mind-media.com/block/ мне понравилась. Реализую в след.версии плагина.

Отредактировал: SISA, - 21.6.2019, 22:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя esterio
сообщение 21.6.2019, 23:10
Сообщение #5
Стаж: 7 лет
Город: Украина

Сообщений: 214
Благодарностей: 142
Полезность: 508

SISA,
Цитата
что может вызвать страдания у перфекционистов

честно говоря я за включение в стандартную поставку модулей либо curl либо grip. Парсить и генерить HTTP на сокетами то еще извращение как по мне. Хотя тот же curl внутри делает то же самое, но сам по себе стандарт очень многогранный, включая разные версии хттп, заголовки и много чего другого.
Цитата
Для этого есть база от maxmind https://dev.maxmind.com/geoip/geoip2/geolite2/

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

P.S. ваш плагин хороший не поймите неправильно. Я всего лишь хочу донести мысль о нужности использования специализированных модулей для HTTP запросов, которые обкатаны многими пользователями и имеют поддержку многих стандартов вокруг данного протокола.


Нужно больше %
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя SISA
сообщение 21.6.2019, 23:29
Сообщение #6
Стаж: 9 лет 3 месяца

Сообщений: 2740
Благодарностей: 2915
Полезность: 992

esterio,

Я сам давно пользуюсь Curl и безусловно это лучше, чем модуль sockets, но в текущей реализации акцент идет на дефолтные возможности амх.

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


Только Country и City. ASN не поддерживается.

Отредактировал: SISA, - 21.6.2019, 23:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 22.6.2019, 5:55
Сообщение #7


Иконка группы

Стаж: 9 лет

Сообщений: 3608
Благодарностей: 1698
Полезность: 1010

Serva4ok.ru
Меценат Меценат

отлично, но так скоро можно дойти до открытия собственного стороннего сервера регистрации игроков... что бы бане не обходили, либо на steam
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя SISA
сообщение 22.6.2019, 15:44
Сообщение #8
Стаж: 9 лет 3 месяца

Сообщений: 2740
Благодарностей: 2915
Полезность: 992

Добавил вторую версию плагина.

Из нового:

1. Сделал проверку на наличие Proxy с сайта: http://proxy.mind-media.com/block/ (идея взять из плагина Proxy/VPN check by juice)
2. Вывел некоторые настройки в тело файла whois_banlist.ini

Прогнал через сайт proxy.mind-media.com около 12 тысяч IP адресов реальных игроков. Из них около ~300 определились как Прокси, что свидетельствует об относительно большом проценте не нужных срабатываний. Очевидно, что туда попадают IP домашних провайдеров за рассылку спама и даже IP от яндекса там числятся как Proxy.

Короче сервис такой, на свой страх и риск, по этому по умолчанию он отключен. Так же, я постарался минимизировать ложные проверки, внедрив чек порта игрока на дефолтный 27005, ибо с прокси такого порта у игрока быть не должно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 4 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: