Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

Salama mpiara-miasa! Androany, rehefa nihena kely ny hamafin'ny fientanam-po manodidina ny “asa lavitra”, ny ankamaroan'ny mpitantana dia nahazo ny asa amin'ny fidirana lavitra ny mpiasa amin'ny tambajotra orinasa, fotoana izao hizarana ny traikefako hatry ny ela amin'ny fanatsarana ny fiarovana VPN. Ity lahatsoratra ity dia tsy ho lamaody ankehitriny IPSec IKEv2 sy xAuth. Momba ny fananganana rafitra izany. fanamarinana roa anton-javatra (2FA) Mpampiasa VPN rehefa miasa ho mpizara VPN i MikroTik. Izany hoe, rehefa ampiasaina ny protocoles "classic" toy ny PPP.

Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

Androany aho dia hilaza aminao ny fomba hiarovana ny MikroTik PPP-VPN na dia misy "hijacking" ny kaonty mpampiasa aza. Rehefa nampidirina tamin'ny iray amin'ireo mpanjifako io tetika io, dia nofaritany fohifohy hoe "eny, toy ny any amin'ny banky izao!".

Ny fomba dia tsy mampiasa serivisy authenticator ivelany. Ny asa dia ataon'ny router ao anatiny. Tsy misy vidiny ho an'ny mpanjifa mampifandray. Ny fomba dia miasa ho an'ny mpanjifa PC sy fitaovana finday.

Ny rafitra fiarovana ankapobeny dia toy izao manaraka izao:

  1. Ny adiresy IP anatiny an'ny mpampiasa iray izay nifandray soa aman-tsara tamin'ny mpizara VPN dia voasokajy ho azy amin'ny lisitra grey.
  2. Ny hetsika fifandraisana dia miteraka kaody indray mandeha izay alefa amin'ny mpampiasa mampiasa ny iray amin'ireo fomba misy.
  3. Ny adiresy ao amin'ity lisitra ity dia manana fahafahana miditra amin'ny loharanon-tambajotra eo an-toerana, afa-tsy ny serivisy "authenticator", izay miandry ny hahazo kaody passante indray mandeha.
  4. Aorian'ny fanolorana ny kaody, ny mpampiasa dia afaka miditra amin'ny loharano anatiny ao amin'ny tambajotra.

Ny voalohany Ny olana kely indrindra tsy maintsy natrehako dia ny fitehirizana fampahalalana momba ny fifandraisana momba ny mpampiasa handefasana azy ny code 2FA. Satria tsy azo atao ny mamorona sehatra angon-drakitra mifandraika amin'ny mpampiasa ao amin'ny Mikrotik, dia nampiasaina ny saha "commentaire" efa misy:

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

Ny faharoa ny olana dia lasa lehibe kokoa - ny safidy ny lalana sy ny fomba fanaterana ny fehezan-dalàna. Tetika telo no ampiharina amin'izao fotoana izao: a) SMS amin'ny alalan'ny USB-modem b) mailaka c) SMS amin'ny alàlan'ny mailaka azo alaina ho an'ny mpanjifan'ny orinasan'ny mpandraharaha finday mena.

Eny, mitondra vola ny tetik'asa SMS. Raha jerena anefa dia "ny fandriampahalemana dia resaka vola foana" (c).
Izaho manokana dia tsy tia ny rafitra mailaka. Tsy satria mitaky ny mpizara mailaka ho azon'ny mpanjifa voamarina - tsy olana ny manasaraka ny fifamoivoizana. Na izany aza, raha tsy mitandrina ny mpanjifa ny tenimiafina ho an'ny VPN sy ny mailaka ao amin'ny navigateur, ary avy eo dia very ny solosaina findainy, ny mpanafika dia hahazo ny fidirana feno amin'ny tambajotra orinasa.

Noho izany, nanapa-kevitra izany - mandefa kaody indray mandeha izahay amin'ny alàlan'ny hafatra SMS.

Ny fahatelo ny olana dia taiza ary ny fomba hamoronana kaody pseudo-random ho an'ny 2FA ao amin'ny MikroTik. Tsy misy analogue ny asa random() ao amin'ny fiteny scripting RouterOS, ary efa nahita mpamokatra nomerao pseudo-random maro aho taloha. Tsy tiako ny iray tamin'izy ireo noho ny antony samihafa.

Raha ny marina, misy pseudo-random sequence generator ao amin'ny MikroTik! Afenina amin'ny fijery mibaribary eo amin'ny tontolon'ny /certificate scep-server. Ny fomba voalohany mora sy tsotra ny fahazoana tenimiafina indray mandeha - miaraka amin'ny baiko /certificate scep-server otp miteraka. Raha manao asa fanendrena miovaova tsotra isika dia hahazo sanda array azo ampiasaina any aoriana any amin'ny script.

Ny fomba faharoa fahazoana tenimiafina indray mandeha izay mora ampiharina ihany koa - mampiasa serivisy ivelany kisoa.org mba hamoronana karazana filaharan'ny isa pseudo-random. Ity misy notsorina cantilevered ohatra amin'ny fampidirana data ho variable:

fehezan-dalàna
: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

Ny fangatahana novolavolaina ho an'ny console (tsy maintsy mandositra tarehintsoratra manokana ao amin'ny vatan'ny script) dia mahazo tady misy isa enina ao amin'ny fari-piadidiana $rnd1. Ity baiko "mametraka" manaraka izao dia mampiseho fotsiny ny fari-piainana ao amin'ny console MikroTik.

Ny olana fahefatra izay tsy maintsy voavaha haingana - izany no fomba sy aiza ny mpanjifa mifandray hamindra ny kaody indray mandeha amin'ny dingana faharoa amin'ny fanamarinana.

Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

Tsy maintsy misy serivisy ao amin'ny router MikroTik izay afaka manaiky ny kaody ary mampifanaraka azy amin'ny mpanjifa manokana. Raha mifanandrify amin'ilay nantenaina ny kaody nomena, dia tokony hampidirina ao anaty lisitra "fotsy" sasany ny adiresin'ny mpanjifa, adiresy izay ahafahan'ny fidirana amin'ny tambajotra anatiny ao amin'ny orinasa.

Noho ny tsy fahampian'ny tolotrasa dia nanapa-kevitra ny hanaiky ny kaody amin'ny alàlan'ny http amin'ny fampiasana ny webproxy natsangana ao amin'ny Mikrotik. Ary satria ny firewall dia afaka miasa amin'ny lisitry ny adiresy IP mavitrika, dia ny firewall no manao ny fikarohana ny code, mampifanaraka azy amin'ny IP mpanjifa ary manampy azy amin'ny lisitra "fotsy" mampiasa Layer7 regexp. Ny router mihitsy dia nomena anarana DNS misy fepetra "gw.local", misy rakitsoratra A static noforonina teo aminy mba hanomezana ny mpanjifa PPP:

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

Misambotra ny fifamoivoizana mpanjifa tsy voamarina amin'ny 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

Amin'ity tranga ity, ny proxy dia manana fiasa roa.

1. Sokafy ny fifandraisana tcp amin'ny mpanjifa;

2. Raha misy fanomezan-dàlana mahomby, avereno mankany amin'ny pejy na sary mampandrenesana momba ny fanamarinana mahomby ny navigateur mpanjifa:

Proxy config
/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

Tanisaiko ireo singa manan-danja amin'ny fanamafisana:

  1. lisitry ny interface "2fa" - lisitra mavitrika amin'ny fifandraisana amin'ny mpanjifa, ny fifamoivoizana izay mitaky fanodinana ao anatin'ny 2FA;
  2. lisitry ny adiresy "2fa_jailed" — lisitry ny adiresy IP tonelina an'ny mpanjifa VPN "voankazo";
  3. address_list "2fa_approved" - lisitra "fotsy" an'ny tonelina adiresy IP an'ny mpanjifa VPN izay nahomby tamin'ny fanamarinana roa.
  4. rojo firewall "input_2fa" - manamarina ny fonosana tcp amin'ny fisian'ny kaody fanomezan-dàlana ary mifanandrify amin'ny adiresy IP an'ny mpandefa kaody amin'ny ilaina. Ny fitsipika ao amin'ny rojo dia ampiana sy esorina amin'ny fomba mavitrika.

Toy izao ny sarin'ny fanodinana fonosana notsorina:

Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

Mba hidirana amin'ny fanamarinana Layer7 momba ny fifamoivoizana avy amin'ny mpanjifa avy amin'ny lisitra "voankazo" izay tsy mbola nandalo ny dingana faharoa amin'ny fanamarinana, dia nisy fitsipika noforonina tao amin'ny rojo "fampidirana" mahazatra:

fehezan-dalàna
/ip firewall filter add chain=input !src-address-list=2fa_approved action=jump jump-target=input_2fa

Andeha isika hanomboka hampifandray ireo harena rehetra ireo amin'ny serivisy PPP. MikroTik dia ahafahanao mampiasa script amin'ny mombamomba (ppp-profile) ary manendry azy ireo amin'ny hetsika fananganana sy fandravana fifandraisana ppp. Ny firafitry ny ppp-profile dia azo ampiharina amin'ny mpizara PPP manontolo sy amin'ny mpampiasa tsirairay. Amin'ity tranga ity, ny mombamomba nomena ho an'ny mpampiasa dia manana laharam-pahamehana, manafoana miaraka amin'ny masontsivana voatondrony ny mason'ny mombamomba nofantenana ho an'ny mpizara manontolo.

Vokatr'io fomba fiasa io dia afaka mamorona mombamomba manokana ho an'ny fanamarinana roa lafin-javatra isika ary manendry azy tsy ho an'ny mpampiasa rehetra, fa ho an'ireo izay mihevitra fa ilaina ny manao izany. Mety hisy dikany izany raha mampiasa serivisy PPP ianao tsy hampifandray ireo mpampiasa farany, fa amin'ny fotoana iray ihany koa hananganana fifandraisana amin'ny tranokala.

Ao amin'ny mombamomba manokana vao noforonina, dia mampiasa ny fanampiana mavitrika amin'ny adiresy sy ny seha-pifaneraseran'ny mpampiasa mifandray amin'ny lisitry ny adiresy sy ny interface "volomparasy" izahay:

winbox
Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

fehezan-dalàna
/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

Ilaina ny mampiasa ny lisitra "address-list" sy "interface-list" mba hamantarana sy hisambotra ny fifamoivoizana avy amin'ny mpanjifa VPN tsy faharoa ao amin'ny rojo dstnat (prerouting).

Rehefa vita ny fiomanana, dia misy rojom-pandrefesana fanampiny sy mombamomba iray, hanoratra script iray tompon'andraikitra amin'ny famoronana auto-ny kaody 2FA sy ny fitsipiky ny firewall tsirairay.

Documentation wiki.mikrotik.com ao amin'ny PPP-Profile dia mampanan-karena antsika amin'ny fampahalalana momba ireo fari-pahalalana mifandraika amin'ny hetsika mifandray-disconnect mpanjifa PPP "Manaova script amin'ny hetsika fidirana mpampiasa. Ireo dia variana azo idirana ho an'ny script hetsika: mpampiasa, adiresy eo an-toerana, adiresy lavitra, caller-id, called-id, interface". Tena mahasoa antsika ny sasany amin’izy ireny.

Kaody ampiasaina amin'ny mombamomba ny hetsika PPP on-up

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

Mampitandrina anao indrindra aho ho an'ireo izay tia mandika tsy misy dikany - ny kaody dia nalaina tamin'ny dikan-teny fitsapana ary mety misy hadisoana kely. Tsy ho sarotra ho an'ny olona be saina ny hamantatra hoe aiza marina.

Rehefa tapaka ny fifandraisan'ny mpampiasa iray dia misy hetsika "On-Down" ary antsoina ny script mifanaraka amin'izany miaraka amin'ny masontsivana. Ny asan'ity script ity dia ny manadio ny fitsipiky ny firewall noforonina ho an'ny mpampiasa tapaka.

Kaody ampiasaina amin'ny mombamomba ho an'ny hetsika fifandraisana eo amin'ny 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]
Afaka mamorona mpampiasa ianao avy eo ary manendry ny sasany na ny rehetra amin'ny mombamomba ny fanamarinana roa.

winbox
Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

fehezan-dalàna
/ppp secrets set [find name=Petrov] profile=2FA

Ahoana ny fijerin'ny mpanjifa.

Rehefa tafapetraka ny fifandraisana VPN dia mahazo SMS toy izao ny finday/tablette Android/iOS misy karatra SIM:

SMS
Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

Raha miorina mivantana avy amin'ny telefaona / takelakao ny fifandraisana, dia afaka mandeha amin'ny 2FA ianao amin'ny fipihana fotsiny ny rohy avy amin'ny hafatra. Mampahazo aina.

Raha misy fifandraisana VPN miorina amin'ny PC, dia takiana ny mpampiasa hampiditra tenimiafina kely indrindra. Ny endrika kely amin'ny endrika rakitra HTML dia omena ny mpampiasa rehefa mametraka ny VPN. Ny rakitra dia azo alefa amin'ny alàlan'ny mailaka mihitsy aza mba ahafahan'ny mpampiasa mitahiry azy sy mamorona hitsin-dàlana amin'ny toerana mety. Toa toy izao izany:

Etikety eo ambony latabatra
Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

Ny mpampiasa dia manindry ny hitsin-dàlana, misokatra ny endrika fampidirana kaody tsotra, izay hametaka ny kaody ao amin'ny URL misokatra:

Efijery endrika
Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

Ny endrika voalohany indrindra dia omena ho ohatra. Ireo izay maniry dia afaka manova ho an'ny tenany.

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>

Raha nahomby ny fanomezan-dàlana dia ho hitan'ny mpampiasa ny logo MikroTik ao amin'ny navigateur, izay tokony hanambara ny fanamarinana mahomby:

Fanamarinana roa an'ny mpampiasa VPN amin'ny alàlan'ny MikroTik sy SMS

Mariho fa ny sary dia naverina avy amin'ny mpizara tranonkala MikroTik naorina amin'ny alàlan'ny WebProxy Deny Redirect.

Heveriko fa azo amboarina amin'ny alàlan'ny fitaovana "hotspot" ilay sary, mampakatra ny dikan-teninao manokana ao ary mametraka ny URL Deny Redirect aminy miaraka amin'ny WebProxy.

Fangatahana lehibe ho an'ireo izay manandrana mividy Mikrotik "lalao" mora indrindra amin'ny $ 20 ary manolo ny router $ 500 miaraka aminy - aza manao izany. Ny fitaovana toy ny "hAP Lite" / "hAP mini" (toerana fidirana an-trano) dia manana CPU malemy (smips), ary azo inoana fa tsy hiatrika ny enta-mavesatra eo amin'ny sehatry ny orinasa izy ireo.

Fampitandremana! Ity vahaolana ity dia manana lesoka iray: rehefa mifandray na manapaka ny mpanjifa, dia misy fiovana eo amin'ny configuration, izay ezahin'ny router hotehirizina ao amin'ny fitadidiany tsy miovaova. Miaraka amin'ny mpanjifa marobe sy ny fifandraisana matetika sy ny fahatapahan'ny fifandraisana, izany dia mety hitarika amin'ny fahasimban'ny fitahirizana anatiny ao amin'ny router.

PS: Ny fomba fandefasana kaody ho an'ny mpanjifa dia azo itarina sy ampitomboina raha toa ka ampy ny fahaiza-manaonao amin'ny programa. Ohatra, azonao atao ny mandefa hafatra amin'ny telegrama na ... manolotra safidy!

Manantena aho fa hahasoa anao ny lahatsoratra ary hanampy amin'ny fanatsarana ny tambajotran'ny orinasa madinika sy salantsalany ho azo antoka kokoa.

Source: www.habr.com