LINUX.ORG.RU

Port Forwarding

 ,


0

3

Добрый день, прогуглил весь интернет, но вопросы по этому поводу так и остались, в общем есть машина на Windows, перед ней нужно поставить экран, который в случае DDOS атак будет облегчать жизнь Windows машине. Трафик фильтруется Арборами провайдера, но тем не менее нелегетимный трафик все равно проходит. Собственно выход вижу такой: поставить Ubuntu (к примеру, с ней просто я лучше всего знаком) и фильтровать трафик при помощи iptables, все что удовлетворяет условиям отправлять на Win машину. Проблема в понимании технологий. К примеру делаем порт-форвардинг, меняем пакету адрес назначения, как я понимаю, но адрес отправителя останется тот же, и вин машина ответит по этому адресу. Нормально ли к этому отнесется клиент? Ну и как понимаю, раз в пакете останется адрес клиента, то Win машина будет видеть реальные адреса?

Если есть какие-то альтернативы, то можно рассмотреть и их.

UPD: Защищать нужно TCP сервис (2 порта)


Нормально ли к этому отнесется клиент?

В общем случае нормально. А так, зависит от протокола, может в нём отдельно передаётся адрес сервера.

Ну и как понимаю, раз в пакете останется адрес клиента, то Win машина будет видеть реальные адреса?

Да будет.

Если хочется сильно заморачиваться, то ведь можно делать и без DNAT, чтобы Линукс машина не держала на себе этот «белый»-ip. Можно через proxy-arp или через бридж интерфейсов. Правда, тогда к ней (к Линуксу) из интерента не подключится.

mky ★★★★★
()
Ответ на: комментарий от mky

В общем случае нормально. А так, зависит от протокола, может в нём отдельно передаётся адрес сервера.

Интересует конкретно TCP

Можно через proxy-arp или через бридж интерфейсов. Правда, тогда к ней (к Линуксу) из интерента не подключится.

Т.е. все запросы на внешний интерфейс будут транслироваться на защищаемую машину? Ответ от машины пойдет с другого адреса ведь опять же

Hett
() автор топика
Ответ на: комментарий от mky

по идее надо только 2 порта проксировать, наверное бридж не стоит из-за этого городить? Есть ли разница в производительности между бриджем и порт-форвардингом?

Hett
() автор топика
Ответ на: комментарий от Hett

Интересует конкретно TCP

Протокола более высокого уровня, например, ftp в пассивном режиме.

будут транслироваться на защищаемую машину

Не транслироваться, а маршрутизироваться. И не все, а все, прошедшие фильтры iptables.

Ответ от машины пойдет с другого адреса ведь опять же

От какой машины? Какой адрес настроите, от такого и пойдёт.

Про разницу в производительности точно не скажу, но если и будет, то, скорее всего не большая. Скорее, производительность будет определять правила в iptables.

mky ★★★★★
()
Ответ на: комментарий от mky

От какой машины? Какой адрес настроите, от такого и пойдёт.

Ну вот смотрите, машина «А» защищаемая, «Б» - защищающая, «С» - клиент

«С» шлет пакет на «Б», «Б» меняет адрес и пакет уходит на «А». «А» отвечает клиенту, и шлет пакет сразу на «С»?

Еще ситуация усложнилась тем, что на серверах все же нельзя скоммутировать дополнительный интерфейс, так понимаю какой-то туннель нужно создать тогда между «А» и «Б»?

Hett
() автор топика
Ответ на: комментарий от Hett

Если A и B живут в одной сети - зачем нужен туннель?

«С» шлет пакет на «Б», «Б» меняет адрес и пакет уходит на «А». «А» отвечает клиенту, и шлет пакет сразу на «С»?

Я так понял, что у тебя на Б настроен DNAT?

CaveRat ★★
()

К примеру делаем порт-форвардинг, меняем пакету адрес назначения, как я понимаю, но адрес отправителя останется тот же, и вин машина ответит по этому адресу. Нормально ли к этому отнесется клиент?

Клиент живет в интернетах?

Вообще, я так понял, что твой бордер на Ubuntu будет выступать как fw и как реверс-прокси. Т.е. тебе надо будет сделать DNAT входящих на нужный порт до своего сервака. Будет поднято 2 сессии - одна между клиентом и бордером, вторая - между бордером и сервером.

CaveRat ★★
()
Ответ на: комментарий от mky

Не транслироваться, а маршрутизироваться. И не все, а все, прошедшие фильтры iptables.

Я так понял, ТС хочет еще и спрятать свой сервак за прокси.

CaveRat ★★
()
Ответ на: комментарий от CaveRat

Все вышесказанное Вами верно. Хочу сделать фаервол. Клиенты идут из глобальной сети. Проблема создания DNAT сейчас в том, что соединить серверы VLAN оказалось не возможным. Так понимаю чтобы сделать DNAT нужно сначала комьютеры в одну сеть поместить? Хотя если рассматривать сеть класса С, то они в одной сети.

Hett
() автор топика
Ответ на: комментарий от Hett

Если у тебя NAT, то клиент ничего не знает про «А», он шлет запрос «Б». «Б» прогоняет его по своим правилам и пропихивает до «А». «А» обрабатывает запрос и отправляет ответ уже «Б». «Б» принимает это дело и от своего имени проталкивает до «С».

Таким макаром «виртуальный сервер» работает на домашних роутерах.

Тебе же на межсетевом экране надо ограничить например количество запросов за период времени на нужный порт, посылая всё избыточное в в DROP.

Лишь бы сам экран от вороха запросов не лег.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

В таком случае не сохранится реальный адрес клиента, и все запросы ему будут видеться от «Б»? Как я понял можно поменять только адрес назначения, тогда «А» будет видеть реальные адреса клиентов?

Hett
() автор топика
Ответ на: комментарий от Hett

А в чем проблема с VLAN?

Ну и да, что бы сделать DNAT, КМК, не обязательно располагать в одной сети. Главное, что бы сервер, который делает NAT, знал, куда отправлять пакеты, т.е. имел раут в сеть, которой принадлежит целевой ip-адрес, и что бы целевой сервер имел обратный раут, т.е. мог достучаться до источника (в данном случае - сервера, делающего DNAT).

CaveRat ★★
()
Ответ на: комментарий от CaveRat

Про VLAN я не правильно выразился. У ДЦ есть услуга, когда они соединяют по дополнительному интерфейсу твои сервера. Но как потом выяснилось те сервера, что на те сервера что я использую, эта услуга не распространяется. Но так как это работает через общий маршрутизатор, то называется все равно VLAN, хотя на стороне сервера выглядели бы как физические интерфейсы.

Собственно VLAN можно пустить и через имеющиеся интерфейсы, вопрос в том, какую технологию использовать? Так понимаю на машине с Linux можно поставить PPP сервер и подключаться к нему с винды, за одном поставить там галочку «использовать шлюз в удаленной сети» тогда и трафик исходящий пойдет через него. На этом шлюзе я смогу «поймать» эти пакеты и подредактировать им адрес отправителя, указав там адрес шлюза. Как понимаю VPN сеть в данном случае это лишнее?

Hett
() автор топика
Ответ на: комментарий от Hett

Таким образом у меня будет 2 правила для марштуизации:

1. Поймать на шлюзе входящие пакеты и изменить в них адрес назначения указав машину «А» (защищаемую)

2. Поймать пакеты с защищаемой машины «А» и подправить в них адрес источника, указав вместо него адрес шлюза - машины «Б»

Верно ли я понимаю процесс?

Hett
() автор топика
Ответ на: комментарий от Hett

Собственно VLAN можно пустить и через имеющиеся интерфейсы, вопрос в том, какую технологию использовать?

Я все еще не могу понять, зачем тебе это использовать.

Таким образом у меня будет 2 правила для марштуизации:

1. Поймать на шлюзе входящие пакеты и изменить в них адрес назначения указав машину «А» (защищаемую)

2. Поймать пакеты с защищаемой машины «А» и подправить в них адрес источника, указав вместо него адрес шлюза - машины «Б»

Нет. У тебя на прокси должен быть

  • Раут до защищаемой машины;
  • DNAT-правило, транслирующее запросы до защищаемой машины

А на защищаемой машине - только раут до прокси. Пакеты прилетят уже с ip-адресом прокси в качестве источника.

CaveRat ★★
()
Ответ на: комментарий от CaveRat

Т.е. на защищаемой машине просто добавить раут:

route add 0.0.0.0 mask 0.0.0.0 ip_fw metric 2

?

Hett
() автор топика
Ответ на: комментарий от CaveRat

и что подразумевается под

«Раут до защищаемой машины;»

если имеющийся раут (который задается дефолтным шлюзом) позволяет трафику туда дойти, то дополнительных маршрутов и не надо?

Hett
() автор топика
Ответ на: комментарий от CaveRat

Блин, я так и не разобрался, как это сделать? Если можно на примере... Кто-нибудь.

Hett
() автор топика
Ответ на: комментарий от CaveRat

Ну и да, что бы сделать DNAT, КМК, не обязательно располагать в одной сети. Главное, что бы сервер, который делает NAT, знал, куда отправлять пакеты, т.е. имел раут в сеть, которой принадлежит целевой ip-адрес, и что бы целевой сервер имел обратный раут, т.е. мог достучаться до источника (в данном случае - сервера, делающего DNAT).

Я одного не могу понять. Вот допустим пакет пришел на шлюз (Б), мы сделали DNAT (изменили получателя) и пакет пошел дальше (на А). Источником остался реальный источник. Защищаемая машина (А) приняла этот пакет и ответила по реальному адресу? Нам нужно где-то подменить адрес источника, т.е. нужно этот пакет еще раз через шлюз (Б) прогнать и подменить там адрес отправителя? А как его прогнать через шлюз Б?

Hett
() автор топика
Ответ на: комментарий от Hett

Я одного не могу понять. Вот допустим пакет пришел на шлюз (Б), мы сделали DNAT (изменили получателя) и пакет пошел дальше (на А). Источником остался реальный источник. Защищаемая машина (А) приняла этот пакет и ответила по реальному адресу?

Ответила по тому адресу, который указан как источник.

Нам нужно где-то подменить адрес источника, т.е. нужно этот пакет еще раз через шлюз (Б) прогнать и подменить там адрес отправителя?

Зачем?

А как его прогнать через шлюз Б?

Еще раз - зачем?

CaveRat ★★
()
Ответ на: комментарий от CaveRat

А по другому у меня что-то не получилось. Если применяю только правило DNAT, то ничего не работает.

Hett
() автор топика
Ответ на: комментарий от CaveRat

А клиент должен принимать пакет от адреса, с которого он вообще ничего не запрашивал? Например клиент находится за натом, откуда шлюзу клиента знать вообще куда этот пакет передавать?

Hett
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.