Скриптик для utm5_rfw при использовании iptables

Форум для размещения материалов по реализации различных схем использования ПО, решению частых проблем и предупреждению частых ошибок
Nick
Сообщения: 109
Зарегистрирован: Чт янв 20, 2005 20:27

Скриптик для utm5_rfw при использовании iptables

Сообщение Nick »

Т.к. при использовании utm5_rfw c iptables часто возникает ошибка о временой недоступности ресурса, что приводит к невозможности включения правил, а так же правила почему то дублируются, что приводит к невозможности блокировки доступа был прикручен следующий костыль (обзываем скажем fw, и прописываем в rfw5.cfg firewall_path=/netup/utm5/fw):

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

#!/bin/sh
IPTABLES=/usr/sbin/iptables

if [ $1 == "-D" ]; then
while [ 1 ]
do
$IPTABLES $* 2>/dev/null|| exit
done
else
        $IPTABLES $1 $2 $3 $4 $5 $6 $7
        err=`echo $?`
        while [ "0" -lt "$err" ]
        do
                echo "restarting rule...." $1 $2 $3 $4 $5 $6 $7
                sleep 2
                $IPTABLES $1 $2 $3 $4 $5 $6 $7
                err=`echo $?`
        done
fi
PS: Спасибо хотлайну за идею.

Davion
Сообщения: 267
Зарегистрирован: Чт дек 01, 2005 13:36

Сообщение Davion »

ругается что делать Notice: Dec 06 22:01:41 RFW Config: Processing config file: /netup/utm5/rfw5.cfg
Info : Dec 06 22:01:41 UTM5 Logger: New `*CRIT : ' stream: /netup/utm5/log/rfw.log
Info : Dec 06 22:01:41 UTM5 Logger: New ` Info : ' stream: /netup/utm5/log/rfw.log
/netup/utm5/fw: line 8: [: ==: unary operator expected
/netup/utm5/fw: line 8: [: ==: unary operator expected

post
Сообщения: 23
Зарегистрирован: Вт авг 29, 2006 12:23

Re: Скриптик для utm5_rfw при использовании iptables

Сообщение post »

Nick писал(а):

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

#!/bin/sh
IPTABLES=/usr/sbin/iptables

if [ $1 == "-D" ]; then
while [ 1 ]
do
$IPTABLES $* 2>/dev/null|| exit
done
fi
Если правила по какой-то причине нет в фаерволе, то будет зацикливание. Как можно модифицировать, чтобы была возможность проверки существования того, что будем удалять?

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

Сообщение dalex »

Этот скрипт уже не нужен. рфв научился отправлять правила последовательно

cjcrazy
Сообщения: 497
Зарегистрирован: Чт янв 20, 2005 21:54

Сообщение cjcrazy »

оно нужно, чтоп небыло дублей в iptables.
ситуация:
запустили систему, rfw отработал, добавил все правила.
потом, по какой-то причине произошел перезапуск именно rfw...
ну и ещё разок всем юзверям и-нет включает.
в итоге - а iptables по два правила на каждого пользователя.
во время отключения происходит удаление всего лишь одного правила.

проходили такое. уж пусть скрипт будет.

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Re: Скриптик для utm5_rfw при использовании iptables

Сообщение lancelot »

Nick писал(а):Т.к. при использовании utm5_rfw c iptables часто возникает ошибка о временой недоступности ресурса, что приводит к невозможности включения правил, а так же правила почему то дублируются, что приводит к невозможности блокировки доступа был прикручен следующий костыль (обзываем скажем fw, и прописываем в rfw5.cfg firewall_path=/netup/utm5/fw):

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

#!/bin/sh
IPTABLES=/usr/sbin/iptables

if [ $1 == "-D" ]; then
while [ 1 ]
do
$IPTABLES $* 2>/dev/null|| exit
done
else
        $IPTABLES $1 $2 $3 $4 $5 $6 $7
        err=`echo $?`
        while [ "0" -lt "$err" ]
        do
                echo "restarting rule...." $1 $2 $3 $4 $5 $6 $7
                sleep 2
                $IPTABLES $1 $2 $3 $4 $5 $6 $7
                err=`echo $?`
        done
fi
PS: Спасибо хотлайну за идею.
как бы этот скрипт переделать под IPFW

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

ipfw удаляет ВСЕ правила с заданным номером. Если включено(а по умолчанию включено) one_pass - то пакет выходит из фаервола по первому совпадающему правилу.

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Сообщение lancelot »

mikkey finn писал(а):ipfw удаляет ВСЕ правила с заданным номером. Если включено(а по умолчанию включено) one_pass - то пакет выходит из фаервола по первому совпадающему правилу.
Увы и ой,
IPFW и utm5_rfw стоит на FreeBSD6
а само ядро UTM5 стоит на виндах... и когда ядро ребутется...
то оно заново передает правило в utm5_rfw и IPFW на FreeBSD6
ну а FreeBSD6 в свою очередь не смотрит что такие правили уже есть у нее в IPFW и добавляет их второй раз, третий, четвертый... и так далее

вот и считай например на одного клиента два правила.. их 1000
т.е. 2 тыс правил есть... оп рестарт UTM... и в IPFW уже 2000 правил..

поэтому хочется что бы когда UTM5 рестартовало и передавало правила в IPFW... нужен скрипт который бы вызывался самой UTM5 и проверял есть ли правило с номером... если есть.. то сначало его удалить а потом добавить.

Аватара пользователя
Ata-man
Сообщения: 427
Зарегистрирован: Пт янв 21, 2005 10:04
Откуда: Екатеринбург

Сообщение Ata-man »

и когда ядро ребутется...
то оно заново передает правило в utm5_rfw и IPFW на FreeBSD6
ну а FreeBSD6 в свою очередь не смотрит что такие правили уже есть у нее в IPFW и добавляет их второй раз, третий, четвертый... и так далее
- Зачем городить огород??? Используйте таблицы в IPFW. При добавлении IP в них автоматически проверяется, есть ли уже такой адрес и если есть, то запись не добавляется.

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Сообщение lancelot »

Ata-man писал(а):
и когда ядро ребутется...
то оно заново передает правило в utm5_rfw и IPFW на FreeBSD6
ну а FreeBSD6 в свою очередь не смотрит что такие правили уже есть у нее в IPFW и добавляет их второй раз, третий, четвертый... и так далее
- Зачем городить огород??? Используйте таблицы в IPFW. При добавлении IP в них автоматически проверяется, есть ли уже такой адрес и если есть, то запись не добавляется.
еще как добавляется

пропробуйте создать создать два-три разных правила с одним номером
и эти правила прекрасно создадутся и будут жить под одним номером!

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

Сообщение calculator »

Как вариант на включение попробовать отсылать 2 правила: сперва на удаление, потом на добавление вида "iptables -D ... ; iptables -A ...". Или опять скриптиком разруливать по аналогии с удалением всех дублирующих правил при удалении.
Либо пересмотреть политику фаервола в сторону что не запрещено - разрешено.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

проверил, в таблицу IPFW действительно не добавляется повторно адрес.

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Сообщение lancelot »

mikkey finn писал(а):проверил, в таблицу IPFW действительно не добавляется повторно адрес.
ну и как это объяснить

05629 allow ip from 84.254.241.20 to any limit src-addr 100
05629 allow ip from any to 84.254.241.20
05629 allow ip from 84.254.241.20 to any limit src-addr 100
05629 allow ip from any to 84.254.241.20

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

ipfw table 1 add 10.11.12.13/32
ipfw table 1 list
ipfw table 1 add 10.11.12.13/32
Проверь. Потом выясняй.
ipfw add 100 allow ip from table\(1\) to any limit src-addr 100
ipfw add 100 allow ip from any to table\(1\)
В таблицах НЕТ номеров записей, но есть сами записи. Почитайте уже man, а? И не надо путать таблицу со списком.

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Сообщение lancelot »

дык в том то и дело что правила добавляются строкой
ipfw RULE_ID add permit ip from UIP/UBITS to any limit src-addr 100

и пробовал я по вашей аналогии....
в таблицу действительно больше одной записи не пишется

но правила добавляются строкой
ipfw RULE_ID add permit ip from UIP/UBITS to any limit src-addr 100

хоть так хоть из таблицы...
но они добавляются и добавляются

попробуйте сделать
ipfw table 1 add 10.11.12.13/32
а затем
ipfw add 100 allow ip from table\(1\) to any limit src-addr 100
и еще раз
ipfw add 100 allow ip from table\(1\) to any limit src-addr 100
и еще раз
ipfw add 100 allow ip from table\(1\) to any limit src-addr 100

а теперь смотрим что у нас в правилах
ipfw show 100
и видим
100 allow ip from table(1) to any limit src-addr 100
100 allow ip from table(1) to any limit src-addr 100
100 allow ip from table(1) to any limit src-addr 100


смысл сего что ЯДРО рестартануло, опа и передало в NAS все правила
допустим в таблице вторая запись не появится, а вот правило которе берет запись из таблицы... прекрасно его от туда возмет и добавит в листы

и так прикаждом рестарте ЯДРА

Закрыто