Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
    Скачиватель списков адресов (DShield, Spamhaus DROP/EDROP и др.)

    Скачиватель списков адресов (DShield, Spamhaus DROP/EDROP и др.)

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скачиватель списков адресов (DShield, Spamhaus DROP/EDROP и др.), RouterOS
     
    Shumkov
    Guest
    #1
    0
    01.10.2019 20:00:00
    Привет! Новый параметр “output=user” открыл новые возможности для скриптинга, которые я решил полностью использовать. Скрипт не требует сторонних серверов, так как списки адресов загружаются напрямую из источника и обрабатываются непосредственно на маршрутизаторе. Скрипт НЕ сохраняет загруженные файлы на диск (тем самым предотвращая преждевременный износ и поломку диска). Скрипт можно адаптировать для загрузки и обработки любого количества списков адресов аналогичного формата (максимальный размер файла — 63 KiB (64512 байт). Это лучше, чем 4 KiB). На данный момент скрипт может загружать и обновлять следующие списки: DShield Spamhaus DROP Spamhaus EDROP Abuse.ch SSLBL Вариант 1: ip firewall address-list :local update do={ :do { :local data ([:tool fetch url=$url output=user as-value]->"data") remove [find list=blacklist comment=$description] :while ([:len $data]!=0) do={ :if ([:pick $data 0 [:find $data "\n"]]~"^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}") do={ :do {add list=blacklist address=([:pick $data 0 [:find $data $delimiter]].$cidr) comment=$description timeout=1d} on-error={} } :set data [:pick $data ([:find $data "\n"]+1) [:len $data]] } } on-error={:log warning "Обновление списка адресов <$description> не удалось"} } $update url=https://www.dshield.org/block.txt description=DShield delimiter=("\t") cidr=/24 $update url=https://www.spamhaus.org/drop/drop.txt description="Spamhaus DROP" delimiter=("\_") $update url=https://www.spamhaus.org/drop/edrop.txt description="Spamhaus EDROP" delimiter=("\_") $update url=https://sslbl.abuse.ch/blacklist/sslipblacklist.txt description="Abuse.ch SSLBL" delimiter=("\r") Скрипт удаляет все адреса, соответствующие условию “list=blacklist comment=$description”, после чего заполняет списки адресов с нуля. Это проще и быстрее. Вариант 2: ip firewall address-list :local update do={ :do { :local data ([:tool fetch url=$url output=user as-value]->"data") :local array [find dynamic list=blacklist] :foreach value in=$array do={:set array (array,[get $value address])} :while ([:len $data]!=0) do={ :if ([:pick $data 0 [:find $data "\n"]]~"^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}") do={ :local ip ([:pick $data 0 [:find $data $delimiter]].$cidr) :do {add list=blacklist address=$ip comment=$description timeout=1d} on-error={ :do {set ($array->([:find $array $ip]-[:len $array]/2)) timeout=1d} on-error={} } } :set data [:pick $data ([:find $data "\n"]+1) [:len $data]] } } on-error={:log warning "Обновление списка адресов <$description> не удалось"} } $update url=https://www.dshield.org/block.txt description=DShield delimiter=("\t") cidr=/24 $update url=https://www.spamhaus.org/drop/drop.txt description="Spamhaus DROP" delimiter=("\_") $update url=https://www.spamhaus.org/drop/edrop.txt description="Spamhaus EDROP" delimiter=("\_") $update url=https://sslbl.abuse.ch/blacklist/sslipblacklist.txt description="Abuse.ch SSLBL" delimiter=("\r") Скрипт НЕ удаляет актуальные адреса, а продлевает их таймаут. Адреса, которых нет в загружаемом списке, автоматически удаляются системой после истечения их таймаута. Это сложнее и медленнее, но позволяет отслеживать дату/время добавления адресов в черный список. Почему скрипт использует “array”? Потому что стандартная функция “find” очень медленная. Использование дополнительного массива позволяет ускорить скрипт в несколько раз, так как операции выполняются напрямую с индексами, минуя стандартную функцию “find”. Требуемая политика: чтение, запись, тестирование. Возможно, этот скрипт будет полезен кому-то. P.S. Извините за мой английский.
     
     
     
    Zebble
    Guest
    #2
    0
    17.10.2019 21:12:00
    Хорошая работа! Я добавил FireHOL Level2 в скрипт, на случай если тебе интересно. Просто добавил эту строку: $update url= https://raw.githubusercontent.com/ktsaou/blocklist-ipsets/master/firehol_level2.netset description=“FireHOL Level2” delimiter=(“\n”) -zeb
     
     
     
    liuyao
    Guest
    #3
    0
    18.10.2019 13:29:00
    Здравствуйте, спасибо за то, что поделились. Но ваши функции трудно понять. Если какой-либо босс перепишет, написанное выражение будет идеально, как в официальном примере. Спасибо.
     
     
     
    RackKing
    Guest
    #4
    0
    03.11.2019 15:20:00
    Привет! Это выглядит отлично. Я попробую. Обновление - я только что это запустил, и всё работает прекрасно - никаких ошибок. Какова общая рекомендация по частоте получения новых списков - ежедневно? Я правильно понимаю, что он удаляет или игнорирует дубликаты? Было бы здорово держать это в курсе с дополнительной информацией! Огромное спасибо за это!!!
     
     
     
    msatter
    Guest
    #5
    0
    03.11.2019 15:37:00
    Как он обрабатывает адреса 1.2.3.0/24, и насколько я понимаю, он добавляет 1.2.3.0 в список адресов без /24? Обновление: я запустил скрипт, и он правильно обрабатывает диапазон (CIDR). Собираюсь посмотреть, смогу ли я добавить еще несколько списков. Обновление 2: отличный скрипт, и я добавил возможность фильтровать по конкретному тегу в файле, что также можно использовать для удаления списка, который больше не нужен, из текущего черного списка в списке адресов.
     
     
     
    RackKing
    Guest
    #6
    0
    03.11.2019 15:42:00
    К сожалению, я не могу перевести этот текст.
     
     
     
    RackKing
    Guest
    #7
    0
    03.11.2019 17:50:00
    Это правильный синтаксис $update url=https://raw.githubusercontent.com/ktsaou/blocklist-ipsets/master/firehol_level2.netset description="FireHOL Level2" delimiter=("\n")
     
     
     
    msatter
    Guest
    #8
    0
    03.11.2019 17:51:00
    Это работает, если постер zeb вставит это как код здесь: $update url=https://raw.githubusercontent.com/ktsaou/blocklist-ipsets/master/firehol_level2.netset description="FireHOL Level2" delimiter=("\n") ОЧЕНЬ ДОВОЛЕН скриптом от Шумкова и добавленной опцией от Mikrotik, теперь очень легко импортировать списки, не прибегая к другим компьютерам для их предварительной подготовки.
     
     
     
    RackKing
    Guest
    #9
    0
    03.11.2019 18:00:00
    Этот список Level2 огромный… пытаюсь классифицировать разные уровни, которые там есть. Есть идеи? Также, будешь это делать ежедневно?
     
     
     
    Shumkov
    Guest
    #10
    0
    03.11.2019 18:39:00
    Не забывайте о размере файла - максимум 63 KiB. Если размер файла превышает максимум, будет обработана только часть файла (первые 63 KiB), а остальная часть будет отбрасываться. FireHOL Level2 больше 63 KiB. Какова общая рекомендация по частоте получения новых списков - ежедневно? Я установил интервал планировщика на 8 часов. В целом, интервал зависит от конкретного списка и частоты его обновления провайдером. Удаляет ли он или игнорирует дублирующиеся записи? Скрипт удаляет только адреса, которые находятся в “черном списке” и имеют комментарий=описание.
     
     
     
    RackKing
    Guest
    #11
    0
    03.11.2019 20:53:00
    Ах, это логично. Вы совершенно правы. Спасибо за объяснение по поводу удаления. Есть ли какие-нибудь другие списки, которые вы бы рассмотрели, или хороший источник?
     
     
     
    msatter
    Guest
    #12
    0
    03.11.2019 23:58:00
    Было бы неплохо, если бы это было возможно с помощью фильтра, чтобы в переменной оставались только нужные данные. Так что в переменной будет значительно больше места :local data ([/tool fetch url=$url output=user as-value~"^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"]->"data");
     
     
     
    RackKing
    Guest
    #13
    0
    04.11.2019 00:42:00
    Похоже, FireHOL Level1 может быть лучшим выбором и при этом находится под лимитом размера файла… почти. Есть ли причины, чтобы не использовать это? Такой большой список, вероятно, окажет значительное влияние на производительность роутера? @Shumkov, какая у тебя была цель/стратегия, исходя из выбранных списков? Я пытаюсь разобраться, какие списки стоит использовать и что будет золотой серединой. Редактирование - после более внимательного взгляда, похоже, что отдельные источники, которые ты используешь, очень похожи на firehol_level1. С учетом цели избежать ложных срабатываний, это отличное место для начала. Думаю, брать их по отдельности или через firehol - это личное предпочтение. Какой классный скрипт - большое спасибо.
     
     
     
    RackKing
    Guest
    #14
    0
    04.11.2019 00:56:00
    malc0de $update url=http://malc0de.com/bl/IP_Blacklist.txt description=“Malc0de” delimiter=(“\n”)
     
     
     
    Shumkov
    Guest
    #15
    0
    04.11.2019 07:51:00
    Было бы здорово, если бы это можно было реализовать с помощью фильтра, чтобы в переменной оставались только нужные данные. Тогда в переменной было бы гораздо больше места. Это не сработает: "data" является элементом массива и обрабатывается только целиком — нельзя обработать только часть элемента. @Shumkov, какая у тебя была цель/стратегия, исходя из выбранных списков? Я пытаюсь разобраться, какие списки стоит использовать и какой вариант будет оптимальным. Правка — после более пристального взгляда становится очевидно, что используемые тобой источники очень похожи на firehol_level1. Верно, я взял FireHOL Level1 за основу. Убрал "Feodo Tracker" и "Ransomware Tracker", заменил "Bambenek C2" на "Bambenek High-Confidence C2" (как сам и рекомендовал), и также убрал "Fullbogons" — я получаю их с помощью BGP.
     
     
     
    msatter
    Guest
    #16
    0
    04.11.2019 08:38:00
    Я согласен, и моя идея заключается в фильтрации трафика (потока) на пути к массиву данных. Например, в скрипте это выглядит так: wget -q -O - $url | gawk --posix --field-separator=, '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/ { print "$i a=" $1;}' > $saveTo/$filename. Это что-то, что только Mikrotik может создать для перехвата потока.
     
     
     
    RackKing
    Guest
    #17
    0
    04.11.2019 12:29:00
    Это абсолютно логично. Ещё раз спасибо за это.
     
     
     
    RackKing
    Guest
    #18
    0
    04.11.2019 14:00:00
    Есть ли способ проверить размер файла и при превышении максимального размера файла активировать инструмент отправки электронной почты?
     
     
     
    Shumkov
    Guest
    #19
    0
    07.11.2019 10:41:00
    Есть ли способ проверить размер файла и запустить инструмент для отправки электронной почты, если он превышает максимальный размер файла? Попробуйте это: если (([tool fetch url=<url> output=user as-value]->"total")>63) сделать={tool e-mail send ...}
     
     
     
    RackKing
    Guest
    #20
    0
    07.11.2019 12:13:00
    Спасибо за это. У вас есть отдельная ссылка на статью о fullbogons? Я не могу найти прямой URL для нее?
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры