Страница 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
Читал всё на этом сайте. Несколько из них пробовал, но что то не срасталось хотя старался, и эту статью тоже пробовал говорю что то не срасталось не получалось.
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
Re: Статья про IPFW
Добавлено: 2009-03-28 20:39:38
astros
princeps писал(а):у меня в свое время по статье лиса все заработало с полпинка. Напиши подробней, что не получается. И ядро все-таки пересобери
astros писал(а):Не могу подобрать себе работающий 100% вариант.
Смотря что понимать под словом "работающий". Чтоб раздавать интернет на локальную сеть, достаточно добавить в /etc/rc.conf
По сути мне надо что бы было следующее. Что имеем прокси 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 тоже нет инета. пробовал два варианта оба не работали у мну.
Конфигури рками.
что-то в ентом духе
Зачем скрипты пользовать, запутаться окончательно хочешь?
Если нат на динамическом интерфейсе, то и демон натд надо поднимать с соответствующими параметрами.
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
Я и не имел ввиду пфнат, а именно кернел нат, только для его работы надо бы еще и демон запустить.
РРРоЕ это не динамический интерфейс? имеется ввиду поднимается/падает?
Я - не запутаюсь :-)