URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 54779
[ Назад ]

Исходное сообщение
"iptables and ports"

Отправлено Alexander , 24-Мрт-05 08:39 
Hi, All!
У меня такая ситуация:
есть машина под линух, которая работает как гейтвей. Как настроить iptables, чтобы одна из машин лок. сети могла открывать/писать/читать из портов определенного диапазона гейтвейа(тоесть через позволить форвардинг через порты гейтвейа)?

Содержание

Сообщения в этом обсуждении
"iptables and ports"
Отправлено jonatan , 24-Мрт-05 09:35 
# eth0 - внешний, eth1 - внутренний
# Указать необходимые порты
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -s 192.168.1.1 -o eth0 -p tcp -m multiport --dport 21,25,53,80,110,443 -j ACCEPT
iptables -A FORWARD -i eth1 -s 192.168.1.1 -o eth0 -p udp -m multiport --dport 53,123 -j ACCEPT

# Если нужен SNAT. 1.2.3.4 - "реальный" ip
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4


"iptables and ports"
Отправлено Lynx , 24-Мрт-05 11:43 
># eth0 - внешний, eth1 - внутренний
># Указать необходимые порты
>iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
>iptables -A FORWARD -i eth1 -s 192.168.1.1 -o eth0 -p tcp -m
>multiport --dport 21,25,53,80,110,443 -j ACCEPT
>iptables -A FORWARD -i eth1 -s 192.168.1.1 -o eth0 -p udp -m
>multiport --dport 53,123 -j ACCEPT
>
># Если нужен SNAT. 1.2.3.4 - "реальный" ip
>iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4

А как же -m state --state NEW ?
Новые то пакеты будут дропаться.



"iptables and ports"
Отправлено jonatan , 24-Мрт-05 12:25 
>А как же -m state --state NEW ?
>Новые то пакеты будут дропаться.

Откуда такая уверенность?


"iptables and ports"
Отправлено Lynx , 24-Мрт-05 12:42 
>>А как же -m state --state NEW ?
>>Новые то пакеты будут дропаться.
>
>Откуда такая уверенность?

Из настраивания firewall-a и man-ов.


"iptables and ports"
Отправлено jonatan , 24-Мрт-05 12:49 
iptables -A FORWARD -i eth1 -s 192.168.1.1 -o eth0 -p tcp -m multiport --dport 21,25,53,80,110,443 -j ACCEPT

Это правило разрешить исходящие tcp-пакеты с компа 192.168.1.1 в Инет на указанные порты.

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Это разрешит ответы на них (уже установленные соединения).
В каком месте предлагаете NEW поставить?


"iptables and ports"
Отправлено Lynx , 24-Мрт-05 13:01 
>iptables -A FORWARD -i eth1 -s 192.168.1.1 -o eth0 -p tcp -m
>multiport --dport 21,25,53,80,110,443 -j ACCEPT
OK.
Но я бы здесь добавил: -m state --state NEW,ESTABLISHED
или
-m state --state ESTABLISHED
в случае всяких FTP и наверное ICQ
>
>Это правило разрешить исходящие tcp-пакеты с компа 192.168.1.1 в Инет на указанные
>порты.
>
>iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
>
>Это разрешит ответы на них (уже установленные соединения).
>В каком месте предлагаете NEW поставить?

"iptables and ports"
Отправлено jonatan , 24-Мрт-05 14:14 
>OK.
>Но я бы здесь добавил: -m state --state NEW,ESTABLISHED
>или
>-m state --state ESTABLISHED
>в случае всяких FTP и наверное ICQ
>>
Поясните все-таки зачем здесь NEW.
Работа FTP обеспечивается указанием RELATED в правиле
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
и модулями
ip_conntrack_ftp
ip_nat_ftp

"iptables and ports"
Отправлено Lynx , 24-Мрт-05 14:59 
>>OK.
>>Но я бы здесь добавил: -m state --state NEW,ESTABLISHED
>>или
>>-m state --state ESTABLISHED
>>в случае всяких FTP и наверное ICQ
>>>
>Поясните все-таки зачем здесь NEW.
>Работа FTP обеспечивается указанием RELATED в правиле
>iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
>и модулями
>ip_conntrack_ftp
>ip_nat_ftp
Здесь - это где? Я имею ввиду вот это правило:
iptables -A FORWARD -i eth1 -s 192.168.1.1 -o eth0 -p tcp -m multiport --dport 21,25,53,80,110,443 -j ACCEPT
и это правило, я бы разделил по портам и на исходящие пакеты строил бы
правила с -m state --state NEW,ESTABLISHED
а на приходящие(возвращаемые) с -m state --state ESTABLISHED
это что касается нашего случая from local net - to inernet.
Если по умолчанию у нас разрешены все состояния, что ж у каждого свои
предпочтения.
Что касается FTP:
то наш случай
dpt:21 state NEW,ESTABLISHED
spt:21 state ESTABLISHED
dpt:20 state ESTABLISHED
spt:20 state RELATED,ESTABLISHED
spts:1024:65535 dpts:1024:65535 state RELATED,ESTABLISHED
spts:1024:65535 dpts:1024:65535 state ESTABLISHED
о портах 20 и >1024, а также пасивном и активном состояниях работы FTP
у вас вообще ни слова.

"iptables and ports"
Отправлено jonatan , 24-Мрт-05 15:20 
>Здесь - это где? Я имею ввиду вот это правило:
> iptables -A FORWARD -i eth1 -s 192.168.1.1 -o eth0 -p tcp
>-m multiport --dport 21,25,53,80,110,443 -j ACCEPT
>и это правило, я бы разделил по портам и на исходящие пакеты
>строил бы
>правила с -m state --state NEW,ESTABLISHED
>а на приходящие(возвращаемые) с -m state --state ESTABLISHED
>это что касается нашего случая from local net - to inernet.
>Если по умолчанию у нас разрешены все состояния, что ж у каждого
>свои
>предпочтения.
>Что касается FTP:
>то наш случай
>dpt:21 state NEW,ESTABLISHED
>spt:21 state ESTABLISHED
>dpt:20 state ESTABLISHED
>spt:20 state RELATED,ESTABLISHED
>spts:1024:65535 dpts:1024:65535 state RELATED,ESTABLISHED
>spts:1024:65535 dpts:1024:65535 state ESTABLISHED
>о портах 20 и >1024, а также пасивном и активном состояниях работы FTP
>у вас вообще ни слова.

Судя по этому, Вы еще недостаточно разобрались с iptables. Указанные мной правила и модули обеспечивают работу FTP как в пассивном, так и в активном режимах. Вот выдержка из Iptables Tutorial:

...
Состояние RELATED одно из самых "хитрых". Соединение получает статус RELATED если оно связано с другим соединением, имеющим признак ESTABLISHED. Это означает, что соединение получает признак RELATED тогда, когда оно инициировано из уже установленного соединения, имеющего признак ESTABLISHED. Хорошим примером соединения, которое может рассматриваться как RELATED, является соединение FTP-data, которое является связанным с портом FTP control, а так же DCC соединение, запущенное из IRC. Обратите внимание на то, что большинство протоколов TCP и некоторые из протоколов UDP весьма сложны и передают информацию о соединении через область данных TCP или UDP пакетов и поэтому требуют наличия специальных вспомогательных модулей для корректной работы.
...


"iptables and ports"
Отправлено Lynx , 24-Мрт-05 16:04 
>
>Судя по этому, Вы еще недостаточно разобрались с iptables. Указанные мной правила
OK. No problems.
Что именно из "Судя по этому" указывает на недостаточность.
>и модули обеспечивают работу FTP как в пассивном, так и в
>активном режимах. Вот выдержка из Iptables Tutorial:
Вы можете привести пример работы FTP для приведеного вами набора правил,
ну как это сделано в том же Iptables Tutorial: какие пакеты и с каким
состоянием в какие попадают цепочки правил.
>
>...

"iptables and ports"
Отправлено jonatan , 24-Мрт-05 16:20 
Сделаем проще. Настройте iptables как указано ниже:

iptables -F
iptables -Z
iptables -X

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --dport 21,25,53,80,110,443 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p udp -m multiport --dport 53,123 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4

убедитесь, что загружены модули ip_conntrack_ftp и ip_nat_ftp.
Запустите любого ftp-клиента (например, консольный ftp) на компе из локальной сети и содинитесь с любым ftp-сервером в Инете сначала в активном, а потом в пассивном режимах и дайте команду ls. Результаты прошу сюда.
Для наглядности запустите одновременно сниффер на шлюзе.


"iptables and ports"
Отправлено Lynx , 25-Мрт-05 16:16 
>Сделаем проще. Настройте iptables как указано ниже:
>
>iptables -F
>iptables -Z
>iptables -X
>
>iptables -P INPUT DROP
>iptables -P FORWARD DROP
>iptables -P OUTPUT ACCEPT
>
>iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
>iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --dport
>21,25,53,80,110,443 -j ACCEPT
>iptables -A FORWARD -i eth1 -o eth0 -p udp -m multiport --dport
>53,123 -j ACCEPT
>
Да, вы правы - это работает. Одно правило на все случаи...

>iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4
>
>убедитесь, что загружены модули ip_conntrack_ftp и ip_nat_ftp.
>Запустите любого ftp-клиента (например, консольный ftp) на компе из локальной сети и
>содинитесь с любым ftp-сервером в Инете сначала в активном, а потом
>в пассивном режимах и дайте команду ls. Результаты прошу сюда.
>Для наглядности запустите одновременно сниффер на шлюзе.