Блокирующие правила для фаервола при загрузке.

Предложения и запрос функционала

Нужен ли такой функционал?

Да.
22
88%
Нет.
3
12%
 
Всего голосов: 25

calculator
Сообщения: 180
Зарегистрирован: Пн дек 26, 2005 13:17
Откуда: msk

Блокирующие правила для фаервола при загрузке.

Сообщение calculator »

Сейчас при загрузке utm5_rfw обрабатываются только разрешающие правила для фаервола. При подходе "что не разрешено - запрещено" это экономит ресурсы во время загрузки. Но НА КАЖДОГО пользователя дополнительно создается от 1 до кучи(зависит от ситуации) правил. У нас vpn - минимум по 2 правила на каждого пользователя. При большом количестве пользователей это мягко говоря неудобно и может создавать ощутимые задержки, осебенно сказывающиеся на интерактивном трафике(например VoIP).
Есть и другой подход: "что не запрещено - разрешено". При таком подходе правило добавляется только при блокировке пользователя. Так как блокированных пользователей всегда меньше, такой подход удобнее. Еще + при этом подходе - если я считаю ULOG'ом, и пользователь блокирован, ему не мазолят глаза те копейки трафика которые посчитаются в любом случае, если нет правила блокировки, стоящего до привила подсчета трафика.
Обрабатывать блокирующие/разрешающие правила можно настраивать 2 переменными в rfw.cfg
Прошу голосовать, высказываться.

P.S. Сейчас, во время загрузки, у меня блокирующие правила добавляются скриптиком.

UTM5BlockUsersAfterStart:

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

#! /bin/bash
#

TMPFile=/tmp/UTM5BlockUsersAfterStart.tmp
BlockChain=AllUsers
RedirectIP=10.0.1.1

cat /dev/null > $TMPFile

mysql UTM5 -u user -ppassword -e "SELECT inet_ntoa(ig.ip&0xffffffff), inet_ntoa(ig.mask&0xffffffff) from accounts a,service_links sl,iptraffic_service_links il,ip_groups ig where int_status=0 and sl.account_id=a.id and sl.id=il.id and il.ip_group_id=ig.ip_group_id and sl.is_deleted=0 and il.is_deleted=0 and ig.is_deleted=0" | grep -v \- | grep -v inet_ntoa > $TMPFile

iptables -F $BlockChain
iptables -F $BlockChain -t nat

OIFS=$IFS; IFS="        "       # В качестве разделителя полей
                                # используется символ "TAB"
while read IP MASK
do
  iptables -I $BlockChain 1 -s $IP\/$MASK -j DROP
#Любимая страичка пользователей
  iptables -I $BlockChain 1 -t nat -s $IP\/$MASK -p tcp --dport 80  -j DNAT --to-destination $RedirectIP
done <$TMPFile                  # перенаправление ввода.
IFS=$OIFS                       # Восстановление предыдущего состояния переменной $IFS.

rm -f $TMPFile
-------------------------------------

Фрагмент немного поправленного старт скрипта utm_rfw:

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

start&#41;
        if &#91; -x $exec_dir/$utm_exec &#93;;
                then
                        $exec_dir/$utm_exec start&
                        /var/scripts/UTM5BlockUsersAfterStart&
                else
                        echo $exec_dir/$utm_exec no such file
P.P.S. Спасибо cm за идею mysql запроса :)
Последний раз редактировалось calculator Вс апр 09, 2006 22:58, всего редактировалось 1 раз.

Ivan
Сообщения: 275
Зарегистрирован: Пт янв 28, 2005 13:18

Сообщение Ivan »

Cool !

От себя добавлю что "разрешающие" правила не полностью блокируют межабонентский трафик на NAS. PPPoE например.

Отсюда вывод - требуется изменение функционала. И как можно срочнее.

calculator
Сообщения: 180
Зарегистрирован: Пн дек 26, 2005 13:17
Откуда: msk

Сообщение calculator »

Ivan
Да и нетолько NAS. Если допустим клиент ходит по локалке/в инет по правилам iptables -A FORWARD -s UIP/IBITS -j ACCEPT и в фаерволе есть правило со state RELATED,ESTABLISHED -j ACCEPT(а оно там должно быть ;)) то даже в локалке на 100% фаерволом заблокировать пользователя нельзя т.к. пакет от разблокированного пользователя пройдет к блокированному по правилу FORWARD -s UIP/IBITS -j ACCEPT а вернется по правилу state RELATED,ESTABLISHED -j ACCEPT

Ivan
Сообщения: 275
Зарегистрирован: Пт янв 28, 2005 13:18

Сообщение Ivan »

Полностью согласен !

Aleks
Сообщения: 482
Зарегистрирован: Сб дек 03, 2005 08:35

Сообщение Aleks »

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

Jack_B
Сообщения: 37
Зарегистрирован: Пт апр 07, 2006 07:12

Сообщение Jack_B »

Есть же правила для отключения пользователей и включения ?!?!
Или я чего то не понимаю?

Я по поводу кол-ва правил как-то не напрягаюсь, потому как заблокированные(отключенные)/включенные ~ 50/50. В коце концов использую set-ы для разделения и просмотра отдельных груп правил. Про "копейки" у меня посчет проводиться ipacct-ом после блокирующего правила а разрешающее правило просто пробрасывает туда по skipto, так что копеек тоже нет. А для всех неразрешенных пользователей перед deny делаю диверт http и https на локальный сайт со статистикой, чтоб сразу смогли все сами посмотреть. Так что меня все устраивает и я даже против изменений (разве что они будут иметь возможность включаться по требованию). Единственно что сильно хотелосьбы поменять в rfw - это обновление log-файла по сигналу HUP, а то при ротации логов приходиться его убивать и запускать заново.

Хотя надо сказать что у меня FreeBSD, но я думаю на Linux тоже можно все сделать красиво.

calculator
Сообщения: 180
Зарегистрирован: Пн дек 26, 2005 13:17
Откуда: msk

Сообщение calculator »

Aleks
Вот как раз такой профилактики не нужно. Если есть ошибки(или неясности) в работе биллинга, нужно разбираться, а не замазывать непонятное _профилактикой_.

Jack_B
Есть же правила для отключения пользователей и включения ?!?!
Или я чего то не понимаю?

Тема: Блокирующие правила для фаервола при загрузке.

Jack_B
Сообщения: 37
Зарегистрирован: Пт апр 07, 2006 07:12

Сообщение Jack_B »

Такое впечатление что вы каждые полчаса как минимум изучаете все эти правила файрвола. Ну есть там черти знает какое кол-во правил. :roll: Чем они вам мешают? Посмотреть конкретное правило можно по номеру, есть set-ы и в конце концов grep.

А с другой стороны, если вдруг сервер перезапускается и rfw не хочет при этом нормально запускаться - пользователи при этом инет юзают на халяву? Как быстро вы способны отловить этот глюк? Кто будет потом разгребаться с юзерами и объяснять природу их задолженности особенно если их большое количество? Самое интересное если глюк происходит в пятницу в 20:00 - кто будет покрывать расходы?

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

А с другой стороны, если вдруг сервер перезапускается и rfw не хочет при этом нормально запускаться - пользователи при этом инет юзают на халяву?
вообще не понимаю о чем речь. ЧТо значит сервер вдруг перезапускается? нормальный сервер просто так перезапускаться не должен.

calculator
Сообщения: 180
Зарегистрирован: Пн дек 26, 2005 13:17
Откуда: msk

Сообщение calculator »

Jack_B
Если вас смущает эта фраза:
При большом количестве пользователей это мягко говоря неудобно
напишу более конкретно.

Aleks
Сообщения: 482
Зарегистрирован: Сб дек 03, 2005 08:35

Сообщение Aleks »

calculator писал(а):Aleks
Вот как раз такой профилактики не нужно. Если есть ошибки(или неясности) в работе биллинга, нужно разбираться, а не замазывать непонятное _профилактикой_.

Здесь в первую очередь вопрос не к биллингу, а к работе связки Биллинг-Сеть-НАС(маршрутизатор). В данный момент правило посылается один раз. А если оно не дошло? Причины могут быть разные, но пользователя НЕ заблокировало. Итог: такой пользователь может работать хоть до -100000.......

Jack_B
Сообщения: 37
Зарегистрирован: Пт апр 07, 2006 07:12

Сообщение Jack_B »

dalex писал(а):вообще не понимаю о чем речь. ЧТо значит сервер вдруг перезапускается? нормальный сервер просто так перезапускаться не должен.
Не всегда и не у всех есть возможность зацепить сервер на гарантированное питание с дизель-генератором. А rfw таки имеет привычку нет-нет да и заглючить при перезагрузках. Не всегда конечно но бывало. viewtopic.php?t=2647
Aleks писал(а):Здесь в первую очередь вопрос не к биллингу, а к работе связки Биллинг-Сеть-НАС(маршрутизатор). В данный момент правило посылается один раз. А если оно не дошло? Причины могут быть разные, но пользователя НЕ заблокировало. Итог: такой пользователь может работать хоть до -100000.......
По моему соединение rfw-ядро идет по SSL, и это достаточно надежно. Т.е. если соединение есть то правило всегда доходят до NAS (по крайней мере не замечал таких косяков чтоб не доходило), с другой стороны если соединение рвется, то частенько оно не хочет самостоятельно востанавливаться, приходиться перегружать rfw. Тут я думаю есть над чем поработать господам разработчикам.

Stellarator
Сообщения: 12
Зарегистрирован: Вс май 21, 2006 19:03
Откуда: Russia, Novosibirsk

Сообщение Stellarator »

Господа, что-нибудь в данном вопросе изменилось или нет?
Просто имею достаточно распределенный HW конфиг, народу много, отключенных все-таки меньше, чем постоянно включенных. Соотв. есть желание по умолчанию все разрешать, а правилами deny добавлять только тех, у кого отключен Инет. Все хорошо, но при перезагрузке роутера эти правила лично у меня в rc3 не отрабатываются. Хотя, насколько понял по опросу - проблема актуальна и не помешала бы в реализации (насколько понимаю - особо телодвижений никаких ненадо, просто наравне с правилами на включение - выполнять правила на выключение (ну или опционально - или те, или другие)).
Или такая возможность в последних билдах реализована, просто где-то что-то дернуть нужно (конфиги / опции?)

Очень актуально - кому сколько заплатить нужно, чтобы появилось :D?!

(скрипт из первого поста интересен, но нафига, когда все должно решаться парой строчек в коде utm5_rfw)

aospan
NetUP Team
Сообщения: 1639
Зарегистрирован: Чт янв 13, 2005 20:30

Сообщение aospan »

По многочисленным заявкам данный функционал реализован :) При старте utm5_rfw необходимо указать параметр -o
В этом случае utm5_rfw выполнит все правила на выключение для заблокированных пользователей и у тех у кого статус интернета - "выключен".
Данный функционал в UTM-5.2.0-003 не вошел. В ближайшие 1-2 дня данный функционал появится в сборках "Тестинг" в личном кабинете (должна быть подключена подписка на получение тестовых сборок).

Stellarator
Сообщения: 12
Зарегистрирован: Вс май 21, 2006 19:03
Откуда: Russia, Novosibirsk

Сообщение Stellarator »

По многочисленным заявкам данный функционал реализован При старте utm5_rfw необходимо указать параметр -o
Ооо!!! 8)

Насчет -003 конечно жалко. Но главное, чтобы в следующем (релизе? ;) или -004 хотя-бы) появился.
(ибо про Тестинг не совсем понял про что речь (как подключить :)))

Закрыто