Интеграция с маршрутизаторами (events.sh)

Skip to end of metadata
Go to start of metadata
Вы просматриваете старую версию данной страницы. Смотрите текущую версию. Сравнить с текущим  |   просмотр истории страницы

В соответствии с рекомендациями Роскомнадзора часть ресурсов необходимо блокировать полностью, по всем портам и протоколам по IP адресу.

Варианты решения этой задачи перечислены ниже.

Данная интеграция подразумевает анонсирование с Редуктора маршрутной информации о том, что нужно заблокировать (согласно списка ip на "полный" блок по всем портам и протоколам)

Есть два способа интеграции - использование BGP и отправка команд. Мы рекомендуем использовать BGP как наиболее стандартный и надёжный способ. 

Использование BGP

Использование модуля BGP Blackhole.

Устаревшие схемы:

https://github.com/carbonsoft/reductor_bgp_rtbh

Отправка команд

Сохранять папку ssh требуется в chroot в папке cfg.
Либо она затрётся после обновления. После создания ключей, требуется создать на них симлинк в chroot:ln -s /cfg/.ssh/ /root/.ssh

Это решение используется как правило только если есть причины не использовать BGP.

В качестве команд обычно используется наполнение ACL, address-list или ipset IP-адресами для фильтрации.

Создание ACL, address-list или ipset лежит на администраторе маршрутизатора. Нужно сделать так, чтобы после перезагрузки маршрутизатора список существовал и в него можно было добавлять адреса. Обычно достаточно добавить его в конфиг. Опционально можно сделать сохранение этого списка и восстановление его при перезагрузке, это значительно сократит время синхронизации.

Получение разницы между адресами

Важно: все операции выполняются в chroot /app/reductor

  1. Откройте и изучите пример хука для интеграции с Linux маршрутизаторами, использующими ipset:
    chroot /app/reductor
    less /usr/local/Reductor/contrib/examples/events.sh_template
    
  2. По аналогии с уже имеющимся там примером, отредактируйте в нём три функции:
    1. ip_block_full_add - получает аргументом $1 IP адрес, который необходимо полностью заблокировать и отправляет на маршрутизатор команду на добавление в список заблокированных
    2. ip_block_full_del - получает аргументом $1 IP адрес, который необходимо разблокировать и отправляет на маршрутизатор команду на удаление из списка заблокированных
    3. ip_block_full_get - получает с маршрутизатора список заблокированных IP адресов (1 строка - 1 IP адрес), функция должна вывести их на стандартный вывод (stdout), сохранять в какие-либо файлы ничего не нужно.
  3. Скопируйте хук командой:
    cp -a /usr/local/Reductor/contrib/examples/events.sh_template /cfg/userinfo/hooks/events.sh
    
  4. Проверьте его работу при ручном запуске:
    /usr/local/Reductor/bin/events.sh
    
  5. Проверьте, что он работает из cron: очистите список на маршрутизаторе и подождите 1 час (запускается по cron в 10 минут каждого часа)

Получение списка целиком

Сам список IP адресов которые необходимо заблокировать находится тут:

/var/lib/reductor/lists/load/ip_block.load

Вы можете использовать его по собственному усмотрению.

Тестирование.

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

Обязательно выполните добавление маршрутизатора в know_hosts.

The authenticity of host '10.90.1.1' (10.90.1.1')' can't be established.
RSA key fingerprint is 12:3b:d5:55:bd:37:4f:44:b3:61:56:2c:05:a0:ad:90.
Are you sure you want to continue connecting (yes/no)? yes

  1. Запускаем /usr/local/Reductor/bin/events.sh вручную.
    1. При первом запуске должно произойти много событий ip_block_full_add.
    2. При повторном запуске ни одного события произойти не должно.
    3. Если много событий происходят при повторных запусках, необходимо:
      1. Проверять функцию получения списка IP - ip_block_full_get
      2. Проверять функцию отправки IP для блокировки на оборудование - ip_block_full_add.
      3. Полезным будет запуск в режиме трасировки: bash -x /usr/local/Reductor/bin/events.sh
  2. Тестируем автоматический запуск по crond.
    1. Разблокируйте все ресурсы на оборудовании вручную
    2. Дождитесь запуска events.sh по cron. grep events.sh /etc/cron.d/reductor чтобы узнать когда он запускается
    3. Наблюдайте за лог-файлом: tail -f /var/log/reductor/reductor.log
    4. Наблюдайте за списком блокируемых IP на оборудовании, он должен постепенно наполняться.

Анонсирование списка подсетей

Чтобы не создавать лишнюю нагрузку на ваши маршрутизаторы при анонсировании списка заблокированных IP адресов существует возможность анонсировать этот список в виде подсетей, что значительно снизит количество правил блокировки на вашем маршрутизаторе.

Сделать это можно с помощью опции меню -> Reductor -> Настройка алгоритма фильтрации ->

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.