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

Исходное сообщение
"НАТ и не стадартные возможноти ipfw в 7-ой фре"

Отправлено alex123 , 29-Окт-08 13:23 
Народ, я просто что-то бонально ТУПЛЮ, не разобрался с синтаксисом, прочёл дофига доков -- но что-то недоходит. Разжуйте плиз:
I)Если я применяю НАТ, т.е. создаю шлюз, каков должен быть порядок и синтаксис правил:
1)правильно ли я понимаю чтовсе запреты должны идти до нат,а все разрешения после
2)каков должен быть синтаксис разрешений: сохраняются ли ИПы и сети, которые были до ната,или нат их подменяет, и правила разрешения надо писать до ната со ссылками на него?

II) Привязка МАКа для ССХ не работает, что я не правильно написал?

вот мой список правил:

#=====Firewall Configuration
#var
inthost="192.168.1.1"
macint="00:8E:48:38:AA:3D"
intnet="192.168.1.0/29"
outhost="10.15.4.8"
admcomp="192.168.1.5"
macadm="00:B0:18:99:7A:11"
outinterface="rl0"
intinterface="rl1"

#Rules Begin

#antihack
#No Fragmentation
add 10 deny ip from any to any frag
#Deny ISMP hack
add 11 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
#Deny interip mask hack
add 12 reject ip from ${intnet} to any in via ${outinterface}
# Deny X-scaning
add 13 reject tcp from any to any tcpflags fin, syn, rst, psh, ack, urg
# Deny N-scaning
add 14 reject tcp from any to any tcpflags !'fin', !'syn', !'rst', !'psh', !'ack', !'urg'
# Deny FIN-scaning
add 15 reject tcp from any to any not established tcpflags fin
# Prevent from spoofing
add 16 deny ip from any to any not verrevpath in
add 17 deny ip from ${intnet} to any in via ${outinterface}
add 18 deny ip from ${outhost} to any via ${intinterface}
# ip-session limit
#add 19 allow ip  from any to any  setup limit src-addr 10
#Deny loop back external acces
add 20 deny all from any to 127.0.0.0/8
add 21 deny all from 127.0.0.0/8 to any
add 22 deny all from any to 127.0.0.0/8
add 23 deny all from 127.0.0.0/8 to any
#Deny Windows flood
add 24 deny ip from ${intnet} to ${intnet}  135,137-139,445 in via ${intinterface}
add 25 deny ip from any to ${outhost}  135,137-139,445 in via ${outinterface}

#SSH
add 30 allow tcp from ${admcomp} to ${inthost} 22 in via ${intinterface} mac ${macadm} ${macint}
add 31 allow tcp from ${inthost} 22 to ${admcomp} out via ${intinterface} mac ${macint} ${macadm}
add 32 deny tcp from any to ${inthost},${outhost} 22

#NAT
add 35 nat ip from ${intnet} to not ${intnet} out via ${outinterface}

#dynamic on
add 40 check-state

#ICMP
add 50 deny icmp from any to any via ${outinterface}

#HTTP/HTTPS/FTP
add 60 allow tcp from me to not ${intnet} 20,21,80,8080,443 keep-state via ${outinterface}
add 61 allow tcp from not ${intnet} 20,21,80,8080,443 to me via ${outinterface}
add 62 allow upd from me to not ${intnet} 20,21 keep-state via ${outinterface}
add 63 allow upd from not ${intnet} 20,21 to me via ${outinterface}

#Deny any all
add 10000 deny all from any to any via ${outinterface}
add 10001 deny all from any to any via ${intinterface}

#Rules END


Содержание

Сообщения в этом обсуждении
"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено mummy , 29-Окт-08 14:23 
add 10 deny ip from any to any frag

убивает весь нормальный трафик. например веб страница длиннее 1500 байт не пройдёт


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 14:43 
>add 10 deny ip from any to any frag
>
>убивает весь нормальный трафик. например веб страница длиннее 1500 байт не пройдёт
>

Спасибо учту, а если по подробнее? Что означает фраг, просто его рекомендуют ставить для доп защиты, и в случае динамическихправил он тоже гадит?


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено mummy , 29-Окт-08 15:22 
похоже это пригодно для ICMP и UDP. длинные сообщения разбиваются на части и помечаются FRAG(ментированные) меткой. Некоторый программы, передыющие данные по UDP порциями длиннее 1500 байт будит некорректно работать.

"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 15:32 
СПАСИБО,хотя юпд я не много пользуюсь (в основном тсп), но учту, исмп, как я понял для меня вообщене актуален.

"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено Pahanivo , 29-Окт-08 17:05 
>add 10 deny ip from any to any frag
>
>убивает весь нормальный трафик. например веб страница длиннее 1500 байт не пройдёт
>

ну печеццццц
frag это фрагментированный ip пакеты - если mtu уменьшилось на канале


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 17:09 
>>add 10 deny ip from any to any frag
>>
>>убивает весь нормальный трафик. например веб страница длиннее 1500 байт не пройдёт
>>
>
>ну печеццццц
>frag это фрагментированный ip пакеты - если mtu уменьшилось на канале

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


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено Pahanivo , 29-Окт-08 19:38 
google )


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено mummy , 29-Окт-08 14:25 
перед
add 20 deny all from any to 127.0.0.0/8
add 21 deny all from 127.0.0.0/8 to any
add 22 deny all from any to 127.0.0.0/8
add 23 deny all from 127.0.0.0/8 to any

не хватает строки:

allow ip from any to any via lo0


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 14:40 
>перед
>add 20 deny all from any to 127.0.0.0/8
>add 21 deny all from 127.0.0.0/8 to any
>add 22 deny all from any to 127.0.0.0/8
>add 23 deny all from 127.0.0.0/8 to any
>
>не хватает строки:
>
> allow ip from any to any via lo0

Она запускается правилами по умолчанию
300 add allow ip from any to any via lo0
310 add deny from any to 127.0.0.0



"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 14:55 
>
>Она запускается правилами по умолчанию
>300 add allow ip from any to any via lo0
>310 add deny from any to 127.0.0.0

Я торможу, ну не суть важно: фря голая и не требует обращкеий к локалхосту


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено mummy , 29-Окт-08 15:08 
>[оверквотинг удален]
>>add 22 deny all from any to 127.0.0.0/8
>>add 23 deny all from 127.0.0.0/8 to any
>>
>>не хватает строки:
>>
>> allow ip from any to any via lo0
>
>Она запускается правилами по умолчанию
>300 add allow ip from any to any via lo0
>310 add deny from any to 127.0.0.0

правило 300  окажется после 20, а должно быть перед


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 15:10 

>
>правило 300  окажется после 20, а должно быть перед

Я таки понял: написал что торможу, но СПАСИБО, хотя это не столь важно (причину указал выше и по статисти по правилам забанено 0)



"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 16:44 
А по сабжу идеи есть?



"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 17:38 
>[оверквотинг удален]
>
>#SSH
>add 30 allow tcp from ${admcomp} to ${inthost} 22 in via ${intinterface}
>mac ${macadm} ${macint}
>add 31 allow tcp from ${inthost} 22 to ${admcomp} out via ${intinterface}
>mac ${macint} ${macadm}
>add 32 deny tcp from any to ${inthost},${outhost} 22
>
>#NAT
>add 35 nat ip from ${intnet} to not ${intnet} out via ${outinterface}

Да,забыл указать: синтаксис IPFW NAT и NATd -- идентичны



"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено KirilyakSergey , 29-Окт-08 21:27 
>#NAT
>add 35 nat ip from ${intnet} to not ${intnet} out via ${outinterface}

У тебя в нат заварачиваются пакетты исходяшие от локалки к миру а а пакеты которые возвращаются в нат не попадают т.е. нат их не ретранслирует.
Для того чтобы ответить по сабжу надо еще знать как установлен net.inet.ip.fw.one_pass


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 23:57 
>>#NAT
>>add 35 nat ip from ${intnet} to not ${intnet} out via ${outinterface}
>
> У тебя в нат заварачиваются пакетты исходяшие от локалки к миру
>а а пакеты которые возвращаются в нат не попадают т.е. нат
>их не ретранслирует.

а как распределить их обратно? В чём ошибка?


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено KirilyakSergey , 29-Окт-08 22:44 
>Разжуйте плиз:
>I)Если я применяю НАТ, т.е. создаю шлюз, каков должен быть порядок и
>синтаксис правил:
>1)правильно ли я понимаю чтовсе запреты должны идти до нат,а все разрешения
>после
>2)каков должен быть синтаксис разрешений: сохраняются ли ИПы и сети, которые были
>до ната,или нат их подменяет, и правила разрешения надо писать до
>ната со ссылками на него?
>
>II) Привязка МАКа для ССХ не работает, что я не правильно написал?

Разжовую:
во первых правило должно быть такого вида
add 35 nat ip from any to any via ${outinterface}

если net.inet.ip.fw.one_pass установлен в 1 то заворот на нат должен быть последним правилом т.е. все правила разрешения и запрета должны имет номера менше чем правило ната. Так как в етом случае пакет прекращает движение по фаерволу.
если net.inet.ip.fw.one_pass установлен в 0 то тогда надо понимать как работает фаервол:
а именно - возмем исходящий пакет (от локалки в мир)
он попадает на внутренний интерфейс и начинает движение по правилам фаервола с верху в низ.
Пройдя все правила до конца если не находит разрешающего правила погибает (в вашем случе т.к. deny all from any to any via ${intinterface} ) иначе пакет попадает на внешний интерфейс и снова проходит все правила фаервола с верху в низ до тех пор пока он не попадает на правило с натом, после чего нат подменяет адресс источника на свои и возвращает пакет обратно в фаервол на правило следующее после ната далее если пакет не находит разрешающего правила уже с новым адрессом источника он погибает. Допустим он нашел правило типа allow tcp from me to any setup и только после этого пакет уходит в мир.
Предположим пакет дошел до адресата и адресат посылает ответ.
Тот в свою очередь попадает в фаервол на внешнем интерфейсе и начинает движение по правилам до правила с натом (если не встретит по пути запрещающего). Нат подменяет адресс назначения на адресс клиента запросившего данный ответ и возвращает пакет в фаервол на правило следующее после правила с натом пакет продолжает движение по правилам фаервола вниз и если не находит разрешающего правила погибает. Предположим он нашел после чего снова попадает в фаервол уже на внутреннем интерфейсе и т.д.  


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 29-Окт-08 23:55 

ВОТ!!!!!!!! ТО ЧТО НАДО!!!!
ТОЛЬКО Не понял два момента:
1)почему add 35 nat ip from any to any via ${outinterface} , а если я хочу чтоб не все пакеты попадали в нат?

2)если net.inet.ip.fw.one_pass установлен в 1 то заворот на нат должен быть последним правилом т.е. все правила разрешения и запрета должны имет номера менше чем правило ната. Так как в етом случае пакет прекращает движение по фаерволу.

Т.Е. в этом случае пакеты бегут по фаерволу в двазахода, сначало по внутреннему интерфейсу а потом по внешнему и я должен разршённые пакеты SkeepTo правило с натом, и на нате разрешаются к выходу? или они через allow тоже попадут в нат?

А, где можно автоматом задать переменную net.inet.ip.fw.one_pass и можно ли её вкомпилить в ядро?

на всякий случай входящий ип из вне будет выглядеть так?:
ya.ru -> ${outhost} --> преобразование пакета по нат всоответствии с add 35 nat ip from any to any via ${outinterface} (ип назначения поменен с {outhost} на (наример ${admcomp} а ип отправителя остался ya.ru или нет?))-->  попадает на ipfw правила на ${intinterface} --> попадает на ${admcomp}

или нетак?


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено KirilyakSergey , 30-Окт-08 00:23 
>1)почему add 35 nat ip from any to any via ${outinterface} ,
>а если я хочу чтоб не все пакеты попадали в нат?

Если хочеш чтобы не все пакеты попали в нат опиши до правила ната
например если у тебя поднят веб сервер

allow tcp from any to me 80
allow tcp from me 80 to any
nat ip from any to any via ${outinterface}

>2)если net.inet.ip.fw.one_pass установлен в 1 то заворот на нат должен быть последним
>правилом т.е. все правила разрешения и запрета должны имет номера менше
>чем правило ната. Так как в етом случае пакет прекращает движение
>по фаерволу.
>
>Т.Е. в этом случае пакеты бегут по фаерволу в двазахода, сначало по
>внутреннему интерфейсу а потом по внешнему и я должен разршённые пакеты
>SkeepTo правило с натом, и на нате разрешаются к выходу? или
>они через allow тоже попадут в нат?

Немного не так если net.inet.ip.fw.one_pass установлен в 1 то когда пакет доходит до правила ната он уже не возвращается в фаервол т.е если после етого правила у тебя стоял запрет для етого пакета , то запрет работать не будет так как пакет уже уйдет из фаервола.
Короче говоря я всегда ставлю net.inet.ip.fw.one_pass=0 что и тебе советую

>А, где можно автоматом задать переменную net.inet.ip.fw.one_pass и можно ли её вкомпилить
>в ядро?

Можно в ядре, можно через sysctl, можно в файле loader.conf, но самый простой вариант ipfw disable one_pass

>на всякий случай входящий ип из вне будет выглядеть так?:
>ya.ru -> ${outhost} --> преобразование пакета по нат всоответствии с add 35 nat ip from >any to any via ${outinterface} (ип назначения поменен с {outhost} на (наример >${admcomp} а ип отправителя остался ya.ru или нет?))-->  попадает на ipfw правила на >${intinterface} --> попадает на ${admcomp}

все правильно (ип отправителя остался ya.ru)
>или нетак?


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 30-Окт-08 14:06 

>Если хочеш чтобы не все пакеты попали в нат опиши до правила
>ната
>например если у тебя поднят веб сервер

Посмотрите, пожалуйста, в низу новый конфиг: так будет правильно?

>Короче говоря я всегда ставлю net.inet.ip.fw.one_pass=0 что и тебе советую
>

А по умолчанию значение равно 0? и как это проверит?
>

Вот ещё маленький вопросик: в этом варианте правил я пытался динамически запретить инециализацию какихлибосоединений из вне, мене удалось? или как всегда что-то перемудрил?
И что можно сказать о уровнебезопасности по данным правилам?

#=====Firewall Configuration
#var
inthost="192.168.1.1"
macint="00:80:48:38:3A:3D"
intnet="192.168.1.0/29"
outhost="10.15.4.8"
admcomp="192.168.1.2"
macadm="00:E0:18:99:E5:11"
outinterface="rl0"
intinterface="rl1"
#Rules Begin

#antihack
#No Fragmentation
add 10 deny ip from any to any frag
#Deny ISMP hack
add 11 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
#Deny interip mask hack
add 12 reject ip from ${intnet} to any in via ${outinterface}
# Deny X-scaning
add 13 reject tcp from any to any tcpflags fin, syn, rst, psh, ack, urg
# Deny N-scaning
add 14 reject tcp from any to any tcpflags !'fin', !'syn', !'rst', !'psh', !'ack', !'urg'
# Deny FIN-scaning
add 15 reject tcp from any to any not established tcpflags fin
# Prevent from spoofing
add 16 deny ip from any to any not verrevpath in
add 17 deny ip from ${intnet} to any in via ${outinterface}
add 18 deny ip from ${outhost} to any via ${intinterface}
# ip-session limit
#add 19 allow ip  from any to any  setup limit src-addr 10
#Deny loop back external acces
add 20 deny all from any to 127.0.0.0/8
add 21 deny all from 127.0.0.0/8 to any
add 22 deny all from any to 127.0.0.0/8
add 23 deny all from 127.0.0.0/8 to any
#Deny Windows flood
add 24 deny ip from ${intnet} to ${intnet}  135,137-139,445 in via ${intinterface}
add 25 deny ip from any to ${outhost}  135,137-139,445 in via ${outinterface}

#SSH
add 30 allow tcp from ${admcomp} to ${inthost} 22 in via ${intinterface} mac ${macadm} ${macint}
add 31 allow tcp from ${inthost} 22 to ${admcomp} out via ${intinterface} mac ${macint} ${macadm}
add 32 deny tcp from any to ${inthost},${outhost} 22

#dynamic on
add 40 check-state

#ICMP
add 50 deny icmp from any to any via ${outinterface}

#HTTP/HTTPS/FTP
#from intnet to Global over NAT
add 60 skipto 72 tcp from ${intnet} to not ${intnet}  20,21,80,8080,443 keep-state via ${outinterface}
add 61 skipto 72 upd from ${intnet} to not ${intnet} 20,21 keep-state via ${outinterface}
#from Global to intnet over NAT
add 62 skipto 72 tcp from not ${intnet} 20,21,80,8080,443 to ${outhost} via ${outinterface}
add 63 skipto 72 upd from not ${intnet} 20,21 to ${outhost} via ${outinterface}


#NAT
add 70 skipto 72 all from any to any via ${intinterface}
add 71 deny all from any to any via ${outinterface}
add 72 nat ip from any to not ${intnet} out via ${outinterface}

#HTTP/HTTPS/FTP
#from intnet to Global via intinterface
add 80 allow tcp from ${intnet} to not ${intnet}  20,21,80,8080,443 keep-state via ${intinterface}
add 81 allow upd from ${intnet} to not ${intnet} 20,21 keep-state via ${intinterface}!
#from NAT to Global
add 82 allow tcp from ${outhost} to not ${intnet}  20,21,80,8080,443 keep-state via ${outinterface}
add 83 allow upd from ${outhost} to not ${intnet} 20,21 keep-state via ${outinterface}
#from NAT to intnet
add 82 allow tcp from not ${intnet} 20,21,80,8080,443 to ${intnet} via ${outinterface}
add 83 allow upd from not ${intnet} 20,21 to ${intnet} via ${outinterface}
#from Global to intnet via intinterface
add 82 allow tcp from not ${intnet} 20,21,80,8080,443 to ${intnet} via ${intinterface}
add 83 allow upd from not ${intnet} 20,21 to ${intnet} via ${intinterface}

#inter comps
#add 1000 allow ip from ${admcomp} to not ${intnet} via ${intinterface}
#add 1001 allow ip from 192.168.1.3 to not ${intnet} via ${intinterface}

#Deny any all
add 10000 deny all from any to any via ${outinterface}
add 10001 deny all from any to any via ${intinterface}

#Rules END


ОГРООООООООМНОЕ!!!!!!! СПАСИБО!!!!!!!!!,
С ГЛУБОКИМ УВАЖЕНИЕМ,
Alex123.


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено KirilyakSergey , 31-Окт-08 03:11 
>Посмотрите, пожалуйста, в низу новый конфиг: так будет правильно?
>
>>Короче говоря я всегда ставлю net.inet.ip.fw.one_pass=0 что и тебе советую
>>
>
>А по умолчанию значение равно 0? и как это проверит?

Проверить можно командой
#sysctl net.inet.ip.fw.one_pass

>[оверквотинг удален]
>inthost="192.168.1.1"
>macint="00:80:48:38:3A:3D"
>intnet="192.168.1.0/29"
>outhost="10.15.4.8"
>admcomp="192.168.1.2"
>macadm="00:E0:18:99:E5:11"
>outinterface="rl0"
>intinterface="rl1"
>#Rules Begin
>

если ето скрипт указаный в rc.conf опцией firewwall_type="этот скрипт"
то в начале скрипта нужно очищать првила
flush
и добавить
allow ip from any to any via lo0
нумерацию советую делать через 100 или просто не нумеровать правила тогда они сами будут нумероватся через сотню

>#antihack
>#No Fragmentation
>add 10 deny ip from any to any frag
>#Deny ISMP hack
>add 11 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
>#Deny interip mask hack
>add 12 reject ip from ${intnet} to any in via ${outinterface}

12 и 17 правило идентичны
>[оверквотинг удален]
># Deny N-scaning
>add 14 reject tcp from any to any tcpflags !'fin', !'syn', !'rst',
>!'psh', !'ack', !'urg'
># Deny FIN-scaning
>add 15 reject tcp from any to any not established tcpflags fin
>
># Prevent from spoofing
>add 16 deny ip from any to any not verrevpath in
>add 17 deny ip from ${intnet} to any in via ${outinterface}
>add 18 deny ip from ${outhost} to any via ${intinterface}

в этом правиле надо уточнить напрвление
add 18 deny ip from ${outhost} to any in via ${intinterface}
  

>add 20 deny all from any to 127.0.0.0/8
>add 21 deny all from 127.0.0.0/8 to any
>add 22 deny all from any to 127.0.0.0/8
>add 23 deny all from 127.0.0.0/8 to any

22,23 повторяют 20,21
>[оверквотинг удален]
>add 25 deny ip from any to ${outhost}  135,137-139,445 in via
>${outinterface}
>
>#SSH
>add 30 allow tcp from ${admcomp} to ${inthost} 22 in via ${intinterface}
>mac ${macadm} ${macint}
>add 31 allow tcp from ${inthost} 22 to ${admcomp} out via ${intinterface}
>mac ${macint} ${macadm}
>add 32 deny tcp from any to ${inthost},${outhost} 22
>

фильтрацию по мак в твоем случае не нужна во первых у тебя в локалке всего 16 компов
и тебе их не так сложно отфильтровать по макам еще на арп уровне или просто сделай так
arp -s 192.168.1.2 00:E0:18:99:E5:11 и запиши эту строчку в файл rc.local
а включив фильтрацию по мак в фаерволе ты заставиш пакеты попадать в фаервол четыре раза вместо двух.

>#dynamic on
>add 40 check-state
>
>#ICMP
>add 50 deny icmp from any to any via ${outinterface}

вот это зря ты лишаеш себя возможности пинговать кого либо, а ето самый лучший метод диагностики сети
>#HTTP/HTTPS/FTP
>#from intnet to Global over NAT
>add 60 skipto 72 tcp from ${intnet} to not ${intnet}  20,21,80,8080,443
>keep-state via ${outinterface}
>add 61 skipto 72 upd from ${intnet} to not ${intnet} 20,21 keep-state
>via ${outinterface}

во - первых ты забыл про DNS - udp 53 без них тяжело будет гулять по нету
во - вторых использовать keep-state для тсп все равно что гвози микроскопом забивать
и в третьих ты сильно перемудрил
Скажем так все правила после 50 надо убрать они не работоспособны
чего стоит 70 правило :) подумай над ним.
>#NAT
>add 70 skipto 72 all from any to any via ${intinterface}
>add 71 deny all from any to any via ${outinterface}
>add 72 nat ip from any to not ${intnet} out via ${outinterface}

И написать что то вроде :

add 2000 nat ip from any to any via ${outinterface}
add 2100 allow tcp from ${intnet} to not ${intnet} 20,21,80,8080,443 setup
add 2200 allow udp from ${intnet} to not ${intnet} 20,21,53 keep-state
add 2300 allow icmp from ${intnet} to not ${intnet} icmptype 8 keep-state

add 64900 allow tcp from any to any established
add 65000 deny ip from any to any
#Rules END

Изобретал на лету мог и ошибиться, но на первый взгляд все должно работать

>Вот ещё маленький вопросик: в этом варианте правил я пытался динамически запретить
>инециализацию какихлибосоединений из вне, мене удалось? или как всегда что-то перемудрил?

А с безопасностью сильно не переживай последнее правило запрещает все что явно не разрешено исходя из етого прежде чем рарешить что то подумай над безопастностью.    



"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 31-Окт-08 14:40 
>если ето скрипт указаный в rc.conf опцией firewwall_type="этот скрипт"
>то в начале скрипта нужно очищать првила
>flush
>и добавить
>allow ip from any to any via lo0

да это действительно скрипт firewwall_type="этот скрипт", так что мне приходится вручную переправлять имена переменных на их значение (найти/заменить --рулит :))

>
>фильтрацию по мак в твоем случае не нужна во первых у тебя
>в локалке всего 16 компов
>и тебе их не так сложно отфильтровать по макам еще на арп
>уровне или просто сделай так
>arp -s 192.168.1.2 00:E0:18:99:E5:11 и запиши эту строчку в файл rc.local
>а включив фильтрацию по мак в фаерволе ты заставиш пакеты попадать в
>фаервол четыре раза вместо двух.
>

ок, так и сделаю,СПАСИБО! (только откуда получается четыре раза вместо двух я так и не разобрался, и почему не работает мой вариант--тоже)
>>#dynamic on
>>add 40 check-state
>Скажем так все правила после 50 надо убрать они не работоспособны
>чего стоит 70 правило :) подумай над ним.
>>#NAT
>>add 70 skipto 72 all from any to any via ${intinterface}
>>add 71 deny all from any to any via ${outinterface}
>>add 72 nat ip from any to not ${intnet} out via ${outinterface}

Ок. 70-ое -- я ступил, хотел чтоб для внутреннего интерфеса правило 71 не блокировало,а потом его подправил а про 70-ое забыл.

>И написать что то вроде :
>
>add 2000 nat ip from any to any via ${outinterface}

у меня НЕ НАСТРАИВАЕТСЯ НАТ :(((((((:

Ошибки:
Oct 31 08:15:37 alex123 kernel: ipfw2 (+ipv6) initialized, divert loadable, rule-
based forwarding disabled, default to deny, logging disabled
Oct 31 08:15:37 alex123 kernel: ipfw: ipfw_ctl invalid option 56
Oct 31 08:15:37 alex123 savecore: no dumps found

Чего я такого намудрил??

>add 2100 allow tcp from ${intnet} to not ${intnet} 20,21,80,8080,443 setup

наверно глупый вопрос, но что означает опция setup

>add 2200 allow udp from ${intnet} to not ${intnet} 20,21,53 keep-state
>add 2300 allow icmp from ${intnet} to not ${intnet} icmptype 8 keep-state
>
>
>add 64900 allow tcp from any to any established

и что ето застранная надпись established? :)
>add 65000 deny ip from any to any
>#Rules END
>
>Изобретал на лету мог и ошибиться, но на первый взгляд все должно
>работать
>

ОГРОМНОЕ СПАСИБО,
С уважение alex123.


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено KirilyakSergey , 31-Окт-08 15:34 
>у меня НЕ НАСТРАИВАЕТСЯ НАТ :(((((((:
>
>Ошибки:
>Oct 31 08:15:37 alex123 kernel: ipfw2 (+ipv6) initialized, divert loadable, rule-
>based forwarding disabled, default to deny, logging disabled
>Oct 31 08:15:37 alex123 kernel: ipfw: ipfw_ctl invalid option 56
>Oct 31 08:15:37 alex123 savecore: no dumps found
>
>Чего я такого намудрил??
>

надо было в начале файла добавить строчку типа
ipfw nat 1 config ip 10.15.4.8
а првило с натом тогда должно выглядеть
add 2000 nat 1 ip from any to any via ${outinterface}  
>
>>add 2100 allow tcp from ${intnet} to not ${intnet} 20,21,80,8080,443 setup
>
>наверно глупый вопрос, но что означает опция setup
>

ето тсп пакеты с установлеными флагами SYN, ACK т.е. это пакеты которые начинают тсп сесию
иными словами 2100 правило разрешает установление соединения по тсп, а 64900 разрешает уже установленое соединение. Что бы лучше понять как это работает надо прочитать как работает тсп.  
>>add 2200 allow udp from ${intnet} to not ${intnet} 20,21,53 keep-state
>>add 2300 allow icmp from ${intnet} to not ${intnet} icmptype 8 keep-state
>>
>>
>>add 64900 allow tcp from any to any established
>
>и что ето застранная надпись established? :)

смотри выше.В man ipfw хорошее описание этой опции.


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 31-Окт-08 17:44 
>надо было в начале файла добавить строчку типа
>ipfw nat 1 config ip 10.15.4.8
>а првило с натом тогда должно выглядеть
>add 2000 nat 1 ip from any to any via ${outinterface}

# ipfw 1 nat config ip 10.15.2.159
ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument

НЕРАБОТАЕТ:((((((((((
>[оверквотинг удален]
>прочитать как работает тсп.
>>>add 2200 allow udp from ${intnet} to not ${intnet} 20,21,53 keep-state
>>>add 2300 allow icmp from ${intnet} to not ${intnet} icmptype 8 keep-state
>>>
>>>
>>>add 64900 allow tcp from any to any established
>>
>>и что ето застранная надпись established? :)
>
>смотри выше.В man ipfw хорошее описание этой опции.

СПАСИБО!!!!!!! с этим РАЗОБРАЛСЯ



"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено KirilyakSergey , 31-Окт-08 19:01 

># ipfw 1 nat config ip 10.15.2.159
>ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument
>
>НЕРАБОТАЕТ:((((((((((

А у тебя фаерволл уровня ядра или как модуль?
нат нужно включать в ядре.
проверь чтобы в ядре были эти опции
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_FORWARD
options         IPFIREWALL_NAT
options         IPDIVERT



"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 01-Ноя-08 02:38 
>А у тебя фаерволл уровня ядра или как модуль?
>нат нужно включать в ядре.
>проверь чтобы в ядре были эти опции
>options         IPFIREWALL
>options         IPFIREWALL_VERBOSE
>options         IPFIREWALL_VERBOSE_LIMIT=100
>options         IPFIREWALL_DEFAULT_TO_ACCEPT
>options         IPFIREWALL_FORWARD
>options         IPFIREWALL_NAT
>options         IPDIVERT

На уровне ядра, но я когда компилил, не очень разбирался вопциях, по этому переборщил:
что из этого нужно?, а чего нет? как сюда вписать переменную net.inet.ip.fw.one_pass==0?

А опция
>options         IPDIVERT  и
>options         IPFIREWALL_FORWARD

разве нужны для ипфв ната? они вроде для НАТД

options        MROUTING

# ================ Enable pf & altq ==============
device          pf
device          pflog
device          pfsync

options         ALTQ
options         ALTQ_CBQ
options         ALTQ_RED
options         ALTQ_RIO
options         ALTQ_HFSC
options         ALTQ_CDNR
options         ALTQ_PRIQ

# ================== Enable NETGRAPH =======================
options         NETGRAPH
options         NETGRAPH_ASYNC
options         NETGRAPH_BPF
options         NETGRAPH_BRIDGE
options         NETGRAPH_CISCO
options         NETGRAPH_ECHO
options         NETGRAPH_ETHER
options         NETGRAPH_FRAME_RELAY
options         NETGRAPH_GIF
options         NETGRAPH_GIF_DEMUX
options         NETGRAPH_HOLE
options         NETGRAPH_IFACE
options         NETGRAPH_IP_INPUT
options         NETGRAPH_KSOCKET
options         NETGRAPH_L2TP
options         NETGRAPH_LMI

# MPPC Compression

options         NETGRAPH_MPPC_COMPRESSION
options         NETGRAPH_MPPC_ENCRYPTION
options         NETGRAPH_ONE2MANY
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE
options         NETGRAPH_RFC1490
options         NETGRAPH_SOCKET
options         NETGRAPH_TCPMSS
options         NETGRAPH_TEE
options         NETGRAPH_TTY
options         NETGRAPH_UI
options         NETGRAPH_VJC
#===================================================
# FireWall
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=10
options         IPFIREWALL_FORWARD
options         IPFIREWALL_NAT          #ipfw kernel nat support
options         LIBALIAS
options         TCP_DROP_SYNFIN
options         ICMP_BANDLIM
#END KNL

ОГРОМНЕЙШЕЕ СПАСИБО!!!!!!!!!!!!!!!!!!!!!,
С уважением,
alex123.


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 03-Ноя-08 23:06 
>>А у тебя фаерволл уровня ядра или как модуль?
>>нат нужно включать в ядре.

Яне очень разобрался, опции ставил в ядре, но ipfw_nat.ko в папке /boot/kernel/ не лежит :((


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 30-Окт-08 19:18 

>Разжовую:

ещё раз ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!!!!!!!
а по привязки по МАКу случайно не поможите??


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено A Clockwork Orange , 31-Окт-08 06:38 
>[оверквотинг удален]
>>II) Привязка МАКа для ССХ не работает, что я не правильно написал?
>
>Разжовую:
>во первых правило должно быть такого вида
>add 35 nat ip from any to any via ${outinterface}
>
>если net.inet.ip.fw.one_pass установлен в 1 то заворот на нат должен быть последним
>правилом т.е. все правила разрешения и запрета должны имет номера менше
>чем правило ната. Так как в етом случае пакет прекращает движение
>по фаерволу.

net.inet.ip.fw.one_pass: 1 пакет, выходящий из потока dummynet, не проходит через брандмауэр повторно, В противном случае, после обработки канала пакет повторно вводится в брандмауэр по следующему правилу.
К натд это не имеет отношения
>[оверквотинг удален]
>не попадает на правило с натом, после чего нат подменяет адресс
>источника на свои и возвращает пакет обратно в фаервол на правило
>следующее после ната далее если пакет не находит разрешающего правила уже
>с новым адрессом источника он погибает. Допустим он нашел правило типа
>allow tcp from me to any setup и только после этого
>пакет уходит в мир.
>Предположим пакет дошел до адресата и адресат посылает ответ.
>Тот в свою очередь попадает в фаервол на внешнем интерфейсе и начинает
>движение по правилам до правила с натом (если не встретит по
>пути запрещающего).

Или не встретит разрешающего правила.


>Нат подменяет адресс назначения на адресс клиента запросившего данный
>ответ и возвращает пакет в фаервол на правило следующее после правила
>с натом пакет продолжает движение по правилам фаервола вниз и если
>не находит разрешающего правила погибает. Предположим он нашел после чего снова
>попадает в фаервол уже на внутреннем интерфейсе и т.д.


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено KirilyakSergey , 31-Окт-08 13:26 
>[оверквотинг удален]
>>
>>если net.inet.ip.fw.one_pass установлен в 1 то заворот на нат должен быть последним
>>правилом т.е. все правила разрешения и запрета должны имет номера менше
>>чем правило ната. Так как в етом случае пакет прекращает движение
>>по фаерволу.
>
>>net.inet.ip.fw.one_pass: 1 пакет, выходящий из потока dummynet, не проходит через брандмауэр повторно,
>>В противном случае, после обработки канала пакет повторно вводится в брандмауэр
>>по следующему правилу.
>К натд это не имеет отношения

Очень даже имеет
man ipfw FreeBSD 7.0
To let the packet continue after being (de)aliased, set the sysctl vari-
     able net.inet.ip.fw.one_pass to 0.  For more information about aliasing
     modes, refer to libalias(3) See Section EXAMPLES for some examples about
     nat usage.


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено alex123 , 31-Окт-08 17:49 
>[оверквотинг удален]
>
>Очень даже имеет
>man ipfw FreeBSD 7.0
>To let the packet continue after being (de)aliased, set the sysctl vari-
>
>     able net.inet.ip.fw.one_pass to 0.  For more
>information about aliasing
>     modes, refer to libalias(3) See Section EXAMPLES
>for some examples about
>     nat usage.

ИМЕЕТ, только не к НАТД а к IPFW NAT :), как я понял и оно должно быть==0, чтоб работали последующие правила

а как задать net.inet.ip.fw.one_pass==0 в ядре??

ОГРОМНОЕ СПАСИБО!!! ТАКИМИ тепами я из полного лаймера превращусь в неполного юзера уже через неделю:)


"НАТ и не стадартные возможноти ipfw в 7-ой фре"
Отправлено Ночной админ , 01-Ноя-08 11:42 
>[оверквотинг удален]
>>for some examples about
>>     nat usage.
>
>ИМЕЕТ, только не к НАТД а к IPFW NAT :), как я
>понял и оно должно быть==0, чтоб работали последующие правила
>
>а как задать net.inet.ip.fw.one_pass==0 в ядре??
>
>ОГРОМНОЕ СПАСИБО!!! ТАКИМИ тепами я из полного лаймера превращусь в неполного юзера
>уже через неделю:)

через sysctl