Народ, я просто что-то бонально ТУПЛЮ, не разобрался с синтаксисом, прочёл дофига доков -- но что-то недоходит. Разжуйте плиз:
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
add 10 deny ip from any to any fragубивает весь нормальный трафик. например веб страница длиннее 1500 байт не пройдёт
>add 10 deny ip from any to any frag
>
>убивает весь нормальный трафик. например веб страница длиннее 1500 байт не пройдёт
>Спасибо учту, а если по подробнее? Что означает фраг, просто его рекомендуют ставить для доп защиты, и в случае динамическихправил он тоже гадит?
похоже это пригодно для ICMP и UDP. длинные сообщения разбиваются на части и помечаются FRAG(ментированные) меткой. Некоторый программы, передыющие данные по UDP порциями длиннее 1500 байт будит некорректно работать.
СПАСИБО,хотя юпд я не много пользуюсь (в основном тсп), но учту, исмп, как я понял для меня вообщене актуален.
>add 10 deny ip from any to any frag
>
>убивает весь нормальный трафик. например веб страница длиннее 1500 байт не пройдёт
>ну печеццццц
frag это фрагментированный ip пакеты - если mtu уменьшилось на канале
>>add 10 deny ip from any to any frag
>>
>>убивает весь нормальный трафик. например веб страница длиннее 1500 байт не пройдёт
>>
>
>ну печеццццц
>frag это фрагментированный ip пакеты - если mtu уменьшилось на каналеПоясните лаймеру, я думал что фраг -- это кусок ИП пакета, образовавшейся из-за плохой связи, используются как способ поиска дыр; но из вышеперечисленных сообщений понял, что это совсем не так; а по сабжу кто-нить ответит? Вопрос не сложный, вроде бы?
google )
перед
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
>перед
>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
>
>Она запускается правилами по умолчанию
>300 add allow ip from any to any via lo0
>310 add deny from any to 127.0.0.0Я торможу, ну не суть важно: фря голая и не требует обращкеий к локалхосту
>[оверквотинг удален]
>>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, а должно быть перед
>
>правило 300 окажется после 20, а должно быть передЯ таки понял: написал что торможу, но СПАСИБО, хотя это не столь важно (причину указал выше и по статисти по правилам забанено 0)
А по сабжу идеи есть?
>[оверквотинг удален]
>
>#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 -- идентичны
>#NAT
>add 35 nat ip from ${intnet} to not ${intnet} out via ${outinterface}У тебя в нат заварачиваются пакетты исходяшие от локалки к миру а а пакеты которые возвращаются в нат не попадают т.е. нат их не ретранслирует.
Для того чтобы ответить по сабжу надо еще знать как установлен net.inet.ip.fw.one_pass
>>#NAT
>>add 35 nat ip from ${intnet} to not ${intnet} out via ${outinterface}
>
> У тебя в нат заварачиваются пакетты исходяшие от локалки к миру
>а а пакеты которые возвращаются в нат не попадают т.е. нат
>их не ретранслирует.а как распределить их обратно? В чём ошибка?
>Разжуйте плиз:
>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 и только после этого пакет уходит в мир.
Предположим пакет дошел до адресата и адресат посылает ответ.
Тот в свою очередь попадает в фаервол на внешнем интерфейсе и начинает движение по правилам до правила с натом (если не встретит по пути запрещающего). Нат подменяет адресс назначения на адресс клиента запросившего данный ответ и возвращает пакет в фаервол на правило следующее после правила с натом пакет продолжает движение по правилам фаервола вниз и если не находит разрешающего правила погибает. Предположим он нашел после чего снова попадает в фаервол уже на внутреннем интерфейсе и т.д.
ВОТ!!!!!!!! ТО ЧТО НАДО!!!!
ТОЛЬКО Не понял два момента:
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}или нетак?
>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)
>или нетак?
>Если хочеш чтобы не все пакеты попали в нат опиши до правила
>ната
>например если у тебя поднят веб серверПосмотрите, пожалуйста, в низу новый конфиг: так будет правильно?
>Короче говоря я всегда ставлю 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.
>Посмотрите, пожалуйста, в низу новый конфиг: так будет правильно?
>
>>Короче говоря я всегда ставлю 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 any22,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-stateadd 64900 allow tcp from any to any established
add 65000 deny ip from any to any
#Rules ENDИзобретал на лету мог и ошибиться, но на первый взгляд все должно работать
>Вот ещё маленький вопросик: в этом варианте правил я пытался динамически запретить
>инециализацию какихлибосоединений из вне, мене удалось? или как всегда что-то перемудрил?А с безопасностью сильно не переживай последнее правило запрещает все что явно не разрешено исходя из етого прежде чем рарешить что то подумай над безопастностью.
>если ето скрипт указаный в 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.
>у меня НЕ НАСТРАИВАЕТСЯ НАТ :(((((((:
>
>Ошибки:
>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 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 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
>А у тебя фаерволл уровня ядра или как модуль?
>нат нужно включать в ядре.
>проверь чтобы в ядре были эти опции
>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 pfsyncoptions 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_nat.ko в папке /boot/kernel/ не лежит :((
>Разжовую:ещё раз ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!!!!!!!
а по привязки по МАКу случайно не поможите??
>[оверквотинг удален]
>>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 и только после этого
>пакет уходит в мир.
>Предположим пакет дошел до адресата и адресат посылает ответ.
>Тот в свою очередь попадает в фаервол на внешнем интерфейсе и начинает
>движение по правилам до правила с натом (если не встретит по
>пути запрещающего).Или не встретит разрешающего правила.
>Нат подменяет адресс назначения на адресс клиента запросившего данный
>ответ и возвращает пакет в фаервол на правило следующее после правила
>с натом пакет продолжает движение по правилам фаервола вниз и если
>не находит разрешающего правила погибает. Предположим он нашел после чего снова
>попадает в фаервол уже на внутреннем интерфейсе и т.д.
>[оверквотинг удален]
>>
>>если 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.
>[оверквотинг удален]
>
>Очень даже имеет
>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 в ядре??
ОГРОМНОЕ СПАСИБО!!! ТАКИМИ тепами я из полного лаймера превращусь в неполного юзера уже через неделю:)
>[оверквотинг удален]
>>for some examples about
>> nat usage.
>
>ИМЕЕТ, только не к НАТД а к IPFW NAT :), как я
>понял и оно должно быть==0, чтоб работали последующие правила
>
>а как задать net.inet.ip.fw.one_pass==0 в ядре??
>
>ОГРОМНОЕ СПАСИБО!!! ТАКИМИ тепами я из полного лаймера превращусь в неполного юзера
>уже через неделю:)через sysctl