Jump to content

Recommended Posts

Posted

Здравствуйте

Подскажите, пожалуйста:

наш офис подключили к сети, дали один серый ай-пи.

Я собрал на FreeBSD NAT-роутер (по статье Kuzmich'a), чтобы отгородиться им от сети прова и заодно раздать инет всем машинам в офисе. Все получилось, все работает

Но есть одно НО, в статье автор приводит правила для IPFW:

 

${ipfw} -f flush

${ipfw} add divert natd all from any to any via rl0

${ipfw} add allow all from any to any

 

Я так и сделал, но при этом в нашу сеть легко попасть извне. Уже всю голову сломал, всяко пробовал с правилами играть, не получается чтобы и NAT работал, и доступа внутрь снаружи небыло :(

Подскажите, что написать в rc.firewall ?

Posted
Я собрал на FreeBSD NAT-роутер (по статье Kuzmich'a)

...

Все получилось, все работает

...

Я так и сделал, но при этом в нашу сеть легко попасть извне. Уже всю голову сломал, всяко пробовал с правилами играть, не получается чтобы и NAT работал, и доступа внутрь снаружи небыло :(

Вот оно, тлетворное влияние (кстати, крайне "кривой", судя по цитате) "статей". Человек в принципе не представляет, КАК оно работает, но - "Все получилось, все работает" (с). Неправильно, но... :)

 

Подскажите, что написать в rc.firewall ?

man ipfw

man natd (если уж его используем)

 

А дальше - уже исходя из ТЗ, "что написать".

Posted
${ipfw} -f flush  

${ipfw} add check-state

${ipfw} add divert natd all from ${internal} to any via rl0  

${ipfw} add allow all from ${internal} to any keep-state

Ответ неправильный (неполный). "Обратка" заворачиваться на natd сама будет?

Posted
Вот оно, тлетворное влияние (кстати, крайне "кривой", судя по цитате) "статей".  
Ой, как хорошо что Вы сюда заглянули :) Наверно вы сейчас линк на свою статью оставите?... не кривую, правильную, а?
man ipfw  

man natd (если уж его используем)  

 

А дальше - уже исходя из ТЗ, "что написать".

Что написать - это был мой вопрос. Исходные данные для решения задачи я представил, и я не собираюсь выклянчивать у Вас, MAxSavin, эти 3-4 строки для rc.firewall. Все что мог от вас ждать - цитату этого штампованного фрагмента, который лежит на тысячах роутеров, для решения своей проблемы, не терпящей долгого разбирательства. Если Вам это кажется слишком щедрым подарком...

Впрочем, извините Господа, я видимо повелся на завсягдатаего пустобреха :)

Posted

MaxSavin, да, чёт я забыл про неё. всё таки pf мне намного больше нравится :)

ну вообще я хотел этим сказать, что надо почитать про keep-state.

Posted

pf значительно проигрывает ipfw2 в стандартных приложениях.

В том числе и по производительности на скоростях > 10kpps.

О простоте конфигурации и скриптинга я уже вообще молчу.

Про секьюрность - не надо петь военных песен. :-)

 

Кроме того - советовать natd в XXI веке - моветон. man ipnat. ;-)

Posted

>pf значительно проигрывает ipfw2 в стандартных приложениях.

>В том числе и по производительности на скоростях > 10kpps.

А каковы остальные условия, и, вообще, кто-нибудь занимался тестированием pf vs ipfw2?

Posted

Я свою проблему решил. Жаль, что не помогли сэкономить день. Тему можно считать закрытой.

MaxSavin, вы напрасно упомянули Kuzmicha, ваши 144 эпизода звона яйцами в этом форуме не стОят в практическом плане даже двух его постов.

впрочем, одну дельную весчь я от вас таки прочитал:

http://forum.nag.ru/viewtopic.php?p=63044&...ighlight=#63044

"Если нечего больше сказать по делу - лучше засунуть язык в одно место, и так сильно не возбуждаться. ", вот в этом сложном деле я вам удачи и желаю ;)

Posted
Ой, как хорошо что Вы сюда заглянули :) Наверно вы сейчас линк на свою статью оставите?... не кривую, правильную, а?

Ссылку уже оставил, если не заметно было. Причем, на первоисточник, а не его "вольную" интерпретацию. Повода писать "свои" статьи по простейшим вопросам не вижу.

 

Что написать - это был мой вопрос. Исходные данные для решения задачи я представил, и я не собираюсь выклянчивать у Вас, MAxSavin, эти 3-4 строки для rc.firewall. Все что мог от вас ждать - цитату этого штампованного фрагмента, который лежит на тысячах роутеров, для решения своей проблемы, не терпящей долгого разбирательства. Если Вам это кажется слишком щедрым подарком...  

Впрочем, извините Господа, я видимо повелся на завсягдатаего пустобреха :)

...

Я свою проблему решил. Жаль, что не помогли сэкономить день. Тему можно считать закрытой.  

MaxSavin, вы напрасно упомянули Kuzmicha, ваши 144 эпизода звона яйцами в этом форуме не стОят в практическом плане даже двух его постов.  

впрочем, одну дельную весчь я от вас таки прочитал:  

http://forum.nag.ru/viewtopic.php?p=63044&...ighlight=#63044  

"Если нечего больше сказать по делу - лучше засунуть язык в одно место, и так сильно не возбуждаться. ", вот в этом сложном деле я вам удачи и желаю ;)

Во-первых, хранить СВОИ правила в rc.firewall как раз настоятельно не рекомендуется. Дабы не иметь головной боли при обновлении системы.

 

Во-вторых... Боевые заявления, ммм, скажем так, "ламеров" (значение термина раскрывать не нужно?) в последнее время уже "не возбуждают". Ответ дан был наиболее полный, неспособность осознать это - уже не моя проблема.

Posted

Ну раз уж меня тут вспомнили - кто добрым, а кто и недобрым словом...

 

Вообще-то у статьи было продолжение, даже два....

Та статья, с которой был взят пример - первая, ее целью было помочь начинающему быстро поставить FreeBSD, и получить работающую систему, на которой потом можно играться, учиться и т.п. Безопасность не затрагивалась.

 

 

Повода писать "свои" статьи по простейшим вопросам не вижу.  

Поводом для написания статьи была просьба написать именно такую статью - где взять дистрибутив, что с ним сделать чтобы получить минимально функциональную систему. Обещали даже рядом положить аналогичные статьи про Linux и Windows, но так и не сподобились....

 

Но даже и в приведенной настройке "попасть извне во внутренюю сеть" весьма затруднительно, и требует работы по принципу man-in-the-middle. Единственное, что выставлено на всеобщее обозрение, это сам сервер.

 

Специально для ленивых пример правил, скрывающий и сервер:

 

ipfw add 100 allow ip from any to any via lo0

ipfw add 200 allow ip from any to any via fxp1 // "внутренний"

ipfw add 300 check-state

ipfw add 400 allow ip from me to any out via fxp0 // "внешний"

ipfw add 500 allow tcp from any to me <номера портов> in via fxp0 // TCP- сервисы, доступные снаружи

ipfw add 510 allow udp from any to me <номера портов> in via fxp0 // UDP-сервисы, доступные снаружи

ipfw add 600 divert natd ip from any to any via fxp0

ipfw add 700 deny ip from any to me in via fxp0 // сбиваем левые пакеты, для которых нет входов таблице natd

ipfw add 800 allow ip from any to any

 

 

P.S. Никогда не следует брать готовый набор правил, если не понимаешь точно, как именно функционирует каждая его строчка.

P.P.S. Не существует набора правил на все случаи жизни.

Posted
Во-первых, хранить СВОИ правила в rc.firewall как раз настоятельно не рекомендуется. Дабы не иметь головной боли при обновлении системы.

/etc/fw.rules с запуском из /etc/rc.local например ;)

Posted
Во-первых, хранить СВОИ правила в rc.firewall как раз настоятельно не рекомендуется. Дабы не иметь головной боли при обновлении системы.

/etc/fw.rules с запуском из /etc/rc.local например ;)

 

При обновлении системы неплохо бы mergemaster прогонять. :-)

Posted

>/etc/fw.rules с запуском из /etc/rc.local например ;)

а в rc.conf

firewall_type=имя_файла_с_правилами

уже не пользуют? :)

Posted

Не, Вы опечатались: firewall_script=имя_файла :)

Не существует набора правил на все случаи жизни.
Kuzmich, да не один набор на все случаи, а один набор на массу одинаковых случаев, в моем случае - простая машина, которая натит внутренние адреса и ничего внутрь снаружи без keep-state не пускает, и больше ничего
Но даже и в приведенной настройке "попасть извне во внутренюю сеть" весьма затруднительно, и требует работы по принципу man-in-the-middle. Единственное, что выставлено на всеобщее обозрение, это сам сервер.  

Да совсем не сложно, я поставил шлюзом на машине, которая "снаружи", ip адрес внешнего интерфейса роутера, и пакетики внутрь пошли, и обратно возвращаются ;) Ведь там же ${ipfw} add allow all from any to any, обычный межсетевой роутер получился

Posted

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

 

 

ipfw add check-state

ipfw add deny all from 192.168.0.1/24 to any in via rl0

ipfw add allow all from any to any via lo0

 

ipfw add divert natd ip from 192.168.0.1/24 to any out via rl0

ipfw add divert natd ip from any to 10.25.10.8 in via rl0

 

ipfw add allow ip from 192.168.0.1/24 to any in via rl1

ipfw add allow ip from any to 192.168.0.1/24

 

ipfw add allow ip from 10.25.10.8 to any out via rl0

ipfw add allow ip from any to 10.25.10.8 in keep-state via rl0

 

ipfw add deny all from any to 255.255.255.255 via rl0

 

ipfw add deny log ip from any to any

Posted

>Не, Вы опечатались: firewall_script=имя_файла :)

 

Да нет, у меня:

firewall_script=/etc/rc.firewall

firewall_type=/etc/firewall/firewall.natd

Дело в том, что rc.firewall если не нашел в "себе" соответствующую конфигурацию, то полагает, что указано имя файла.

 

P.S.: А от natd уходить надо, ядреный нат - правильный нат :)

Posted

Sesin, а Вы PF не пробовали использовать?

Под Ваш случай, вроде, так:

$iif="rl0"

$oif="rl1"

#Таблицы

table <me> const { self }

table <ournet> const { 192.168.0.0/24 }

#NAT

nat on $oif from <ournet> to any -> ($oif)

#Нормализация входящего трафика

scrub all in

#Действие по умолчанию

block all

#Правила фильтрации

pass quick on lo0 all

antispoof quick for $iif inet

pass quick on $iif proto { tcp udp icmp } from <ournet> to any keep state

pass quick on $oif proto { tcp udp icmp } from <me> to any keep state

Posted
Kuzmich,  

смысл строки 300 в данном примере?

 

Ой, шит - в 400 строке keep-state пропустил, сорри за апичатку.

Posted

Понял, спасибо :) Вобщем-то я получил работоспособную конструкцию, и ipfw мне нравится, я просто не сталкивался раньше с использованием divert, а сейчас меня очень занимает fwd :)

Posted

ToSHiC,

чувак, keep-state это для UDP, при это открывает все порты по UDP :)

проверь сам nmapом если не веришь :)

а правильнее сделать так

 

#!/bin/sh



fwcmd="/sbin/ipfw -q"

${fwcmd} -f flush



${fwcmd} add 50 check-state

#icmp

${fwcmd} add 30 pass icmp from any to any

#loopback

${fwcmd} add 100 pass ip from any to any via lo0

${fwcmd} add 101 deny ip from any to 127.0.0.0/8

${fwcmd} add 102 deny ip from 127.0.0.0/8 to any

#output

${fwcmd} add 150 pass tcp from any to me established

${fwcmd} add 152 pass ip from me to any

#private

..............

${fwcmd} add 170 deny ip from any to me

 

А в ядро вставить IPFIREWALL_DEFAULT_TO_ACCEPT (вроде так), да и natd уже давно не в моде, грамотнее нат делать с момощью ipnat (см описание конфига ядра)

 

Egor,

firewall_type=/etc/firewall/firewall.natd

а вот это тоже неверно, ибо так задаётся параметр для запуска firewall_script :) так что менять надо тока firewall_script

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.