ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

Aloha e nā hoa hana! I kēia lā, i ka wā i emi iki ai ka ikaika o ka makemake e pili ana i ka "hana mamao", ua lanakila ka hapa nui o nā luna i ka hana o ke komo mamao o nā limahana i ka ʻoihana hui, ʻo ia ka manawa e kaʻana like i koʻu ʻike lōʻihi i ka hoʻomaikaʻi ʻana i ka palekana VPN. ʻAʻole ʻike ʻia kēia ʻatikala i kēia manawa IPSec IKEv2 a me xAuth. E pili ana i ke kūkulu ʻana i kahi ʻōnaehana. hōʻoia ʻelua kumu (2FA) Nā mea hoʻohana VPN ke hana ʻo MikroTik ma ke ʻano he kikowaena VPN. ʻO ia, ke hoʻohana ʻia nā protocols "classic" e like me PPP.

ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

I kēia lā, e haʻi wau iā ʻoe pehea e pale aku ai iā MikroTik PPP-VPN inā ʻo ka "hijacking" o ka moʻokāki mea hoʻohana. I ka hoʻolauna ʻia ʻana o kēia hoʻolālā i kekahi o kaʻu mau mea kūʻai aku, ua wehewehe pōkole ʻo ia iā ia ma ke ʻano he "maikaʻi, i kēia manawa ua like ia me kahi panakō!".

ʻAʻole hoʻohana ke ʻano i nā lawelawe authenticator waho. Hana ʻia nā hana ma loko e ka mea alalai ponoʻī. ʻAʻohe kumukūʻai no ka mea kūʻai hoʻohui. Hana ʻia ke ala no nā mea kūʻai aku PC a me nā polokalamu kelepona.

ʻO ka papahana palekana maʻamau penei:

  1. ʻO ka helu IP kūloko o kahi mea hoʻohana i hoʻopili pono ʻia i ka kikowaena VPN ua ʻakomi ʻia i ka papa inoa hina.
  2. Hoʻopuka koke ka hanana pili i kahi code hoʻokahi manawa i hoʻouna ʻia i ka mea hoʻohana me ka hoʻohana ʻana i kekahi o nā ala i loaʻa.
  3. Loaʻa i nā wahi i loko o kēia papa inoa ka loaʻa ʻana o nā kumuwaiwai pūnaewele kūloko, me ka ʻole o ka lawelawe "authenticator", e kali nei e loaʻa kahi passcode hoʻokahi manawa.
  4. Ma hope o ka hōʻike ʻana i ke code, hiki i ka mea hoʻohana ke komo i nā kumuwaiwai kūloko o ka pūnaewele.

Ke mua ʻO ka pilikia liʻiliʻi aʻu i kū ai ʻo ka mālama ʻana i ka ʻike pili e pili ana i ka mea hoʻohana e hoʻouna iā ia i ka code 2FA. No ka mea hiki ʻole ke hana i nā kahua ʻikepili kūʻokoʻa e pili ana i nā mea hoʻohana ma Mikrotik, ua hoʻohana ʻia ke kahua "manaʻo" i kēia manawa:

/ppp mea huna hoʻohui inoa=Petrov password=4M@ngr! manaʻo = "89876543210"

ʻO ka lua ʻoi aku ka koʻikoʻi o ka pilikia - ke koho o ke ala a me ke ʻano o ka hāʻawi ʻana i ke code. ʻEkolu mau papahana i kēia manawa: a) SMS ma USB-modem b) leka uila c) SMS ma ka leka uila i loaʻa no nā mea kūʻai aku o ka mea lawelawe kelepona ʻulaʻula.

ʻAe, lawe nā polokalamu SMS i nā koina. Akā inā nānā ʻoe, "ʻo ka palekana e pili ana i ke kālā" (c).
ʻAʻole wau makemake i ka papahana me ka leka uila. ʻAʻole no ka mea pono e loaʻa ka kikowaena leka uila no ka mea kūʻai aku e hōʻoia ʻia - ʻaʻole ia he pilikia ke hoʻokaʻawale i ke kaʻa. Eia naʻe, inā mālama pono ka mea kūʻai aku i nā huaʻōlelo vpn a me ka leka uila i loko o kahi polokalamu kele pūnaewele a nalowale kā lākou kamepiula, e loaʻa i ka mea hoʻouka ke komo piha i ka pūnaewele hui mai ia mea.

No laila, ua hoʻoholo - hāʻawi mākou i hoʻokahi code me ka hoʻohana ʻana i nā leka SMS.

ʻO ke kolu Aia ka pilikia ma hea pehea e hana ai i kahi code pseudo-random no 2FA ma MikroTik. ʻAʻohe mea hoʻohālikelike o ka hana random() i ka ʻōlelo kākau ʻōlelo RouterOS, a ua ʻike au i kekahi mau mea hoʻokumu helu pseudo-random script crutch ma mua. ʻAʻole au makemake i kekahi o lākou no nā kumu like ʻole.

ʻO kaʻoiaʻiʻo, aia kahi mea hana pseudo-random sequence ma MikroTik! Ua hūnā ʻia mai kahi ʻike haʻahaʻa i ka pōʻaiapili o /certificates scep-server. ʻO ke ala mua maʻalahi a maʻalahi ka loaʻa ʻana o ka ʻōlelo huna hoʻokahi manawa - me ke kauoha / palapala hōʻoia scep-server otp hana. Inā mākou e hana i kahi hana hoʻololi maʻalahi, e loaʻa iā mākou kahi waiwai array hiki ke hoʻohana ʻia ma hope i nā palapala.

ʻO kaʻaoʻaoʻelua ka loaʻa ʻana o kahi ʻōlelo huna hoʻokahi manawa a maʻalahi hoʻi e hoʻohana - me ka hoʻohana ʻana i kahi lawelawe waho kaulele.org e hana i ke ʻano o ke kaʻina o nā helu pseudo-random. Eia ua maʻalahi cantilevered laʻana o ka lawe ʻana i ka ʻikepili i loko o kahi loli:

kuhi
:global rnd1 [:pick ([/tool fetch url="https://www.random.org/strings/?num=1&len=7&digits=on&unique=on&format=plain&rnd=new" as-value output=user ]->"da
ta") 1 6] :put $rnd1

ʻO kahi noi i hoʻopaʻa ʻia no ka ʻoluʻolu (e koi ʻia i ka holo ʻana i nā huaʻōlelo kūikawā ma ke kino palapala) e loaʻa i kahi kaula o nā huahelu ʻeono i loko o ka $rnd1 variable. ʻO ke kauoha "hoʻokomo" e hōʻike wale i ka loli i ka console MikroTik.

ʻO ka pilikia ʻehā pono e hoʻoholo koke ʻia - ʻo ia ke ʻano a me kahi e hoʻololi ai ka mea kūʻai aku i kāna code hoʻokahi manawa i ka lua o ka hōʻoia.

ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

Pono e loaʻa kahi lawelawe ma ka router MikroTik hiki ke ʻae i ke code a hoʻohālikelike me kahi mea kūʻai aku. Inā pili ka code i hāʻawi ʻia me ka mea i manaʻo ʻia, pono e hoʻokomo ʻia ka helu wahi o ka mea kūʻai aku i loko o kahi papa inoa "keʻokeʻo", nā wahi i ʻae ʻia e komo i ka pūnaewele kūloko o ka hui.

Ma muli o ka maikaʻi ʻole o nā lawelawe, ua hoʻoholo ʻia e ʻae i nā code ma o http me ka hoʻohana ʻana i ka webproxy i kūkulu ʻia i Mikrotik. A no ka mea hiki i ka pā ahi ke hana me nā papa inoa o nā IP address, ʻo ia ka pā ahi e hana i ka ʻimi no ke code, e hoʻohālikelike iā ia me ka IP o ka mea kūʻai aku a hoʻohui ʻia i ka papa inoa "keʻokeʻo" me ka hoʻohana ʻana iā Layer7 regexp. Ua hāʻawi ʻia ka mea alalai ponoʻī i kahi inoa DNS kūlana "gw.local", ua hana ʻia kahi moʻolelo A static ma luna ona no ka hāʻawi ʻana i nā mea kūʻai aku PPP:

pākuʻina kau
/ip dns static add name=gw.local address=172.31.1.1

Ka hopu ʻana i nā huakaʻi o nā mea kūʻai aku i hōʻoia ʻole ʻia ma ka proxy:
/ip firewall nat add chain=dstnat dst-port=80,443 in-interface=2fa protocol=tcp !src-address-list=2fa_approved action=redirect to-ports=3128

I kēia hihia, ʻelua mau hana o ka proxy.

1. Wehe i nā pilina tcp me nā mea kūʻai aku;

2. Inā loaʻa ka ʻae ʻia, e hoʻohuli hou i ka polokalamu kele pūnaewele i kahi ʻaoʻao a i ʻole kiʻi e hōʻike ana e pili ana i ka hōʻoia kūleʻa.

Hoʻonohonoho hoʻololi
/ip proxy
set enabled=yes port=3128
/ip proxy access
add action=deny disabled=no redirect-to=gw.local./mikrotik_logo.png src-address=0.0.0.0/0

E papa inoa wau i nā mea hoʻonohonoho koʻikoʻi:

  1. interface-list "2fa" - he papa inoa ikaika o nā mea kūʻai aku, kahi e pono ai ke kaʻina hana i loko o 2FA;
  2. address-list "2fa_jailed" - "hina" papa inoa o nā wahi IP tunnel o nā mea kūʻai VPN;
  3. address_list "2fa_approved" - "keʻokeʻo" papa inoa o ka tunnel IP address o nā mea kūʻai VPN i hala i ka hōʻoia ʻelua kumu.
  4. kaulahao ahi "input_2fa" - nānā ia i nā ʻeke tcp no ka loaʻa ʻana o kahi code ʻae a pili i ka IP address o ka mea hoʻouna code me ka mea i koi ʻia. Hoʻohui ʻia nā lula ma ke kaulahao a wehe ʻia me ka ikaika.

E like me kēia ka papa kuhikuhi maʻalahi o ka hana packet:

ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

No ke komo ʻana i ka nānā Layer7 o nā kaʻa mai nā mea kūʻai mai ka papa inoa "hina" ʻaʻole i hala i ka lua o ka hōʻoia ʻana, ua hana ʻia kahi lula ma ke kaulahao "hoʻokomo" maʻamau:

kuhi
/ip firewall filter add chain=input !src-address-list=2fa_approved action=jump jump-target=input_2fa

I kēia manawa e hoʻomaka kākou e hoʻopaʻa i kēia waiwai a pau i ka lawelawe PPP. Hāʻawi ʻo MikroTik iā ʻoe e hoʻohana i nā palapala i nā profiles (ppp-profile) a hāʻawi iā lākou i nā hanana o ka hoʻokumu ʻana a me ka haki ʻana i kahi pilina ppp. Hiki ke hoʻohana ʻia nā hoʻonohonoho ppp-profile i ka server PPP ma ke ʻano holoʻokoʻa a i nā mea hoʻohana pākahi. I ka manawa like, ʻo ka ʻaoʻao i hāʻawi ʻia i ka mea hoʻohana ka mea nui, e hoʻopau ana i nā ʻāpana o ka ʻaoʻao i koho ʻia no ke kikowaena holoʻokoʻa me kāna mau ʻāpana kikoʻī.

ʻO ka hopena o kēia ala, hiki iā mākou ke hana i kahi kikoʻī kūikawā no ka hōʻoia ʻelua kumu a hāʻawi iā ia ʻaʻole i nā mea hoʻohana a pau, akā i ka poʻe i manaʻo he pono e hana pēlā. Pili paha kēia inā hoʻohana ʻoe i nā lawelawe PPP ʻaʻole wale e hoʻopili i nā mea hoʻohana hope, akā i ka manawa like e kūkulu i nā pilina pūnaewele-i-pae.

Ma ka ʻaoʻao kūikawā hou i hana ʻia, hoʻohana mākou i ka hoʻohui ikaika o ka helu wahi a me ka interface o ka mea hoʻohana pili i nā papa inoa "hina" o nā helu a me nā pilina:

pahu pahu
ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

kuhi
/ppp profile add address-list=2fa_jailed change-tcp-mss=no local-address=192.0.2.254 name=2FA interface-list=2fa only-one=yes remote-address=dhcp_pool1 use-compression=no use-encryption= required use-mpls=no use-upnp=no dns-server=172.31.1.1

Pono e hoʻohana i nā papa inoa "address-list" a me "interface-list" e ʻike a hopu i nā kaʻa mai nā mea kūʻai aku VPN ʻole ma ke kaulahao dstnat (prerouting).

Ke hoʻopau ʻia ka hoʻomākaukau ʻana, hana ʻia nā kaulahao pā ahi a me kahi ʻaoʻao, e kākau mākou i kahi hōʻailona kuleana no ka hana auto-generation o ka code 2FA a me nā lula firewall.

Palapala wiki.mikrotik.com ma ka PPP-Profile e hoʻonui iā mākou me ka ʻike e pili ana i nā ʻano like ʻole e pili ana i nā hanana hoʻohui a hoʻokaʻawale i ka mea kūʻai aku PPP "E hoʻokō i ka palapala ma ka mea hoʻohana login-event. Loaʻa kēia mau mea hoʻololi i hiki ke ʻike ʻia no ka hanana hanana: mea hoʻohana, kūloko-address, remote-address, caller-id, called-id, interface". He mea pono loa kekahi o lākou iā mākou.

Hoʻohana ʻia ke code ma ka ʻaoʻao no ka hanana pili PPP ma luna

#Логируем для отладки полученные переменные 
:log info (

quot;local-address")
:log info (


quot;remote-address")
:log info (


quot;caller-id")
:log info (


quot;called-id")
:log info ([/int pptp-server get (


quot;interface") name])
#Объявляем свои локальные переменные
:local listname "2fa_jailed"
:local viamodem false
:local modemport "usb2"
#ищем автоматически созданную запись в адрес-листе "2fa_jailed"
:local recnum1 [/ip fi address-list find address=(


quot;remote-address") list=$listname]

#получаем псевдослучайный код через random.org
#:local rnd1 [:pick ([/tool fetch url="https://www.random.org/strings/?num=1&len=7&digits=on&unique=on&format=plain&rnd=new" as-value output=user]->"data") 0 4] #либо получаем псевдослучайный код через локальный генератор
#:local rnd1 [pick ([/cert scep-server otp generate as-value minutes-valid=1]->"password") 0 4 ]

#Ищем и обновляем коммент к записи в адрес-листе. Вносим искомый код для отладки
/ip fir address-list set $recnum1 comment=$rnd1
#получаем номер телефона куда слать SMS
:local vphone [/ppp secret get [find name=$user] comment]

#Готовим тело сообщения. Если клиент подключается к VPN прямо с телефона ему достаточно
#будет перейти прямо по ссылке из полученного сообщения
:local msgboby ("Your code: ".$comm1."n Or open link http://gw.local/otp/".$comm1."/")

# Отправляем SMS по выбранному каналу - USB-модем или email-to-sms
if $viamodem do={
/tool sms send phone-number=$vphone message=$msgboby port=$modemport }
else={
/tool e-mail send server=a.b.c.d [email protected] [email protected] subject="@".$vphone body=$msgboby }

#Генерируем Layer7 regexp
local vregexp ("otp\/".$comm1)
:local vcomment ("2fa_".(


quot;remote-address"))
/ip firewall layer7-protocol add name=(


quot;vcomment") comment=(


quot;remote-address") regexp=(


quot;vregexp")

#Генерируем правило проверяющее по Layer7 трафик клиента в поисках нужного кода
#и небольшой защитой от брутфорса кодов с помощью dst-limit
/ip firewall filter add action=add-src-to-address-list address-list=2fa_approved address-list-timeout=none-dynamic chain=input_2fa dst-port=80,443,3128 layer7-protocol=(


quot;vcomment") protocol=tcp src-address=(


quot;remote-address") dst-limit=1,1,src-address/1m40s

ʻOi loa no ka poʻe makemake e hoʻopaʻa kope me ka noʻonoʻo ʻole, ke ao aku nei au iā ʻoe - ua lawe ʻia ke code mai ka hōʻike hōʻike a loaʻa paha nā typos liʻiliʻi. ʻAʻole paʻakikī i ke kanaka naʻauao ke ʻike pono i kahi.

Ke wehe ka mea hoʻohana, hana ʻia kahi hanana "On-Down" a kāhea ʻia ka palapala pili me nā ʻāpana. ʻO ka hana o kēia palapala ʻo ia ka hoʻomaʻemaʻe ʻana i nā lula ahi i hana ʻia no ka mea hoʻohana i hoʻokaʻawale ʻia.

Hoʻohana ʻia ke code ma ka ʻaoʻao no ka hanana pili PPP ma lalo

:local vcomment ("2fa_".(

quot;remote-address"))
/ip firewall address-list remove [find address=(


quot;remote-address") list=2fa_approved] /ip firewall filter remove [find chain="input_2fa" src-address=(


quot;remote-address") ] /ip firewall layer7-protocol remove [find name=$vcomment]
Hiki iā ʻoe ke hana i nā mea hoʻohana a hāʻawi i nā mea āpau a i ʻole kekahi o lākou i kahi ʻaoʻao hōʻoia ʻelua kumu.

pahu pahu
ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

kuhi
/ppp secrets set [find name=Petrov] profile=2FA

Pehea kona nānā ʻana ma ka ʻaoʻao o ka mea kūʻai aku.

Ke hoʻokumu ʻia kahi pilina VPN, loaʻa i kahi kelepona Android/iOS/papa me kahi kāleka SIM kahi SMS e like me kēia:

SMS
ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

Inā hoʻokumu pololei ʻia ka pilina mai ke kelepona / papa, a laila hiki iā ʻoe ke hele ma 2FA ma ke kaomi ʻana i ka loulou mai ka memo. He oluolu.

Inā hoʻokumu ʻia ka pilina VPN mai kahi PC, a laila e koi ʻia ka mea hoʻohana e komo i kahi ʻōlelo huna liʻiliʻi. Hāʻawi ʻia kahi ʻano liʻiliʻi ma ke ʻano o kahi faila HTML i ka mea hoʻohana i ka wā e hoʻonohonoho ai i ka VPN. Hiki ke hoʻouna ʻia ka faila ma ka leka uila i mea e mālama ai ka mea hoʻohana a hana i kahi pōkole ma kahi kūpono. Ua like me keia:

E lepili ma ka papa
ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

Kaomi ka mea hoʻohana ma ka ʻaoʻao pōkole, wehe ʻia kahi palapala komo code maʻalahi, e hoʻopili i ke code i ka URL i wehe ʻia:

ʻAno pale
ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

Hāʻawi ʻia ke ʻano primitive ma ke ʻano he laʻana. Hiki i nā mea makemake ke hoʻololi iā lākou iho.

2fa_login_mini.html

<html>
<head> <title>SMS OTP login</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head>
<body>
<form name="login" action="location.href='http://gw.local/otp/'+document.getElementById(‘text').value"  method="post"
 <input id="text" type="text"/> 
<input type="button" value="Login" onclick="location.href='http://gw.local/otp/'+document.getElementById('text').value"/> 
</form>
</body>
</html>

Inā kūleʻa ka ʻae ʻana, e ʻike ka mea hoʻohana i ka logo MikroTik ma ka polokalamu kele pūnaewele, pono e hōʻailona i ka hōʻoia kūleʻa:

ʻO ka hōʻoia ʻelua ʻelua o nā mea hoʻohana VPN ma o MikroTik a me SMS

E hoʻomaopopo ua hoʻihoʻi ʻia ke kiʻi mai ka kikowaena pūnaewele MikroTik i kūkulu ʻia me ka hoʻohana ʻana iā WebProxy Deny Redirect.

Manaʻo wau e hiki ke hoʻopilikino ʻia ke kiʻi me ka hoʻohana ʻana i ka mea hana "hotspot", e hoʻouka ana i kāu mana ponoʻī ma laila a hoʻonohonoho i ka Deny Redirect URL iā ia me WebProxy.

ʻO kahi noi nui i ka poʻe e ho'āʻo nei e kūʻai i ka Mikrotik "mea pāʻani" liʻiliʻi loa no $ 20 a hoʻololi i kahi alalai $ 500 me ia - mai hana i kēlā. ʻO nā mea like me "hAP Lite" / "hAP mini" (home access point) he CPU nāwaliwali loa (smips), a ʻaʻole paha lākou e hoʻokō i ka ukana ma ka ʻoihana ʻoihana.

Pāku'i! Hoʻokahi hemahema kēia hoʻonā: ke hoʻopili a wehe paha nā mea kūʻai aku, hiki ke hoʻololi i ka hoʻonohonoho, kahi e hoʻāʻo ai ke alalai e mālama i kāna hoʻomanaʻo non-volatile. Me ka heluna nui o nā mea kūʻai aku a me nā pili pinepine a me ka wehe ʻana, hiki i kēia ke alakaʻi i ka hoʻohaʻahaʻa ʻana o ka waihona kūloko i loko o ke alalai.

PS: hiki ke hoʻonui ʻia a hoʻonui ʻia nā ʻano o ka hāʻawi ʻana i nā code i ka mea kūʻai aku a hiki i ka lawa ʻana o kāu mau polokalamu. No ka laʻana, hiki iā ʻoe ke hoʻouna i nā leka i ke telegram a i ʻole ... manaʻo i nā koho!

Manaʻo wau e lilo ka ʻatikala iā ʻoe a kōkua i ka hoʻopaʻa ʻana i nā pūnaewele o nā ʻoihana liʻiliʻi a me nā ʻoihana liʻiliʻi.

Source: www.habr.com