LINUX.ORG.RU
ФорумAdmin

FreeBSD IPFW и непонятки с keep-state

 ,


0

2

Всем привет, создаю отдельную тему по мотивам моей предыдущей темы. Вот с чего начинается мой stateful IPFW скрипт закрытого типа:

#!/bin/sh

fwcmd="/sbin/ipfw -q"
oif="re0"
iif="re1"
lan="192.168.10.0/24"

# Localhost
${fwcmd} add allow all from any to any via lo0

# Check for dynamic rules
${fwcmd} add check-state

# Drop established tcp sessions
${fwcmd} add deny tcp from any to any established

И вот некоторые правила:

${fwcmd} add allow tcp from ${lan} to me 587,993 in via ${iif} setup keep-state
${fwcmd} add allow tcp from ${lan} to me 3128 in via ${iif} setup keep-state

Непонятки заключаются в том что если посмотреть на кол-во срабатываний конкретных правил по ipfw show, то с огромным отрывом преобладает правило 00300 и дропается весьма приличное кол-во нужных пакетов, если включить логгирование.

00100  112949  259970808 allow ip from any to any via lo0
00200       0          0 check-state
00300 4461606 1649862458 deny tcp from any to any established
02200   58889   54243602 allow tcp from 192.168.10.0/24 to me dst-port 587,993 in via re1 setup keep-state
03600   15410     757296 allow tcp from 192.168.10.0/24 to me dst-port 3128 in via re1 setup keep-state
При условии что все мои правила c keep-state, я не могу понять почему вообще что-то доходит до 00300, ведь все должно отрабатывать еще на check-state.

Подскажите пожалуйста, а то у меня уже соображалки не хватает совсем.

Со squid(правило 03600) вообще какая то странная жопа. Даже если разрешать established пакеты(то бишь пакеты перестают дропаться в обе стороны), то все равно продолжается та хрень из моей предыдущей темы пока не убрать к чертям keep-state и setup и явно не прописать трафик в обе стороны. Либо оставить setup, но разрешить established.


Правило deny tcp from any to any established должно следовать после всех tcp правил, добавляемых в динамическую таблицу keep-state. Попробуйте переместить его после всех правил с «allow tcp [...] keep-state».

Arlecchino ★★
()
Ответ на: комментарий от Arlecchino

Правило deny tcp from any to any established должно следовать после всех tcp правил, добавляемых в динамическую таблицу keep-state

Но почему? Даже оффициальный man пишет:

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 occur- rence of a check-state, keep-state or limit 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.

N-N
() автор топика
Ответ на: комментарий от N-N

Даже оффициальный man пишет

Странно. Я настроил у себя так, как говорит русскоязычный handbook, и у меня работает:

https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/firewalls-ipfw.html
(Ctrl+F «Пример правил для межсетевого экрана закрытого типа»).

Здесь сперва правила с «allow tcp [...] keep-state», а позже «deny tcp from any to any established in».

Arlecchino ★★
()
Ответ на: комментарий от Arlecchino

Вот отрывки подобного вида:

Jul 31 12:07:12 mail kernel: ipfw: 5400 Deny TCP 192.168.10.5:993 192.168.10.92:3873 out via re1
Jul 31 12:10:16 mail kernel: ipfw: 5400 Deny TCP 192.168.10.5:3128 192.168.10.106:4650 out via re1
И подобных записей полно. Тут сервер не может ответить клиенту в обратку т.к. ipfw блочит почему то, хотя все должно проходить по check-state. Причем блочит не все, т.к. связь клиент-сервер не прерывается на первый взгляд и какие то пакеты все равно доходят. Сейчас я поставил allow на established и если включить логгирование, то точно также я увижу там те пакеты которые вообще не должны доходить до этого правила и проходить еще по check-state. Правда стоит заметить что блочатся в освновном пакеты с 993 и 3128 портов. На них у меня squid и dovecot. Это то за что глаз зацепился по крайней мере.

N-N
() автор топика
Ответ на: комментарий от N-N

Нет смысла смотреть правила ipfw кусками. Показывайте полный ipfw -d show

hizel ★★★★★
()
Ответ на: комментарий от Arlecchino

Моя паранойя не позволяет мне выложить as is :) Но я попробую как освобожусь. Правда вы там ничего интересного не найдете и проблема яснее не станет.

N-N
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.