The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"не могу разобраться с динамическими правилами..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (BSD ipfw, ipf, ip-filter / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (ok) on 09-Мрт-11, 20:19 
Доброго времени суток!
Мучаюсь сегодня весь день, млин, не пойму, где что понял неправильно.
Пусть,внешний IP- X.X.X.X , внутренняя сетевая - iif, внешняя - oif, внутренняя сеть - 192.168.0.0/24
Конфиг (отбрасывая пока ограничения по спуфингу и всяким разным появлениям пакетов, там, где им не место быть, оставляя самый костяк) -

#!/bin/sh

/sbin/ipfw -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 200 allow all from any to any via iif
/sbin/ipfw add 250 check-state
/sbin/ipfw add 300 divert natd ip from 192.168.0.0/24 to any out via oif
/sbin/ipfw add 350 divert natd ip from any to x.x.x.x. in via oif
/sbin/ipfw add 400 allow udp from any to any 53 out via oif keep-state
/sbin/ipfw add 450 allow tcp from any to any 80 out via oif keep-state
/sbin/ipfw add 700 allow icmp from any to any
ну и по дефолту deny all from any to any

И вот засада - с самого роутера все, что разрешил - есть, а с тестовой машины, у которой шлюзом - внутренний адрес роутера, DNS-ом - любой публичный DNS -  нифига нет. Так мало того, что ничего нет (ну кроме пингов по IP), так, сволочь, даже не резолвит ничего...
Ну где я тут в трех соснах запутался - ткните, плиз, кому не трудно.
Заранее спасибо.


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

Оглавление

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


1. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Pahanivo (ok) on 09-Мрт-11, 21:59 
1) роутер включил?
2) ээ последовательность "nat, check-state, keep-state" попробуй


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

2. "не могу разобраться с динамическими правилами..."  +/
Сообщение от arachnid (ok) on 10-Мрт-11, 12:45 
а форвардинг включен?
что говорит sysctl net.inet.ip.forwarding ?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (ok) on 10-Мрт-11, 13:36 
> а форвардинг включен?
> что говорит sysctl net.inet.ip.forwarding ?

В rc.conf  - gateway_enable="YES" - присутствует, конечно.
Насколько знаю, это аналогичные вещи?


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

4. "не могу разобраться с динамическими правилами..."  +/
Сообщение от arachnid (ok) on 10-Мрт-11, 15:54 
>> а форвардинг включен?
>> что говорит sysctl net.inet.ip.forwarding ?
> В rc.conf  - gateway_enable="YES" - присутствует, конечно.
> Насколько знаю, это аналогичные вещи?

угу!

на всякий случай попробуйте изменить правило ната на следующее

ipfw add divert natd ip4 from any to any via <нужный интерфейс>

по крайней мере именно в таком виде оно присутствует в /etc/rc.firewall

да, и посмотрите tcpdump'ом на внешнем интерфейсе, приходят ли на него пакеты с внутренних хостов

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

5. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (ok) on 10-Мрт-11, 18:07 
Чувствую, у меня мозг закипать начинает...))
Будем плясать от печки.
Пока у меня фаер работает должным образом только в stateless- варианте
его конфиг -

#!/bin/sh

/sbin/ipfw -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 200 allow all from any to any via iif
/sbin/ipfw add 300 divert natd ip from 192.168.0.0/24 to any out via oif
/sbin/ipfw add 350 divert natd ip from not 192.168.0.0/24 to x.x.x.x in via oif
/sbin/ipfw add 400 allow ip from x.x.x.x to any out via oif
/sbin/ipfw add 450 allow udp from any 53 to x.x.x.x in via oif
/sbin/ipfw add 500 allow udp from 192.168.0.0/24 to any 53 out via oif
/sbin/ipfw add 550 allow udp from any 53 to 192.168.0.0/24 in via oif
/sbin/ipfw add 600 allow tcp from 192.168.0.0/24 to any 80,53,25,110 out via oif
/sbin/ipfw add 650 allow tcp from any 80,53,25,110 to 192.168.0.0/24 in via oif
/sbin/ipfw add 700 allow icmp from any to any
#ну и всем все запретить

ну, либо чуть упростив, учитывая, что правило 400 разрешает исходящий ип не только самому роутеру, но и внутренним хостам, которых до этого обработал нат в правиле 300 -

#!/bin/sh

/sbin/ipfw -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 200 allow all from any to any via iif
/sbin/ipfw add 300 divert natd ip from 192.168.0.0/24 to any out via oif
/sbin/ipfw add 350 divert natd ip from not 192.168.0.0/24 to x.x.x.x in via oif
/sbin/ipfw add 400 allow ip from x.x.x.x to any out via oif
/sbin/ipfw add 450 allow udp from any 53 to x.x.x.x in via oif
#/sbin/ipfw add 500 allow udp from 192.168.0.0/24 to any 53 out via oif
/sbin/ipfw add 550 allow udp from any 53 to 192.168.0.0/24 in via oif
#/sbin/ipfw add 600 allow tcp from 192.168.0.0/24 to any 80,53,25,110 out via oif
/sbin/ipfw add 650 allow tcp from any 80,53,25,110 to 192.168.0.0/24 in via oif
/sbin/ipfw add 700 allow icmp from any to any
#ну и всем все запретить

Так, соответственно, тоже работает.


Вроде бы, на мой скромный еще взгляд, для костяка stateless-конфига не сильно страшно.(но это без всяких запрещающих правил выше диверта)
НО
Как только я пытаюсь добавить динамические правила - все, самый настоящий болт
ну например для tcp

#!/bin/sh

/sbin/ipfw -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 200 allow all from any to any via iif
/sbin/ipfw add 300 divert natd ip from 192.168.0.0/24 to any out via oif
/sbin/ipfw add 350 divert natd ip from not 192.168.0.0/24 to x.x.x.x in via oif
/sbin/ipfw add 400 allow ip from x.x.x.x to any out via oif
/sbin/ipfw add 450 allow udp from any 53 to x.x.x.x in via oif
/sbin/ipfw add 500 allow udp from 192.168.0.0/24 to any 53 out via oif
/sbin/ipfw add 550 allow udp from any 53 to 192.168.0.0/24 in via oif
/sbin/ipfw add 550 check-state
/sbin/ipfw add 600 allow tcp from 192.168.0.0/24 to any 80,53,25,110 out via oif keep-state
/sbin/ipfw add 700 allow icmp from any to any
#ну и всем все запретить

Нифига не работает (по tcp)
Ну вот где я ошибся???


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

6. "не могу разобраться с динамическими правилами..."  +/
Сообщение от arachnid (ok) on 10-Мрт-11, 22:51 
это точные копии файла с правилами?

а повторение номера 550 - так и есть?

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

7. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (ok) on 11-Мрт-11, 00:00 
Ой, конечно нет повторения, напечатал не то..
#!/bin/sh

/sbin/ipfw -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 200 allow all from any to any via iif
/sbin/ipfw add 300 divert natd ip from 192.168.0.0/24 to any out via oif
/sbin/ipfw add 350 divert natd ip from not 192.168.0.0/24 to x.x.x.x in via oif
/sbin/ipfw add 400 allow ip from x.x.x.x to any out via oif
/sbin/ipfw add 450 allow udp from any 53 to x.x.x.x in via oif
/sbin/ipfw add 500 allow udp from 192.168.0.0/24 to any 53 out via oif
/sbin/ipfw add 550 allow udp from any 53 to 192.168.0.0/24 in via oif
/sbin/ipfw add 560 check-state
/sbin/ipfw add 600 allow tcp from 192.168.0.0/24 to any 80,53,25,110 out via oif keep-state
/sbin/ipfw add 700 allow icmp from any to any
#ну и всем все запретить

Вот так, вообщем. Да, правила слово в слово с конфига.

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

8. "не могу разобраться с динамическими правилами..."  +/
Сообщение от arachnid (ok) on 11-Мрт-11, 12:43 
> /sbin/ipfw add 560 check-state
> /sbin/ipfw add 600 allow tcp from 192.168.0.0/24 to any 80,53,25,110 out via
> oif keep-state

попробуй убрать out.
перед этим можно посмотреть формируемые динамические правила командой ipfw -d show.
и кинуть сюда. до и после

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

9. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Pahanivo (ok) on 11-Мрт-11, 14:07 
для начала показывай реальные правила
ipfw -a list
а не скрипт ...


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

10. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (ok) on 11-Мрт-11, 18:03 
И так. Дело чуть сдвинулось с точки, но не намного.
Начну снова с stateless-варианта -


blabla# ipfw show
00100  0    0 allow ip from any to any via lo
00120 35 3228 allow ip from any to any via iif
00200  3  128 divert 8668 ip from 192.168.0.0/24 to any out via oif
00250  8  376 divert 8668 ip from not 192.168.0.0/24 to x.x.x.x in via oif
00300  3  128 allow ip from x.x.x.x to any out via oif
00350  0    0 allow udp from any 53 to x.x.x.x in via oif
00400  0    0 allow udp from 192.168.0.0/24 to any dst-port 53 out via oif
00450  0    0 allow udp from any 53 to 192.168.0.0/24 in via oif
00500  0    0 allow tcp from 192.168.0.0/24 to any dst-port 80,25,110 via oif
00550  2   88 allow tcp from any 80,25,110 to 192.168.0.0/24 in via oif
00700  0    0 allow icmp from any to any
65535  6  288 deny ip from any to any
Здесь пустил телнет по 80 порту на yandex.ru
Видно, что -
1.пакет обработал нат в правиле 200
2. отработало 300
3. снова нат в правиле 250
4. ну и пропустило ответный tcp пакет 550
Тут понятно.
Но снова - приписываю одно динамическое правило, ребут, чистый список -
blabla# ipfw -d show
00100  0   0 allow ip from any to any via lo
00120 12 912 allow ip from any to any via iif
00200  0   0 divert 8668 ip from 192.168.0.0/24 to any out via oif
00250  2 104 divert 8668 ip from not 192.168.0.0/24 to x.x.x.x in via oif
00260  0   0 check-state
00300  0   0 allow ip from x.x.x.x to any out via oif
00350  0   0 allow udp from any 53 to x.x.x.x in via oif
00400  0   0 allow udp from 192.168.0.0/24 to any dst-port 53 out via oif
00450  0   0 allow udp from any 53 to 192.168.0.0/24 in via oif
00500  0   0 allow tcp from 192.168.0.0/24 to any dst-port 80,25,110 via oif keep-state
00700  0   0 allow icmp from any to any
65535  2 104 deny ip from any to any
Ну, почти чистый). Какая-то сволочь уже пытается прорваться снаружи в этом маленьком интервале.
Пускаю телнет по 80 порту на yandex.ru -
blabla# ipfw -d show
00100  0    0 allow ip from any to any via lo
00120 14 1008 allow ip from any to any via iif
00200  2   96 divert 8668 ip from 192.168.0.0/24 to any out via oif
00250  2   96 divert 8668 ip from not 192.168.0.0/24 to x.x.x.x in via oif
00260  0    0 check-state
00300  2   96 allow ip from x.x.x.x to any out via oif
00350  0    0 allow udp from any 53 to x.x.x.x in via oif
00400  0    0 allow udp from 192.168.0.0/24 to any dst-port 53 out via oif
00450  0    0 allow udp from any 53 to 192.168.0.0/24 in via oif
00500  0    0 allow tcp from 192.168.0.0/24 to any dst-port 80,25,110 via oif keep-state
00700  0    0 allow icmp from any to any
65535  2   96 deny ip from any to any
И вот он болт в чистом виде.
До правила 500 пакет просто не доходит, соответственно ответное правило не генерируется.
А все из-за правила 300. И, вроде, все логично, но как мне в таком случае прописать динамику для локальной сети???
Вот тут моя мысль пока зашла в тупик..


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

11. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (ok) on 11-Мрт-11, 18:04 
млин, сорри, в обоих случаях пускал тестовый телнет на 80 порт на IP яндекса, чтобы пока отсеять DNS
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Pahanivo (ok) on 11-Мрт-11, 19:04 
> И вот он болт в чистом виде.
> До правила 500 пакет просто не доходит, соответственно ответное правило не генерируется.

естно ) как прописали - так и робит ))

> А все из-за правила 300. И, вроде, все логично, но как мне
> в таком случае прописать динамику для локальной сети???
> Вот тут моя мысль пока зашла в тупик..

allow ip from any to any via lo
allow ip from any to any via iif
divert 8668 ip from 192.168.0.0/24 to any out via oif
divert 8668 ip from not any to x.x.x.x in via oif
check-state
#после дайверта исходящий с oif пакет имеет x.x.x.x в качестве соурса!
allow udp allow from x.x.x.x to any dst-port 53 keep-state # разрешаем DNS
allow tcp allow from x.x.x.x to any dst-port 25,110,80 keep-state # разрешаем почта+веб
allow icmp from any to any keep-state
deny ip from any to any # дефолтный дроп

както так .....

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

13. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (ok) on 14-Мрт-11, 12:21 
Вот и я так думал - в самом начале привел такую же схему, только я там check-state ошибочно поднял над natd. Но на клиентской машине по-прежнему нет ни http, ни почты. На роутере - да, есть.

allow udp allow from x.x.x.x to any dst-port 53 keep-state # разрешаем DNS
allow tcp allow from x.x.x.x to any dst-port 25,110,80 keep-state # разрешаем почта+веб

Эти правила будут создавать динамические, для разрешения прохождения ответных пакетов из any только на сам роутер. Так как соурсом в вышеперичисленных сам роутер и выступает. А по другому и никак. А вот как создать работающие правила с keep-state именно для внутренней сети - не пойму. Нет, можно, конечно http через прокси на роутере пустить, но а с остальными портами что делать?
Блин, это вообще в принципе возможно сделать в ipfw???
Ну просто не нравятся мне совершенно эти правила в статике, типа
allow tcp from any 80 to 192.168.0.0/24 in via oif
Ну что это за дыра...
Как для внутренней сети, без всяких прокси, разрешить прохождение входящих пакетов ТОЛЬКО в том случае, если они идут в ответ на уже инициированное внутреннеми хостами исходящее соединение???

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

14. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (??) on 14-Мрт-11, 13:05 
упс, кажется, я нашел выход)) Ну, всмысле нашел в man_ipfw нужный мне абзац с описанием моей ситуации. Сейчас, покурю еще матчасть и попробую в действии. Ну и отпишусь, конечно.
skipto Forever)))
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Pahanivo (ok) on 14-Мрт-11, 15:11 
для начала надо сформулировать четко что надо - из словесной каши мало что понятно ...
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

16. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (ok) on 14-Мрт-11, 16:43 
Необходимо в конечном итоге получить 80,25,110 порты на клиентской машине, не через прокси.
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Pahanivo (ok) on 14-Мрт-11, 18:04 
> Необходимо в конечном итоге получить 80,25,110 порты на клиентской машине, не через
> прокси.

и чем вас не устроил мой вариант?

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

20. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (ok) on 14-Мрт-11, 21:03 
>> Необходимо в конечном итоге получить 80,25,110 порты на клиентской машине, не через
>> прокси.
> и чем вас не устроил мой вариант?

Тем, что, насколько я понимаю, 80, 25, 110 порты (да любые в таком варианте)
на хостах внутренней сети мы не получим в принципе. На самом роутере - да, все будет красиво.

allow ip from any to any via lo
allow ip from any to any via iif
divert 8668 ip from 192.168.0.0/24 to any out via oif
divert 8668 ip from not any to x.x.x.x in via oif
check-state
#после дайверта исходящий с oif пакет имеет x.x.x.x в качестве соурса!
allow udp allow from x.x.x.x to any dst-port 53 keep-state # разрешаем DNS
allow tcp allow from x.x.x.x to any dst-port 25,110,80 keep-state # разрешаем почта+веб
allow icmp from any to any keep-state
deny ip from any to any # дефолтный дроп

Смотрите, правила с keep-state в этом варианте стоят после нат и относятся только к собственно роутеру (x.x.x.x или me, как угодно), поэтому исходящий пакет с внутреннего хоста то пройдет (хоть и в таблицу состояний не попадет), но входящий - нет, поскольку динамическое правило по сути - не для него.
В этом случае, я так думаю, схема нужна примерно такая -

add 100 allow ip from any to any via lo
add 200 allow ip from any to any via iif
add 300 natd ip from any to any in via oif
add 400 check-state
add 500 skipto 1000 tcp from any to any 80,25,110 out via oif keep-state
add 600 deny ip from any to any
add 1000 natd ip from any to any out via oif
add 1100 allow ip from any to any via oif
#и дефолтный дроп

На практике сегодня не успел проверить - на резервном канале инет отключили...
Но, в теории - должно работать. Во всяком случае, в man_ipfw обнаружил именно это.

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

22. "не могу разобраться с динамическими правилами..."  +/
Сообщение от DenSha (??) on 15-Мрт-11, 10:04 
>[оверквотинг удален]
> DNS
> allow tcp allow from x.x.x.x to any dst-port 25,110,80 keep-state # разрешаем
> почта+веб
> allow icmp from any to any keep-state
> deny ip from any to any # дефолтный дроп
> Смотрите, правила с keep-state в этом варианте стоят после нат и относятся
> только к собственно роутеру (x.x.x.x или me, как угодно), поэтому исходящий
> пакет с внутреннего хоста то пройдет (хоть и в таблицу состояний
> не попадет), но входящий - нет, поскольку динамическое правило по сути
> - не для него.

Да, для внешнего интерфейса. Внутренний пройдет по 2-му правилу.
>[оверквотинг удален]
> add 100 allow ip from any to any via lo
> add 200 allow ip from any to any via iif
> add 300 natd ip from any to any in via oif
> add 400 check-state
> add 500 skipto 1000 tcp from any to any 80,25,110 out via
> oif keep-state
> add 600 deny ip from any to any
> add 1000 natd ip from any to any out via oif
> add 1100 allow ip from any to any via oif
> #и дефолтный дроп

Очень интересно, как отработает эта конструкция:)

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

23. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (??) on 15-Мрт-11, 11:03 

> Да, для внешнего интерфейса. Внутренний пройдет по 2-му правилу.

Не понял, по какому второму??

> Очень интересно, как отработает эта конструкция:)

Что вас рассмешило? Я где-то ошибся?

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

24. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (??) on 15-Мрт-11, 11:13 
ну в принципе должно быть так, конечно -

add 100 allow ip from any to any via lo
add 200 allow ip from any to any via iif
add 300 natd ip from any to any in via oif
add 400 check-state
add 500 skipto 1000 tcp from any to any 80,25,110 out via oif keep-state
add 510 skipto 1000 udp from any to any 53 out via oif keep-state
add 520 skipto 1000 icmp from any to any out via oif keep-state
#в первом варианте правило из 500-й серии оставил одно для наглядности
add 600 deny ip from any to any
add 1000 natd ip from any to any out via oif
add 1100 allow ip from any to any via oif
#и дефолтный дроп

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

28. "не могу разобраться с динамическими правилами..."  +/
Сообщение от DenSha (??) on 15-Мрт-11, 14:46 
>> Да, для внешнего интерфейса. Внутренний пройдет по 2-му правилу.
> Не понял, по какому второму??

add 200 allow ip from any to any via iif

>> Очень интересно, как отработает эта конструкция:)
> Что вас рассмешило? Я где-то ошибся?

Я не претендую на _знание_ ipfw, так как он у меня тоже на стадии изучения. Если я правильно понял, в предлагаемой конструкции в динамическую таблицу должно попасть не правило прохода экрана, а переход на статическое правило прохода? А понятия 'интересно' и 'смешно' не путаю. Но, если я прав, подход забавный. Без обид?

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

18. "не могу разобраться с динамическими правилами..."  +/
Сообщение от DenSha (??) on 14-Мрт-11, 19:11 

> divert 8668 ip from not any to x.x.x.x in via oif

зачем 'not'?
и
> allow udp allow from x.x.x.x to any dst-port 53 keep-state

allow udp from x.x.x.x to any 53 via oif keep-state
> allow tcp allow from x.x.x.x to any dst-port 25,110,80 keep-state

allow tcp from x.x.x.x to any 25,80,110 via oif setup keep-state

> allow icmp from any to any keep-state

а 'keep-state' здесь нужен?

и, наверное, ipfw add deny all from any to any established после check-state?

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

19. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Pahanivo (ok) on 14-Мрт-11, 19:18 
>> divert 8668 ip from not any to x.x.x.x in via oif
> зачем 'not'?

затем что описка
> allow udp from x.x.x.x to any 53 via oif keep-state
>> allow tcp allow from x.x.x.x to any dst-port 25,110,80 keep-state
> allow tcp from x.x.x.x to any 25,80,110 via oif setup keep-state
>> allow icmp from any to any keep-state

какая в опу разница?
> а 'keep-state' здесь нужен?

нужет

> и, наверное, ipfw add deny all from any to any established после
> check-state?

ммм прежде чем вносить глупые коменты может стоит внимательно прочитать?
в данном фаеезе дозведы - потому как до дропа идут правила разрешающие исходящие пакеты ...

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

21. "не могу разобраться с динамическими правилами..."  +/
Сообщение от DenSha (??) on 15-Мрт-11, 09:51 
>>> allow icmp from any to any keep-state
>> а 'keep-state' здесь нужен?
> нужет

Категорично... А что это дает?

>> и, наверное, ipfw add deny all from any to any established после
>> check-state?

... ipfw add deny all from any to any via oif established ...

> ммм прежде чем вносить глупые коменты может стоит внимательно прочитать?

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

И входящие заодно, если я правильно понимаю. А 'фаеезе' это что?

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

25. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Pahanivo (ok) on 15-Мрт-11, 12:17 

>>> и, наверное, ipfw add deny all from any to any established после
>>> check-state?
> ... ipfw add deny all from any to any via oif established
> ...

а какже udp например?

> И входящие заодно, если я правильно понимаю. А 'фаеезе' это что?

фаере

это тестовый вариант фаера - товарисщь пытается запустить statefull

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

26. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (??) on 15-Мрт-11, 12:44 
Перетащу сюда, вниз, что то ответы вразброс идут...
Итак, вот костяк конфига

add 100 allow ip from any to any via lo
add 200 allow ip from any to any via iif
add 300 natd ip from any to any in via oif
add 400 check-state
add 500 skipto 1000 tcp from any to any 80,25,110 out via oif keep-state
add 510 skipto 1000 udp from any to any 53 out via oif keep-state
add 520 skipto 1000 icmp from any to any out via oif keep-state
add 600 deny ip from any to any
add 1000 natd ip from any to any out via oif
add 1100 allow ip from any to any via
#и дефолтный дроп

Что думаете? К глубочайшему сожалению, прямо сейчас нет возможности проверить на роутере.
Но в теории - как раз то, что нужно...
кип-стайтит пакеты из локальной сети, натит все, что нужно. Также проходят пакеты от самого роутера. Входящие пакеты, не принадлежащие открытым изнутри соединениям - отбрасываются правилом 600. Смотрю в упор 28-й раз, вроде теоретически должен работать...

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

27. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Pahanivo (ok) on 15-Мрт-11, 12:53 
>[оверквотинг удален]
> add 600 deny ip from any to any
> add 1000 natd ip from any to any out via oif
> add 1100 allow ip from any to any via
> #и дефолтный дроп
> Что думаете? К глубочайшему сожалению, прямо сейчас нет возможности проверить на роутере.
> Но в теории - как раз то, что нужно...
> кип-стайтит пакеты из локальной сети, натит все, что нужно. Также проходят пакеты
> от самого роутера. Входящие пакеты, не принадлежащие открытым изнутри соединениям -
> отбрасываются правилом 600. Смотрю в упор 28-й раз, вроде теоретически должен
> работать...

хм - решили усложнить жизнь skip-to ))
если уж так не прет - то берите tcpdump + вешайте на все правила log и смотрите ...

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

29. "не могу разобраться с динамическими правилами..."  +/
Сообщение от Linkor (??) on 15-Мрт-11, 15:47 
Ну наконец-то!! Фаер заработал именно так, как нужно.
Итак, финальный костяк statefull -конфига (собственно, почти не отличающийся от крайнего вышепреведенного)

#!/bin/sh

/sbin/ipfw -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 120 allow all from any to any via iif
/sbin/ipfw add 250 divert natd ip from any to x.x.x.x in via oif
/sbin/ipfw add 260 check-state
/sbin/ipfw add 300 skipto 1000 udp from any to any 53 out via oif keep-state
/sbin/ipfw add 310 skipto 1000 tcp from any to any 80,25,110 out via oif keep-state
/sbin/ipfw add 320 skipto 1000 icmp from any to any out via oif keep-state
/sbin/ipfw add 400 deny all from any to any
/sbin/ipfw add 1000 divert natd ip from 192.168.0.0/24 to any out via oif
/sbin/ipfw add 1100 allow all from any to any via oif
#и дефолтный deny all from any to any

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

DenSha - на самом деле это конфиг-  вполне себе простой и логичный выход из ситуации, когда нужно иметь statefull - фаерволл в связке с нат. Без skipto - вы просто не расположите в принципе правила 250,260,300-320,1000 в таком порядке, чтобы и keep-state отрабатывал то, что нужно (а именно и пакеты с хостов внутренней сети, и самого роутера), и нат натил, и правила пропускали все это безобразие, причем в обе стороны. Причем, чтобы входящий трафик в принципе был закрыт, а открывался только в ответ на уже установленное исходящее соединение, да и то на несколько секунд.
А правило 120 - всего лишь разрешает прохождение всего через ЛОКАЛЬНУЮ сетевую роутера, но не дальше.

http://www.intuit.ru/department/network/firewalls/3/9.html
Вот здесь, ближе к концу - как раз все это описывается, на русском, с примером.
Впрочем, это лишь перевод слово в слово с man ipfw, пункт 30.6.5.7

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

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

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




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

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