The OpenNET Project / Index page

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

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

"iptables изменить адрес входящего пакета"  +/
Сообщение от 2low4 (ok) on 29-Июл-12, 21:44 
Здравствуйте!
Для начала ситуация, чтобы избежать вопросов "а зачем тебе"?
Есть сеть, шлюз у неё DSL 2500, на котором был проброшен VNC (5900) для доступа к машинам "снаружи". Сейчас на компьютерах установлено ПО, которое блокирует весь трафик кроме "доверенной" подсети (которой является внутренняя подсеть). Получается так, что удалённый доступ по VNC утерян, т.к. source IP теперь внешний (белый) адрес модема. Выход из ситуации такой, что нужно "подменять" source IP у VNC пакета.
Для этого, как я думаю, нужно изменить конфигурацию iptables на устройстве (2500).
Опять же, как я думаю, нужно использовать SNAT для замены адреса, но его можно применять только в POSTROUTING
Мой алгоритм таков:
1) iptables -t nat -A POSTROUTING -p tcp -o $EXT_IFACE --sport 5900 -j SNAT --to-source $IP_адрес_модема (т.е. я предполагаю что он будет "стучать" по VNC от "своего имени")
2) iptables -t filter -A INPUT -p tcp --dport 5900 -j ACCEPT (таким образом я предполагаю что далее пакет попадает на локальный интерфейс модема и его надо разрешить)
3) iptables -t filter -A FORWARD -p tcp --s 192.168.1.1 --sport 5900 -j REDIRECT -d 192.168.1.2 (и вот тут проблема, я думаю, что 3м шагом должна быть отправка пакета по заданному адресу, но действие REDIRECT доступно только для в цепочках PREROUTING и OUTPUT таблицы nat)
Объясните где я не прав в прохождении пакета, и если прав - как отправить его на нужный хост.
Ну и если кто напишет готовые правила и прокомментирует буду признателен!
Спасибо!
Ответить | Правка | Cообщить модератору

Оглавление

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


1. "iptables изменить адрес входящего пакета"  +/
Сообщение от LSTemp (ok) on 30-Июл-12, 01:12 
>[оверквотинг удален]
> (таким образом я предполагаю что далее пакет попадает на локальный интерфейс
> модема и его надо разрешить)
> 3) iptables -t filter -A FORWARD -p tcp --s 192.168.1.1 --sport 5900
> -j REDIRECT -d 192.168.1.2 (и вот тут проблема, я думаю, что
> 3м шагом должна быть отправка пакета по заданному адресу, но действие
> REDIRECT доступно только для в цепочках PREROUTING и OUTPUT таблицы nat)
> Объясните где я не прав в прохождении пакета, и если прав -
> как отправить его на нужный хост.
> Ну и если кто напишет готовые правила и прокомментирует буду признателен!
> Спасибо!

iptables -t nat -A PREROUTING -i EXT_IP -p tcp --dport 5900 -j DNAT --to-destination LAN_IP:5900
iptables -t nat -A POSTROUTING -o INT_IP -p tcp -d LAN_IP --drort 5900 -j SNAT --to-source INT_IP

iptables -A FORWARD -i EXT_IP -p tcp -d LAN_IP --dport 5900 -j ACCEPT
iptables -A FORWARD -o EXT_IP -p tcp -s LAN_IP --sport 5900 -j ACCEPT


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

2. "iptables изменить адрес входящего пакета"  +/
Сообщение от LSTemp (ok) on 30-Июл-12, 02:34 
>[оверквотинг удален]
>> (таким образом я предполагаю что далее пакет попадает на локальный интерфейс
>> модема и его надо разрешить)
>> 3) iptables -t filter -A FORWARD -p tcp --s 192.168.1.1 --sport 5900
>> -j REDIRECT -d 192.168.1.2 (и вот тут проблема, я думаю, что
>> 3м шагом должна быть отправка пакета по заданному адресу, но действие
>> REDIRECT доступно только для в цепочках PREROUTING и OUTPUT таблицы nat)
>> Объясните где я не прав в прохождении пакета, и если прав -
>> как отправить его на нужный хост.
>> Ну и если кто напишет готовые правила и прокомментирует буду признателен!
>> Спасибо!

чуть опечатался в предыдущем сообщении. в качестве искупления вины  пишу с комментариями ).

EXT_IP - внешний адрес шлюза (WAN)
INT_IP - внутренний адрес шлюза (LAN)
LAN_IP - целевой адрес в локальной сети (к которому подключиться надо)
EXT_IF - название внешнего интерфейса шлюза (WAN)
INT_IF - название внутреннего интерфейса шлюза (LAN)

пробрасываем порт с внешнего интерфейса шлюза внутрь локальной сети

iptables -t nat -A PREROUTING -i EXT_IF -p tcp --dport 5900 -j DNAT --to-destination LAN_IP:5900

подменяем адрес источника пакета на внутренний адрес шлюза (это гарантирует нам, что запрос на целевую машину придет от адреса из локальной сети и ответ от нее будет послан на шлюз)

iptables -t nat -A POSTROUTING -o INT_IF -p tcp -d LAN_IP --drort 5900 -j SNAT --to-source INT_IP

разрешаем форвард пакетов в обеих направлениях. в первом правиле указан LAN_IP, поскольку правило в цепочке PREROUTING выполниться раньше цепочки FORWARD и адрес получателя пакета к этому времени уже будет сменен (с EXT_IP на LAN IP)

iptables -A FORWARD -i EXT_IF -p tcp -d LAN_IP --dport 5900 -j ACCEPT
iptables -A FORWARD -o EXT_IF -p tcp -s LAN_IP --sport 5900 -j ACCEPT


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

3. "iptables изменить адрес входящего пакета"  +/
Сообщение от 2low4 (ok) on 30-Июл-12, 12:07 
>[оверквотинг удален]
> iptables -t nat -A POSTROUTING -o INT_IF -p tcp -d LAN_IP --drort
> 5900 -j SNAT --to-source INT_IP
> разрешаем форвард пакетов в обеих направлениях. в первом правиле указан LAN_IP, поскольку
> правило в цепочке PREROUTING выполниться раньше цепочки FORWARD и адрес получателя
> пакета к этому времени уже будет сменен (с EXT_IP на LAN
> IP)
> iptables -A FORWARD -i EXT_IF -p tcp -d LAN_IP --dport 5900 -j
> ACCEPT
> iptables -A FORWARD -o EXT_IF -p tcp -s LAN_IP --sport 5900 -j
> ACCEPT

Спасибо за ответ, не работает!
Вот вывод:

iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  192.168.1.0/24       anywhere            udp dpt:30006
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:30005
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:telnet
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     udp  --  anywhere             anywhere            udp dpt:snmp
ACCEPT     icmp --  anywhere             anywhere            icmp echo-request
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
LOG        tcp  --  anywhere             anywhere            tcp flags:SYN,RST,ACK/SYN limit: avg 6/hour burst 5 LOG level alert prefix `Intrusion -> '
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             192.168.1.2         tcp dpt:2642
ACCEPT     tcp  --  anywhere             192.168.1.2         tcp dpt:6769
ACCEPT     udp  --  anywhere             192.168.1.2         udp dpt:6769
ACCEPT     udp  --  192.168.1.0/24       anywhere            udp dpt:30006
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:30005
ACCEPT     tcp  --  anywhere             192.168.1.2         tcp dpt:3389
TCPMSS     tcp  --  anywhere             anywhere            tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU
TCPMSS     tcp  --  anywhere             anywhere            tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
LOG        tcp  --  anywhere             anywhere            tcp flags:SYN,RST,ACK/SYN limit: avg 6/hour burst 5 LOG level alert prefix `Intrusion -> '
DROP       all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             192.168.1.1         tcp dpt:5900
ACCEPT     tcp  --  192.168.1.1          anywhere            tcp spt:5900

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             239.255.255.250
> iptables -t nat --list

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       udp  --  anywhere             192.168.1.1         udp dpt:domain to:94.255.29.122
DNAT       tcp  --  anywhere             anywhere            tcp dpt:3389 to:192.168.1.2
DNAT       udp  --  anywhere             anywhere            udp dpt:6769 to:192.168.1.2:6769-0
DNAT       tcp  --  anywhere             anywhere            tcp dpt:6769 to:192.168.1.2:6769-0
DNAT       tcp  --  anywhere             anywhere            tcp dpt:2642 to:192.168.1.2:2642-0
DNAT       tcp  --  anywhere             anywhere            tcp dpt:5900 to:192.168.1.2:5900

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.1.0/24       anywhere
SNAT       tcp  --  anywhere             192.168.1.2         tcp dpt:5900 to:192.168.1.1

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
>

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

4. "iptables изменить адрес входящего пакета"  +/
Сообщение от reader (ok) on 30-Июл-12, 17:06 
>[оверквотинг удален]
> MASQUERADE  all  --  192.168.1.0/24      
>  anywhere
> SNAT       tcp  --  anywhere
>            
>  192.168.1.2         tcp
> dpt:5900 to:192.168.1.1
> Chain OUTPUT (policy ACCEPT)
> target     prot opt source    
>           destination
>>

добавлять к FORWARD нужно было через -I, а то у вас разрешения стали после DROP, и они там уже не сработают

iptables-save

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

7. "iptables изменить адрес входящего пакета"  +/
Сообщение от LSTemp (ok) on 01-Авг-12, 02:46 
>[оверквотинг удален]
>>
>>  192.168.1.2         tcp
>> dpt:5900 to:192.168.1.1
>> Chain OUTPUT (policy ACCEPT)
>> target     prot opt source
>>           destination
>>>
> добавлять к FORWARD нужно было через -I, а то у вас разрешения
> стали после DROP, и они там уже не сработают
> iptables-save

запущено все... внятной схемы подключения нет, существующих правил нет. даю пример для чистых цепочек, а там походу и мысли нет, чтобы подумать - тупой копипаст (

PS
2: 2<4 ESTABLISED,CONNECTED в начало правил перенеси - соединение один раз устанавливается, после этого оно уже ESTABLISED,CONNECTED. так какого хрена для уже принятых соединений десяток правил на ACCEPT перед этим пробегать?

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

6. "iptables изменить адрес входящего пакета"  +/
Сообщение от LSTemp (ok) on 01-Авг-12, 02:37 
>[оверквотинг удален]
> MASQUERADE  all  --  192.168.1.0/24      
>  anywhere
> SNAT       tcp  --  anywhere
>            
>  192.168.1.2         tcp
> dpt:5900 to:192.168.1.1
> Chain OUTPUT (policy ACCEPT)
> target     prot opt source    
>           destination
>>

посмотрите iptables -L -n -v , чтобы счетчики попадания в правила видеть

PS
там еще и маскарад в построутинге.

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

5. "iptables изменить адрес входящего пакета"  +/
Сообщение от LSTemp (ok) on 01-Авг-12, 02:35 
>[оверквотинг удален]
> чуть опечатался в предыдущем сообщении. в качестве искупления вины  пишу с
> комментариями ).
> EXT_IP - внешний адрес шлюза (WAN)
> INT_IP - внутренний адрес шлюза (LAN)
> LAN_IP - целевой адрес в локальной сети (к которому подключиться надо)
> EXT_IF - название внешнего интерфейса шлюза (WAN)
> INT_IF - название внутреннего интерфейса шлюза (LAN)
> пробрасываем порт с внешнего интерфейса шлюза внутрь локальной сети
> iptables -t nat -A PREROUTING -i EXT_IF -p tcp --dport 5900 -j
> DNAT --to-destination LAN_IP:5900

адрес получателя забыл еще:
iptables -t nat -A PREROUTING -i EXT_IF -p tcp -d EXT_IP --dport 5900 -j DNAT --to-destination LAN_IP:5900


>[оверквотинг удален]
> iptables -t nat -A POSTROUTING -o INT_IF -p tcp -d LAN_IP --drort
> 5900 -j SNAT --to-source INT_IP
> разрешаем форвард пакетов в обеих направлениях. в первом правиле указан LAN_IP, поскольку
> правило в цепочке PREROUTING выполниться раньше цепочки FORWARD и адрес получателя
> пакета к этому времени уже будет сменен (с EXT_IP на LAN
> IP)
> iptables -A FORWARD -i EXT_IF -p tcp -d LAN_IP --dport 5900 -j
> ACCEPT
> iptables -A FORWARD -o EXT_IF -p tcp -s LAN_IP --sport 5900 -j
> ACCEPT

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

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

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




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

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