The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"stateful ipfw + natd + ftp"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"stateful ipfw + natd + ftp"  
Сообщение от Ilya (??) on 21-Мрт-07, 09:22 
Помогите, плиз. Не могу разобраться.

Файрвол составлен на основе примера из хендбука. Это только тестовый открытый вариант, просто убедиться что работает всё, что должно будет работать.

Как с подобной конфигурацией заставить работать ftp в активном режиме? Если убрать keep-state из разрешающих правил, то всё прекрасно работает.


#!/bin/sh
# ----------------------- defining variables
ipfw="/sbin/ipfw -q"
inet="fxp0"
local="fxp1"
lan="192.168.0.0/16"
def="8668"
exp="8670"

$ipfw flush
$ipfw pipe flush

# ----------------------- antispoof & icmp & loopback
$ipfw add 00100 deny ip from any to any not antispoof in
$ipfw add 00200 deny icmp from any to any icmptype 5,9,13,14,15,16
$ipfw add 01000 allow ip from any to any via lo0
$ipfw add 01500 allow ip from any to any via $local

# ----------------------- nat in
$ipfw add 05000 divert $def ip from any to 192.168.0.99 in via $inet
$ipfw add 05100 divert $exp ip from any to 192.168.0.111 in via $inet

# ----------------------- banwidth shaping -----------------------
#$ipfw disable one_pass

# ----------------------- difining pipes & queues
#$ipfw pipe 1 config bw 200Kbit/s
#$ipfw queue 1 config pipe 1 weight 80 queue 100 gred 0.002/20/40/0.1
#$ipfw queue 2 config pipe 1 weight 20 queue 100 gred 0.002/10/30/0.1

# ----------------------- limiting traffic
#$ipfw add 10100 queue 1 ip from not $lan to $lan out via $local

# ----------------------- dynamic table check
$ipfw add 25000 check-state log

# ----------------------- allow outbound with limits
$ipfw add 30000 skipto 60000 ip from $lan to any out via $inet keep-state
#$ipfw add 30000 skipto 60000 tcp from $lan to any out via $inet setup keep-state #limit src-addr 15
#$ipfw add 30100 skipto 60000 udp from $lan to any out via $inet keep-state #limit src-addr 15
#$ipfw add 30200 skipto 60000 icmp from $lan to any out via $inet keep-state #limit src-addr 15

# ----------------------- allow inbound with limits
$ipfw add 40000 allow ip from any to $lan in via $inet keep-state
#$ipfw add 40000 allow tcp from any to $lan in via $inet setup keep-state #limit src-addr 5
#$ipfw add 40100 allow udp from any to $lan in via $inet keep-state #limit src-addr 5
#$ipfw add 40200 allow icmp from any to $lan in via $inet keep-state #limit src-addr 5

# ----------------------- deny all not allowed previously
$ipfw add 55000 deny ip from any to any

# ----------------------- nat out
$ipfw add 60000 divert $def ip from 192.168.100.32 to any out via $inet
$ipfw add 60100 divert $exp ip from 192.168.100.33 to any out via $inet

$ipfw add 65530 allow ip from any to any via $inet

# ----------------------- default deny -----------------------

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

 Оглавление

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


1. "stateful ipfw + natd + ftp"  
Сообщение от Ilya (??) on 22-Мрт-07, 01:53 
>Помогите, плиз. Не могу разобраться.
>
>Файрвол составлен на основе примера из хендбука. Это только тестовый открытый вариант,
>просто убедиться что работает всё, что должно будет работать.
>
>Как с подобной конфигурацией заставить работать ftp в активном режиме? Если убрать
>keep-state из разрешающих правил, то всё прекрасно работает.

Проблема решена самостоятельно.

Как выяснилось, она заключалась в этих строчках.

># ----------------------- allow inbound with limits
>$ipfw add 40000 allow ip from any to $lan in via $inet keep-state
>#$ipfw add 40000 allow tcp from any to $lan in via $inet setup keep-state #limit src-addr 5
>#$ipfw add 40100 allow udp from any to $lan in via $inet keep-state #limit src-addr 5
>#$ipfw add 40200 allow icmp from any to $lan in via $inet keep-state #limit src-addr 5

А точнее в команде 'allow', которую следовало заменить на 'skipto 60000'.

К сожалению, так и осталось загадкой, что именно мешало работе фтп в активном режиме. Очевидно, что-то из  того, что должно было не заворачивалось в нат. Разбор логов не привёл к просветлению.

Сервер призван балансировать траффик и будет стоять между работающим в настоящее время сервером на win2003 и циской с инетом, а пока запущен для тестирования в локалке и обслуживает только меня. Т.к. цель - только управлять трафиком, файрвол практически полсностью открыт. Защитой и ограничение доступа будет заниматься сервер на виндах стоящий следом. Возможно, впоследствии все файрвольные заморочки будут перенесены на фрю.

Вот как выглядят конфиги. Может быть гуру выскажут свои замечания? Возможно, что-то сделано криво и требует исправления.

[srvr01] /usr/local/etc# cat natd.conf
use_sockets
same_ports
unregistered_only

instance default
alias_address 192.168.0.99
target_address 192.168.100.32
port 8668

instance exploration
alias_address 192.168.0.111
port 8670
deny_incoming

#instance vip
#alias_address x.x.x.x
#port 8669
#deny_incoming

[srvr01] /usr/local/etc# cat rc.firewall
#!/bin/sh

# ----------------------- defining variables
ipfw="/sbin/ipfw -q"
inet="fxp0"
local="fxp1"
skip="skipto 60000"
lan="192.168.100.0/24"
all="0xffffffff"

# ----------------------- init
$ipfw flush
$ipfw pipe flush

# ----------------------- defining tables for divert
$ipfw table 1 flush
$ipfw table 1 add 192.168.0.99          8668
$ipfw table 1 add 192.168.0.111         8670
$ipfw table 2 flush
$ipfw table 2 add 192.168.100.32        8668
$ipfw table 2 add 192.168.100.33        8670

# ----------------------- defining pipes & queues
$ipfw pipe 1 config bw 92Kbit/s
$ipfw queue 1 config pipe 1 weight 80 queue 100 mask $all gred 0.002/20/40/0.1
$ipfw queue 2 config pipe 1 weight 20 queue 100 mask $all gred 0.002/10/30/0.1

# ----------------------- defining tables for shaping
$ipfw table 5 flush
$ipfw table 5 add 192.168.100.32        1
$ipfw table 5 add 192.168.100.13        2
$ipfw table 6 flush

# ----------------------- loopback & antispoof & icmp
$ipfw add 00100 allow ip from any to any via lo0
$ipfw add 00200 deny log ip from any to any not antispoof in
$ipfw add 00300 deny log icmp from any to any icmptype 5,9,13,14,15,16

# ----------------------- shaping traffic
$ipfw add 10000 count ip from not 192.168.0.0/16 to any out via $local

# ----------------------- allow local & me
$ipfw add 15000 allow ip from any to any via $local
$ipfw add 15500 allow ip from me to any keep-state

# ----------------------- nat in
$ipfw add 20000 divert tablearg ip from any to table\(1\) in via $inet

# ----------------------- dynamic table check
$ipfw add 25000 check-state

# ----------------------- allow outbound with limits
$ipfw add 30000 $skip tcp from $lan to any out via $inet setup limit src-addr 15
$ipfw add 30100 $skip udp from $lan to any out via $inet limit src-addr 15
$ipfw add 30200 $skip icmp from $lan to any out via $inet limit src-addr 15

# ----------------------- allow inbound with limits
$ipfw add 40000 $skip tcp from any to any in via $inet setup limit src-addr 5
$ipfw add 40100 $skip udp from any to any in via $inet limit src-addr 5
$ipfw add 40200 $skip icmp from any to any in via $inet limit src-addr 5

# ----------------------- deny all not allowed previously
$ipfw add 50000 deny log ip from any to any

# ----------------------- nat out
$ipfw add 60000 divert tablearg ip from table\(2\) to any out via $inet

# ----------------------- allow inet
$ipfw add 65530 allow ip from any to any via $inet

# ----------------------- default deny -----------------------

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

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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