Страница 1 из 3

запрет брут форса l2tp и список доверенных клиентов

Добавлено: 28 окт 2017, 14:39
Maxval
Всем доброго времени суток :-): Захотелось мне ограничить подключения к моему l2tp. Собственно гугление и RTFM помогли найти часть нужной информации, а именно о том как организовать защиту от кулхацкеров. В моем случае выглядит это так:

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

/ip firewall filter
add action=drop chain=input comment="Block l2tp brute forcer" connection-state="" dst-port=1701,500,4500 log=yes log-prefix="--==DROP L2TP brute forcer==--" protocol=udp src-address-list=l2tp_blacklist tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_blacklist address-list-timeout=3d chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage5 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage5 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage4 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage4 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage3 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage2 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage1 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp tcp-flags=""
add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp

Есть 5 попыток подключения в течении 1 минуты, после чего ip заносится в blacklist. Вроде бы все ок на первый взгляд, НО потестировав обнаружил странную вещь. Если подключиться с Iphone и тут же отключиться, происходит более 5 запросов и выдается бан. Пытался сделать что-то типа white списка, чтобы успешно подключенные клиенты туда заносились на сутки и могли спокойно отключаться и подключаться сколько угодно раз в минуту (айпишники динамические, заранее не известны). Но ничего дельного не получилось, пытался плясать от "connection state: established и related", но не получается отсеять именно успешно авторизованных клиентов l2tp с ipsec. Может есть у кого-то какие-то идеи по данному вопросу? :ne_vi_del:

Re: запрет брут форса l2tp и список доверенных клиентов

Добавлено: 28 окт 2017, 15:01
Vlad-2
У меня только идея :mi_ga_et:

Надо слегка обхитрить текущую защиту Вашу!
1) при успешном подключении скриптом вытаскивать адрес внешнего подключения и заносить в белый список
2) указать белый список ранее(перед) правилами Вашими! (то есть сначала смотрим белый, потом Блок-лист списки)
3) (и самое важное!) если подключение происходит с адреса из белого списка, то в файрволе с помощью Jump сразу "убегать" на правило:

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

add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp

тем самым для подключающего не будет срабатывать правила защиты от брут-форса.

Re: запрет брут форса l2tp и список доверенных клиентов

Добавлено: 28 окт 2017, 16:22
Maxval
Vlad-2 писал(а):У меня только идея :mi_ga_et:

Надо слегка обхитрить текущую защиту Вашу!
1) при успешном подключении скриптом вытаскивать адрес внешнего подключения и заносить в белый список
2) указать белый список ранее(перед) правилами Вашими! (то есть сначала смотрим белый, потом Блок-лист списки)
3) (и самое важное!) если подключение происходит с адреса из белого списка, то в файрволе с помощью Jump сразу "убегать" на правило:

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

add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp

тем самым для подключающего не будет срабатывать правила защиты от брут-форса.


В общем как всегда, методом научного тыка, гуглением и не пониманием происходящего удалось сделать как надо:

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

add action=accept chain=input comment="Block l2tp brute forcer" dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_success tcp-flags=""
add action=drop chain=input connection-state="" dst-port=1701,500,4500 log=yes log-prefix="--==DROP L2TP brute forcer==--" protocol=udp src-address-list=l2tp_blacklist tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_blacklist address-list-timeout=3d chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage5 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage5 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage4 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage4 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage3 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage2 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage1 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp tcp-flags=""
add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp

/ppp profile
add change-tcp-mss=yes local-address=10.0.0.1 name=L2TP-Server on-up="/ip firewall address-list add list=l2tp_success address=\$\"caller-id\" timeout=1d" remote-address=l2tp_pool use-encryption=yes use-mpls=yes


После успешного подключения по l2tp/ipsec клиент залетает со своим внешним ип в адрес лист фаервола и в течении дня больше не проверяется. Спасибо за помощь =)

Re: запрет брут форса l2tp и список доверенных клиентов

Добавлено: 17 янв 2019, 16:36
sergey.kudinov-godlevskiy
Maxval писал(а): 28 окт 2017, 16:22
Vlad-2 писал(а):У меня только идея :mi_ga_et:

Надо слегка обхитрить текущую защиту Вашу!
1) при успешном подключении скриптом вытаскивать адрес внешнего подключения и заносить в белый список
2) указать белый список ранее(перед) правилами Вашими! (то есть сначала смотрим белый, потом Блок-лист списки)
3) (и самое важное!) если подключение происходит с адреса из белого списка, то в файрволе с помощью Jump сразу "убегать" на правило:

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

add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp
тем самым для подключающего не будет срабатывать правила защиты от брут-форса.
В общем как всегда, методом научного тыка, гуглением и не пониманием происходящего удалось сделать как надо:

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

add action=accept chain=input comment="Block l2tp brute forcer" dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_success tcp-flags=""
add action=drop chain=input connection-state="" dst-port=1701,500,4500 log=yes log-prefix="--==DROP L2TP brute forcer==--" protocol=udp src-address-list=l2tp_blacklist tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_blacklist address-list-timeout=3d chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage5 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage5 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage4 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage4 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage3 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage2 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage1 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp tcp-flags=""
add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp

/ppp profile
add change-tcp-mss=yes local-address=10.0.0.1 name=L2TP-Server on-up="/ip firewall address-list add list=l2tp_success address=\$\"caller-id\" timeout=1d" remote-address=l2tp_pool use-encryption=yes use-mpls=yes
После успешного подключения по l2tp/ipsec клиент залетает со своим внешним ип в адрес лист фаервола и в течении дня больше не проверяется. Спасибо за помощь =)
Слишком сложно, вот держите.

Re: запрет брут форса l2tp и список доверенных клиентов

Добавлено: 17 янв 2019, 18:44
podarok66
sergey.kudinov-godlevskiy писал(а): 17 янв 2019, 16:36 Слишком сложно, вот держите.
По вашей ссылке
Изображение
А такое, это то же самое, что и ничего.

Re: запрет брут форса l2tp и список доверенных клиентов

Добавлено: 26 апр 2019, 08:34
dervart
Maxval писал(а): 28 окт 2017, 16:22
Vlad-2 писал(а):У меня только идея :mi_ga_et:

Надо слегка обхитрить текущую защиту Вашу!
1) при успешном подключении скриптом вытаскивать адрес внешнего подключения и заносить в белый список
2) указать белый список ранее(перед) правилами Вашими! (то есть сначала смотрим белый, потом Блок-лист списки)
3) (и самое важное!) если подключение происходит с адреса из белого списка, то в файрволе с помощью Jump сразу "убегать" на правило:

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

add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp
тем самым для подключающего не будет срабатывать правила защиты от брут-форса.
В общем как всегда, методом научного тыка, гуглением и не пониманием происходящего удалось сделать как надо:

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

add action=accept chain=input comment="Block l2tp brute forcer" dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_success tcp-flags=""
add action=drop chain=input connection-state="" dst-port=1701,500,4500 log=yes log-prefix="--==DROP L2TP brute forcer==--" protocol=udp src-address-list=l2tp_blacklist tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_blacklist address-list-timeout=3d chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage5 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage5 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage4 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage4 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage3 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage2 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage1 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp tcp-flags=""
add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp

/ppp profile
add change-tcp-mss=yes local-address=10.0.0.1 name=L2TP-Server on-up="/ip firewall address-list add list=l2tp_success address=\$\"caller-id\" timeout=1d" remote-address=l2tp_pool use-encryption=yes use-mpls=yes
После успешного подключения по l2tp/ipsec клиент залетает со своим внешним ип в адрес лист фаервола и в течении дня больше не проверяется. Спасибо за помощь =)
Спасибо вам, все работает.

Видимо я слишком параноидален, но вот засела мысль, которую выкинуть из головы не получилось )
В общем сделал по вашему скрипту. В то же время наткнулся на другой гайд по порт-кногингу. И идея мне понравилась. Но, из-за своей параноидальности, взбрело в голову что возможен такой момент: Если вдруг, по какой-либо случайности, пакет попадет на правильный порт, то зная, или подобрав данные к доступу моего l2tp, есть вероятность, что доступ будет осуществлен. Решил объединить ваш скрипт и порт-кногинг.
У меня, к сожалению, нет опыта по настройке микротика. Даже не разобрался пока как сделать выгрузку правил фаерволла. Все сделал по гайдам.

Действовал методом тыка, вот что получилось:
 Картинки
Изображение
Изображение
Собственно логика такая:
  • При попытке соединения по l2tp начинает работать защита брут-форса
  • Если до этого не было стука на правильный порт, то даже при правильных идентификационных данных, защита добавит в блеклист ип
  • Если стук был в порт-ловушку, то ип улетает в блеклист
  • Если стук был на правильный порт, но данные не правильные, то так же улетает в блеклист
  • Если стук был в правильный порт, то есть 10 сек. на то, чтоб осуществить подключение
  • Если стук был на правильный порт, с правильными данными, то ип добавляется в список разрешенных. (в этом случае подключение разрешено на сутки даже без предварительного стука
Правильная последовательность действий для подключения:
  • Постучаться на правильный порт
  • В течение 10 сек. осуществить подключение
  • Если подключение было разорвано, то подключаться можно без предварительного стука на правильный порт. Пока ип находится в белом списке
Я, конечно, подозреваю, что есть куда более правильные способы. Но оно работает! Да и додумано головой, не знающей покоя ) Что принесло удовлетворение от проделанной работы )
Прошу форумчан поправить, если что не так с моими правилами, касающиеся данного сегмента. Кидайте тапками, если я изобрел велосипед, все это не нужно, и можно обойтись куда более простыми решениями

Re: запрет брут форса l2tp и список доверенных клиентов

Добавлено: 26 апр 2019, 09:22
Erik_U
ПОднять IPSEC внутри L2TP, и блочить на ошибке фазы2.

Но у меня, например, заранее известны операторы, которыми пользуются клиенты VPN.
Их подсети собраны в адрес лист, который в разрешающих соединение L2TP правилах указан в SRC_AddressList.

Re: запрет брут форса l2tp и список доверенных клиентов

Добавлено: 21 июн 2019, 12:45
qpujaismc
Vlad-2 писал(а): 28 окт 2017, 15:01 У меня только идея :mi_ga_et:

Надо слегка обхитрить текущую защиту Вашу!
1) при успешном подключении скриптом вытаскивать адрес внешнего подключения и заносить в белый список
2) указать белый список ранее(перед) правилами Вашими! (то есть сначала смотрим белый, потом Блок-лист списки)
3) (и самое важное!) если подключение происходит с адреса из белого списка, то в файрволе с помощью Jump сразу "убегать" на правило:

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

add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp
тем самым для подключающего не будет срабатывать правила защиты от брут-форса.
Подскажите пожалуйста, каким образом можно выцепить IP при успешном подключении, а соответственно попадание в правило Accept? Я с этим ни как разобраться не могу(
Пытался перед правилом Accept создать список с established-related, думая что под это правило попадает уже установленное соединение, но туда попадают и IP, где неправильно введен логи/пароль и еще общий ключ. Соответственно такой способ нельзя использовать. А как вытащить именно IP которое падает в правило ACCEPT я понять не могу.

Re: запрет брут форса l2tp и список доверенных клиентов

Добавлено: 21 июн 2019, 16:27
Vlad-2
qpujaismc писал(а): 21 июн 2019, 12:45 Подскажите пожалуйста, каким образом можно выцепить IP при успешном подключении, а соответственно попадание в правило Accept? Я с этим ни как разобраться не могу(
Пытался перед правилом Accept создать список с established-related, думая что под это правило попадает уже установленное соединение, но туда попадают и IP, где неправильно введен логи/пароль и еще общий ключ. Соответственно такой способ нельзя использовать. А как вытащить именно IP которое падает в правило ACCEPT я понять не могу.
Сложно так явно посоветовать.

Наверно я бы делал так:
1) создал правило JUMP (в котором описал ряд условий при которых должны IP хорошие попадать)
2) и это правило JUMP ссылалось уже на ряд правил в которых:
а) правило сбора исходного адреса подключения писало в лог/адрес-лист
б) и командой RETURN возвращало бы обратно в начало перехода.
3) адрес-лист с "хорошими" IP уже можно использовать там, где надо.

Обобщённо, как-то так...

Re: запрет брут форса l2tp и список доверенных клиентов

Добавлено: 26 июн 2019, 17:18
qpujaismc
dervart писал(а): 26 апр 2019, 08:34
Maxval писал(а): 28 окт 2017, 16:22
Vlad-2 писал(а):У меня только идея :mi_ga_et:

Надо слегка обхитрить текущую защиту Вашу!
1) при успешном подключении скриптом вытаскивать адрес внешнего подключения и заносить в белый список
2) указать белый список ранее(перед) правилами Вашими! (то есть сначала смотрим белый, потом Блок-лист списки)
3) (и самое важное!) если подключение происходит с адреса из белого списка, то в файрволе с помощью Jump сразу "убегать" на правило:

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

add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp
тем самым для подключающего не будет срабатывать правила защиты от брут-форса.
В общем как всегда, методом научного тыка, гуглением и не пониманием происходящего удалось сделать как надо:

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

add action=accept chain=input comment="Block l2tp brute forcer" dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_success tcp-flags=""
add action=drop chain=input connection-state="" dst-port=1701,500,4500 log=yes log-prefix="--==DROP L2TP brute forcer==--" protocol=udp src-address-list=l2tp_blacklist tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_blacklist address-list-timeout=3d chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage5 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage5 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage4 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage4 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage3 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage2 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp src-address-list=l2tp_stage1 tcp-flags=""
add action=add-src-to-address-list address-list=l2tp_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=1701,500,4500 protocol=udp tcp-flags=""
add action=accept chain=input comment="Allow L2TP" dst-port=1701,500,4500 protocol=udp

/ppp profile
add change-tcp-mss=yes local-address=10.0.0.1 name=L2TP-Server on-up="/ip firewall address-list add list=l2tp_success address=\$\"caller-id\" timeout=1d" remote-address=l2tp_pool use-encryption=yes use-mpls=yes
После успешного подключения по l2tp/ipsec клиент залетает со своим внешним ип в адрес лист фаервола и в течении дня больше не проверяется. Спасибо за помощь =)
Спасибо вам, все работает.

Видимо я слишком параноидален, но вот засела мысль, которую выкинуть из головы не получилось )
В общем сделал по вашему скрипту. В то же время наткнулся на другой гайд по порт-кногингу. И идея мне понравилась. Но, из-за своей параноидальности, взбрело в голову что возможен такой момент: Если вдруг, по какой-либо случайности, пакет попадет на правильный порт, то зная, или подобрав данные к доступу моего l2tp, есть вероятность, что доступ будет осуществлен. Решил объединить ваш скрипт и порт-кногинг.
У меня, к сожалению, нет опыта по настройке микротика. Даже не разобрался пока как сделать выгрузку правил фаерволла. Все сделал по гайдам.

Действовал методом тыка, вот что получилось:
 Картинки
Изображение
Изображение
Собственно логика такая:
  • При попытке соединения по l2tp начинает работать защита брут-форса
  • Если до этого не было стука на правильный порт, то даже при правильных идентификационных данных, защита добавит в блеклист ип
  • Если стук был в порт-ловушку, то ип улетает в блеклист
  • Если стук был на правильный порт, но данные не правильные, то так же улетает в блеклист
  • Если стук был в правильный порт, то есть 10 сек. на то, чтоб осуществить подключение
  • Если стук был на правильный порт, с правильными данными, то ип добавляется в список разрешенных. (в этом случае подключение разрешено на сутки даже без предварительного стука
Правильная последовательность действий для подключения:
  • Постучаться на правильный порт
  • В течение 10 сек. осуществить подключение
  • Если подключение было разорвано, то подключаться можно без предварительного стука на правильный порт. Пока ип находится в белом списке
Я, конечно, подозреваю, что есть куда более правильные способы. Но оно работает! Да и додумано головой, не знающей покоя ) Что принесло удовлетворение от проделанной работы )
Прошу форумчан поправить, если что не так с моими правилами, касающиеся данного сегмента. Кидайте тапками, если я изобрел велосипед, все это не нужно, и можно обойтись куда более простыми решениями
Подскажите пожалуйста, с клиентской стороны у вас OC на базе Windows?
Подключение по L2TP вы пользуетесь стандартными способами или используете какое-либо ПО?
Если стандартным способом (Ну "Настройка нового подключения-Подключение к рабочему месту" и т.д. ) каким образом вы настраивали, что бы перед подключением по VPN вы сначала стучались на какой то определенный порт?