The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (Firewall и пакетные фильтры)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Перенаправление трафика (forwarding), WeSTMan (ok), 21-Апр-20, (0) [смотреть все] –1

Сообщения [Сортировка по времени | RSS]


2. "Перенаправление трафика (forwarding)"  +/
Сообщение от WeSTMan (ok), 21-Апр-20, 20:42 
В принципе ожидал, что будет не совсем понятно.
У нас есть 3 участника сети. IP адреса я выбрал похожие, но отличающиеся.
1. Клиент (95.56.21.55)
2. Сервер фильтрации (195.212.54.128)
3. Сервер (176.241.128.77)

1. Клиент посылает UDP запрос, где в адресе отправителя ставит себя, а в адресе получателя ставит сервер фильтрации. Клиент -> Сервер фильтрации (95.56.21.55 -> 195.212.54.128)
2. Сервер фильтрации принимает пакет. Ставит вместо адреса получателя не себя, а адрес сервера.
На этом этапе пакет должен уйти на обычный сервер. По факту отправляется от сервера фильтрации к обычному серверу, только адрес отправителя остается клиента. (На этом этапе дропается пакет сетевой картой, почему - хз).
Пакеты, который генерирует сервер фильтрации:
Клиент -> Сервер (95.56.21.55 -> 176.241.128.77) (НЕ РАБОТАЕТ)
Сервер фильтрации -> Сервер (195.212.54.128 -> 176.241.128.77) (Работает, только я не получаю IP клиента. А он обязателен!)
Должно получится на выходе из фильтров: Клиент -> Сервер.
Только сам сервер фильтрации передает пакет.
Клиент ничего не знает об обычном сервере.
3. Обратная цепочка.

Проблема находится на сервере фильтрации, так как он не передает пакет обычному серверу, когда его нет не в адресе отправителя, не в адресе получателя!

Пакеты перехватываю tshark под Linux. Ubuntu 16.04. Версия IPTables - 1.6.0

Ответить | Правка | Наверх | Cообщить модератору

3. "Перенаправление трафика (forwarding)"  +/
Сообщение от Licha Morada (ok), 21-Апр-20, 21:42 
> В принципе ожидал, что будет не совсем понятно.
> У нас есть 3 участника сети. IP адреса я выбрал похожие, но
> отличающиеся.
> 1. Клиент (95.56.21.55)
> 2. Сервер фильтрации (195.212.54.128)
> 3. Сервер (176.241.128.77)

Замечательно, значит, все в Интернете в разных сетях.

> 1. Клиент посылает UDP запрос, где в адресе отправителя ставит себя, а
> в адресе получателя ставит сервер фильтрации. Клиент -> Сервер фильтрации (95.56.21.55
> -> 195.212.54.128)
> 2. Сервер фильтрации принимает пакет. Ставит вместо адреса получателя не себя, а
> адрес сервера.

Это вы делаете с помощью правила DNAT, которое вы привели.

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

Не думаю что оно дропается именно сетевой картой, если интересно, можно покопать.
Это ожидаемое поведение, что пакет от сервера фильтрации к обычному серверу, с адресом отправителя клиента, не доходит. Такой пакет имеет все признаки попытки атаки IP spoofing, его мог зарезать кто угодно по дороге, и правильно сделал.

> 3. Обратная цепочка.

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

> Проблема находится на сервере фильтрации, так как он не передает пакет обычному
> серверу, когда его нет не в адресе отправителя, не в адресе
> получателя!

В принципе ваш Ubuntu можно заставить выпихивать этот пакет наружу, гуглите как проводить атаку IP Spoofing по UDP. Но я бы не расчитывал на то что он дойдёт до обычного сервера.
Даже если дойдёт, это дыра в безопасности, по крайней мере у вашего ISP, которую рано или поздно залатают.

> Должно получится на выходе из фильтров: Клиент -> Сервер.

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

Там можт быть нюанс, если пакет прошёл forwarding, но оказывается что egress interface одна и та-же что и ingress interface, система норовит не пересылать пакет на шлюз, а ответить пакетом ICMP Redirect. Не всегда так, зависит от реализации. Кстати, возможно, именно это вы интерпретируете как "дропается сетевой картой".


Ответить | Правка | Наверх | Cообщить модератору

4. "Перенаправление трафика (forwarding)"  +/
Сообщение от WeSTMan (ok), 21-Апр-20, 22:05 
> Замечательно, значит, все в Интернете в разных сетях.

Да

> Это вы делаете с помощью правила DNAT, которое вы привели.

Да

> Не думаю что оно дропается именно сетевой картой, если интересно, можно покопать.

Возможно я и ошибаюсь, но в ifconfig на сетевом интерфейсе стоит значение напротив dropped - столько пакетов, сколько я послал UDP.

> Это ожидаемое поведение, что пакет от сервера фильтрации к обычному серверу, с
> адресом отправителя клиента, не доходит. Такой пакет имеет все признаки попытки
> атаки IP spoofing, его мог зарезать кто угодно по дороге, и
> правильно сделал.

Я не желаю использовать атаку IP spoofing. Если её блокируют, может создать между серверами что-то на подобии VPN?

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

Ну тут на самом деле 2 варианта. Либо передавать ответ через сервер и ставить IP адрес источника - сервер фильтрации. Или передать серверу фильтрации, чтобы он сам поставил и отдал клиенту.
Задержка меньше между Клиент - срв фильтрации - сервер, нежели клиент - сервер. Вероятно из-за маршрутов. Но не суть. Идея хорошая.

> В принципе ваш Ubuntu можно заставить выпихивать этот пакет наружу, гуглите как
> проводить атаку IP Spoofing по UDP. Но я бы не расчитывал
> на то что он дойдёт до обычного сервера.

Я являюсь полным владельцем физического сервера, исключение - провайдер сети.

> Даже если дойдёт, это дыра в безопасности, по крайней мере у вашего
> ISP, которую рано или поздно залатают.
> Поставьте сервер фильтрации в одной и той же локалке где клиент, с
> приватными адресами, и пусть он подменяет но только адрес получателя но
> и адрес отправителя. Тогда вся маршрутизация будет работать "нормально", а обычный
> сервер подмены не заметит т.к. сервер фильтрации и клиент всё равно
> имеют один и тот-же публичный адрес.

К сожалению, не могу поставить, они в разных местах. Думаю что-то типа VPN сделать.
Клиент может быть любой человек на планете с любым IP.

> Там можт быть нюанс, если пакет прошёл forwarding, но оказывается что egress
> interface одна и та-же что и ingress interface, система норовит не
> пересылать пакет на шлюз, а ответить пакетом ICMP Redirect. Не всегда
> так, зависит от реализации. Кстати, возможно, именно это вы интерпретируете как
> "дропается сетевой картой".

Я не могу Вам этого сказать. Уточните более подробную информацию - отвечу.

Я хочу реализовать данную топологию из-за защиты, чтобы злоумышленник не знал реального IP адреса сервера. Плюсом - сервер фильтрации имеет большую пропускную способность, чем сервер. И я уверен, что всякие дурочки не смогут забить канал. Не говорю, конечно, о целенаправленных атаках, где море трафика, типо бот нет сети.
Надеюсь продолжим дальнейшее общение.

Ответить | Правка | Наверх | Cообщить модератору

11. "Перенаправление трафика (forwarding)"  +/
Сообщение от Licha Morada (ok), 21-Апр-20, 22:58 

>> Это ожидаемое поведение, что пакет от сервера фильтрации к обычному серверу, с
>> адресом отправителя клиента, не доходит. Такой пакет имеет все признаки попытки
>> атаки IP spoofing, его мог зарезать кто угодно по дороге, и
>> правильно сделал.
> Я не желаю использовать атаку IP spoofing. Если её блокируют, может создать
> между серверами что-то на подобии VPN?

Да, можно.
Но если у вас есть доступ на обычный сервер, чтобы настроить VPN и маршрутизацию, то было бы проще научить его принимать пакеты с адресом отправителя фильтрующего сервера.

>> В принципе ваш Ubuntu можно заставить выпихивать этот пакет наружу, гуглите как
>> проводить атаку IP Spoofing по UDP. Но я бы не расчитывал
>> на то что он дойдёт до обычного сервера.
> Я являюсь полным владельцем физического сервера, исключение - провайдер сети.

Так и зарежет Spoofing атаку провайдер. Какой угодно из N между серверами.

>> Там можт быть нюанс, если пакет прошёл forwarding, но оказывается что egress
>> interface одна и та-же что и ingress interface, система норовит не
>> пересылать пакет на шлюз, а ответить пакетом ICMP Redirect. Не всегда
>> так, зависит от реализации. Кстати, возможно, именно это вы интерпретируете как
>> "дропается сетевой картой".
> Я не могу Вам этого сказать. Уточните более подробную информацию - отвечу.

Если интересно, смотрите сниффером на трафик ICMP на фильтрующем сервере. К решению проблены это имеет весьма отдалённое отношение.

> Я хочу реализовать данную топологию из-за защиты, чтобы злоумышленник не знал реального
> IP адреса сервера.

Чтобы не знал адрес какого сервера, "обычного"? Это бесполезно. По вашей схеме, если обычный сервер ответит клиенту помимо фильтрующего сервера, то в злоумышленник увидит его настоящий адрес в заголовках пакета. И вообще эффект Стрейзанд будет.

Публикуйте сервис для клиентов на вашем "фильтрующем сервере". Обычный сервер пусть принимает подключения от него и нечего не знает о конкретных клиентах.
Если критично различать клиентов по IP, то стройте оверлейную сеть. Пусть они подключаются к "фильтрующему серверу" по VPN, с приватными адресами и аутентификацией, а тот по VPN же будет перенаправлять траффик на приватный адрес обычного сервера. Как обратный прокси на периметере локалки.
Если критична задержка, ищите сервера поближе друг к другу и к клиентам. Жонглирование ассиметричными маршрутами с закосом на спуфинг вам только добавит проблем.


Ответить | Правка | Наверх | Cообщить модератору

14. "Перенаправление трафика (forwarding)"  +/
Сообщение от WeSTMan (ok), 21-Апр-20, 23:27 
>[оверквотинг удален]
> увидит его настоящий адрес в заголовках пакета. И вообще эффект Стрейзанд
> будет.
> Публикуйте сервис для клиентов на вашем "фильтрующем сервере". Обычный сервер пусть принимает
> подключения от него и нечего не знает о конкретных клиентах.
> Если критично различать клиентов по IP, то стройте оверлейную сеть. Пусть они
> подключаются к "фильтрующему серверу" по VPN, с приватными адресами и аутентификацией,
> а тот по VPN же будет перенаправлять траффик на приватный адрес
> обычного сервера. Как обратный прокси на периметере локалки.
> Если критична задержка, ищите сервера поближе друг к другу и к клиентам.
> Жонглирование ассиметричными маршрутами с закосом на спуфинг вам только добавит проблем.

Я могу залить файл pcap для wireshark, там видно весь трафик, который проходит через сервер фильтрации.

Отправляю пакет на сервер фильтрации, в ответ получаю
Получаю ICMP Destination unreachable (port unreachable)
И опять же на сетевом интерфейсе ловлю dropped

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.2  P-t-P:127.0.0.2  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:5728 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4958 errors:0 dropped:19 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:330057 (330.0 KB)  TX bytes:421280 (421.2 KB)


Отправил 19 пакетов и они все оказались dropped.
До конечного сервера пакет так и не дошёл.

Ответить | Правка | Наверх | Cообщить модератору

16. "Перенаправление трафика (forwarding)"  +/
Сообщение от Licha Morada (ok), 21-Апр-20, 23:40 

> Отправил 19 пакетов и они все оказались dropped.
> До конечного сервера пакет так и не дошёл.

Ну, значит dropped. Тогда надо смотреть на флаг ip_forward, таблицу маршрутизации и правила netfilter, как советуют ниже.

Если название интерфейса venet0 указывает на то что это живёт в контейнере OpenVZ, то ещё можно смотреть какие правила применяет хостовоая система, можно ожидать что она дропает попытки спуфинга гостевого контейнера. Я про детали OpenVZ не в курсе.

В этой ветке, вам совет пересмотреть архитектуру решения.

Ответить | Правка | Наверх | Cообщить модератору

17. "Перенаправление трафика (forwarding)"  +/
Сообщение от WeSTMan (ok), 22-Апр-20, 00:13 
>> Отправил 19 пакетов и они все оказались dropped.
>> До конечного сервера пакет так и не дошёл.
> Ну, значит dropped. Тогда надо смотреть на флаг ip_forward, таблицу маршрутизации и
> правила netfilter, как советуют ниже.
> Если название интерфейса venet0 указывает на то что это живёт в контейнере
> OpenVZ, то ещё можно смотреть какие правила применяет хостовоая система, можно
> ожидать что она дропает попытки спуфинга гостевого контейнера. Я про детали
> OpenVZ не в курсе.
> В этой ветке, вам совет пересмотреть архитектуру решения.

Можете что-нибудь подсказать? Суть такова, чтобы был неизвестный реальный IP сервера и канал выше, чем у сервера.
ipv4 forward = 1

Ответить | Правка | Наверх | Cообщить модератору

21. "Перенаправление трафика (forwarding)"  +/
Сообщение от romanegunkov (ok), 22-Апр-20, 00:35 
>>> Отп
> Можете что-нибудь подсказать? Суть такова, чтобы был неизвестный реальный IP сервера и
> канал выше, чем у сервера.
> ipv4 forward = 1

Вот этот вариант из примера должен подойти, только там опечатка, кажется, для SNAT --to-source, наверное, доджен быть.

Full network address translation, as performed with iproute2 can be simulated with both netfilter SNAT and DNAT, with the potential benefit (and attendent resource consumption) of connection tracking.

Example 5.7. Simulating full NAT with SNAT and DNAT

[root@real-server]# iptables -t nat -A PREROUTING -d 205.254.211.17 -j DNAT --to-destination 192.168.100.17
[root@real-server]# iptables -t nat -A POSTROUTING -s 192.168.100.17 -j SNAT --to-destination 205.254.211.17
      

Ответить | Правка | Наверх | Cообщить модератору

23. "Перенаправление трафика (forwarding)"  +/
Сообщение от Licha Morada (ok), 22-Апр-20, 01:53 
>> В этой ветке, вам совет пересмотреть архитектуру решения.
> Можете что-нибудь подсказать? Суть такова, чтобы был неизвестный реальный IP сервера и
> канал выше, чем у сервера.

Подсказывать тут особо нечего. Концептуально вам поможет прокси, реализованный тем или иным методом. NAT-ом тоже можно, вам на правильную доку указали.
С шириной каналов я бы не стал особо заморачиваться, пока не станет ясно от чего конкретно защищаемся и в каких масштабах оно происходит. Идите от простого с сложному, не пытайтесь все фичи за раз реализовать.

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

18. "Перенаправление трафика (forwarding)"  +/
Сообщение от WeSTMan (ok), 22-Апр-20, 00:19 
>> Отправил 19 пакетов и они все оказались dropped.
>> До конечного сервера пакет так и не дошёл.
> Ну, значит dropped. Тогда надо смотреть на флаг ip_forward, таблицу маршрутизации и
> правила netfilter, как советуют ниже.
> Если название интерфейса venet0 указывает на то что это живёт в контейнере
> OpenVZ, то ещё можно смотреть какие правила применяет хостовоая система, можно
> ожидать что она дропает попытки спуфинга гостевого контейнера. Я про детали
> OpenVZ не в курсе.
> В этой ветке, вам совет пересмотреть архитектуру решения.

iptables -L -v -n

Chain INPUT (policy ACCEPT 10115 packets, 552K bytes)
pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
   21  1008 ACCEPT     udp  --  *      *       0.0.0.0/0            DestIP       udp dpt:27017

Chain OUTPUT (policy ACCEPT 9024 packets, 626K bytes)
pkts bytes target     prot opt in     out     source               destination

iptables -L -v -n -t nat

Chain PREROUTING (policy ACCEPT 1296 packets, 61685 bytes)
pkts bytes target     prot opt in     out     source               destination
    6   288 DNAT       udp  --  *      *       0.0.0.0/0            IPFilter      udp dpt:27017 to:IPServer:27017

Chain POSTROUTING (policy ACCEPT 21 packets, 1248 bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 20 packets, 1200 bytes)
pkts bytes target     prot opt in     out     source               destination


Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

24. "Перенаправление трафика (forwarding)"  +/
Сообщение от Licha Morada (ok), 22-Апр-20, 01:55 
> iptables -L -v -n

Никто forward не запрещает. Если у вас OpenVZ, дальше я бы стал копать там.

А вообще, policy ACCEPT на публичном сервере это смело.

Ответить | Правка | Наверх | Cообщить модератору

25. "Перенаправление трафика (forwarding)"  +/
Сообщение от WeSTMan (ok), 22-Апр-20, 07:30 
>> iptables -L -v -n
> Никто forward не запрещает. Если у вас OpenVZ, дальше я бы стал
> копать там.
> А вообще, policy ACCEPT на публичном сервере это смело.

ACCEPT везде, пока я не разберусь с маршрутизацией. Далее политики DROP поставлю по умолчанию

Ответить | Правка | Наверх | Cообщить модератору

26. "Перенаправление трафика (forwarding)"  +/
Сообщение от WeSTMan (ok), 22-Апр-20, 08:02 
>> iptables -L -v -n
> Никто forward не запрещает. Если у вас OpenVZ, дальше я бы стал
> копать там.
> А вообще, policy ACCEPT на публичном сервере это смело.

Interfaces

auto venet0
iface venet0 inet manual
        up ifconfig venet0 up
        up ifconfig venet0 127.0.0.2
        up route add default dev venet0
        down route del default dev venet0
        down ifconfig venet0 down
auto venet0:0
iface venet0:0 inet static
        address IPFilter
        netmask 255.255.255.255

Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

30. "Перенаправление трафика (forwarding)"  +/
Сообщение от Licha Morada (ok), 22-Апр-20, 18:27 

Вы подтвердите или опровергните. Ваш фильтрующий сервер не виртуальная машина, а какой-то контейнер? Какой, OpenVZ?

Если да, то:

https://lists.openvz.org/pipermail/users/2016-April/006845.html
The filters are following:

*a) IP spoofing protection:*
Drops packets from guest with source IP address different from the
guest's ones.
This filter works only all of the following is true:
- dhcp for VM is OFF
- AutoApply for VM is ON
- VM has non-empty list of IP addresses

It is set by:
/prlctl set VM --de//vice-set net0 --ipfilter yes/

Но, как вы наверное помните, я рекомендовал отказаться от этого метода в пользу более наглядного прокси.

Ответить | Правка | Наверх | Cообщить модератору

31. "Перенаправление трафика (forwarding)"  +/
Сообщение от WeSTMan (ok), 22-Апр-20, 21:42 
>[оверквотинг удален]
> Drops packets from guest with source IP address different from the
> guest's ones.
> This filter works only all of the following is true:
> - dhcp for VM is OFF
> - AutoApply for VM is ON
> - VM has non-empty list of IP addresses
> It is set by:
> /prlctl set VM --de//vice-set net0 --ipfilter yes/
> Но, как вы наверное помните, я рекомендовал отказаться от этого метода в
> пользу более наглядного прокси.

Использую OpenVPN без шифрования. Спасибо за ответы!

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру