Страница 1 из 2
Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 12:56:08
mediamag
Есть у меня правила, в основе которых эта статья
http://www.lissyara.su/articles/freebsd/tuning/ipfw/ +допиливание под себя. Вот они: (убрал все ненужные блокировки, оставил только то что нужно спросить)
Код: Выделить всё
#----allow all lo0 traffic----------------------
$fwcmd add 1000 allow ip from any to any via lo0
#----Kernell NAT----------------------------------------------
ipfw nat 1 config log ip $extip reset same_ports redirect_port tcp 10.0.0.9:8888 8888
$fwcmd add 2800 nat 1 ip from "table(7)" to any out via $extif
$fwcmd add 2900 nat 1 ip from any to $extip in via $extif
#---check-state------------
$fwcmd add 3900 check-state
#---allow all LAN traffic----------------------------------
$fwcmd add 4200 allow ip from any to $intnet in via $intif
$fwcmd add 4300 allow ip from $intnet to any out via $intif
#----allow all established tcp connections-----------
$fwcmd add 4400 allow tcp from any to any established
#----allow DNS requests on extiface (53 port)----------------------------
$fwcmd add 4500 allow udp from any to $extip 53 in via $extif
$fwcmd add 4600 allow udp from $extip 53 to any out via $extif keep-state
$fwcmd add 4700 allow udp from any 53 to $extip in via $extif
$fwcmd add 4800 allow udp from $extip to any 53 out via $extif keep-state
#----block other established tcp connections-------------------
$fwcmd add 6600 deny tcp from any to $extip in via $extif setup
#----allow established tcp connections from ext IP to ext interface---------
$fwcmd add 6700 allow tcp from $extip to any out via $extif setup keep-state
$fwcmd add 6800 allow tcp from any to $extip in via $intif setup
#----FULL TCP INET Table 1--------------------------------------------------------------------------
$fwcmd add 6900 allow tcp from "table(1)" to not $intnet in via $intif setup limit src-addr 500
Не нравится мне в правилах вот что:
allow tcp from any to any established. Если я правильно понял, то это правило разрешает установленные соединения по tcp для тех правил, у которых в конце параметр
setup Так? Тогда можно ли в принципе переписать правило, чтобы не эни ту эни, а вписать только те айпи который натится? Если я правильно понимаю принцип работы ipfw мне вместо одного необходимо написать четыре правила?
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 15:40:12
hranitel_y2k
http://www.lissyara.su/doc/docs/handbook_-_ipfw/
А вот это читали? Тут "established" вообще блокируется.
Кстати, "check-state", вроде должен идти до нат, или даже в самом начале.
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 15:56:48
mediamag
Видел примеры по разному...в данном случае правило
разрешает уже установленные соединения, а правило
Код: Выделить всё
deny tcp from any to $extip in via $extif setup
замыкает и запрещает все установленные соединения. Если я запрещу
established то не смогу делать
limit src-addr я прав?
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 16:04:40
hranitel_y2k
mediamag писал(а):
замыкает и запрещает все установленные соединения. Если я запрещу established то не смогу делать limit src-addr я прав?
Нет. limit не зависит от estabilished.
Код: Выделить всё
Dynamic rules will be checked at the first check-state,keep-state or limit occurrence, and the action performed upon a match will be the same as in the parent rule.
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 16:45:21
mediamag
По поводу check-state. Если ставлю выше ната, то интернета вообще нет, но пинги в мир ходят и по всем правилам пакеты бегают....может check-state и established не уживаются вместе? или нужно в определенных местах прописать keep-state
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 17:12:35
hranitel_y2k
mediamag писал(а):По поводу check-state. Если ставлю выше ната, то интернета вообще нет, но пинги в мир ходят и по всем правилам пакеты бегают....может check-state и established не уживаются вместе? или нужно в определенных местах прописать keep-state
Врятли они не уживаются. Check-state это всего лишь заставляет фаир делать поиск по динамическим правилам и все.
Другое дело, что established, возможно,лучше не использовать при наличии динамических правил. Сейчас ищу в доках этот момент.
Вот тут интересный пример:
Код: Выделить всё
DYNAMIC RULES
In order to protect a site from flood attacks involving fake TCP packets,
it is safer to use dynamic rules:
ipfw add check-state
ipfw add deny tcp from any to any established
ipfw add allow tcp from my-net to any setup keep-state
This will let the firewall install dynamic rules only for those connec-
tion which start with a regular SYN packet coming from the inside of our
network. Dynamic rules are checked when encountering the first
check-state or keep-state rule. A check-state rule should usually be
placed near the beginning of the ruleset to minimize the amount of work
scanning the ruleset. Your mileage may vary.
А проблемы могут быть здесь:
Код: Выделить всё
#----block other established tcp connections-------------------
$fwcmd add 6600 deny tcp from any to $extip in via $extif setup
#----allow established tcp connections from ext IP to ext interface---------
$fwcmd add 6700 allow tcp from $extip to any out via $extif setup keep-state
$fwcmd add 6800 allow tcp from any to $extip in via $intif setup
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 17:46:27
mediamag
А как вообще лучше? блокировать established или разрешать? В моем случае шлюз я строю для раздачи интернета юзерам (мелкий провайдер)+ чтоб защищен был получше.
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 22:53:04
hranitel_y2k
mediamag писал(а):А как вообще лучше? блокировать established или разрешать? В моем случае шлюз я строю для раздачи интернета юзерам (мелкий провайдер)+ чтоб защищен был получше.
После долгого гугления и анализа разных конф, пришел к выводу что estabilished разрешается, когда не используются динамические правила.
Хотя может я и ошибаюсь

Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 23:02:51
hizel
о господи, вы о чем?
вы доку ipfw и принципы работы tcp раскуривали? :-|
какого негатива вы к established прицепились!?
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 23:23:09
mediamag
так в чем же разница??? на просторах инета люди и блокируют его и наоборот разрешают
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-04 23:30:19
hizel
established пакеты tcp с установленными соотвестующими флагами после рукопожатия
а stateful создают свою таблицу установленных соединений которая хранится у вас на роутере :-|
Код: Выделить всё
ipfw add check-state
ipfw add deny tcp from any to any established
ipfw add allow tcp from my-net to any setup keep-state
если вы про этот кусочек например, то тут элементарно, то что не в табличке stateful правил то нафиг отбрасывается :-)
запрещают\разрешают, это не серьезно, не забывайте что тупо deny tcp from any to any established не сообщает о том что что-то полностью запрещено, пакет проходит через ipfw несколько раз и т.д. и т.п. бла бла :-(
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-05 0:11:34
hranitel_y2k
hizel писал(а):established пакеты tcp с установленными соотвестующими флагами после рукопожатия
а stateful создают свою таблицу установленных соединений которая хранится у вас на роутере
Код: Выделить всё
ipfw add check-state
ipfw add deny tcp from any to any established
ipfw add allow tcp from my-net to any setup keep-state
если вы про этот кусочек например, то тут элементарно, то что не в табличке stateful правил то нафиг отбрасывается :-)
запрещают\разрешают, это не серьезно, не забывайте что тупо deny tcp from any to any established не сообщает о том что что-то полностью запрещено, пакет проходит через ipfw несколько раз и т.д. и т.п. бла бла

Значит все и сводится к этому: estabilished лучше использовать, когда не используются динамические правила. Вот и ответ.
Вопрос же был не только в запрещении\ разрешении, а еще в правильности использования этого правила.
Мы же "не волшебники, мы только учимся"

Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-05 0:20:11
hizel
можно вообще не использовать ни то ни другое, что я и делаю ;-)
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-07 12:48:58
mediamag
Помогите понять, как мне переделать правила, с учетом ваших выводов?? .
check-state я поставил на самый верх, написал правило
deny tcp from any to any established но интернета нет..наверное нужно изменить правила доступа из локалки
Код: Выделить всё
$fwcmd add 6900 allow tcp from "table(1)" to not $intnet in via $intif setup limit src-addr 500
...но как именно?
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-07 14:31:39
hranitel_y2k
mediamag писал(а):Помогите понять, как мне переделать правила, с учетом ваших выводов?? .
check-state я поставил на самый верх, написал правило
deny tcp from any to any established но интернета нет..наверное нужно изменить правила доступа из локалки
Код: Выделить всё
$fwcmd add 6900 allow tcp from "table(1)" to not $intnet in via $intif setup limit src-addr 500
...но как именно?
Интернета нет на сервере,а из локалки пинг должен идти!
Чтобы инет появился нужно разрешить пакетам с сервера выход в инет. К примеру так:
Код: Выделить всё
ipfw add allow ip from me to any via ${extif} keep-state
И покажите, пожалуйста, окончательный вариант правил, для того чтобы было ясно в какое место добавлять правила.
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-07 14:57:28
mediamag
Код: Выделить всё
#---check-state------------
$fwcmd add 100 check-state
#----allow all lo0 traffic----------------------
$fwcmd add 1000 allow ip from any to any via lo0
#----Kernell NAT----------------------------------------------
ipfw nat 1 config log ip $extip reset same_ports redirect_port tcp 10.0.0.9:8888 8888
$fwcmd add 2800 nat 1 ip from "table(7)" to any out via $extif
$fwcmd add 2900 nat 1 ip from any to $extip in via $extif
#---allow all LAN traffic----------------------------------
$fwcmd add 4200 allow ip from any to $intnet in via $intif
$fwcmd add 4300 allow ip from $intnet to any out via $intif
#----allow all established tcp connections-----------
$fwcmd add 4400 deny tcp from any to any established
#----allow DNS requests on extiface (53 port)----------------------------
$fwcmd add 4500 allow udp from any to $extip 53 in via $extif
$fwcmd add 4600 allow udp from $extip 53 to any out via $extif keep-state
$fwcmd add 4700 allow udp from any 53 to $extip in via $extif
$fwcmd add 4800 allow udp from $extip to any 53 out via $extif keep-state
#----FULL TCP INET Table 1--------------------------------------------------------------------------
$fwcmd add 6900 allow tcp from "table(1)" to not $intnet in via $intif setup limit src-addr 500
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-07 21:47:14
hranitel_y2k
Код: Выделить всё
$fwcmd add 1100 check-state
...
$fwcmd add 4450 allow ip from me to any out via $extif keep-state
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-07 23:35:13
mediamag
тоесть такая конструкция, а именно второе правило, пустит весь исходящий трафик с внешнего интерфейса в мир...а что именно подразумевает me? Хотелось бы четко прописать что именно я выпускаю в мир Внешний айпи или внутрений?
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-08 0:28:29
hranitel_y2k
mediamag писал(а):тоесть такая конструкция, а именно второе правило, пустит весь исходящий трафик с внешнего интерфейса в мир...а что именно подразумевает me? Хотелось бы четко прописать что именно я выпускаю в мир Внешний айпи или внутрений?
Код: Выделить всё
me - matches any IP address configured on an interface in the system.
Можете написать вместо "me" ваш "внешний ip", ничего не измениться и все будет работать.
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-08 1:11:29
mediamag
согласен..по логике только внешний айпи может быть, если идет исходящий трафик на внешней сетевой.
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-08 1:37:03
rmn
hizel писал(а):можно вообще не использовать ни то ни другое, что я и делаю

+1
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-08 11:22:59
mediamag
Не заработал интернет при такой конструкции правил...пытаюсь разобраться (у меня нагруженый сервак и не так просто туда сюда отрубать его от инета)
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-08 11:45:29
hranitel_y2k
mediamag писал(а):Не заработал интернет при такой конструкции правил...пытаюсь разобраться (у меня нагруженый сервак и не так просто туда сюда отрубать его от инета)
Уточню на всякий случай:
На самом сервере даже пинги в инет не работают? Если из локалки проверяете, то ip вашего компа точно находиться в таблице 7? Можно увидеть вывод "ipfw show"?
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-08 16:44:38
mediamag
1. Пинги с сервака в мир идут
2. с локалки пинги в мир идут.
3.
ipfw show показывает, что пакеты бегают по правилу
4450.
4. Но вот по правилу
Код: Выделить всё
$fwcmd add 6900 allow ip from "table(1)" to not $intnet in via $intif setup limit src-addr 500
пакетов проходит очень мало и мне кажется что в нем и весь затык...но может я и ошибаюсь
Re: Помощь в разделении трафика в ipfw
Добавлено: 2011-02-08 18:06:23
hranitel_y2k
mediamag писал(а):1. Пинги с сервака в мир идут
2. с локалки пинги в мир идут.
3.
ipfw show показывает, что пакеты бегают по правилу
4450.
4. Но вот по правилу
Код: Выделить всё
$fwcmd add 6900 allow ip from "table(1)" to not $intnet in via $intif setup limit src-addr 500
пакетов проходит очень мало и мне кажется что в нем и весь затык...но может я и ошибаюсь
1)раз пинг идет - инет на серваке есть
2) пинг идет - нат работает и в сетке инет тоже есть
3) Должно показывать, инет то есть
4) Что вы хотели получить, когда писали это правило?
Исходя из всего выше перечисленного, почему вы говорите,что у вас нет инета? Прокси есть?