Вы просматриваете старую версию данной страницы. Смотрите текущую версию.
Сравнить с текущим |
просмотр истории страницы
Нужно выполнить следующие шаги:
Необходимо создать хук:
touch /app/reductor/cfg/userinfo/hooks/events.sh
chmod a+x /app/reductor/cfg/userinfo/hooks/events.sh
Хук для IPv4:
#!/bin/bash SSH="/usr/bin/ssh -T <username>@<ip_address>" # отсекаем лишнее из вывода /print __only_ip() { egrep -o "$ip_or_ipmask_regex" | sed -E "s|^$ip_regex$|&/32|g" } # Отправляем на оборудование команду на блокирование IP адреса ip_block_full_add() { local ip="$1" echo "/ip firewall address-list add list=reductor_ip_block_list address=$ip comment=${ip}_reductor_ip_block" | $SSH } # Отправляем на оборудование команду на снятие блокировки IP адреса ip_block_full_del() { local ip="$1" echo "/ip firewall address-list remove [find comment=${ip}_reductor_ip_block]" | $SSH } mikrotik_firewall_prepare() { echo "/ip firewall filter add chain=reductor_forward comment=reductor_ip_block dst-address-list=reductor_ip_block_list action=drop" | $SSH echo "/ip firewall filter add chain=reductor_forward comment=reductor_ip_block src-address-list=reductor_ip_block_list action=drop" | $SSH echo "/ip firewall filter add chain=forward action=jump jump-target=reductor_forward place-before=0" | $SSH } # Получаем список заблокированных IP ip_block_full_get() { # mikrotik_firewall_prepare echo "/ip firewall address-list print where list=reductor_ip_block_list" | $SSH | __only_ip }
Хук для IPv6:
#!/bin/bash SSH="/usr/bin/ssh -T <имя пользователя на Микротик>@<ip-адрес Микротика>" export IP_BLOCK_FULL_LIST="$LISTDIR/load/ip6_block.load" ip6_regex=${ip6_regex:-[0-9a-fA-F]+:[0-9a-fA-F:/]+} # отсекаем лишнее из вывода /print __only_ip() { egrep -o "$ip6_regex" } # Отправляем на оборудование команду на блокирование IP адреса ip_block_full_add() { local ip="$1" echo "/ipv6 firewall address-list add list=reductor_ip6_block_list address=$ip comment=${ip}_reductor_ip6_block" | $SSH } # Отправляем на оборудование команду на снятие блокировки IP адреса ip_block_full_del() { local ip="$1" echo "/ipv6 firewall address-list remove [find comment=${ip}_reductor_ip6_block]" | $SSH } mikrotik_firewall_prepare() { echo "/ipv6 firewall filter add chain=reductor_forward comment=reductor_ip6_block dst-address-list=reductor_ip6_block_list action=drop" | $SSH echo "/ipv6 firewall filter add chain=forward action=jump jump-target=reductor_forward place-before=0" | $SSH } # Получаем список заблокированных IP ip_block_full_get() { # mikrotik_firewall_prepare echo "/ipv6 firewall address-list print where list=reductor_ip6_block_list" | $SSH | __only_ip }
Для одновременной работы нескольких хуков, воспользуйтесь "данной статьей" |
Чтобы всё заработало нужно:
1. Указать правильные IP адрес MikroTik и логин в переменной $SSH
2. Сгенерировать ключи в chroot
chroot /app/reductor/ /usr/bin/ssh-keygen
(на все вопросы - Enter)
3. Настроить авторизацию по ключам:
chroot /app/reductor/ /usr/bin/ssh-copy-id логин_на_Микротике@IP-микротика
4. Проверить вручную команду
TIMEOUT=0 chroot /app/reductor /usr/local/Reductor/bin/events.sh
Стоит учесть, что могут быть проблемы с ssh-copy-id на версии прошивки МТ ниже 6.3.1 |
В консоли Carbon Reductor DPI выполняем (после заполнения реквизитов на доступ по ssh):
# подготовка цепочек firewall на MikroTik. chroot /app/reductor . /cfg/userinfo/hooks/events.sh mikrotik_firewall_prepare
Или на MikroTik:
/ip firewall filter add chain=reductor_forward comment=reductor_ip_block dst-address-list=reductor_ip_block_list action=drop /ip firewall filter add chain=forward action=jump jump-target=reductor_forward place-before=0
Всю папку .ssh/ необходимо скопировать по пути /app/reductor/cfg/ чтобы ключи не пропали при обновлении:
mkdir -p /app/reductor/cfg/root/.ssh/ cp -r /app/reductor/root/.ssh /app/reductor/cfg/.ssh
Если была физическая замена роутера (с сохранением старых конфигурационных файлов) - необходимо удалить нужную строчку в файле известных машин:
chroot /app/reductor /root/.ssh/known_hosts |