Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Отправьте /32 IP в Blackhole Community ISP через BGP

    Отправьте /32 IP в Blackhole Community ISP через BGP

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Отправьте /32 IP в Blackhole Community ISP через BGP, RouterOS
     
    Nico
    Guest
    #1
    0
    27.03.2015 09:15:00
    Всем привет! Хотим отправить /32 в blackhole-сообщества через BGP нашему провайдеру. Статус BGP (провайдер и обновление IP для безопасности):

    /routing bgp peer print status  
    Flags: X - отключено, E - установлено  
    0 E name="HE" instance=default remote-address=X.X.X.X remote-as=XXXX  
        tcp-md5-key="" nexthop-choice=default multihop=no route-reflect=no  
        hold-time=3m ttl=255 in-filter=connected-in out-filter=connected-in  
        address-families=ip default-originate=never remove-private-as=no  
        as-override=no passive=no use-bfd=no remote-id=X.X.X.X  
        local-address=X.X.X.X uptime=19h23m11s prefix-count=533710  
        updates-sent=5 updates-received=990899 withdrawn-sent=1  
        withdrawn-received=95011 remote-hold-time=3m used-hold-time=3m  
        used-keepalive-time=1m refresh-capability=yes as4-capability=yes  
        state=established  

    Пробовали тест маршрутизации по примеру с “http://wiki.mikrotik.com/wiki/Routing_Questions”, но не работает. Помогите, пожалуйста, как правильно это сделать? Спасибо большое за ответ! С уважением.
     
     
     
    Nico
    Guest
    #2
    0
    20.04.2015 11:53:00
    Привет, ZeroByte! Наконец-то заработало.  

    Добавить в черную дыру:  
    /routing filter add chain=FILTER-OUT prefix=$1/32 invert-match=no action=accept set-bgp-communities=xxxx:xxx comment=$1/32  
    /routing bgp network add network=$1/32 synchronize=no  
    /routing bgp peer resend-all  

    Удалить из черной дыры:  
    /routing filter remove [find comment=$1/32];
    /routing bgp network remove [find network=$1/32]
    /routing bgp peer resend-all  

    Где $1 — атакуемый IP.  

    Большое спасибо,  
    Nico
     
     
     
    amt
    Guest
    #3
    0
    14.06.2016 08:19:00
    Привет, Нико, почему ты используешь /routing bgp peer resend-all?
     
     
     
    ZeroByte
    Guest
    #4
    0
    14.06.2016 14:53:00
    Думаю, это не обязательно, так как объявление сети добавляется уже после того, как фильтр установлен. Чуть проще сделать это, выборочно перераспределяя статические маршруты в BGP, чтобы не пришлось добавлять сеть и обновлять цепочки фильтров:

    /routing filter  
    add chain=BGP-out-global protocol=static bgp-communities=200:666 action=accept  
    add chain=BGP-out-global protocol=static action=discard  

    /routing bgp instance  
    set default out-filter=BGP-out-global redistribute-static=yes  

    С этим настроенным, вам достаточно просто создавать или удалять статические маршруты — и они автоматически будут отправлены соседям, чьи выходные фильтры это позволяют.

    /ip route add type=blackhole dst=192.0.2.42/32 bgp-communities=200:666  
    /ip route add type=blackhole dst=192.0.2.64/29 bgp-communities=200:666  

    Оба варианта заставят локальный маршрутизатор сбрасывать трафик на эти адреса (blackhole), а наличие сообщества 200:666 позволит им перераспределяться в BGP через первое правило в цепочке BGP-out-global. Учтите, что в этом примере фильтр не ограничивает длину префикса — по сути, вы доверяете себе и вводите только разумные маршруты в blackhole-сообщество. Если хотите подстраховаться, добавьте в правило для blackhole-сообщества ограничение prefix-length=29-32.
     
     
     
    patrick7
    Guest
    #5
    0
    14.06.2016 15:22:00
    Я бы не советовал перераспределять какие-либо маршруты. Создавайте статические "черные дыры" с помощью bgp-communities и добавляйте каждую сеть в раздел /routing bgp network с параметром synchronize=yes.
     
     
     
    ZeroByte
    Guest
    #6
    0
    14.06.2016 15:38:00
    Хотя я согласен с вами, что маршруты всегда нужно правильно объявлять, по моим наблюдениям, маршрут в «чёрную дыру» отлично подходит под категорию «вещей, которые логично перераспределять». Я много раз писал на форуме Mikrotik, что все маршруты нужно объявлять корректно — ведь у перераспределённых маршрутов есть тонкие нюансы, которые потом могут дать о себе знать, когда вы станете глубже разбираться в маршрутизации. Однако, учитывая, что маршрут в чёрную дыру для защиты от DDoS — это: а) временная мера, б) длинный префикс (который имеет приоритет вне зависимости от других метрик или методов управления трафиком), в) мера, применяемая в экстренной ситуации, то есть должна быть максимально быстрой и простой в исполнении, г) не распространяется на весь глобальный BGP — мне кажется, что неполное объявление происхождения вовсе не так уж критично, ведь каждый провайдер, получивший этот префикс, просто внесёт его в чёрную дыру и не будет распространять дальше среди других пиров. К тому же, эта экстренная мера должна работать как можно меньше по времени, так что вы не ссыпаете мусор в глобальную таблицу маршрутизации. Конечно, если кто-то хочет использовать redistribute-static=yes, нужно быть аккуратным и следить, чтобы глобальный фильтр пропускал в BGP только ту информацию, которая нужна. Если же он пропускает все маршруты подряд, без разбора — это, безусловно, плохо.
     
     
     
    amt
    Guest
    #7
    0
    15.06.2016 06:56:00
    Привет, ZeroByte, я использую это для фильтра: chain=to_MYISP prefix=xxx.xx.xx.0/22 prefix-length=32 invert-match=no action=accept set-bgp-prepend-path=“” set-bgp-communities=1111:111. Также нашёл этот скрипт в интернете и пытаюсь его подправить, чтобы отправлять заблокированные DDoS-ом IP в blackhole:

    :log info “BGP Blackhole updater starting”;
    :local refresh;
    :set refresh false;

    Добавляем адреса в BGP сети:
    :foreach address in=[/ip firewall address-list find list=ddosed disabled=no] do={
       :local id;
       :set id [/ip firewall address-list get $address address]
       :local rtExists;
       :set rtExists false;
       :foreach nets in=[/routing bgp network find network=“$id/32”] do={
           :set rtExists true;
           :put “$id уже есть в BGP сетях”;
       }
       :if ($rtExists = false) do={
           /routing bgp network add network=“$id/32” synchronize=no;
           :set refresh true;
           :put “$id добавлен в BGP сети”;
       }
    }

    Удаляем адреса из BGP сетей, которых нет в ACL:
    :foreach route in=[/routing bgp network find synchronize=no] do={
       :local addr;
       :set addr [/routing bgp network get $route network]
       :local addrsize;
       :set addrsize [:len $addr]
       :set addr [
           :pick $addr 0 ($addrsize-3)
       ];
       :local aclExists;
       :set aclExists false;
       :foreach addrs in=[/ip firewall address-list find list=ddosed address=$addr disabled=no] do={
           :set aclExists true;
           :put “$addr всё ещё в ACL”;
       }
       :if ($aclExists = false) do={
           :local netid;
           :set netid [/routing bgp network find network=“$addr/32”]
           /routing bgp network remove $netid;
           :set refresh true;
           :put “$addr удалён из BGP сетей”;
       }
    }

    :if ($refresh = true) do={
       :log info “BGP Blackhole updater запустил resend-all для BGP пира”
       :put “Выполняется resend-all для BGP пира”
       /routing bgp peer resend-all
    }

    :log info “BGP Blackhole updater завершён”;
     
     
     
    ZeroByte
    Guest
    #8
    0
    15.06.2016 15:08:00
    Это правило означает, что любой префикс /32 из вашего IP-блока будет получать сообщество 9121:666 (при этом все ранее установленные сообщества очищаются) при отправке к MYISP. Судя по названию цепочки, полагаю, что оно применяется к конфигурации пиринга, а не к самому BGP-инстансу. Также предполагаю, что в этой цепочке есть другие правила, которые вы не показали… потому что если это единственное правило, ваш роутер на самом деле будет отправлять всю таблицу BGP к MYISP, и вы полагаетесь на входной фильтр провайдера, чтобы он не дал вам рекламировать что-то неправильное.

    Что касается скрипта, по первому впечатлению, он должен работать. Главное — то, что он использует synchronize=no в определениях BGP-сетей, так что вам не нужно добавлять статические blackhole-маршруты для /32.

    Возможно, скрипт, который вы используете, был написан до появления функции, которая мне очень нравится: on-error={}. Для добавления blackhole-префиксов, вместо того чтобы писать всю логику проверки в скрипте, можно использовать одну команду:

    :foreach A in=[/ip firewall address-list find list=Blackholes] do={ :do { /routing bgp network add network=[/ip firewall address-list get $A address] synchronize=no } on-error={} }

    Этот синтаксис добавит все из списка Blackholes и просто ничего не сделает при ошибке (например, если элемент уже в списке). Обратите внимание, что внутри блока do={} команды :foreach вложена команда :do. :do позволяет использовать on-error{} так, чтобы скрипт не останавливался при ошибке выполнения :do.

    Код для удаления всё ещё должен сравнивать все элементы.
     
     
     
    amt
    Guest
    #9
    0
    16.06.2016 06:00:00
    ZeroByte, спасибо за быстрый ответ и помощь. Вот мой маршрутизирующий фильтр:

    /routing filter add action=discard chain=ospf-out prefix=xxx.xxx.xx.x/30 (IP интерфейса WAN) prefix-length=30-32 (я использую это для OSPF)  
    add action=accept chain=to_MYISP prefix=xxx.xxx.xx.x/22 prefix-length=32 set-bgp-communities=1111:111 (и использую это, чтобы отправлять атакуемые IP-адреса моему провайдеру)

    А вот мой BGP-инстанс и BGP-пиринг:

    /routing bgp instance set default as=xxxx client-to-client-reflection=no out-filter=default redistribute-connected=yes  
    /routing bgp peer add default-originate=if-installed hold-time=1m30s keepalive-time=10s name=wan out-filter=to_MYISP remote-address=xxx.xxx.xx.xx remote-as=xxx tcp-md5-key=xxxxxxxxx ttl=default update-source=wan

    Это мои настройки. Для фильтрации в файрволе я использую правила Chupaka:

    /ip firewall filter add action=jump chain=forward comment=Detect-Ddos connection-state=new in-interface=wan jump-target=detect-ddos  
    add action=return chain=detect-ddos comment=DOS-Exceptions src-address-list=DOS-Exceptions  
    add action=return chain=detect-ddos comment=Detect-Ddos dst-limit=50,256,src-and-dst-addresses/10s  
    add action=add-dst-to-address-list address-list=ddosed address-list-timeout=1m chain=detect-ddos comment=Detect-Ddos  
    add action=add-src-to-address-list address-list=ddoser address-list-timeout=1d chain=detect-ddos comment=Detect-Ddos  
    add action=drop chain=forward comment=Detect-Ddos connection-state=new dst-address-list=ddosed src-address-list=ddoser

    С помощью другого скрипта, который я отправлял тебе ранее, пытаюсь сделать что-то вроде — либо переделать под себя — чтобы автоматически добавлять атакуемые IP в сеть BGP с маской /32. Думаю, так можно будет лучше справляться с DDoS-атаками.

    Также, если не сложно, проверь мои настройки BGP, может там что-то не так.

    Большое спасибо!
     
     
     
    ZeroByte
    Guest
    #10
    0
    16.06.2016 15:00:00
    Это значит, что вы отправляете своему провайдеру объявление о маршруте по умолчанию — то есть сообщаете, что ИМЕННО ВЫ являетесь маршрутом в интернет. Гарантирую, они это блокируют, но вам определённо стоит это отключить. (сделайте это, когда сможете пережить кратковременный сбой BGP, потому что изменение настроек пира приводит к сбросу сессии BGP на Mikrotik). Вопрос — сессия BGP используется ТОЛЬКО для объявления black hole маршрутов или вы также планируете анонсировать свой собственный блок /22? Текущая настройка фильтра не позволяет вам анонсировать основной префикс или его подмножества, кроме /32 для black hole.
     
     
     
    amt
    Guest
    #11
    0
    16.06.2016 15:39:00
    Привет, zerobyte! Что именно ты хочешь отключить? Не понимаю, disable routing filter? Или disable default-originate=if-installed? У нас настроена BGP-сессия для интернета между upstream-провайдером и нашей системой. Провайдер дал мне blackhole community, чтобы отправлять атакуемый IP в их «черную дыру». Блок /22 взят из RIPE и назначен на мой AS-номер. Извини, у меня не так много опыта, и я стараюсь объяснить, спасибо за помощь еще раз.
     
     
     
    ZeroByte
    Guest
    #12
    0
    16.06.2016 15:50:00
    Отключите default-originate=if-installed (измените на «never»). Ваше правило фильтра to_MYISP фактически разрешает отправку всего. Вам также нужно добавить ещё два правила в конец этой цепочки в таком порядке:  
    chain=to_MYISP prefix=xxx.xx.xx.0/22 prefix-length=22-24 action=accept  
    chain=to_MYISP action=discard  

    Повторяйте первое из этих двух правил столько раз, сколько у вас публичных префиксов. (Это правило позволяет отправлять подблоки /24 или /23 из основного /22, но если у вас есть другие диапазоны, помимо этого /22, их тоже нужно добавить перед правилом discard.)
     
     
     
    amt
    Guest
    #13
    0
    16.06.2016 17:08:00
    Я настроил это так:

    0 chain=ospf-out prefix=xxx.xxx.xx.xx/30 prefix-length=30-32 invert-match=no action=discard set-bgp-prepend-path=""

    1 chain=to_MYISP prefix=xxx.xxx.xx0/22 prefix-length=32 invert-match=no action=accept set-bgp-prepend-path="" set-bgp-communities=1111:111

    2 chain=to_MYISP prefix=xxx.xxx.x0/22 prefix-length=22-24 invert-match=no action=accept set-bgp-prepend-path=""

    3 chain=to_MYISP invert-match=no action=discard set-bgp-prepend-path=""
     
     
     
    ZeroByte
    Guest
    #14
    0
    16.06.2016 18:06:00
    Я тут подумал, стоит внимательно отнестись к твоей конфигурации — твое правило фильтра позволит любой маршруту /32, который ты создашь, быть подхваченным и разрекламированным как маршрут в черную дыру у твоего провайдера. Возможно, стоит добавить какие-то дополнительные критерии, например, scope=90 или bgp-communities=1111:111, чтобы если вдруг тебе понадобится создать реальный маршрут /32 из твоего публичного блока, который ведет куда-то корректно, он не попал по ошибке в черную дыру.

    Если используешь scope=90, то чтобы создать черную дыру, делай это так:  
    /ip route add dst=b.b.b.b/32 scope=90 type=blackhole  

    Или для соответствия communities:  
    /ip route add dst=b.b.b.b/32 bgp-communities=1111:111 type=blackhole  

    В этом случае не придется назначать bgp action = set communities на фильтре черной дыры, потому что это будет задано на самом маршруте.

    Дело в том, что твоя инстанция перераспределяет статические маршруты, а текущие фильтры просто ищут любые маршруты /32 из твоего публичного блока и объявляют их провайдеру с сообществом черной дыры. Тебе нужно убедиться, что фильтр на черную дыру не навешивает это сообщество на любой /32, который увидит.
     
     
     
    amt
    Guest
    #15
    0
    17.06.2016 06:11:00
    Привет, Zero Byte! Я понимаю, что ты не поддерживаешь routing filter и предпочитаешь использовать scope 90 или bgp-communities. Поэтому я удалил фильтры из маршрутизации и у BGP-пира. На следующую DDoS-атаку я планирую использовать команду /ip route add dst=b.b.b.b/32 bgp-communities=1111:111 type=blackhole. Я правильно двигаюсь? Я провёл тест: когда использую фильтр и трассирую до адреса xxx.xxx.xxx.x, трафик останавливается до того, как доходит до моего апстрим-провайдера. А если включаю blackhole, трафик останавливается уже после апстрим-провайдера.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры