|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (12)
просмотр истории страницы... |
h2. Несколько хуков |
Для начала нужно создать в файл /usr/local/Reductor/userinfo/hooks/events.sh.hooks в котором перечислены пути к дополнительным хукам, например: |
{code} |
/usr/local/Reductor/userinfo/hooks.events_https.sh /usr/local/Reductor/userinfo/hooks/events.https.sh |
/usr/local/Reductor/userinfo/hooks.events_block.sh /usr/local/Reductor/userinfo/hooks/events.https_plus.sh |
{code} |
... |
h2. Примечания |
* Внимательно проверьте что то, что вы получаете на выходе из функции "получение списка IP" совпадает по формату с содержимым синхронизируемого списка. |
* Частая ошибка - синхронизация не работает из-за того что с маршрутизатора получаются подсети вида x.x.x.x/32, а в списке x.x.x.x или наоборот. |
* Ещё один момент - ipset в Linux (по крайней мере в CentOS 6) имеет смешанный формат - маски /32 скрываются, а все остальные остаются. Это тоже может приводить к проблемам при фильтрации. |
* Для использования подсетей используйте тип ipset hash:net |
h2. Пример - фильтрация ip_https и ip_subnet_block на Linux роутере |
... |
{code} |
2. Создаём список дополнительных хуков: |
{code} /usr/local/Reductor/userinfo/hooks.events_https.sh |
/usr/local/Reductor/userinfo/hooks.events_block.sh |
{code} |
... |
Нам везёт и хуки будут почти идентичными. |
Поскольку происходит синхронизация подсетей в конфиге, в настройках алгоритма фильтрации включаем опцию: |
|
{panel} \[x\] Синхронизировать IP-адреса подсетями {panel} В противном случае синхронизация будет зацикливаться и будет то удалять, то добавлять элементы. |
4. Хук для ip_https.load |
Хук должен быть исполнимым файлом, иначе он будет пропускаться. {code} touch /usr/local/Reductor/userinfo/hooks/events.https.sh chmod a+x /usr/local/Reductor/userinfo/hooks/events.https.sh {code} {code} #!/bin/bash IPSET=ip_https SSH="ssh -T root@10.50.140.73" IP_BLOCK_FULL_LIST="$LISTDIR/load/ip_https.load" # отправить на оборудование команду на блокирование ip адреса ip_block_full_add() { local ip="$1" echo ipset add $IPSET $ip | $SSH } # отправить на оборудование команду на снятие блокировки ip адреса ip_block_full_del() { local ip="$1" echo ipset del $IPSET $ip | $SSH } # получить список уже заблокированных IP адресов, нужно для вычисления дельты ip_block_full_get() { echo ipset save $IPSET | $SSH | egrep -o "$ip_or_ipmask_regex" } {code} 5. Аналогично для ip_block.load {code} touch /usr/local/Reductor/userinfo/hooks/events.sh chmod a+x /usr/local/Reductor/userinfo/hooks/events.sh {code} {code} #!/bin/bash IPSET=ip_block SSH="ssh -T root@10.50.140.73" # отправить на оборудование команду на блокирование ip адреса ip_block_full_add() { local ip="$1" echo ipset add $IPSET $ip | $SSH } # отправить на оборудование команду на снятие блокировки ip адреса ip_block_full_del() { local ip="$1" echo ipset del $IPSET $ip | $SSH } # получить список уже заблокированных IP адресов, нужно для вычисления дельты ip_block_full_get() { echo ipset save $IPSET | $SSH | egrep -o "$ip_or_ipmask_regex" } {code} |