VPN подключения и Address list
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
VPN подключения и Address list
Привет
Есть идея для скрипта
Т.к. сам в этом не очень разбираюсь, может кто-нибудь из знающих заинтересуется
В логе часто появляются такие записи:
Создаём адрес лист block_vpn
Скрип будет запускаться раз в 5 минут (например) и проверять логи за последние 5 минут на наличие таких записей
Если такая запись найдена, нужно вытащить из неё адрес и превратить его в подсеть (в нашем примере это 47.252.42.0/24 и 43.157.27.0/24)
После этого надо сравнить 47.252.42.0/24 и 43.157.27.0/24 с существующими записями в block_vpn и добавить туда, если записи не найдены
Фаервол дропает инпуты из этих адресов
Да, проще создать вайтлисты и дропать всё остальное, но к сожалению адреса часто меняются
Есть идея для скрипта
Т.к. сам в этом не очень разбираюсь, может кто-нибудь из знающих заинтересуется
В логе часто появляются такие записи:
Создаём адрес лист block_vpn
Скрип будет запускаться раз в 5 минут (например) и проверять логи за последние 5 минут на наличие таких записей
Если такая запись найдена, нужно вытащить из неё адрес и превратить его в подсеть (в нашем примере это 47.252.42.0/24 и 43.157.27.0/24)
После этого надо сравнить 47.252.42.0/24 и 43.157.27.0/24 с существующими записями в block_vpn и добавить туда, если записи не найдены
Фаервол дропает инпуты из этих адресов
Да, проще создать вайтлисты и дропать всё остальное, но к сожалению адреса часто меняются
-
- Сообщения: 4084
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: VPN подключения и Address list
Приветствую. А много таких ошибок с одного адреса? Насколько актуально их блокировать? У меня за двое суток всего четыре ошибки с четырёх разных адресов...
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
это не катастрофическая проблема, обычно пару адресов в день, пару раз было около 10
бывает как сегодня, когда один адрес долбит каждую секунду 10-15 минут
я сейчас вручную раз в 2-3 дня захожу в логи и вручную собираю их в блоклисты, но если возможно, конечно хотелось бы автоматизировать
бывает как сегодня, когда один адрес долбит каждую секунду 10-15 минут
я сейчас вручную раз в 2-3 дня захожу в логи и вручную собираю их в блоклисты, но если возможно, конечно хотелось бы автоматизировать
-
- Сообщения: 4084
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: VPN подключения и Address list
Код: Выделить всё
:foreach i in=[/log/find message~"^\\d+\\.\\d+\\.\\d+\\.\\d+ phase1 negotiation failed\\."] do={
:local msg [/log get $i message];
:local ip [:pick $msg 0 [:find $msg " phase1"]];
do {/ip/firewall/address-list/add list=BLOCK_ME_PLEASE address=$ip} on-error={}
}
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
спасибо!
я попробую перевести это в текстовую форму
скрип выбирает все записи из лога, которые выглядят как "ip_address phase1 negotiation failed"
берём одну такую строчку, вытаскиваем всё что находится до " phase1" и добавляем в блоклист
если возникает ошибка (адрес существует в блоклисте), игнорируем переходим к следующему адресу
т.е. всегда обрабатывается весь лог и в блоклист записывается конкретный адрес
буду думать как подправить под свои требования
я попробую перевести это в текстовую форму
скрип выбирает все записи из лога, которые выглядят как "ip_address phase1 negotiation failed"
берём одну такую строчку, вытаскиваем всё что находится до " phase1" и добавляем в блоклист
если возникает ошибка (адрес существует в блоклисте), игнорируем переходим к следующему адресу
т.е. всегда обрабатывается весь лог и в блоклист записывается конкретный адрес
буду думать как подправить под свои требования
-
- Сообщения: 4084
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: VPN подключения и Address list
А какие требования?
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
- проверять не весь лог, а только записи за последние 15 минут (например)
- записывать в блоклист не 47.252.42.12, а 47.252.42.0/24
- отлавливать не только "ip_address phase1 negotiation failed" строки, но и "phase1 negotiation failed due time up ..."
-
- Сообщения: 4084
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: VPN подключения и Address list
А смысл? Вроде и без этого быстро отрабатывает И как-то лёгкого пути не вижу...
Код: Выделить всё
:foreach i in=[/log/find message~"^\\d+\\.\\d+\\.\\d+\\.\\d+ phase1 negotiation failed\\."] do={
:local msg [/log get $i message];
:local ip ([:pick $msg 0 [:find $msg "." ([:find $msg "." ([:find $msg "."] + 1)] + 1)]].".0/24");
do {/ip/firewall/address-list/add list=BLOCK_ME_PLEASE address=$ip} on-error={}
}
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
да как-то неоптимизировано выглядит
а вот так не получится?
Код: Выделить всё
:foreach i in=[/log/find message~"^\\d+\\.\\d+\\.\\d+\\.\\d+ phase1 negotiation failed\\." where time>([/system clock get time] - 15m)]
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
у меня встречаются ещё такие типы сообщений
первая строка - это наверное 95% всех подобных ошибок
как я понимаю, для первой строки логика должна быть примерно такая:
находим положение символа ">", вырезаем остаток строки после этого символа, потом по примеру первого сообщения обрабатывается вырезанный участок
для каждого из этих типов сообщений нужен свой foreach внутри одного скрипта или это должны быть дополнительные 3 скрипта?
первая строка - это наверное 95% всех подобных ошибок
Код: Выделить всё
phase1 negotiation failed due to time up 100.100.100.100[500]<=>47.252.42.12[500] e0c091b198818b39:6b463379b059196c
<47.252.42.12>: user Admin authentication failed
47.252.42.12 parsing packet failed, possible cause: wrong password
находим положение символа ">", вырезаем остаток строки после этого символа, потом по примеру первого сообщения обрабатывается вырезанный участок
для каждого из этих типов сообщений нужен свой foreach внутри одного скрипта или это должны быть дополнительные 3 скрипта?
-
- Сообщения: 4084
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: VPN подключения и Address list
У меня не работает, возвращает всё подряд. Подозреваю, потому, что "get time" получает лишь время, а не дату - там ещё есть get datebear писал(а): ↑28 мар 2024, 18:48 а вот так не получится?Код: Выделить всё
where time>([/system clock get time] - 15m)]
Ну, примерно так. Даже так: найти ">" (определив таким образом начало адреса), от следующего места искал "." и т.д. (как в моём последнем примере с округлением до /24), а потом взял бы нужную часть адреса для дальнейшей обработки.
Как захочется. Главное, что это три независимых обработчика, а в одном они скрипте или в нескольких - нет разницы.
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
del
Последний раз редактировалось bear 31 мар 2024, 20:11, всего редактировалось 1 раз.
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
del
Последний раз редактировалось bear 31 мар 2024, 20:11, всего редактировалось 1 раз.
-
- Сообщения: 4084
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: VPN подключения и Address list
Только сейчас добрался глянуть - и поперхнулся на ":find $i"... Потом обновил страницу и увидел, что сообщения удалены %)
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
да, я там зажигал от души :-))
добавлял себе в лог адрес 122.123.333.111 и не понимал, почему скрипт его не обрабатывает
но в итоге всё сделал, всё пашет
но у меня появилась новая вавка в голове
есть правило, которое добавляет а адреслист IP, который перебирает порты
но он добавляет отдельный адрес, а я хотел бы чтобы добавлялась подсеть (либо чтобы ip в адреслисте исправлялся на 0/24)
сейчас нахожусь на этом этапе, пытаюсь чтобы хотя бы выводились нужные строки, но похоже что-то не то делаю
подскажи пожалуйста, как правильно проапдейтить 122.123.123.111 в адреслисте до 122.123.123.0/24?
добавлял себе в лог адрес 122.123.333.111 и не понимал, почему скрипт его не обрабатывает
но в итоге всё сделал, всё пашет
но у меня появилась новая вавка в голове
есть правило, которое добавляет а адреслист IP, который перебирает порты
но он добавляет отдельный адрес, а я хотел бы чтобы добавлялась подсеть (либо чтобы ip в адреслисте исправлялся на 0/24)
сейчас нахожусь на этом этапе, пытаюсь чтобы хотя бы выводились нужные строки, но похоже что-то не то делаю
Код: Выделить всё
:foreach i in=[/ip/firewall/address-list find list="drop_scanners" !address~".*\.0\/24.*"] do={
:local ip [/ip firewall address-list get $i];
:log info $ip;
}
-
- Сообщения: 4084
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: VPN подключения и Address list
Там мрак какой-то с этим отрицанием... Тестирую на версии 7.14.1:
Так что, видимо, наиболее работоспособный вариант - пробегать по всему списку и отдельно детектировать, /24 это или нет
Код: Выделить всё
/ip/firewall/address-list> print where list=test address~".*/24\$"
Columns: LIST, ADDRESS, CREATION-TIME
# LIST ADDRESS CREATION-TIME
88 test 1.2.3.0/24 2024-04-01 23:14:21
/ip/firewall/address-list> print where list=test !address~".*/24\$"
Columns: LIST, ADDRESS, CREATION-TIME
# LIST ADDRESS CREATION-TIME
89 test 1.2.3.4 2024-04-01 23:13:57
88 test 1.2.3.0/24 2024-04-01 23:14:21
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
ага, именно так и получалось
вроде выбираю только те, где нет 0/24, а он все выдавал
похоже действительно придётся всё перебирать
вроде выбираю только те, где нет 0/24, а он все выдавал
похоже действительно придётся всё перебирать
-
- Сообщения: 4084
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: VPN подключения и Address list
Кажется, вот так можно всё же /32 найти (т.к. они выводятся без маски):
Код: Выделить всё
address~"^[.0-9]*\$"
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
спасибо, попробую
upd:
да, правильно вытаскивает
спасибо, буду дальше веселиться :-)
upd:
да, правильно вытаскивает
спасибо, буду дальше веселиться :-)
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
адреслисты как-то странно обрабатываются
вот скрипт и что он выводит:
вот скрипт и что он выводит:
Код: Выделить всё
:foreach i in=[/ip firewall address-list find list="port_scanners" address~"^[.0-9]*\$"] do={
:local addrListMessage [/ip firewall address-list get $i];
:log info $addrListMessage # .id=*1f4a;address=206.168.34.2;creation-time=2024-03-31 08:03:33;disabled=false;dynamic=false;list=port_scanners
:local start [:find $addrListMessage "address="];
:local end [:find $addrListMessage ";" ($start + 1)];
:local addressPart [:pick $addrListMessage ($start + 1) $end];
:log info $addressPart; # address=206.168.34.2
:local startPosition [:find $addressPart "="];
:local msg [:pick $addressPart ($startPosition + 1) [:len $addressPart]];
:local ip ([:pick $msg 0 [:find $msg "." ([:find $msg "." ([:find $msg "."] + 1)] + 1)]].".0/24");
:log info $ip; # .0/24
}
Последний раз редактировалось bear 02 апр 2024, 15:36, всего редактировалось 2 раза.
-
- Сообщения: 4084
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: VPN подключения и Address list
Отмена миссии! Отмена миссии! Надо просто сделать "/ip firewall address-list get $i address" вместо "/ip firewall address-list get $i" Все так обрабатываются
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
да, спасибо, так всё работает :-)
-
- Сообщения: 6
- Зарегистрирован: 03 апр 2024, 13:56
Re: VPN подключения и Address list
День добрый, а скриптом не поделитесь который (phase1 negotiation failed due to time up ) блокирует?)
-
- Сообщения: 167
- Зарегистрирован: 03 мар 2016, 18:39
Re: VPN подключения и Address list
почему-то был уверен, что выше выкладывал :-)
примеры записей в логе:
Код: Выделить всё
123.123.111.123 phase1 negotiation failed.
123.123.122.123 parsing packet failed, possible cause: wrong password
phase1 negotiation failed due to time up 100.100.100.100[500]<=>123.123.133.123[500] e0c091b198818b39:6b463379b059196c
<123.123.144.123>: user Admin authentication failed
в моём примере это лист block_vpn_access (не забываем про фаервол, который должен дропать инпуты из этого листа)
Код: Выделить всё
:foreach i in=[/log/find message~"^\\d+\\.\\d+\\.\\d+\\.\\d+ phase1 negotiation failed\\."] do={
:local msg [/log get $i message];
:local ip ([:pick $msg 0 [:find $msg "." ([:find $msg "." ([:find $msg "."] + 1)] + 1)]].".0/24");
do {/ip/firewall/address-list/add list=block_vpn_access address=$ip} on-error={}
}
:foreach i in=[/log/find message~"^\\d+\\.\\d+\\.\\d+\\.\\d+ parsing packet failed, possible cause: wrong password"] do={
:local msg [/log get $i message];
:local ip ([:pick $msg 0 [:find $msg "." ([:find $msg "." ([:find $msg "."] + 1)] + 1)]].".0/24");
do {/ip/firewall/address-list/add list=block_vpn_access address=$ip} on-error={}
}
:foreach i in=[/log/find message~"^phase1 negotiation failed due to time up"] do={
:local logMessage [/log get $i message];
:local startPosition [:find $logMessage ">"];
:local msg [:pick $logMessage ($startPosition + 1) [:len $logMessage]];
:local ip ([:pick $msg 0 [:find $msg "." ([:find $msg "." ([:find $msg "."] + 1)] + 1)]].".0/24");
do {/ip/firewall/address-list/add list=block_vpn_access address=$ip} on-error={}
}
:foreach i in=[/log/find message~".*>: user [^ ]+ authentication failed"] do={
:local logMessage [/log get $i message];
:local startPosition [:find $logMessage "<"];
:local msg [:pick $logMessage ($startPosition + 1) [:len $logMessage]];
:local ip ([:pick $msg 0 [:find $msg "." ([:find $msg "." ([:find $msg "."] + 1)] + 1)]].".0/24");
do {/ip/firewall/address-list/add list=block_vpn_access address=$ip} on-error={}
}
-
- Сообщения: 6
- Зарегистрирован: 03 апр 2024, 13:56
Re: VPN подключения и Address list
Благодарю!)