Защита Прячем IP сервера

Neo`

Последний из атеистов
VIP
Старожил I степени
Сообщения
59
Розыгрыши
0
Репутация
0
Реакции
33
Баллы
875
Хроники
  1. Interlude
Приветствую наше драгоценное сообщество! Вопрос у меня следующий - пришло понимание, что "светить" настоящий IP auth и gameserver - так себе затея (потому, что зная реальный IP auth и гейм-сервера - его легко можно заддосить до этапа, когда хостинг "попросит" проект "пройти на выход с вещами").
Соот-но есть идея "скрыть" реальные ипы за прокси (да, да, я знаю, что прокси тоже заддосят и "попросят на выход", но во-первых - их можно просто выключить и переждать атаку, во-вторых - если попросят на выход прокси - это не так критично, как если попросят на выход сервер на котором крутится PTS).
Реализаций этой идеи - как пальцев на ногах у черепашки ниндзя (два):

1. конструкция iptables по типу:
Код:
iptables -t nat -A PREROUTING -p tcp --dport 2106 -j DNAT --to-destination Y.Y.Y.Y:2106
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 2106 -j SNAT --to-source X.X.X.X:1024-32000
Плюсы этой реализации - ничего, кроме чистого линупса, на прокси не требуется - всё реализуется стандартными средствами и работать будет "быстро".

2. это relative-proxy NGINX (подробнее об этом можно почитать )
Плюсы - это вероятно тоже работает, минусы - для этого потребуется установка и конфигурация nginx, что в целом не сложно, но вариант 1 - ещё проще.

Хочу задать вопрос знатокам - какие подводные камни могут ждать в этих реализациях? Будут ли реальные "плюсы" от nginx или вариант с iptables - вполне себе решение которые имеет право на жизнь?
 

Все нюансы только при высокой нагрузке. С Iptables, например, нельзя нормально балансировать, с nginx - без проблем.
 
Приветствую наше драгоценное сообщество! Вопрос у меня следующий - пришло понимание, что "светить" настоящий IP auth и gameserver - так себе затея (потому, что зная реальный IP auth и гейм-сервера - его легко можно заддосить до этапа, когда хостинг "попросит" проект "пройти на выход с вещами").
Соот-но есть идея "скрыть" реальные ипы за прокси (да, да, я знаю, что прокси тоже заддосят и "попросят на выход", но во-первых - их можно просто выключить и переждать атаку, во-вторых - если попросят на выход прокси - это не так критично, как если попросят на выход сервер на котором крутится PTS).
Реализаций этой идеи - как пальцев на ногах у черепашки ниндзя (два):

1. конструкция iptables по типу:
Код:
iptables -t nat -A PREROUTING -p tcp --dport 2106 -j DNAT --to-destination Y.Y.Y.Y:2106
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 2106 -j SNAT --to-source X.X.X.X:1024-32000
Плюсы этой реализации - ничего, кроме чистого линупса, на прокси не требуется - всё реализуется стандартными средствами и работать будет "быстро".

2. это relative-proxy NGINX (подробнее об этом можно почитать )
Плюсы - это вероятно тоже работает, минусы - для этого потребуется установка и конфигурация nginx, что в целом не сложно, но вариант 1 - ещё проще.

Хочу задать вопрос знатокам - какие подводные камни могут ждать в этих реализациях? Будут ли реальные "плюсы" от nginx или вариант с iptables - вполне себе решение которые имеет право на жизнь?
Все что вы описали не будет скрывать реальный IP игрового сервера. Почему?

Протокол клиента учитывает чтобы можно было посылать реальный IP через шифрованные пакеты логин сервера. То есть, даже если вы установите прокси через другую систему, ваш логин сервер всеравно выдаст где и как (IP и порт) клиент должен будет подключаться.

Как сформулировать проблему? Нужно расшифровать пакет от логин сервера, поставить IP прокси, зашифровать пакет и отослать на клиент. Приэтом, нужно также понимать что-бы когда клиент соединится с прокси, он мог соединиться с тем игровым сервером который был отослан ранее (тут может быть много игровых серверов с различными IP).

В своем проекте у меня уже имеется прокси которая все это умеет, даже более. Посмотрите тут Прокси даже замещает шифрование от игровых серверов, так что вы просто не будете знать играете вы на реальном сервере или нет. Моя прокси работает только с клиентом и серверами High-Five (тестировал как на своем сервере так и L2J). Для поддержки других протоколов нужно переписывать подписи всех пакетов.
 
Все что вы описали не будет скрывать реальный IP игрового сервера. Почему?

Протокол клиента учитывает чтобы можно было посылать реальный IP через шифрованные пакеты логин сервера. То есть, даже если вы установите прокси через другую систему, ваш логин сервер всеравно выдаст где и как (IP и порт) клиент должен будет подключаться.

Как сформулировать проблему? Нужно расшифровать пакет от логин сервера, поставить IP прокси, зашифровать пакет и отослать на клиент. Приэтом, нужно также понимать что-бы когда клиент соединится с прокси, он мог соединиться с тем игровым сервером который был отослан ранее (тут может быть много игровых серверов с различными IP).

В своем проекте у меня уже имеется прокси которая все это умеет, даже более. Посмотрите тут Прокси даже замещает шифрование от игровых серверов, так что вы просто не будете знать играете вы на реальном сервере или нет. Моя прокси работает только с клиентом и серверами High-Five (тестировал как на своем сервере так и L2J). Для поддержки других протоколов нужно переписывать подписи всех пакетов.
Фигасе как завёрнуто. Тогда моё сообщение выше не имеет ничего общего с линейкой :)
 
В принципе можно сделать это так чтобы сам логин сервер отсылал IP от прокси (система которую вы описали в пункте #1) Я думаю это будет рабочий вариант только когда у вас один игровой сервер, но это не проверенно. Свой проект по прокси я сделал как раз с для поддержки более одного сервера.
 
Все что вы описали не будет скрывать реальный IP игрового сервера. Почему?

Протокол клиента учитывает чтобы можно было посылать реальный IP через шифрованные пакеты логин сервера. То есть, даже если вы установите прокси через другую систему, ваш логин сервер всеравно выдаст где и как (IP и порт) клиент должен будет подключаться.

Как сформулировать проблему? Нужно расшифровать пакет от логин сервера, поставить IP прокси, зашифровать пакет и отослать на клиент. Приэтом, нужно также понимать что-бы когда клиент соединится с прокси, он мог соединиться с тем игровым сервером который был отослан ранее (тут может быть много игровых серверов с различными IP).

В своем проекте у меня уже имеется прокси которая все это умеет, даже более. Посмотрите тут Прокси даже замещает шифрование от игровых серверов, так что вы просто не будете знать играете вы на реальном сервере или нет. Моя прокси работает только с клиентом и серверами High-Five (тестировал как на своем сервере так и L2J). Для поддержки других протоколов нужно переписывать подписи всех пакетов.
Так современные логин-серверы (hauthd и стоковый самописный auth от AdvExt это имеют на борту (настройки прокси для l2server) и я полагаю, что в этих "настройках" как раз подразумевается подмена IP о чём вы написали). Вопрос только в реализации самого туннеля для этого "прокси"... разве нет?
 
ПТС обычно роняют не ддосом. Куда дешевле уронить нпс сервер через уязвимости клиента, чем каким-то терабайтным байпассом или ботнетом.
Я бы советовал для начала разузнать о всех "нюансах" клиента, который используется под ПТС сервер.
 
Так современные логин-серверы (hauthd и стоковый самописный auth от AdvExt это имеют на борту (настройки прокси для l2server) и я полагаю, что в этих "настройках" как раз подразумевается подмена IP о чём вы написали). Вопрос только в реализации самого туннеля для этого "прокси"... разве нет?
Нужно определить какую именно проблему нужно нам решать.

Всего есть по крайней мере три IP. Прокси, игровой сервер и логин сервер. Я уже рассказал про то если у вас есть один игровой сервер, то можно все наладить как вы описали. Требуется только чтобы логин сервер выдавал IP от прокси.

Когда у вас много серверов, тут нужно будет установить прокси для каждого игрового сервера, так как нужен будет отдельный IP. Что уже будет напрягать. То чтo я разработал работает с множеством игровых серверов, то есть одна прокси может доддерживать много клиентов (клиент IP), как и много игровых серверов серверов (сервер IP), но один логин сервер (тут можно использовать load balancer между многими логин серверами если охота есть)
 
Нужно определить какую именно проблему нужно нам решать.

Всего есть по крайней мере три IP. Прокси, игровой сервер и логин сервер. Я уже рассказал про то если у вас есть один игровой сервер, то можно все наладить как вы описали. Требуется только чтобы логин сервер выдавал IP от прокси.

Когда у вас много серверов, тут нужно будет установить прокси для каждого игрового сервера, так как нужен будет отдельный IP. Что уже будет напрягать. То чтo я разработал работает с множеством игровых серверов, то есть одна прокси может доддерживать много клиентов (клиент IP), как и много игровых серверов серверов (сервер IP), но один логин сервер (тут можно использовать load balancer между многими логин серверами если охота есть)
Спасибо большое за объяснение нюансов работы auth сервера. Я совершенно точно не знал о том, что внутри шифрованных пакетов authd потенциально может показать реальный IP игрового сервера и об этом нужно знать.

ПТС обычно роняют не ддосом. Куда дешевле уронить нпс сервер через уязвимости клиента, чем каким-то терабайтным байпассом или ботнетом.
Я бы советовал для начала разузнать о всех "нюансах" клиента, который используется под ПТС сервер.
А как об этих "нюансах" узнать? Имеете ввиду попытаться "закрыть" возможность подключения не легитимных клиентов к серверу? (защита strix?)
 
Последнее редактирование модератором:
лучше через nginx/haproxy, в идеале с передачей реальных ip через proxy protocol, иначе будет проблема с топами/лимитами по ip и тд, главное что бы сборка позволяла
 
Спасибо большое за объяснение нюансов работы auth сервера. Я совершенно точно не знал о том, что внутри шифрованных пакетов authd потенциально может показать реальный IP игрового сервера и об этом нужно знать.


А как об этих "нюансах" узнать? Имеете ввиду попытаться "закрыть" возможность подключения не легитимных клиентов к серверу? (защита strix?)
Из опыта игрока, который любит патчи. Лучше выбрать АА или смарт. Стрикс - моя любимая защита. Ее легче всего обойти :)
 
Мне интересно какая может быть реализация защиты от DDOS'a с помощью прокси? Ведь прокси возмет на себя удар и все, через такую прокси теперь никто играть не может. То есть игровой сервер будет работать, только вот нужно будет поднимать другую прокси через еще один IP. Ну еще снова и опять.

Кстати, если использовать прямой перевод пакетов, как например при использовании IPtables, не случится ли тот же самый DDOS? Вроде все пакеты DDOS должны направляться на открытый порт, и таким образом будут пересылаться на сами игровые серверы. Что в принципе будет опасно для производительности серверов, так как они всеравно должны принимать хоть какой-то пакетный траффик.

лучше через nginx/haproxy, в идеале с передачей реальных ip через proxy protocol, иначе будет проблема с топами/лимитами по ip и тд, главное что бы сборка позволяла
Насчет передачи реальных IP адресов при использовании прокси. Это как возможно?
 
Мне интересно какая может быть реализация защиты от DDOS'a с помощью прокси? Ведь прокси возмет на себя удар и все, через такую прокси теперь никто играть не может. То есть игровой сервер будет работать, только вот нужно будет поднимать другую прокси через еще один IP. Ну еще снова и опять.

Кстати, если использовать прямой перевод пакетов, как например при использовании IPtables, не случится ли тот же самый DDOS? Вроде все пакеты DDOS должны направляться на открытый порт, и таким образом будут пересылаться на сами игровые серверы. Что в принципе будет опасно для производительности серверов, так как они всеравно должны принимать хоть какой-то пакетный траффик.


Насчет передачи реальных IP адресов при использовании прокси. Это как возможно?
не знаю что там в птс, но в многих сборках есть механизм передачи реальных адресов
к примеру - люцера
 
не знаю что там в птс, но в многих сборках есть механизм передачи реальных адресов
к примеру - люцера
Судя по отзыву тут реальный IP от клиента не передается. Я понимаю что многие сборки работают как раз на лимиты по IP адресу. Но в случае с прокси тут нужнo что-бы сама прокси могла сказать игровому серверу что вот такой-то клиент пришел от такого-то адреса. Так как соединение которое будет приходить от прокси всегда будет иметь IP адрес прокси. Я пока альтернативы не знаю как можно по другому, вот поэтому и спрашиваю.

Вот еще тут подтверждение:
 
Судя по отзыву тут реальный IP от клиента не передается. Я понимаю что многие сборки работают как раз на лимиты по IP адресу. Но в случае с прокси тут нужнo что-бы сама прокси могла сказать игровому серверу что вот такой-то клиент пришел от такого-то адреса. Так как соединение которое будет приходить от прокси всегда будет иметь IP адрес прокси. Я пока альтернативы не знаю как можно по другому, вот поэтому и спрашиваю.

Вот еще тут подтверждение:
передаётся, на форуме этернити даже скрипт видел для автонастройки под 11 дебиан

p.s. не уверен что линк рабочий, мб раздел доступен только для клиентов
 
Почитал далее что есть Proxy Protocol и он поддерживает передачу IP клиента. То есть в сборке должен быть способ работы с прокси на уровне соединения от сети который поддерживает такую штуку. В принципе неплохо.

Можно кстати почитать тут как настроить HAProxy На Ngix вроде такой штуки нет.
 
Почитал далее что есть Proxy Protocol и он поддерживает передачу IP клиента. То есть в сборке должен быть способ работы с прокси который поддерживает такую штуку. В принципе неплохо.

Можно кстати почитать тут как настроить HAProxy На Ngix вроде такой штуки нет.
да, сборка должна поддерживать это дело
в nginx по тому же протоколу всё передаётся
 
да, сборка должна поддерживать это дело
в nginx по тому же протоколу всё передаётся
Нашел еще описание самого протокола, достаточно просто даже самому все сделать и привинтить так как формат первого пакетa в соедиединении достаточно прост для обоих версий :

Насчет Nginx тут немного напутанно, но для смелых можно посмотреть тут

В любом случае HAProxy или Nginx будут поддерживать только один игровой сервер, что я и описал ранее. Но еще не понятно какое будет поведение прокси при ситуации DDOS.
 
Нашел еще описание самого протокола, достаточно просто даже самому все сделать и привинтить так как формат первого пакетa в соедиединении достаточно прост для обоих версий :

Насчет Nginx тут немного напутанно, но для смелых можно посмотреть тут

В любом случае HAProxy или Nginx будут поддерживать только один игровой сервер, что я и описал ранее. Но еще не понятно какое будет поведение прокси при ситуации DDOS.
с nginx тебе по идее в том же формате приходит, это вроде общий формат
 
с nginx тебе по идее в том же формате приходит, это вроде общий формат
Я понимаю что все они они будут использовать один и тот же протокол (их на самом деле двe версии). Я про то что как такие вот прокси будут полезны.
 
Назад
Сверху