Скрипт для блокировки IP из банлиста

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
iiwanc
Сообщения: 11
Зарегистрирован: 17 мар 2022, 18:58

Здравствуйте!
Простите, если не сюда пишу.

С Микротик знаком несколько лет, но скрипты не писал. Таких задач передо мной не было.
Читал информацию в интернете. Но в программировании не силен.
Буду рад, если поправите мои скрипты и, возможно, мое понимание, как это работает.

Мне необходимо составить банлист из IP и заблокировать эти адреса на Микротике.
MIKROTIK RB4011IGS+5HACQ2HND-IN с RouterOS v6.45.9 (long-term)

Делаю скриптом на FTP сервере:

Код: Выделить всё

@echo off
powershell -executionpolicy bypass -command "(Invoke-WebRequest https://www.spamhaus.org/drop/drop.txt).content.split() | foreach -begin {" ^
    "@(':log info "torlist.rsc import started."', '/system logging disable 0', '/ip firewall address-list remove [find where list="""torlist"""]','/ip firewall address-list') | Out-File '.\torlist.rsc' -Append -Encoding utf8" ^
        "} -Process {" ^
            """"/do {ip firewall address-list add address=$($_) list=talos timeout=2d} on-error={}""" | Out-File '.\torlist.rsc' -Append -Encoding utf8" ^
        "} -end {" ^
            """"/system logging enable 0""", """:log info "torlist.rsc import complete."""" | Out-File '.\torlist.rsc' -Append -Encoding utf8" ^
        "}"
exit
Список получается вида:

Код: Выделить всё

:log info torlist.rsc import started.
/system logging disable 0
/ip firewall address-list remove [find where list="torlist"]
/ip firewall address-list
/do {ip firewall address-list add address=221.132.192.0 list=talos timeout=2d} on-error={}
/do {ip firewall address-list add address=223.169.0.0 list=talos timeout=2d} on-error={}
/do {ip firewall address-list add address=223.173.0.0 list=talos timeout=2d} on-error={}
/do {ip firewall address-list add address=223.254.0.0 list=talos timeout=2d} on-error={}
/system logging enable 0
:log info torlist.rsc import complete.
Теперь, понимаю, что нужно загрузить этот список на Микротик.
Для этого идем в /system/scripts и пишем там скрипт:

Код: Выделить всё

#Загружаем банлист
/system script add name="ZagruzkaTorlist" source={
/tool fetch url="http://домен.ру/torlict.rsc" mode=http;
:log info "Zagruzili Torlist";
}
# Скрипт, который удалит старый список Torlist и добавит новый
/system script add name="ZamenitTorlist" source={
/ip firewall address-list remove [find where list="torlist"]
/import file-name=torlist.rsc;
:log info "Удалены старые записи Torlist и импортирован новый список";
}
Создаем правило, чтобы блокировать IP из нашего банлиста. Пишем в терминале:

Код: Выделить всё

add chain=input action=drop comment="Blokiruem IP iz torlist.rsc" \
    connection-state=new src-address-list=blacklist in-interface=ether1-Internet
Идем в Тарминал и создаем правило scheduler, пишем:

Код: Выделить всё

# Расписание загрузки и применения списка Torlist
/system scheduler add comment="Skachivaem Banlist" interval=3d \
  name="SkachivaemBanlist" on-event=ZagruzkaTorlist \
  start-date=jan/01/1970 start-time=02:00:00
/system scheduler add comment="Primenit banlist" interval=3d \
  name="UstanovitBanlist" on-event=ReplaceTorlist \
  start-date=jan/01/1970 start-time=02:10:00
Очень хотелось бы разобраться в этом.
Буду благодарен советам и ссылкам на источники.


iiwanc
Сообщения: 11
Зарегистрирован: 17 мар 2022, 18:58

Не уже ли я все делаю правильно? :)
Кто подскажет?


Аватара пользователя
hardrockbaby
Сообщения: 70
Зарегистрирован: 19 сен 2021, 16:11

iiwanc писал(а): 18 мар 2022, 12:29 Мне необходимо составить банлист из IP и заблокировать эти адреса на Микротике.
...
Не уже ли я все делаю правильно? :)
Кто подскажет?
torlist.rsc я бы облегчил, т.к. циклы do здесь ни к чему:
 1

Код: Выделить всё

:log info "torlist.rsc import started."
/system logging disable 0
/ip firewall address-list
remove [find where list="torlist"]
add address=221.132.192.0 list=talos timeout=2d
add address=223.169.0.0 list=talos timeout=2d
add address=223.173.0.0 list=talos timeout=2d
add address=223.254.0.0 list=talos timeout=2d
/system logging enable 0
:log info "torlist.rsc import complete."
Или в такой, смотря как удобней его генерировать в powershell
 2

Код: Выделить всё

:log info "torlist.rsc import started."
/system logging disable 0
/ip firewall address-list remove [find where list="torlist"]
/ip firewall address-list add address=221.132.192.0 list=talos timeout=2d
/ip firewall address-list add address=223.169.0.0 list=talos timeout=2d
/ip firewall address-list add address=223.173.0.0 list=talos timeout=2d
/ip firewall address-list add address=223.254.0.0 list=talos timeout=2d
/system logging enable 0
:log info "torlist.rsc import complete."
iiwanc писал(а): 18 мар 2022, 12:29Теперь, понимаю, что нужно загрузить этот список на Микротик.
Для этого идем в /system/scripts и пишем там скрипт:
При его запуске ты очищаешь torlist затем повторяешь аналогичную очистку списка в torlict.rsc
Код поправил в такой вид:

Код: Выделить всё

#Загружаем банлист
/tool fetch url="http://домен.ру/torlict.rsc" mode=http;
:log info "Zagruzili Torlist";
/import file-name=torlist.rsc;


iiwanc
Сообщения: 11
Зарегистрирован: 17 мар 2022, 18:58

Для эксперимента ввожу в терминале:

Код: Выделить всё

/tool fetch address=192.168.0.99 user=ftp mode=ftp password=123 src-path=/ftp/tor
list.rsc port=21 host="" keep-result=yes
Появляется сообщение:

Код: Выделить всё

 status: finished
 downloaded: 761KiBz pause]
 duration: 1s
Потом ввожу:

Код: Выделить всё

/import file-name=torlist.rsc;
ругается и пишет:

Код: Выделить всё

expected command name (line 1 column 1)


iiwanc
Сообщения: 11
Зарегистрирован: 17 мар 2022, 18:58

В Files вижу свой файл torlist.rsc.
Но не получается импортировать.
Помогите, пожалуйста.


Аватара пользователя
hardrockbaby
Сообщения: 70
Зарегистрирован: 19 сен 2021, 16:11

iiwanc писал(а): 20 мар 2022, 21:01 ругается и пишет:
expected command name (line 1 column 1)
Сообщение в лог взято в кавычки?
 неправильно
:log info torlist.rsc import started.
 правильно
:log info "torlist.rsc import started."


iiwanc
Сообщения: 11
Зарегистрирован: 17 мар 2022, 18:58

Я эти строки вообще пока удалил.
Для формирования банлиста использую скрипт, в котором прописана кодировка:

Код: Выделить всё

-Encoding utf8
Может ли быть проблема в этом?


iiwanc
Сообщения: 11
Зарегистрирован: 17 мар 2022, 18:58

В конце файла torlist.rsc есть строка:

Код: Выделить всё

add address= list=torlist timeout=2d
Понятное дело, в этой строке не создается адрес лист. Выдает ошибку.
Может ли быть это причиной неудавшегося импорта?


iiwanc
Сообщения: 11
Зарегистрирован: 17 мар 2022, 18:58

Если вручную в терминале вносить импортируемый список, то работает.
Но команда не работает:

Код: Выделить всё

/import file-name=torlist.rsc;


Аватара пользователя
hardrockbaby
Сообщения: 70
Зарегистрирован: 19 сен 2021, 16:11

Для формирования банлиста использую скрипт, в котором прописана кодировка:
-Encoding utf8
Может ли быть проблема в этом?
Пока используются символы ASCII проблем не должно возникать, т.е. разницы между ascii и utf8 не будет. Но желательно использовать -Encoding ascii дабы потом не гадать где сломался скрипт. Причём сама ROS делает экспорт в ascii кодировке.
Если вручную в терминале вносить импортируемый список, то работает.
Но команда не работает:
/import file-name=torlist.rsc;
Покажи этот нерабочий torlist.rsc полностью
В конце файла torlist.rsc есть строка:
add address= list=torlist timeout=2d
Может ли быть это причиной неудавшегося импорта?
Может


Ответить