Duo-factor authenticas de VPN users per MikroTik et SMS

Salvete collegae! Hodie, cum intensio passionum circa "laborem longinqui" parum resedisset, plures admins munus occupaverunt remotarum operariorum accessus ad network corporatum, tempus est mihi communicare meam diuturnam experientiam in securitate meliore VPN. Articulus hic non erit similis nunc IPSec IKEv2 et xAuth. De systemate aedificando est. duos elementum authenticas (2FA) VPN utentes cum MikroTik fungitur VPN servo. Nempe cum protocolla "classica" sicut PPP adhibentur.

Duo-factor authenticas de VPN users per MikroTik et SMS

Hodie dicam tibi quomodo MikroTik PPP-VPN tueri etiam in casu "raptionis" rationis usoris. Quae res cum uni ex clientibus meis introducta est, breviter eam descripsit "bene, nunc est sicut in argentariis!".

Methodus authentica externa non utatur officia. Operae intus per ipsum iter peraguntur. Nullus sumptus connectens defendit. Methodus tam PC clientium quam machinas mobiles operatur.

Ratio tutelae generalis haec est:

  1. Interna IP oratio in utentis qui feliciter cum VPN servo coniungitur, ipso facto griseatur.
  2. Connexio eventus automatice unum tempus codicem generat, qui mittitur ad utentis utendi unum e instrumentis promptis.
  3. Inscriptiones in hoc indice habent limitatum accessum ad facultates network locales, excepta "authenticatoris" servitii, quae unum tempus passcode exspectat.
  4. Postquam codicem praesentavit, user accessum ad facultates internas retis habet.

primus minimum problema ad faciem habui notitias contactum accommodabat de utentis utenti mitteret ei codicem 2FA. Cum impossibile sit creare notitias arbitrarias agri Mikrotik usoribus correspondentes, qui "commentarium" exsistentes agri adhibiti sunt;

/ppp mysteria adde nomen=Petrov password=4M@ngr! comment="89876543210"

secundus quaestio evasit graviori - delectu semita ac methodo tradendi codicem. Tres technae nunc ad effectum adducuntur: a) SMS per USB-modem b) e-mail c) SMS per electronicas praesto pro clientibus corporatorum rubrae operantis cellularis.

Ita, machinae SMS costs afferunt. Sed si attendas, « securitas semper est circa pecunias » (c).
Ego personaliter non amo consilium cum e-mail. Non quia requirit ut servo electronico praesto sit clienti signo authenticitatis - non est quaestio scindendi negocii. Tamen si client incaute servavit tam vpn quam tesseras electronicas in navigatro ac deinde laptop amisit, oppugnator plenam accessum ad retis corporatum inde acquireret.

Ita, placuit - unum tempus codice utentes nuntiis SMS.

tertium Quaestio erat, ubi quomodo generare codicem pseudo-passim pro 2FA in MikroTik. Nulla analogus incerti () functionis in lingua RouterOS scribentis, et aliquot generantium numerum pseudo-passuum fusum vidi ante. Variis de causis neminem illorum nolui.

Re vera, est sequentia pseudo-passim generans in MikroTik! Latet superficiali aspectu in contextu testium sceptrorum /. Primum modum questus unum tempus password facilis et simplex - cum imperio / Testimonia scep-servo otp generate. Si operationem simplicem variabilis assignationis exercemus, valorem ordinatum obtinebimus qui postea in scriptis adhiberi potest.

Secundum viam, unum tempus obtinens password quod etiam facile adhibere potest - externa opera utens random.org desideratum genus seriei numeri temere pseudo-generandi. Hic est simplicior cantilevered exempli gratia de notitia questus est in variabilis:

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

Petitio formatae pro consolatorio (praecipuae notae evadendi requirentur in corpore scriptionis) filum sex digitorum accipit in variabili $. Sequentia "posuit" mandatum simpliciter variabiles in MikroTik consolatorium ostendunt.

Quarta quaestio quod oportuit ut cito resolvatur - hoc modo et ubi nexus cliens in secundo gradu authenticitatis tempus suum unum codicem transferet.

Duo-factor authenticas de VPN users per MikroTik et SMS

Servitium erit in itinere MikroTik qui codicem accipere potest et cum certo clienti congruit. Si codice provisum exspectatum aequet, inscriptione huius in certo "albo" includi debet inscriptiones e quibus aditus ad network internum societatis permittitur.

Ob pauperem servitiorum electionem placuit codicibus accipere per http utens interretialem in Mikrotik aedificatam. Et quia firewall cum tabulis dynamicis inscriptionum IP operari potest, murus est qui inquisitionem codicis facit, eam cum client IP adaptans et ad "album" album per Layer7 regexp addens. Iter ipsum DNS conditionale nomen "gw.local" datum est, statarium A-recordum in eo creatum est ut clientibus PPP fiendis;

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

Capere commercium de clientium non verificationibus per procuratorem:
/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

Procurator in hoc casu duas functiones habet.

1. Aperi xco hospites cum clientibus;

2. In casu felicis auctoritatis, clientem pasco ad paginam vel picturam notificationem de felici authenticitate redigere;

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

Configuratione elementa momenti enumerabo:

  1. interface-list "2fa" - dynamica index interfaces clientium, negotiatio e qua processus intra 2FA requirit;
  2. inscriptio-album "2fa_jailed" - "griseum" indicem cuniculi IP inscriptionum clientium VPN;
  3. address_list "2fa_approved" - "album" indicem cuniculi IP inscriptionum VPN clientium quae duo factor authenticas feliciter transierunt.
  4. firewall catena "input_2fa" - tcp fasciculos cohibet pro codice habendo praesentiam et cum inscriptione IP codici mittentis cum inquisita congruit. Regulae in catena adduntur et dynamice tolluntur.

Flowchart simplicior processus fasciculi similis est:

Duo-factor authenticas de VPN users per MikroTik et SMS

Ut in tabulatum perscriptio negotiationis clientium ex "griseo" indice qui nondum secundo gradu authenticitatis transiit, regula in catena "input" vexillum creata est;

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

Nunc incipiamus omnes istas opes ad munus PPP affigere. MikroTik te permittit uti scriptoribus in profiles (ppp-profile) et eventibus constituendi ac solvendi nexum ppp tribue. Occasus ppp-profile applicari potest ad PPP serverni totum vel ad singulos utentes. Eodem tempore, profano usori assignato prioritatem habet, emittens parametros profile delectus servo toti cum parametris determinatis.

Propter hanc accessionem specialem potes profile duas factores authenticas creare eamque non omnibus usoribus assignare, sed iis tantum qui id necessarium censent. Hoc fortasse pertinet si officia PPP non solum ad finem utentium coniungendum uteris, sed simul ad connexiones site ut-site aedificandi.

In speciali profile nuper creato, dynamica additione inscriptionis et instrumenti usoris connexi ad "griseos" indices inscriptionum et interfaces utimur:

winbox
Duo-factor authenticas de VPN users per MikroTik et SMS

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

Necesse est utantur tam "inscriptionis-electronicarum" et "interface-lists" ad deprehendendas et capiendas negotiationes ex clientibus non secundis VPN in catena dstnat (prerouting).

Cum praeparatione perficiatur, additae firewall vincula et figurae creantur, scriptum author auto-generationi Codicis 2FA et singulas regulas firewall scribemus.

Documenta wiki.mikrotik.com in PPP-Profile nos ditat informationes de variabilibus cum PPP client connect-disconnect events "Executio scriptorum in usuario login-eventum". Haec variabilia praesto sunt quae pervia sunt pro scripto eventu: usuario, inscriptioni locali, inscriptioni remotae, salutatori-id, vocato-id, interface. Earum quaedam nobis utilissima sunt.

Code in profile pro PPP in-sursum nexu eventu

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

Praesertim pro iis, qui sentiamus imitandi crustulum libet, moneo - signum e versione probata desumptum et typos minores continere potest. Non erit difficile intellectui hominem prorsus ubi figurare.

Cum utentis disiungat, eventus "De-down" generatur et scriptionem respondentem cum parametris vocatur. Munus huius scripti est mundare regulas firewall ad user disiunctas creatas.

Code in profile pro PPP on-descendit nexu eventu

: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]
Potes ergo utentes creare et omnia vel aliqua ex eis ad profile authenticas duos factores assignare.

winbox
Duo-factor authenticas de VPN users per MikroTik et SMS

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

Quam spectat in clientelam partem.

Cum VPN nexus constituitur, an Android / iOS telephonum / tabellam cum Sim card SMS accipit sic:

SMS
Duo-factor authenticas de VPN users per MikroTik et SMS

Si nexus directe e telephonum / tabella constiterit, tunc per 2FA solum strepitando in nexu e nuntio potes ire. Praesent commodo.

Si nexus VPN ex PC constituitur, usor requiretur ut tesseram minimam ingrediatur. Parva forma fasciculi HTML in forma usori datur cum VPN instituens. Tabella vel mail mitti potest ut user eam salvet et brevem in loco convenienti creet. Hoc simile est:

Label in mensa
Duo-factor authenticas de VPN users per MikroTik et SMS

Usoris clicks in compendio, simplex notae ingressum forma aperit, quae codicem in URL apertum transibit:

Forma screen
Duo-factor authenticas de VPN users per MikroTik et SMS

Praecipua forma in exemplum datur. Qui se mutare volunt.

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>

Si auctoritas bene valuit, user logo MikroTik in navigatro videbit, quod prosperum authenticas designare debet;

Duo-factor authenticas de VPN users per MikroTik et SMS

Nota imaginem reddi ex servo Telae MikroTik aedificato utens Proxy Deny Redirect.

Opinor imaginem "hotspot" instrumenti nativus esse posse, ibi tuam versionem imposuisti et in URL Redirectum negantis ei cum WebProxy ponens.

Magna petitio illis qui vilissimum "toy" Mikrotik pro $20 emere conantur et cum eo iter $ 500 restituunt - hoc non faciunt. Cogitationes sicut "haP Lite" / "hAP mini" (punctum accessum domus) valde debilis CPU (smips) habent, et verisimile est eos onere in segmento negotii non toleraturos.

Monitum! Haec solutio unum incommodum habet: cum clientes connectunt vel disiungunt, configurationes mutationes fiunt, quas iter itineris in memoria non volatili servare conatur. Cum magno clientium numero et frequenti nexu et disiunctio hoc fieri potest, ut degradationem repositionis internae in itinere ducant.

PS: Methodi tradendi clienti codicem augeri et suppleri possunt quatenus facultates programmandi sufficiunt. Exempli gratia, epistulas telegraphum mittere vel optiones ... suggerere potes!

Articulum spero tibi utilem fore et adiuvabit ut reticulas parvas et mediocres res paulo securiores redderet.

Source: www.habr.com