[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Генератор правил файрвола



Oleg Frolkov пишет:
Alexey Boyko пишет:
Monday 02 June 2008 08:56:17 Oleg Frolkov написав:

[axed]

Тоже им пользуюсь с давних пор, но ищу замену. Он хорош, но только как
препроцессор для генерации
скрипта iptables, а хочется порой чего-то более гибкого. Например надо
еще добавить правил - в случае с
ferm это полный рестарт файрволла который например в моем случае -
требует переинициализации всех
правил которые добавлены не с помощью ferm (у меня при поднятии ppp
интерфейсов приписываются
дополнительные строчки для NAT в зависимости от адресов с которыми
поднимается ppp,

у ferm есть @include 'файл';

Как на счёт добавления правил не сразу в iptabes, а в дополнительный файл
с правилами ferm, а потом рестарт ferm ?


Нет, ну если сделать кучу подпорок то можно и с ferm извратиться..... т.е. самому написать исходный скрипт, и сделать в каждой из дефолтных цепочек INPUT, FORWARD, OUTPUT переход например на INPUT-FERM, FORWARD-FERM,OUTPUT-FERM и их перегружать ferm_ом.... в принципе надо подумать..... потому как другие варианты (типа include) немного не то.... он все объявленные цепочки тупо чистит и впрочем правильно делает.

Олег.


В общем-то сейчас попробовал.... это не лечится, или лечится переписыванием ferm/либо правкой генерируемых им скриптов.
ferm в скрипт безусловно вставляет преамбулу:

/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -F
/sbin/iptables -t filter -X

даже если эти цепочки не определены в конфиге. Мало того:
/sbin/iptables -t filter -P INPUT ACCEPT

Вставляется даже если в конфиге определено:

table filter {
   chain INPUT {
       policy DROP;
   }


Уже потом после преамбулы появляется строчка:
/sbin/iptables -t filter -P INPUT DROP


Тут в общем-то дыра в безопасности. Конечно между строчками доли секунды и атака маловероятна, но
тем не менее считаю что это не правильно.

В общем резюманс следующий: Как препроцессор правил iptables - ferm лучший инструмент (маленький, удобный, позволяет делать маленькие конфиги разворачивающиеся в толстые скрипты). Но только как препроцессор в простых условиях - когда позволительно тупо перезагрузить все правила и правила создаются
только с помощью этого скрипта.

Если есть правила добавляемые другими подсистемами - то ferm не годится к использованию без переделки или
подпорок потому что при инициализации правил сносит корневые цепочки.

Олег.

P.S. Но тем не менее на данный момент это то чем я пользуюсь.... стараясь не лазить много в правила :) а если уж их поменял то требуется рестарт всего что добавляет свои правила со всеми вытекающими типа кратковременного перерыва сервиса для пользователей в конторе. Более легкого инструмента (это-ж просто perl скрипт) работающего везде и всегда простым копированием и запуском я пока не
нашел.

P.P.S. Использую я его в режиме генерации скрипта, а потом скрипт исполняю, в режиме самостоятельного применения правил не использую... и в автозагрузку тоже не ставлю... предпочитаю запустить сгенеренный скрипт посмотрев туда глазами а потом сделать iptables-save >/etc/network/iptables.rules


Reply to: