Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Dia duit a chomhghleacaithe! Sa lá atá inniu ann, nuair a tháinig laghdú beag ar dhéine na bpaisean maidir le “cianobair”, bhain formhór na riarthóirí an cúram maidir le cianrochtain d’fhostaithe ar an líonra corparáideach, tá sé in am agam mo thaithí fhada maidir le slándáil VPN a fheabhsú a roinnt. Ní bheidh an t-alt seo faiseanta anois IPSec IKEv2 agus xAuth. Baineann sé le córas a thógáil. fíordheimhniú dhá fhachtóir (2FA) Úsáideoirí VPN nuair a fheidhmíonn MikroTik mar fhreastalaí VPN. Eadhon, nuair a úsáidtear prótacail "clasaiceach" mar PPP.

Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Sa lá atá inniu inseoidh mé duit conas MikroTik PPP-VPN a chosaint fiú i gcás "fuadach" an chuntais úsáideora. Nuair a tugadh an scéim seo isteach do dhuine de mo chustaiméirí, chuir sé síos go hachomair uirthi mar “bhuel, anois tá sé díreach mar atá i mbanc!”.

Ní úsáideann an modh seirbhísí fíordheimhnitheora seachtracha. Déanann an ródaire féin na tascanna go hinmheánach. Gan aon chostas don chliant nasctha. Oibríonn an modh do chliaint ríomhaire agus gléasanna soghluaiste araon.

Seo a leanas an scéim chosanta ghinearálta:

  1. Tá seoladh IP inmheánach úsáideora ar éirigh leis nó léi a nascadh leis an bhfreastalaí VPN liathliostaithe go huathoibríoch.
  2. Gineann an teagmhas nasctha cód aonuaire go huathoibríoch a sheoltar chuig an úsáideoir ag baint úsáide as ceann de na modhanna atá ar fáil.
  3. Tá rochtain theoranta ag seoltaí ar an liosta seo ar acmhainní líonra áitiúil, cé is moite den tseirbhís “fhíordheimhnitheora”, atá ag fanacht le paschód aonuaire a fháil.
  4. Tar éis an cód a chur i láthair, tá rochtain ag an úsáideoir ar acmhainní inmheánacha an líonra.

An chéad ba é an fhadhb is lú a bhí orm ná faisnéis teagmhála a stóráil faoin úsáideoir chun an cód 2FA a sheoladh chuige. Ós rud é nach féidir réimsí sonraí treallach a chruthú a fhreagraíonn d’úsáideoirí i Mikrotik, baineadh úsáid as an réimse “tuairimí” atá ann faoi láthair:

/ppp rúin cuir ainm=focal faire Petrov=4M@ngr! trácht="89876543210"

An dara d'éirigh an fhadhb níos tromchúisí - an rogha conair agus modh seachadta an chóid. Tá trí scéim á gcur i bhfeidhm faoi láthair: a) SMS via USB-móideim b) ríomhphost c) SMS trí ríomhphost ar fáil do chliaint chorparáideacha an oibreora cheallaigh dhearga.

Sea, baineann costais le scéimeanna SMS. Ach má fhéachann tú, "baineann an tslándáil le hairgead i gcónaí" (c).
Ní maith liom go pearsanta an scéim le r-phost. Ní mar go n-éilíonn sé go bhfuil an freastalaí ríomhphoist ar fáil don chliant atá á fhíordheimhniú - ní fadhb é an trácht a scoilteadh. Mar sin féin, dá ndéanfadh cliant pasfhocail vpn agus ríomhphoist a shábháil go míchúramach i mbrabhsálaí agus ansin a ríomhaire glúine a chailleadh, gheobhaidh an t-ionsaitheoir rochtain iomlán ar an líonra corparáideach uaidh.

Mar sin, tá sé socraithe - seachadaimid cód aon-uaire ag baint úsáide as teachtaireachtaí SMS.

An tríú An fhadhb a bhí nuair conas cód bréige randamach a ghiniúint do 2FA i MikroTik. Níl aon analóg den fheidhm randamach() sa teanga scriptithe RouterOS, agus tá roinnt gineadóirí uimhreacha randamacha randamacha scripteanna crutch feicthe agam roimhe seo. Níor thaitin aon cheann acu liom ar chúiseanna éagsúla.

Go deimhin, tá gineadóir seicheamh bréige-randamach i MikroTik! Tá sé ceilte ar shracfhéachaint dhromchlach i gcomhthéacs freastalaí scep/teastas. An chéad bhealach tá sé éasca agus simplí pasfhocal aonuaire a fháil - leis an ordú /Gineann deimhnithe scep-server otp. Má dhéanaimid oibríocht shimplí sannadh athróg, gheobhaidh muid luach eagair is féidir a úsáid níos déanaí i scripteanna.

An dara bealach pasfhocal aonuaire a fháil atá éasca le cur i bhfeidhm freisin - ag baint úsáide as seirbhís sheachtrach randamach.org chun an cineál seicheamh inmhianaithe d'uimhreacha randamacha a ghiniúint. Seo é simplithe cantilever sampla de shonraí a chur in athróg:

Cód
: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

Gheobhaidh iarratas formáidithe don chonsól (a éalaíonn carachtair speisialta i gcorp na scripte) teaghrán sé dhigit isteach san athróg $rnd1. Taispeánann an t-ordú "cuir" seo a leanas an athróg sa chonsól MikroTik.

An ceathrú fadhb a bhí le réiteach go tapa - seo é an chaoi agus an áit a aistreoidh an cliant nasctha a chód aonuaire ag an dara céim den fhíordheimhniú.

Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Ní mór go mbeadh seirbhís ar an ródaire MikroTik atá in ann glacadh leis an gcód agus é a mheaitseáil le cliant ar leith. Má mheaitseálann an cód a sholáthraítear leis an gceann a bhfuiltear ag súil leis, ba cheart seoladh an chliaint a áireamh ar liosta "bán" áirithe, seoltaí óna gceadaítear rochtain ar líonra inmheánach na cuideachta.

Mar gheall ar an droch-rogha seirbhísí, socraíodh glacadh le cóid trí http ag baint úsáide as an seachfhreastalaí gréasáin a tógadh isteach i Mikrotik. Agus toisc gur féidir leis an balla dóiteáin oibriú le liostaí dinimiciúla seoltaí IP, is é an balla dóiteáin a dhéanann cuardach an chóid, é a mheaitseáil le IP an chliaint agus é a chur leis an liosta “bán” ag baint úsáide as Layer7 regexp. Sannadh an t-ainm DNS coinníollach "gw.local" don ródaire féin, cruthaíodh A-taifead statach air lena eisiúint do chliaint PPP:

DNS
/ip dns statach cuir ainm=gw.local address=172.31.1.1

Trácht cliant neamhfhíoraithe a ghabháil ar an seachfhreastalaí:
/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

Sa chás seo, tá dhá fheidhm ag an seachfhreastalaí.

1. Oscail naisc tcp le cliaint;

2. I gcás údarú rathúil, déan an brabhsálaí cliant a atreorú chuig leathanach nó pictiúr a thugann fógra maidir le fíordheimhniú rathúil:

Cumraíocht seachfhreastalaí
/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

Liostaeoidh mé na heilimintí cumraíochta tábhachtacha:

  1. comhéadan-liosta "2fa" - liosta dinimiciúil de chomhéadain cliant, óna dteastaíonn próiseáil laistigh de 2FA;
  2. liosta seoltaí "2fa_jailed" - liosta "liath" de sheoltaí IP tollán na gcliant VPN;
  3. address_list "2fa_approved" - liosta "bán" de sheoltaí IP tollán na gcliant VPN ar éirigh leo fíordheimhniú dhá fhachtóir a rith.
  4. slabhra balla dóiteáin "input_2fa" - seiceálann sé paicéid tcp le haghaidh láithreacht cód údaraithe agus meaitseálann sé seoladh IP seoltóir an chóid leis an gceann riachtanach. Cuirtear rialacha sa slabhra leis agus baintear iad go dinimiciúil.

Is é seo an chuma atá ar shreabhchairt simplithe de phróiseáil paicéid:

Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Chun dul isteach sa seiceáil Layer7 ar thrácht ó chliaint ón liosta "liath" nach bhfuil pas faighte fós acu sa dara céim den fhíordheimhniú, cruthaíodh riail sa slabhra caighdeánach "ionchuir":

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

Anois, déanaimis tús a chur leis an saibhreas seo go léir a cheangal leis an tseirbhís CPP. Ceadaíonn MikroTik duit scripteanna a úsáid i bpróifílí (ppp-profile) agus iad a shannadh do na himeachtaí a bhaineann le nasc ppp a bhunú agus a bhriseadh. Is féidir na socruithe próifíl ppp a chur i bhfeidhm ar an bhfreastalaí PPP ina iomláine agus ar úsáideoirí aonair. Ag an am céanna, tá tosaíocht ag an bpróifíl a shanntar don úsáideoir, ag sárú paraiméadair an phróifíl a roghnaíodh don fhreastalaí ina iomláine lena paraiméadair shonraithe.

Mar thoradh ar an gcur chuige seo, is féidir linn próifíl speisialta a chruthú le haghaidh fíordheimhnithe dhá fhachtóir agus é a shannadh ní do gach úsáideoir, ach amháin dóibh siúd a mheasann go bhfuil sé riachtanach é sin a dhéanamh. D’fhéadfadh sé seo a bheith ábhartha má úsáideann tú seirbhísí PPP ní amháin chun úsáideoirí deiridh a nascadh, ach ag an am céanna chun naisc suíomh-go-láithreán a thógáil.

Sa phróifíl speisialta nuachruthaithe, bainimid úsáid as seoladh agus comhéadan an úsáideora nasctha a chur leis na liostaí "liath" seoltaí agus comhéadain:

bosca bua
Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Cód
/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

Is gá liostaí “liosta seoltaí” agus “liosta comhéadain” a úsáid chun trácht ó chliaint VPN neamhthánaisteach a bhrath agus a ghabháil sa slabhra dstnat (réamhródú).

Nuair a bheidh an t-ullmhúchán críochnaithe, cruthaítear slabhraí balla dóiteáin breise agus próifíl, scríobhfaimid script atá freagrach as cód 2FA a ghiniúint go huathoibríoch agus rialacha aonair balla dóiteáin.

Doiciméadú wiki.mikrotik.com ar PPP-Próifíl saibhríonn sé faisnéis dúinn faoi athróga a bhaineann le himeachtaí nasc-dhínasctha cliant CPP msgstr "Déan script ar imeacht logáil isteach úsáideora. Is athróga iad seo atá ar fáil atá inrochtana do script an imeachta: úsáideoir, seoladh áitiúil, ciansheoladh, aitheantas glaoiteora, aitheantas glaoite, comhéadan". Tá cuid acu an-úsáideach dúinn.

Cód a úsáidtear sa phróifíl le haghaidh imeacht ceangail ar-an-suas PPP

#Логируем для отладки полученные переменные 
: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

Go háirithe dóibh siúd ar mhaith leo cóipeáil a dhéanamh gan mheabhair, tugaim rabhadh duit - tógtar an cód ón leagan tástála agus féadfaidh sé go bhfuil mionchlóscríobh ann. Ní bheidh sé deacair ag duine tuisceana a dhéanamh amach go díreach cén áit.

Nuair a dhícheanglaíonn úsáideoir, gintear imeacht “Ar Síos” agus glaoitear an script chomhfhreagrach le paraiméadair. Is é tasc an script seo ná na rialacha balla dóiteáin a cruthaíodh don úsáideoir dícheangailte a ghlanadh.

Cód a úsáidtear sa phróifíl le haghaidh imeacht ceangail ar-síos PPP

: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]
Is féidir leat úsáideoirí a chruthú ansin agus iad go léir nó cuid acu a shannadh do phróifíl fíordheimhnithe dhá fhachtóir.

bosca bua
Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Cód
/ppp secrets set [find name=Petrov] profile=2FA

Conas a bhreathnaíonn sé ar thaobh an chliaint.

Nuair a bhunaítear nasc VPN, faigheann fón/táibléad Android/iOS le cárta SIM SMS mar seo:

SMS
Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Má tá an nasc bunaithe go díreach ón bhfón / tablet, ansin is féidir leat dul trí 2FA go simplí trí chliceáil ar an nasc ón teachtaireacht. Tá sé compordach.

Má bhunaítear an nasc VPN ó ríomhaire, beidh ar an úsáideoir foirm íosta pasfhocal a chur isteach. Tugtar foirm bheag i bhfoirm comhaid HTML don úsáideoir agus an VPN á shocrú. Is féidir an comhad a sheoladh fiú tríd an bpost ionas go sábhálann an t-úsáideoir é agus go gcruthóidh sé aicearra in áit áisiúil. Breathnaíonn sé mar seo:

Lipéad ar an mbord
Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Cliceáileann an t-úsáideoir ar an aicearra, osclaíonn foirm iontrála cód simplí, a ghreamóidh an cód isteach sa URL oscailte:

Foirm scáileáin
Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Tugtar an fhoirm is primitive mar shampla. Is féidir leo siúd ar mian leo a mhodhnú dóibh féin.

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>

Má d’éirigh leis an údarú, feicfidh an t-úsáideoir lógó MikroTik sa bhrabhsálaí, agus ba cheart go léireoidh sé seo fíordheimhniú rathúil:

Fíordheimhniú dhá fhachtóir ar úsáideoirí VPN trí MikroTik agus SMS

Tabhair faoi deara go gcuirtear an íomhá ar ais ón bhfreastalaí gréasáin MikroTik ionsuite ag baint úsáide as WebProxy Deny Redirect.

Is dócha gur féidir an íomhá a shaincheapadh ag baint úsáide as an uirlis "hotspot", do leagan féin a uaslódáil ansin agus an URL Diúltaigh Atreorú chuige a shocrú le WebProxy.

Iarratas mór dóibh siúd atá ag iarraidh an "bréagán" Mikrotik is saoire a cheannach ar $20 agus ródaire $500 a athsholáthar leis - ná déan é sin. Tá LAP an-lag (smips) ag feistí cosúil le "hAP Lite" / "hAP mini" (pointe rochtana baile), agus is dócha nach mbeidh siad ag dul i ngleic leis an ualach sa deighleog ghnó.

Rabhadh! Tá míbhuntáiste amháin ag an réiteach seo: nuair a cheanglaíonn nó a dhínascann cliaint, tarlaíonn athruithe cumraíochta, a ndéanann an ródaire iarracht a shábháil ina chuimhne neamh-luaineach. Le líon mór cliant agus naisc agus dícheangail go minic, d'fhéadfadh díghrádú an stórais inmheánaigh sa ródaire a bheith mar thoradh air seo.

PS: Is féidir modhanna chun cód a sheachadadh don chliant a leathnú agus a fhorlíonadh chomh fada agus is leor do chumas ríomhchlárúcháin. Mar shampla, is féidir leat teachtaireachtaí a sheoladh chuig teileagram nó ... roghanna a mholadh!

Tá súil agam go mbeidh an t-alt úsáideach duit agus go gcabhróidh sé le líonraí gnólachtaí beaga agus meánmhéide a dhéanamh beagán níos sláine.

Foinse: will.com