Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

Sawubona ozakwethu! Namuhla, lapho ukushuba kwezinkanuko "zomsebenzi oqhelile" kuncipha kancane, iningi labaphathi liwine umsebenzi wokufinyelela kude kwabasebenzi kunethiwekhi yebhizinisi, sekuyisikhathi sokwabelana ngolwazi lwami lwesikhathi eside ekuthuthukiseni ukuphepha kwe-VPN. Lesi sihloko ngeke sibe semfashini manje IPSec IKEv2 kanye ne-xAuth. Kumayelana nokwakha uhlelo. ukuqinisekiswa kwezinto ezimbili (2FA) Abasebenzisi be-VPN lapho i-MikroTik isebenza njengeseva ye-VPN. Okungukuthi, lapho kusetshenziswa izivumelwano "zakudala" ezifana ne-PPP.

Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

Namuhla ngizokutshela ukuthi ungayivikela kanjani i-MikroTik PPP-VPN ngisho noma kwenzeka "ukudunwa" kwe-akhawunti yomsebenzisi. Lapho lolu hlelo lwethulwa kwelinye lamakhasimende ami, waluchaza kafushane ngokuthi β€œkahle, manje sekungathi kusebhange!”.

Indlela ayisebenzisi izinsizakalo zokufakazela ubuqiniso zangaphandle. Imisebenzi yenziwa ngaphakathi yi-router ngokwayo. Azikho izindleko zeklayenti elixhumayo. Indlela isebenza kuwo womabili amaklayenti e-PC namadivayisi eselula.

Uhlelo olujwayelekile lokuvikela lumi kanje:

  1. Ikheli le-IP langaphakathi lomsebenzisi oxhume ngempumelelo kuseva ye-VPN lifakwa ohlwini olumpunga ngokuzenzakalelayo.
  2. Umcimbi wokuxhuma ukhiqiza ngokuzenzakalelayo ikhodi yesikhathi esisodwa ethunyelwa kumsebenzisi kusetshenziswa enye yezindlela ezitholakalayo.
  3. Amakheli akulolu hlu anokufinyelela okulinganiselwe kuzinsiza zenethiwekhi yendawo, ngaphandle kwesevisi "yokufakazela ubuqiniso", elinde ukuthola iphasikhodi yesikhathi esisodwa.
  4. Ngemva kokwethula ikhodi, umsebenzisi uyakwazi ukufinyelela izinsiza zangaphakathi zenethiwekhi.

Okokuqala inkinga encane obekumele ngibhekane nayo kwakuwukugcina imininingwane yokuxhumana mayelana nomsebenzisi ukuze ngimthumelele ikhodi ye-2FA. Njengoba kungenakwenzeka ukudala izinkambu zedatha ezingafanele ezihambisana nabasebenzisi ku-Mikrotik, inkambu ekhona "yamazwana" isetshenzisiwe:

/ppp secrets add name=Petrov password=4M@ngr! comment="89876543210"

Owesibili inkinga yaba yimbi kakhulu - ukukhethwa kwendlela kanye nendlela yokuletha ikhodi. Amasu amathathu asetshenziswayo njengamanje: a) I-SMS nge-USB-modemu b) i-imeyili c) I-SMS nge-imeyili etholakalayo kumakhasimende ezinkampani ka-opharetha weselula obomvu.

Yebo, izinhlelo ze-SMS ziletha izindleko. Kodwa uma ubheka, "ukuphepha kuhlale kumayelana nemali" (c).
Mina ngokwami ​​angiluthandi uhlelo lwe-e-mail. Hhayi ngoba idinga iseva yemeyili ukuthi itholakale ukuze iklayenti ligunyazwe - akuyona inkinga ukuhlukanisa ithrafikhi. Kodwa-ke, uma iklayenti ngokunganaki lilondoloze kokubili amaphasiwedi e-vpn nawe-imeyili esipheqululini bese lilahlekelwa ikhompuyutha yalo ephathekayo, umhlaseli uzothola ukufinyelela okugcwele kunethiwekhi yebhizinisi kuyo.

Ngakho-ke, kunqunyiwe - siletha ikhodi yesikhathi esisodwa sisebenzisa imilayezo ye-SMS.

Okwesithathu Inkinga yayikuphi ungayenza kanjani ikhodi ye-pseudo-random ye-2FA ku-MikroTik. Ayikho i-analogue yomsebenzi we-random() olimini lokubhala lwe-RouterOS, futhi ngike ngabona izijeneretha zezinombolo ze-crutch crutch-random ngaphambilini. Angizange ngithande neyodwa yazo ngenxa yezizathu ezihlukahlukene.

Eqinisweni, kukhona ijeneretha yokulandelana okungahleliwe ku-MikroTik! Ifihliwe ekubukeni okukha phezulu kumongo we-/izitifiketi ze-scep-server. Indlela yokuqala ukuthola iphasiwedi yesikhathi esisodwa kulula futhi kulula - ngomyalo /izitifiketi ze-scep-server otp zikhiqiza. Uma senza umsebenzi ozokwenziwa oshintshashintshayo olula, sizothola inani lamalungu afanayo elingasetshenziswa kamuva emibhalweni.

Indlela yesibili ukuthola iphasiwedi yesikhathi esisodwa futhi okulula ukuyifaka - usebenzisa isevisi yangaphandle okungahleliwe.org ukukhiqiza uhlobo olufiswayo lokulandelana kwezinombolo ezingamanga-okungahleliwe. Nakhu kwenziwe lula cantilevered isibonelo sokufaka idatha kokuguquguqukayo:

Ikhodi
: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

Isicelo esifomethiwe sekhonsoli (ukubalekela izinhlamvu ezikhethekile kuzodingeka emzimbeni weskripthi) sithola uchungechunge lwamadijithi ayisithupha kokuhluka kwe-$rnd1. Umyalo olandelayo othi "beka" uvele ubonise okuguquguqukayo kukhonsoli ye-MikroTik.

Inkinga yesine okwakudingeka ixazululwe ngokushesha - lena yindlela futhi lapho iklayenti elixhunyiwe lizodlulisela ikhodi yalo yesikhathi esisodwa esigabeni sesibili sokuqinisekisa.

Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

Kumelwe kube nesevisi kumzila we-MikroTik engamukela ikhodi futhi ihambisane neklayenti elithile. Uma ikhodi enikeziwe ifana nelindelekile, ikheli leklayenti kufanele lifakwe ohlwini oluthile "olumhlophe", amakheli avunyelwe kuwo ukufinyelela kunethiwekhi yangaphakathi yenkampani.

Ngenxa yokukhetha okungalungile kwezinsizakalo, kunqunywe ukwamukela amakhodi nge-http kusetshenziswa i-webproxy eyakhelwe ku-Mikrotik. Futhi njengoba i-firewall ingasebenza nohlu oluguqukayo lwamakheli e-IP, i-firewall eyenza ukusesha kwekhodi, iyifanise ne-IP yeklayenti futhi iyengeze ohlwini "olumhlophe" isebenzisa i-Layer7 regexp. Irutha ngokwayo inikezwe igama le-DNS elinemibandela elithi "gw.local", irekhodi elingu-A elimile lidalwe kuyo ukuze likhishelwe amaklayenti e-PPP:

DNS
/ip dns static add name=gw.local address=172.31.1.1

Ithwebula ithrafikhi yamaklayenti angaqinisekisiwe kummeleli:
/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

Kulokhu, ummeleli unemisebenzi emibili.

1. Vula ukuxhumana kwe-tcp namakhasimende;

2. Esimeni sokugunyazwa ngempumelelo, qondisa kabusha isiphequluli seklayenti ekhasini noma isithombe esazisa mayelana nokuqinisekisa ngempumelelo:

Ukulungiselelwa kommeleli
/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

Ngizoklelisa izinto ezibalulekile zokumisa:

  1. i-interface-list "2fa" - uhlu oluguquguqukayo lwezixhumanisi zamakhasimende, ithrafikhi esuka lapho idinga ukucutshungulwa ngaphakathi kwe-2FA;
  2. uhlu lwamakheli "2fa_jailed" - "grey" uhlu lwamakheli e-IP omhubhe amaklayenti e-VPN;
  3. address_list "2fa_approved" - "mhlophe" uhlu lwamakheli e-IP omhubhe wamaklayenti e-VPN aphumelele ukuqinisekiswa kwezinto ezimbili.
  4. iketango le-firewall "input_2fa" - lihlola amaphakethe e-tcp ukuze libone ukuthi kukhona ikhodi yokugunyazwa futhi lihambisana nekheli le-IP lomthumeli wekhodi nalelo elidingekayo. Imithetho kuketango yengezwa futhi isuswe ngokuguquguqukayo.

I-flowchart eyenziwe lula yokucubungula iphakethe ibonakala kanje:

Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

Ukuze ungene ekuhloleni kwe-Layer7 yethrafikhi evela kumakhasimende asuka kuhlu "olumpunga" olungakadluli isigaba sesibili sokufakazela ubuqiniso, umthetho udaliwe ochungechungeni "lokufaka" olujwayelekile:

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

Manje ake siqale ukubophela yonke le ngcebo kusevisi ye-PPP. I-MikroTik ikuvumela ukuthi usebenzise imibhalo kumaphrofayili (iphrofayili ye-ppp) futhi uyinikeze izehlakalo zokusungula nokuphula ukuxhumana kwe-ppp. Izilungiselelo zephrofayela ye-ppp zingasetshenziswa kuseva ye-PPP iyonke noma kubasebenzisi ngabanye. Ngesikhathi esifanayo, iphrofayili eyabelwe umsebenzisi inokubaluleka, idlula imingcele yephrofayela ekhethelwe iseva iyonke kanye nemingcele yayo ecacisiwe.

Njengomphumela wale ndlela, singakwazi ukudala iphrofayili ekhethekile yokuqinisekiswa kwezinto ezimbili futhi sinikeze hhayi kubo bonke abasebenzisi, kodwa kuphela kulabo abakubona kudingekile ukwenza kanjalo. Lokhu kungase kuhlobane uma usebenzisa izinsiza ze-PPP hhayi kuphela ukuxhuma abasebenzisi bokugcina, kodwa ngesikhathi esifanayo ukwakha ukuxhumana kwesayithi nesayithi.

Kuphrofayela ekhethekile esanda kwakhiwa, sisebenzisa ukungezwa okuguquguqukayo kwekheli nesixhumi esibonakalayo somsebenzisi oxhunyiwe ohlwini "olumpunga" lwamakheli nezindawo:

winbox
Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

Ikhodi
/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

Kuyadingeka ukusebenzisa kokubili "uhlu lwamakheli" kanye "nohlu lwesixhumi esibonakalayo" ukuze uthole futhi uthwebule ithrafikhi evela kumakhasimende angewona awesibili e-VPN kuchungechunge lwe-dstnat (prerouting).

Uma ukulungiswa sekuqediwe, amaketango engeziwe okuvikela umlilo kanye nephrofayili kwakhiwa, sizobhala iskripthi esibophezelekile ekukhiqizeni okuzenzakalelayo kwekhodi ye-2FA kanye nemithetho ye-firewall ngayinye.

Imibhalo wiki.mikrotik.com ku-PPP-Iphrofayela isicebisa ngolwazi mayelana neziguquko ezihlobene nemicimbi yokuxhuma-nqamula iklayenti le-PPP "Yenza iskripthi kumcimbi wokungena ngemvume komsebenzisi. Lokhu okuguquguqukayo okutholakalayo okufinyeleleka kuskripthi somcimbi: umsebenzisi, ikheli lendawo, ikheli elikude, ubunikazi bekholi, ubunikazi bokubizwa, isixhumi esibonakalayo". Ezinye zazo ziwusizo kakhulu kithi.

Ikhodi esetshenziswe kuphrofayela yomcimbi wokuxhumana we-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

Ikakhulukazi kulabo abathanda ukukopisha-namathisela ngokungenangqondo, ngiyakuxwayisa - ikhodi ithathwe enguqulweni yokuhlola futhi ingaqukatha ama-typos amancane. Ngeke kube nzima ngomuntu oqondayo ukuthola ukuthi ukuphi ngempela.

Uma umsebenzisi enqamula, umcimbi othi "On-Down" uyakhiqizwa futhi iskripthi esihambisanayo esinamapharamitha sibizwa. Umsebenzi walesi skripthi ukuhlanza imithetho yohlelo lokuvikela eyenzelwe umsebenzisi onqanyuliwe.

Ikhodi esetshenziswe kuphrofayela yomcimbi wokuxhumana ophansi we-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]
Ungakha abasebenzisi bese unikeza bonke noma abanye babo kuphrofayela yokuqinisekisa yezinto ezimbili.

winbox
Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

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

Ibukeka kanjani ohlangothini lweklayenti.

Uma uxhumano lwe-VPN selusunguliwe, ifoni/ithebhulethi ye-Android/iOS ene-SIM khadi ithola i-SMS ebukeka kanje:

I-SMS
Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

Uma uxhumano lusungulwa ngokuqondile ocingweni / kuthebhulethi, ungadlula ku-2FA ngokuchofoza isixhumanisi esivela kumlayezo. Ikhululekile.

Uma uxhumano lwe-VPN lusungulwa kusukela ku-PC, umsebenzisi uzodingeka ukuthi afake ifomu lephasiwedi elincane. Ifomu elincane elisesimweni sefayela le-HTML linikezwa umsebenzisi lapho esetha i-VPN. Ifayela lingathunyelwa ngisho nangeposi ukuze umsebenzisi aligcine futhi enze isinqamuleli endaweni elula. Kubukeka kanjena:

Lebula etafuleni
Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

Umsebenzisi uchofoza isinqamuleli, kuvuleka ifomu elilula lokufaka ikhodi, elizonamathisela ikhodi ku-URL evuliwe:

Ifomu lesikrini
Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

Ifomu lakudala kakhulu linikezwe njengesibonelo. Abafisayo bangazilungisela bona.

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>

Uma ukugunyazwa kuphumelele, umsebenzisi uzobona ilogo ye-MikroTik esipheqululini, okufanele ibonise ukuqinisekiswa okuyimpumelelo:

Ukuqinisekiswa kwezinto ezimbili kwabasebenzisi be-VPN nge-MikroTik ne-SMS

Qaphela ukuthi isithombe sibuyiswa kusuka kuseva yewebhu eyakhelwe ngaphakathi ye-MikroTik kusetshenziswa i-WebProxy Deny Redirect.

Ngicabanga ukuthi isithombe singenziwa ngendlela oyifisayo kusetshenziswa ithuluzi le-"hotspot", ukulayisha eyakho inguqulo lapho bese usetha i-URL ye-Deny Redirect kuso nge-WebProxy.

Isicelo esikhulu kulabo abazama ukuthenga "ithoyizi" elishibhile i-Mikrotik nge-$ 20 futhi bashintshe i-router ye-$ 500 ngayo - ungakwenzi lokho. Amadivayisi afana ne-"hAP Lite" / "hAP mini" (indawo yokufinyelela yasekhaya) ane-CPU ebuthaka kakhulu (ama-smips), futhi cishe ngeke akwazi ukubhekana nomthwalo esigabeni sebhizinisi.

Isexwayiso! Lesi sixazululo sinokungalungi okukodwa: lapho amaklayenti exhuma noma enqamula, izinguquko zokumisa zenzeka, lapho i-router ezama ukuyigcina kumemori yayo engaguquki. Ngenani elikhulu lamaklayenti kanye nokuxhumeka okuvamile nokunqanyulwa, lokhu kungaholela ekulimazeni isitoreji sangaphakathi kumzila.

PS: Izindlela zokuletha ikhodi kuklayenti zinganwetshwa futhi zengezwe ngokwamandla akho okuhlela anele. Isibonelo, ungathumela imilayezo kuthelegramu noma ... uphakamise izinketho!

Ngithemba ukuthi lesi sihloko sizoba usizo kuwe futhi sizosiza ukwenza amanethiwekhi amabhizinisi amancane naphakathi avikeleke kancane.

Source: www.habr.com