Sesin Posted August 6, 2005 Posted August 6, 2005 Здравствуйте Подскажите, пожалуйста: наш офис подключили к сети, дали один серый ай-пи. Я собрал на 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 ? Вставить ник Quote
ToSHiC Posted August 7, 2005 Posted August 7, 2005 ${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 Вставить ник Quote
MaxSavin Posted August 7, 2005 Posted August 7, 2005 Я собрал на FreeBSD NAT-роутер (по статье Kuzmich'a)... Все получилось, все работает ... Я так и сделал, но при этом в нашу сеть легко попасть извне. Уже всю голову сломал, всяко пробовал с правилами играть, не получается чтобы и NAT работал, и доступа внутрь снаружи небыло :( Вот оно, тлетворное влияние (кстати, крайне "кривой", судя по цитате) "статей". Человек в принципе не представляет, КАК оно работает, но - "Все получилось, все работает" (с). Неправильно, но... :) Подскажите, что написать в rc.firewall ? man ipfw man natd (если уж его используем) А дальше - уже исходя из ТЗ, "что написать". Вставить ник Quote
MaxSavin Posted August 7, 2005 Posted August 7, 2005 ${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 сама будет? Вставить ник Quote
Sesin Posted August 7, 2005 Author Posted August 7, 2005 Вот оно, тлетворное влияние (кстати, крайне "кривой", судя по цитате) "статей". Ой, как хорошо что Вы сюда заглянули :) Наверно вы сейчас линк на свою статью оставите?... не кривую, правильную, а?man ipfw man natd (если уж его используем) А дальше - уже исходя из ТЗ, "что написать". Что написать - это был мой вопрос. Исходные данные для решения задачи я представил, и я не собираюсь выклянчивать у Вас, MAxSavin, эти 3-4 строки для rc.firewall. Все что мог от вас ждать - цитату этого штампованного фрагмента, который лежит на тысячах роутеров, для решения своей проблемы, не терпящей долгого разбирательства. Если Вам это кажется слишком щедрым подарком... Впрочем, извините Господа, я видимо повелся на завсягдатаего пустобреха :) Вставить ник Quote
ToSHiC Posted August 7, 2005 Posted August 7, 2005 MaxSavin, да, чёт я забыл про неё. всё таки pf мне намного больше нравится :) ну вообще я хотел этим сказать, что надо почитать про keep-state. Вставить ник Quote
jab Posted August 7, 2005 Posted August 7, 2005 pf значительно проигрывает ipfw2 в стандартных приложениях. В том числе и по производительности на скоростях > 10kpps. О простоте конфигурации и скриптинга я уже вообще молчу. Про секьюрность - не надо петь военных песен. :-) Кроме того - советовать natd в XXI веке - моветон. man ipnat. ;-) Вставить ник Quote
Egor Posted August 7, 2005 Posted August 7, 2005 >pf значительно проигрывает ipfw2 в стандартных приложениях. >В том числе и по производительности на скоростях > 10kpps. А каковы остальные условия, и, вообще, кто-нибудь занимался тестированием pf vs ipfw2? Вставить ник Quote
Sesin Posted August 7, 2005 Author Posted August 7, 2005 Я свою проблему решил. Жаль, что не помогли сэкономить день. Тему можно считать закрытой. MaxSavin, вы напрасно упомянули Kuzmicha, ваши 144 эпизода звона яйцами в этом форуме не стОят в практическом плане даже двух его постов. впрочем, одну дельную весчь я от вас таки прочитал: http://forum.nag.ru/viewtopic.php?p=63044&...ighlight=#63044 "Если нечего больше сказать по делу - лучше засунуть язык в одно место, и так сильно не возбуждаться. ", вот в этом сложном деле я вам удачи и желаю ;) Вставить ник Quote
MaxSavin Posted August 8, 2005 Posted August 8, 2005 Ой, как хорошо что Вы сюда заглянули :) Наверно вы сейчас линк на свою статью оставите?... не кривую, правильную, а? Ссылку уже оставил, если не заметно было. Причем, на первоисточник, а не его "вольную" интерпретацию. Повода писать "свои" статьи по простейшим вопросам не вижу. Что написать - это был мой вопрос. Исходные данные для решения задачи я представил, и я не собираюсь выклянчивать у Вас, MAxSavin, эти 3-4 строки для rc.firewall. Все что мог от вас ждать - цитату этого штампованного фрагмента, который лежит на тысячах роутеров, для решения своей проблемы, не терпящей долгого разбирательства. Если Вам это кажется слишком щедрым подарком... Впрочем, извините Господа, я видимо повелся на завсягдатаего пустобреха :) ... Я свою проблему решил. Жаль, что не помогли сэкономить день. Тему можно считать закрытой. MaxSavin, вы напрасно упомянули Kuzmicha, ваши 144 эпизода звона яйцами в этом форуме не стОят в практическом плане даже двух его постов. впрочем, одну дельную весчь я от вас таки прочитал: http://forum.nag.ru/viewtopic.php?p=63044&...ighlight=#63044 "Если нечего больше сказать по делу - лучше засунуть язык в одно место, и так сильно не возбуждаться. ", вот в этом сложном деле я вам удачи и желаю ;) Во-первых, хранить СВОИ правила в rc.firewall как раз настоятельно не рекомендуется. Дабы не иметь головной боли при обновлении системы. Во-вторых... Боевые заявления, ммм, скажем так, "ламеров" (значение термина раскрывать не нужно?) в последнее время уже "не возбуждают". Ответ дан был наиболее полный, неспособность осознать это - уже не моя проблема. Вставить ник Quote
Kuzmich Posted August 8, 2005 Posted August 8, 2005 Ну раз уж меня тут вспомнили - кто добрым, а кто и недобрым словом... Вообще-то у статьи было продолжение, даже два.... Та статья, с которой был взят пример - первая, ее целью было помочь начинающему быстро поставить 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. Не существует набора правил на все случаи жизни. Вставить ник Quote
flashwolf Posted August 8, 2005 Posted August 8, 2005 Kuzmich, смысл строки 300 в данном примере? Вставить ник Quote
flashwolf Posted August 8, 2005 Posted August 8, 2005 Во-первых, хранить СВОИ правила в rc.firewall как раз настоятельно не рекомендуется. Дабы не иметь головной боли при обновлении системы. /etc/fw.rules с запуском из /etc/rc.local например ;) Вставить ник Quote
jab Posted August 8, 2005 Posted August 8, 2005 Во-первых, хранить СВОИ правила в rc.firewall как раз настоятельно не рекомендуется. Дабы не иметь головной боли при обновлении системы. /etc/fw.rules с запуском из /etc/rc.local например ;) При обновлении системы неплохо бы mergemaster прогонять. :-) Вставить ник Quote
Egor Posted August 8, 2005 Posted August 8, 2005 >/etc/fw.rules с запуском из /etc/rc.local например ;) а в rc.conf firewall_type=имя_файла_с_правилами уже не пользуют? :) Вставить ник Quote
Sesin Posted August 8, 2005 Author Posted August 8, 2005 Не, Вы опечатались: firewall_script=имя_файла :) Не существует набора правил на все случаи жизни. Kuzmich, да не один набор на все случаи, а один набор на массу одинаковых случаев, в моем случае - простая машина, которая натит внутренние адреса и ничего внутрь снаружи без keep-state не пускает, и больше ничего Но даже и в приведенной настройке "попасть извне во внутренюю сеть" весьма затруднительно, и требует работы по принципу man-in-the-middle. Единственное, что выставлено на всеобщее обозрение, это сам сервер. Да совсем не сложно, я поставил шлюзом на машине, которая "снаружи", ip адрес внешнего интерфейса роутера, и пакетики внутрь пошли, и обратно возвращаются ;) Ведь там же ${ipfw} add allow all from any to any, обычный межсетевой роутер получился Вставить ник Quote
Sesin Posted August 8, 2005 Author Posted August 8, 2005 У меня вот такой диназавр получился, может быть коряво вышло, но делает то, что мне надо 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 Вставить ник Quote
Egor Posted August 8, 2005 Posted August 8, 2005 >Не, Вы опечатались: firewall_script=имя_файла :) Да нет, у меня: firewall_script=/etc/rc.firewall firewall_type=/etc/firewall/firewall.natd Дело в том, что rc.firewall если не нашел в "себе" соответствующую конфигурацию, то полагает, что указано имя файла. P.S.: А от natd уходить надо, ядреный нат - правильный нат :) Вставить ник Quote
Egor Posted August 8, 2005 Posted August 8, 2005 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 Вставить ник Quote
Kuzmich Posted August 8, 2005 Posted August 8, 2005 Kuzmich, смысл строки 300 в данном примере? Ой, шит - в 400 строке keep-state пропустил, сорри за апичатку. Вставить ник Quote
Sesin Posted August 8, 2005 Author Posted August 8, 2005 а Вы PF не пробовали использовать? Я даже не знаю что такое PF, не забывайте, я же Ламер :) Вставить ник Quote
Guest Posted August 8, 2005 Posted August 8, 2005 PF - packet filter Альтернативный файрвол во FreeBSD/родной в OpenBSD. Вставить ник Quote
Sesin Posted August 8, 2005 Author Posted August 8, 2005 Понял, спасибо :) Вобщем-то я получил работоспособную конструкцию, и ipfw мне нравится, я просто не сталкивался раньше с использованием divert, а сейчас меня очень занимает fwd :) Вставить ник Quote
xenomorph Posted August 10, 2005 Posted August 10, 2005 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 Вставить ник Quote
Guest Posted August 10, 2005 Posted August 10, 2005 И так, и так можно. Каждый извращается, как ему больше нравится. :) Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.