Страница 1 из 3

Статья про IPFW

Добавлено: 2009-03-28 18:06:39
astros
Приветсвую ВСЕХ. Дело в следующем прочитал одну статейку http://kes.net.ua/softdev/advanced_firewall.html , и хотелось бы узнать ваше мнение на счёт такой настройки IPFW, что думаете??? может есть более эффективные нибудь, настройки чем в этой статьи. Или как там было описано всё таки применить "плоскую" конфигурацию файрвола. Правда попробовал я настроить по этой статье не получилось.

Re: Статья про IPFW

Добавлено: 2009-03-28 19:10:44
princeps
Здесь при форуме есть еще сайт :)
http://www.lissyara.su/?id=1127

Re: Статья про IPFW

Добавлено: 2009-03-28 19:30:48
astros
princeps писал(а):Здесь при форуме есть еще сайт :)
http://www.lissyara.su/?id=1127
Читал всё на этом сайте. Несколько из них пробовал, но что то не срасталось хотя старался, и эту статью тоже пробовал говорю что то не срасталось не получалось.

Re: Статья про IPFW

Добавлено: 2009-03-28 19:43:12
princeps
astros писал(а): Читал всё на этом сайте. Несколько из них пробовал, но что то не срасталось хотя старался, и эту статью тоже пробовал говорю что то не срасталось не получалось.
А что не получалось?

Re: Статья про IPFW

Добавлено: 2009-03-28 20:08:10
astros
princeps писал(а):
astros писал(а): Читал всё на этом сайте. Несколько из них пробовал, но что то не срасталось хотя старался, и эту статью тоже пробовал говорю что то не срасталось не получалось.
А что не получалось?
Да уже не помню. Вот счаз сижу как дурак полностью открытый по всем портам так как собирал IPFIREWALL_DEFAULT_TO_ACCEPT (но это не проблема пересобрать ядро). Не могу подобрать себе работающий 100% вариант. А потом и от этого плясать дальше.

Re: Статья про IPFW

Добавлено: 2009-03-28 20:11:34
princeps
у меня в свое время по статье лиса все заработало с полпинка. Напиши подробней, что не получается. И ядро все-таки пересобери :)
astros писал(а):Не могу подобрать себе работающий 100% вариант.
Смотря что понимать под словом "работающий". Чтоб раздавать интернет на локальную сеть, достаточно добавить в /etc/rc.conf

Код: Выделить всё

gateway_enable="YES"

Re: Статья про IPFW

Добавлено: 2009-03-28 20:39:38
astros
princeps писал(а):у меня в свое время по статье лиса все заработало с полпинка. Напиши подробней, что не получается. И ядро все-таки пересобери :)
astros писал(а):Не могу подобрать себе работающий 100% вариант.
Смотря что понимать под словом "работающий". Чтоб раздавать интернет на локальную сеть, достаточно добавить в /etc/rc.conf

Код: Выделить всё

gateway_enable="YES"
По сути мне надо что бы было следующее. Что имеем прокси FreeBSD 7.0 небольшой компик (на нём хотелось развернуть, что бы можно было смотреть, так сказать кто куда ходил, считать трафик и вообще всю статистику где, кто, зачем и т.д), хаб 5 портовый и 3 машины в локали (позже пару ещё компов можно поставить). 1 машина домашняя т.е (рабочая стоят там окошки, и SUSE), 2 машина планировалась под веб-сервер (там будет крутиться несколько сайтов), 3 машина игровой сервер (WOW) планировалась. IP-белый. Подключение через сетевую PPPoE. Безлимит пока 512Кбит(можно сделать больше). Ну в общем всё.

Re: Статья про IPFW

Добавлено: 2009-03-28 20:53:51
princeps
Так. Все это, в принципе, реализуется на раз-два. Что не получается?

Re: Статья про IPFW

Добавлено: 2009-03-28 21:07:25
astros
princeps писал(а):Так. Все это, в принципе, реализуется на раз-два. Что не получается?
Для начала хотя бы IPFW настроить. Читал много статей. Уже вроде как начал понимать как он работает но когда начинаешь что либо делать то одно не идёт то второе не идёт.

Re: Статья про IPFW

Добавлено: 2009-03-29 13:18:36
princeps
дружище, ты пиши, что именно не получается. Не раздается инет на сеть после включения ipfw?

Re: Статья про IPFW

Добавлено: 2009-03-29 14:06:36
Гость
princeps писал(а):дружище, ты пиши, что именно не получается. Не раздается инет на сеть после включения ipfw?
ну тогда вот что у меня сейчас. Ядро собрано вот как

Код: Выделить всё

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=5
options         IPFIREWALL_FORWARD
options         IPDIVERT
options         DUMMYNET
options         IPFIREWALL_DEFAULT_TO_ACCEPT
фаервол вот с этой статьи http://kes.net.ua/softdev/advanced_firewall.html с некоторыми переделками. скрипт самого фаерволла

Код: Выделить всё

#!/bin/sh

#первый параметр к скрипту это start|stop|reload

#разрешаем задать путь к ipfw
if [ -n "${2}" ]; then
  fwcmd=${2}
else
  fwcmd="/sbin/ipfw" #если ничего не задали
fi

workDir="/usr/local/etc/firewall"

start () {

#This rule set are independed. So run it first. Загружаем файл с набором каналов
 . $workDir/f-pipes.ipfw

#We wanna count something??? Файл с набором коунтеров
 if [ -f $workDir/f-count.ipfw ]; then
  . $workDir/f-count.ipfw
 fi

#Файл с набором по умолчанию
 if [ -f /$workDir/f-defaults.ipfw ]; then
     num=00
     . $workDir/f-defaults.ipfw
 fi

#Интерфейс (внутренняя сеть), re0 имеет нумерацию на 10000, поэтому num = 10
 num=10
 . $workDir/f_re0
#Интерфейс (инет), re1 имеет нумерацию на 11000, поэтому num = 11
 num=11
 . $workDir/f_re1
#Интерфейс tun0 имеет нумерацию на 12000, поэтому num = 12
# num=12
# . $workDir/f_tun0

#Обратите внимание наличие точки и пробела в комманде  ". $workDir/f_tun0" обязательно. Без них работать ничего не будет. This rule must be runned last to be the last record in
#по умолчанию весь трафик идет на 65000 правила. Nо умолчанию дропаем всё и пишем в лог
 ${fwcmd} add 9999 skipto 65000 all from any to any
 ${fwcmd} add 65534 deny log all from any to any
}

#удаляем все правила, пайпы, очереди
stop () {
 ${fwcmd} -f flush
 ${fwcmd} -f pipe flush
 ${fwcmd} -f queue flush
}

#Разрешаем работу обратной петли. правило 99!
setup_loopback () {
############
# Only in rare cases you want to change these rules
 ${fwcmd} add 99 pass all from any to any via lo0
 ${fwcmd} add 99 deny all from any to 127.0.0.0/8
 ${fwcmd} add 99 deny ip from 127.0.0.0/8 to any
}

#Статистика перезапуска файрвола
echo `date` >> /etc/reboot

case ${1} in
start)
    setup_loopback
    start
    ;;
stop)
    stop
    ;;
reload)
    stop
    setup_loopback
    start
    ;;
*)
    echo "Usage: `basename ${0}` { start | stop | reload& } "
    echo "WARNING!!! WARNING!!! WARNING!!! WARNING!!! WARNING!!!"
    echo "Don't foget to add '&' if you reload the firewall remoutly"
    ;;
esac
вот скрипт внутренней сетевой re0

Код: Выделить всё

#!/bin/sh

iface="re0"

#перенаправляем трафик с общего потока на правила которые отвечают за интерфейс "${iface}"
 ${fwcmd} add 9999 skipto ${num}000 all from any to any via ${iface}

#хх000 - хх099 зарезервировано. Также как и для правил 00001- 00089 используется для "горячих" целей или тестирования

#хх101 - хх199 блокируем весь нежелательный трафик здесь. Например если на интерфейсе висит сеть 192.168.1.0/24, то дропаем всё, что не с этой сети:
 
#хх201 - хх299 этот диапазон идеален для правил подсчета (count) трафика для исхода, тк. здесь трафик ещё не попал в диверт (виден src-ip)

#xx301 - xx399 здесь можно расположить skipto xx500 правила, если мы не хотим чтобы они попадали в очередь и/или шейпер. Однако этого я бы не рекомендовал делать.

#хх401 - хх499 ложим исходящий трафик в очередь и/или канал. Вы должны сделать это до диверта, тк. после диверта весь исходящий трафик получит Ваш внешний IP

#хх501 - хх599 дивертим входящий/исходящий трафик тут.

#хх601 - хх699 этот диапазон идеален для правил подсчета (count) трафика для входа, тк. здесь трафик ещё уже прошел диверт (виден dst-ip)

#хх701 - хх799 здесь можно расположить skipto хх900 правила, если мы не хотим чтобы они попали в очередь и/или шейпер. Однако этого я бы не рекомендовал делать.

#хх801 - хх899 ложим входящий трафик в очередь и/или канал. Вы должны сделать это после диверта, тк. до диверта весь входящий трафик имеет Ваш внешний IP.

#хх901 - хх997 разрешающие правила. Т.к. у нас файрвол закрытый, то это обязательная часть файрвола, где мы должны указать какой трафик разрешен. Если это внешний интерфейс, то
# Разрешаем работу в внутренней сети.
 ${fwcmd} add ${num}901 allow ip from any to 192.168.1.0/24 in via ${iface}
 ${fwcmd} add ${num}901 allow ip from 192.168.1.0/24 to any out via ${iface}
# Пользователи которым разрешён инет.
 ${fwcmd} add ${num}902 allow tcp from 192.168.1.4 to not 192.168.1.0 in via ${iface} setup

#хх998 здесь должно быть правило: deny log all from any to any via ${iface}
 ${fwcmd} add ${num}998 deny log all from any to any via ${iface}

#хх999 здесь должно быть правило: skipto 65000 ip from any to any
 ${fwcmd} add ${num}999 skipto 65000 ip from any to any
вот скрипт внешней сетевой re1

Код: Выделить всё

#!/bin/sh

iface="re1"

#Isolate traffic via "${iface}" for decrease number of passing via firewall rules
 ${fwcmd} add 9999 skipto ${num}000 all from any to any via ${iface}

#хх000 - хх099 зарезервировано. Также как и для правил 00001- 00089 используется для "горячих" целей или тестирования.

#хх101 - хх199 блокируем весь нежелательный трафик здесь. Например если на интерфейсе висит сеть 192.168.1.0/24, то дропаем всё, что не с этой сети.

#хх201 - хх299 этот диапазон идеален для правил подсчета (count) трафика для исхода, так, здесь трафик ещё не попал в диверт (виден src-ip)

#xx301 - xx399 здесь можно расположить skipto xx500 правила, если мы не хотим чтобы они попадали в очередь и/или шейпер. Однако этого я бы не рекомендовал делать.

#хх401 - хх499 ложим исходящий трафик в очередь и/или канал. Вы должны сделать это до диверта, тк. после диверта весь исходящий трафик получит Ваш внешний ИП.

#хх501 - хх599 дивертим входящий/исходящий трафик тут.

#хх601 - хх699 этот диапазон идеален для правил подсчета (count) трафика для входа, тк. здесь трафик ещё уже прошел диверт (виден dst-ip).

#хх701 - хх799 здесь можно расположить skipto хх900 правила, если мы не хотим чтобы они попали в очередь и/или шейпер. Однако этого я бы не рекомендовал делать.

#хх801 - хх899 ложим входящий трафик в очередь и/или канал. Вы должны сделать это после диверта, так, до диверта весь входящий трафик имеет Ваш внешний IP.

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

#хх998 здесь должно быть правило: deny log all from any to any via ${iface}
 ${fwcmd} add ${num}998 deny log all from any to any via ${iface}

#хх999 здесь должно быть правило: skipto 65000 ip from any to any
 ${fwcmd} add ${num}999 skipto 65000 ip from any to any
выключил tun0 думаю так пока будет легче.
вот скрипт f-defaults.ipfw

Код: Выделить всё

#!/bin/sh

 ${fwcmd} add 09999 skipto 10000 all from any to any via re0
 ${fwcmd} add 09999 skipto 11000 all from any to any via re1
 ${fwcmd} add 09999 skipto 65000 ip from any to any
 ${fwcmd} add 10999 skipto 65000 ip from any to any
 ${fwcmd} add 11999 skipto 65000 ip from any to any
вот скрипт f-count.ipfw

Код: Выделить всё

#!/bin/sh

# считаем наш трафик к/от провайдера
 ${fwcmd} add ${num}103 count all from any to any in recv re1
 ${fwcmd} add ${num}104 count all from any to any out xmit re1
# обычно на интерфейсе может шнырять всякая лабуда типа router discovery, DHCP, броадкасты, поэтом
 ${fwcmd} add ${num}105 count all from any to xxx.xxx.xxx.xxx  in recv re1
 ${fwcmd} add ${num}106 count all from xxx.xxx.xxx.xxx to any out xmit re1
# считаем трафик на IP 192.168.1.4
 ${fwcmd} add ${num}107 count all from 192.168.1.4 to 192.168.1.1 in recv re0
 ${fwcmd} add ${num}108 count all from 192.168.1.1 to 192.168.1.4 out xmit re0
при таком раскладе получается нет вообще ничего кроме работы внутренней сети и пинга на машину где установленна фри т.е 192.168.1.1. При пинге с фри во внешний мир пишет следующее

Код: Выделить всё

router# ping ya.ru
ping: cannot resolve ya.ru: Host name lookup failure
при пинге провайдера пишет следущее

Код: Выделить всё

router# ping xxx.xxx.xxx.xxx
PING xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx): 56 data bytes
ping: sendto: Permission denied
ping: sendto: Permission denied
ping: sendto: Permission denied
вот лог ipfw show

Код: Выделить всё

00099       0          0 allow ip from any to any via lo0
00099       0          0 deny ip from any to 127.0.0.0/8
00099       0          0 deny ip from 127.0.0.0/8 to any
00103     251      36281 count ip from any to any in recv re1
00104       0          0 count ip from any to any out xmit re1
00105       0          0 count ip from any to xxx.xxx.xxx.xxx in recv re1
00106       0          0 count ip from xxx.xxx.xxx.xxx to any out xmit re1
00107     519      30200 count ip from 192.168.1.4 to 192.168.1.1 in recv re0
00108     574     123424 count ip from 192.168.1.1 to 192.168.1.4 out xmit re0
09999    2773     362810 skipto 10000 ip from any to any via re0
09999     251      36281 skipto 11000 ip from any to any via re1
09999    3020     289391 skipto 65000 ip from any to any
09999       0          0 skipto 10000 ip from any to any via re0
09999       0          0 skipto 11000 ip from any to any via re1
09999       0          0 skipto 65000 ip from any to any
10901     539      31912 allow ip from any to 192.168.1.0/24 in via re0
10901     566     122352 allow ip from 192.168.1.0/24 to any out via re0
10902     589      28272 allow tcp from 192.168.1.4 to not 192.168.1.0 in via re0 setup
10998    1049     164895 deny log logamount 5 ip from any to any via re0
10999      15       7276 skipto 65000 ip from any to any
10999       0          0 skipto 65000 ip from any to any
11998     251      36281 deny log logamount 5 ip from any to any via re1
11999       0          0 skipto 65000 ip from any to any
11999       0          0 skipto 65000 ip from any to any
65534    2998     269591 deny log logamount 5 ip from any to any
65535 1661577 1090551801 allow ip from any to any
вот собственно и весь фаерволл. Скажите с чего начинать??? хотелось бы хотябы сделать инет на манише где фри стоит потом пытаться давать инет в локаль.

Re: Статья про IPFW

Добавлено: 2009-03-29 16:12:53
astros
Блин не заметил что гостем зашёл. И отправил настройки фаерволла.

Re: Статья про IPFW

Добавлено: 2009-03-29 18:45:34
astros
Блин ну парни помогите ё маё, кто прекрасно шарит в этом тому пару пустяков обьяснить, как два пальца об асфальт. Зато много вопросов отпадёт у новичков. Да и будет хоть ещё один пример настройки ipfw. Чем не статья для написания.

Re: Статья про IPFW

Добавлено: 2009-03-30 7:32:02
bekhterev
Что надо - в студию. ПОДРОБНО!

Re: Статья про IPFW

Добавлено: 2009-03-30 8:32:04
astros
bekhterev писал(а):Что надо - в студию. ПОДРОБНО!
Что показать то??? вы скажите я все покажу что нужно

Re: Статья про IPFW

Добавлено: 2009-03-30 8:58:26
princeps
ipfw show покажи

Re: Статья про IPFW

Добавлено: 2009-03-30 9:04:52
princeps
А, сорри, плохо читал твой пост от гостя. У тебя нат-трансляции нету.
Кроме того, раз у тебя все равно allow всем везде, напиши сначала простой конфиг, а потом закрывай ненужные порты по одному, так будет проще разобраться. А то в тех портянках, которые ты вывалил, черт ногу сломит.

Re: Статья про IPFW

Добавлено: 2009-03-30 9:09:41
princeps
К провайдеру ты по ppp подключаешься или как?

Re: Статья про IPFW

Добавлено: 2009-03-30 9:35:40
astros
princeps писал(а):К провайдеру ты по ppp подключаешься или как?
Да через PPPoE там всё отлично подключается как надо.

Re: Статья про IPFW

Добавлено: 2009-03-30 9:40:09
astros
пробовал по этой статье делать со своими изменениями типа название сетевых карт ip и т.д http://www.lissyara.su/?id=1127 тоже нет инета. пробовал два варианта оба не работали у мну.

Re: Статья про IPFW

Добавлено: 2009-03-30 10:24:24
bekhterev
astros писал(а):пробовал по этой статье делать со своими изменениями типа название сетевых карт ip и т.д http://www.lissyara.su/?id=1127 тоже нет инета. пробовал два варианта оба не работали у мну.
Конфигури рками.

Код: Выделить всё

ipwd add 10 pass from any to any via ed0
что-то в ентом духе
Зачем скрипты пользовать, запутаться окончательно хочешь?
Если нат на динамическом интерфейсе, то и демон натд надо поднимать с соответствующими параметрами.

Re: Статья про IPFW

Добавлено: 2009-03-30 10:46:28
astros
Да если чесно я уже запутался писец. Сча домой приду да снова возьмусь за фаерволл.

Re: Статья про IPFW

Добавлено: 2009-03-30 10:53:30
princeps
bekhterev писал(а):то и демон натд надо поднимать с соответствующими параметрами.
Я выскажусь в пользу кернел ната. Топикстартер, не читай, это я для бехтерева, а то запутаешься вконец :)
bekhterev писал(а): Если нат на динамическом интерфейсе, то и демон натд надо поднимать с соответствующими параметрами.
Я что-то в его конфигах вообще нигде динамического интерфейса не увидел, только сетевые карты. Может быть проблема не в фаерволе, а в подключении по pppoe?

Re: Статья про IPFW

Добавлено: 2009-03-30 11:27:58
hizel
боевое сравнение kernel nat и pf nat в пользу первого
http://forum.nag.ru/forum/index.php?showtopic=47497

Re: Статья про IPFW

Добавлено: 2009-03-30 12:20:17
andrey262
Я и не имел ввиду пфнат, а именно кернел нат, только для его работы надо бы еще и демон запустить.
РРРоЕ это не динамический интерфейс? имеется ввиду поднимается/падает?
Я - не запутаюсь :-)