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

IPFW истинное значение flush

Добавлено: 2009-12-16 7:45:40
nakonechny
Добрый день, перерыл не 1 форум так и не могу найти объяснения данного правила, для чего мне сбрасывать правила файрвола по дефолту? Т.е. мне не понятно почему все пишут в начале своих конфигов

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

${fwcmd} flush -f
не будет ли тем же самым просто рубануть все established сессии на данный момент? Или текущие правила фаервола пишутся куда то глубже и для их замены обязательна очистка? Просто пока не пойму строку не вижу смысла писать ее у себя в конфиге, зачем делать на абум...

И еще строка check-state, имя я так понимаю говорящее, проверяет статус... чего? опять же не нашел ни одного внятного объяснения.

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 7:52:10
iye
Потому что если вам например вздумается сделать /etc/rc.d/ipfw restart то у вас будут ваши правила загружены дважды.

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

check-state
             Checks the packet against the dynamic ruleset.  If a match is
             found, execute the action associated with the rule which gener-
             ated this dynamic rule, otherwise move to the next rule.
             Check-state rules do not have a body.  If no check-state rule is
             found, the dynamic ruleset is checked at the first keep-state or
             limit rule.

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 8:10:03
nakonechny
спасибо, тогда другой вопрос, куда загружаются правила? т.е. он не читает мой конфиг? после рестарта не обращается к файлу который написан в /etc/rc.conf в firewall_type? А использует какие то кэшированные правила?

И еще вопрос, подключаюсь к машине с FreeBSD по SSH, при выполнении etc/rc.d/ipfw restart, загружается только правило которое все запрещает, дальше конфиг не читается, спасает только рестарт машины, тогда все правила прекрасно подгрузжаются, есть ли возможность по SSH делать рестарт файрвола (для принятия изменений в правилах), чтобы не терять машину?

начало конфига:

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

fwcmd=/sbin/ipfw

pdc=10.0.10.85,10.0.10.82,10.0.10.86,10.0.10.17,10.0.10.87,10.0.10.84,10.0.10.95
iip=10.0.10.82
oip=10.0.1.3
mylan=10.0.10.0/24
iif=fxp0
oif=em0


${fwcmd} -f flush
${fwcmd} add check-state

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 8:23:34
iye
В память правила грузятся ).
Чтобы плохого не случалось при экспериментах с фаерволом настоятельно рекомендую в ядро вколмпилить IPFIREWALL_DEFAULT_TO_ACCEPT

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 8:26:16
arkan
nakonechny
Листинг правил фаера выложи
У меня /etc/rc.d/ipfw restart по ssh все нормально работает
несмотря на то что функцию IPFIREWALL_DEFAULT_TO_ACCEPT в ядро не встявлял

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 8:29:52
nakonechny
Это конечно вариант отличный согласен, но есть несколько НО, при перекомпиляции ядра возможны варианты типо того что оно не загрузиться, и хрен мне потом SSH до этой машины, а люди которые там ооочень долго будут разбираться как запустить со старым ядром... приехать туда тоже тяжко, т.к. между нами много-много километров.

Так все таки почему подгружается правило по дефолту, а остальные правило не читаются?

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 8:38:25
iye
Подозреваю что это происходит примерно так: вы рестартите ipfw. при этом дефолтное правило запрещает все. при -f flush устанавливается именно то дефолтное правило. как следствие вам рубит ssh сессию, что влечет убиение шела а тот в свою очередь процесса выполнения скрипта. и у вас в итоге ничего не подгружается.

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 9:17:59
nakonechny
спасибо, нашел объяснение, достаточно внятное, Вы оказались правы.
Еще Вас помучаю, не подскажете, как использовать данный скрипт и есть ли ман по его синтаксису /usr/src/share/examples/ipfw/change_rules.sh

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 9:18:50
smk
iye писал(а):Подозреваю что это происходит примерно так: вы рестартите ipfw. при этом дефолтное правило запрещает все. при -f flush устанавливается именно то дефолтное правило. как следствие вам рубит ssh сессию, что влечет убиение шела а тот в свою очередь процесса выполнения скрипта. и у вас в итоге ничего не подгружается.
Истина. У меня то же самое происходит, запускать надо без привязке к сессии.

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 9:41:17
iye
nakonechny писал(а):спасибо, нашел объяснение, достаточно внятное, Вы оказались правы.
Еще Вас помучаю, не подскажете, как использовать данный скрипт и есть ли ман по его синтаксису /usr/src/share/examples/ipfw/change_rules.sh
Там как бэ в заголовке написано как его пользовать. Единственно на что стоит обратить внимание - он писан под rc.firewall и если вы пользуете свой собственный скрипт отличный от rc.firewall то он вам как готовое решение мало пригоден.

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 9:49:44
hizel
*зивнул* man-ы читать не модно это понятно, но когда приводит к больной жопе непонятно почему нервные сигналы не включают моск
CHECKLIST
Here are some important points to consider when designing your rules:

o Remember that you filter both packets going in and out. Most connec-
tions need packets going in both directions.

o Remember to test very carefully. It is a good idea to be near the
console when doing this. If you cannot be near the console, use an
auto-recovery script such as the one in
/usr/share/examples/ipfw/change_rules.sh.

o Do not forget the loopback interface.

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 9:54:30
iye
hizel писал(а):*зивнул* man-ы читать не модно это понятно, но когда приводит к больной жопе непонятно почему нервные сигналы не включают моск
[off]Улыбнуло ) Нада запомнить )[/off]

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 10:18:12
nakonechny
arkan писал(а):nakonechny
Листинг правил фаера выложи
У меня /etc/rc.d/ipfw restart по ssh все нормально работает
несмотря на то что функцию IPFIREWALL_DEFAULT_TO_ACCEPT в ядро не встявлял
Листинг:

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

fwcmd=/sbin/ipfw

iip=10.0.0.25
oip=192.168.1.10
mylan=10.0.0.0/24
iif=re0
oif=vr0
serv=10.0.0.10

#
${fwcmd} -q -f flush
${fwcmd} add check-state

${fwcmd} add allow ip from any to any via lo0
#${fwcmd} add deny ip from any to 127.0.0.0/8
#${fwcmd} add deny ip from 127.0.0.1/8 to any

${fwcmd} add allow ip from ${mylan} to any 3333 via ${iif}
${fwcmd} add allow tcp from ${mylan} to any 443 via ${iif}
${fwcmd} add allow tcp from ${serv} to any 22 via ${iif}
${fwcmd} add allow ip from any to ${mylan} via ${iif}

${fwcmd} add divert natd ip from ${mylan} to any out via ${oif}
${fwcmd} add allow ip from ${oip} to any out via ${oif}

${fwcmd} add divert natd ip from any to ${oip} in via ${oif}
${fwcmd} add allow ip from any to ${oip} in via ${oif}

${fwcmd} add allow ip from ${oip} to any out via ${oif}
${fwcmd} add allow tcp from any to ${oip} established

${fwcmd} add deny ip from any to any
правила не запускал еще, думаю с такими правилами сессия не оборвется. (прокся на порту 3333, ssh соответственно 22)

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 10:30:11
hizel
у вас нет stateful правил, а значит

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

${fwcmd} add check-state
не нужно

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 10:43:04
nakonechny
понял, убрал, об этом почитаю, будут еще замечания. Суть вопроса в том чтобы удаленный сервак не выкинул мою сессию по SSH(сижу из внутренней сети), конечно скрипт сейчас домучаю и пойму что сделать чтобы он восстановил нужные мне правила, но хотел бы чтобы сразу все отработало.

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 10:54:53
hizel
так как у вас нет stateful правила на ssh, при котором после обновления фаервола сесия действительно рвется то при корректном фаерволе и правильном запуске обновления фаервола сесия не порвется

чтобы не парить моск, поставьте screen и соотвествующим образом его настройте, даже при обрыве сесии скрипт в screen корректно отработает
и заодно пользуйтесь тем скриптом из examples который я приводил выше, он как раз решает проблему некорректной настройки фаервола

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 14:00:56
skeletor
iye писал(а):Потому что если вам например вздумается сделать /etc/rc.d/ipfw restart то у вас будут ваши правила загружены дважды.
А если выполнять в самом начале flush и загружать все правила заново (скриптом)?

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 14:07:51
iye
По моему кто то читает тему не с начала )

Re: IPFW истинное значение flush

Добавлено: 2009-12-16 18:24:16
skeletor
Как раз сначала, возможно не до конца.