Šiek tiek apie standartinį prisijungimą
Ką tik gavus tinklo įrenginį arba sudiegus RouterOS, standartiškai jungiamės prie sistemos valdymo, naudodami programą Winbox. Ši programa turi pagalbinę funkciją – tinkle ieškoti įrenginio pagal IP adresą arba pagal MAC adresą. Pastarąjį MAC prisijungimą aptarnauja RouterOS tinklo paslauga MAC Winbox server, kurį yra standartiškai įjungta ir leidžia prisijungimus iš visų tinklo prievadų. Vėliau pateiksime galimybes apriboti tokius prisijungimus arba tiesiog deaktyvuoti šią paslaugą lokaliems prisijungimams.
Toliau viskas vyksta įprastai – programos laukeliuose nurodome pateiktus numatytus prisijungimo duomenis ir to pakanka prisijungti prie konfigūracijos valdymo.
Kiti du vartotojo prisijungimai reikalauja žinoti tikslų įrenginio IP adresą, prie kurio bandysime jungtis. Vienas iš jų – Winbox analogiška vartotojo valdymo sąsaja, pasiekiama naudojant interneto naršyklę, HTTP protokolo pagalba. Reikia atkreipti dėmesį, kad šis prisijungimas nėra apsaugotas duomenų perdavimo šifravimo protokolu, todėl perduodami duomenys keliauja atviru tekstu. Dėl to reiktų vengti šio būdo, ypač vartotojui prisijungiant prie sistemos per išorinius tinklus.
Trečiasis būdas – komandinė eilutė, kuri yra ganėtinai saugi, pagal numatytus nustatymus ir veikia SSH tinklo protokolo pagalba.
Verta paminėti dar šiuos prisijungimo ir valdymo prie įrenginio protokolus, tačiau jų nerekomenduojame naudoti, nebent žinote ką darote. Pagal nustatymus jie taip pat būna aktyvūs FTP, API. Dažniausiai yra rekomenduojama deaktyvuoti šiuos protokolus pavieniams tinklo įrenginiams.
Kokie vartotojai ir grupės egzistuoja
Įprastai pirmą kartą jungiantis prie Mikrotik tinklo įrenginio, naudojame numatytąjį vartotoją admin ir slaptažodį, kurį surandame ant lipduko (senesniuose įrenginiuose nebuvo net naudojamas slaptažodis). Prisijungus prie įrenginio, mums rekomenduojama pakeisti/pridėti prie admin vartotojo slaptažodį, kurį naudosite administruojant vėliau. Tą atlikti rekomenduojame ir mes, nes dar vis pasitaiko atvejų, kada slaptažodis yra gamyklinis (gana stiprus ir patikimas jei priskirtas) arba tiesiog nepridėtas. Ypač palikti be slaptažodžio įrenginiai tampa lengvais taikiniais interneto piktavalių, kurie šiuos įrenginius gali panaudoti tiesioginiai arba netiesioginiai interneto atakai vykdyti.
Standartinės RouterOS grupės, kurias sutinkame naujame įrenginyje yra šios:
- Full – leidžiamos visos valdymo operacijos ir tinklo paslaugos.
- Write – leidžiamos visos valdymo operacijos, išskyrus politikų valdymo ir ftp tinklo paslaugą.
- Read – neleidžia konfigūracijos keitimo, politikų valdymo ir ftp tinklo paslaugos.
Beveik visos šios vartotojų grupės suteikia nemažą kiekį galimybių vartotojui, valdant įrenginio nustatymus. Tačiau mes galime lengvai tai pakeisti ir sumažinti valdymo operacijų teises vartotojui, sukuriant naują saugesnę grupę pagal poreikius.
Daugiau nei vieno vartotojo strategija
Pagal poreikį administruoti įrenginį iš bet kurios nutolusios vietos, panaudojant SSH ir Winbox protokolų prisijungimus. Ši strategija priskiriame vidutiniam saugumui, tačiau nesant kitoms galimybėms yra puikus pasirinkimas, ypač nedideliam kiekiui pavienių ir nutolusių įrenginių administravimui.
Pabandysime aprašyti kaips susikurti keletą vartotojų su skirtingomis teisėmis pagal grupes.
Pirmiausia sukursime papildomą grupę, kurią naudosime skirtingiems tikslams. Sukurta grupė bus skirta SSH protokolo prisijungimui, nenaudojant slaptažodžio (angl. passwordless) ir parametro pakeitimui sistemoje. Iškart informuosime, kad ši grupė nėra visiškai saugi, nes mums reikalingas parametrų keitimas (reikia „Write” teisių). Tačiau naudojant šią grupę ir vartotoją su SSH be slaptažodžio prisijungimu galime aktyvuoti mums reikiamus tinklo servisus, kaip pavyzdys įgalinti Winbox serviso pasiekimą, esant poreikiui keisti tinklo įrenginio konfigūraciją iš nutolusio terminalo.
Sukuriame SSH_ONLY grupę:
/user group
add name=SSH_ONLY policy=\ ssh,read,write,!local,!telnet,!ftp,!reboot,!policy,!test,!winbox,!password,!web,!sniff,!sensitive,!api,!romon,!rest-api
Toliau šiai grupei sukursime vartotoją, kuris turės tik keletą teisių:
- Prisijungti tik per SSH protokolą, naudojat prisijungimą be slaptažodžio t.y. SSH rakto pagalba.
- Prisijungti iš bet kurio nutolusio IP adreso.
- Galės perskaityti konfigūraciją (slaptažodžių matyti ir eksportuoti konfigūracijos negalės) ir pakeisti keletą parametrų, kad aktyvuoti tinklo servisus.
Sukuriame vartotoją ssh_in:
/user add group=SSH_ONLY name=ssh_in
Šiam vartotojui sukursime ir importuosime SSH prisijungimo raktą. Vartotojas turės galimybę jungtis tik per SSH ir be slaptažodžio (angl. passwordless).
Prieš tai, papildomai nustatysime saugesnius SSH protokolo prisijungimo parametrus, kurie sustiprins bendrą įrenginio RouteOS saugumą.
/ip ssh
set host-key-type=ed25519
set host-key-size=4096
set strong-crypto=yes
Priskiriame kitą, nestandartinį SSH tinklo prievadą, pvz: 2222.
/ip/servise/set ssh port=2222
Perkuriame esančius senesnius ir nesaugius turimus raktus.
# Įspėjimas # – prieš tai importuoti privatūs raktai nebeveiks, jei naudojate prisijungimą tik su privačiu raktu.
/ip ssh regenerate-host-key
Toliau susikuriame SSH privatų ir viešą raktą vartotojui ssh_in. IP adresas yra įrenginio, į kurį jungsimės 172.16.1.254.
ssh-keygen -t ed25519 -f ssh_in -C "ssh_in@172.16.1.254"
Turime gauti tokius rezultatus:
- ssh_in # Privatus sugeneruotas raktas
- ssh_in.pub # Viešas sugeneruotas raktas, kurį įkelsime į maršrutizatorių ir priskirsime varotojui.
Rekomenduojame išjungti leidimą prisijungti SSH protokolu, vartotojui naudojant slaptažodį.
ip/ssh/set always-allow-password-login=no
Patalpiname į Files skyrių ssh_in.pub failą ir importuojame viešą raktą vartotojui ssh_in.
/user/ssh-keys/import public-key-file=ssh_in.pub user=ssh_in
Ištestuojame prisijungimus. Jei viskas veikia – turime vartotoją, kuris gali jungtis naudojant SSH protokolą ir turi ribotas vartotojo teises. Šio vartotojo reikės, tolimesniems veiksmams atlikti.
ssh -i id_ed ssh_in@172.16.1.254 -p 2222
Kaip rašėme atėjo laikas sukurti dar vieną vartotoją su pilnomis teisėmis sistemoje, nes admin vartotoją pašalinsime. Ateityje naudosime tik šį, naujai sukurtą vartotoją, pagrindiniam įrenginio konfigūravimui.
Sukuriame naują vartotoją man_user:
/user add group=full name=man_user password=slapta
Dabar turėdami šiuos du vartotojus, galime panaudoti vieną iš vartotojų prisijungimo strategijų. Trumpai aprašysime kelią, kaip įgalinti Winbox paslaugos naudojimą trumpam laikui iš išorės, naudojantis šiais dviem vartotojais.
1) Prisijungiame su vartotoju ssh_in SSH protokolu, naudodami jo privatų raktą.
2) Tada aktyvuojame (prieš tai buvo deaktyvuotas) Winbox naudodami komandą:
/ip/servise/set winbox disable=no
3) Prisijungiame su vartotoju man_user naudodamiesi Winbox paslauga ir atliekame reikalingus konfigūracijos pakeitimus.
4)Baigę darbą prisijungiame prie įrenginio vėl SSH protokolu ir deaktyvuojame Winbox paslaugą.
/ip/servise/set winbox disable=yes
5)Atsijungiame iš SSH tinklo paslaugos.
Naudojantis šia strategija, rekomenduojame sukurti šias ugniasienės taisykles, jei SSH protokolo pasiekimas yra paliekamas iš išorės.
/ip firewall filter
add action=drop chain=input comment="Stabdome SSH prisijungimu bandymus" dst-port=2222 \
protocol=tcp src-address-list=sshblock
add action=add-src-to-address-list address-list=sshblock \
address-list-timeout=5m chain=input connection-state=new dst-port=2222 \
log=yes protocol=tcp src-address-list=sshblock_st1
add action=add-src-to-address-list address-list=sshblock_st3 \
address-list-timeout=3m chain=input connection-state=new dst-port=2222 \
log=yes protocol=tcp src-address-list=sshblock_st2
add action=add-src-to-address-list address-list=sshblock_st1 \
address-list-timeout=3m chain=input connection-state=new dst-port=2222 \
log=yes protocol=tcp
add action=add-src-to-address-list address-list=sshblock_st2 \
address-list-timeout=3m chain=input connection-state=new dst-port=2222 \
log=yes protocol=tcp src-address-list=sshblock_st1
add action=accept chain=input comment="Leidziame SSH" dst-port=2222 protocol=tcp
add chain=input comment="Leidziame Winbox" dst-port=8291 protocol=tcp
Vartotojo prisijungimas naudojant valdymo VPN
Dar vienas nutolusių įrenginių valdymo pavyzdys, kada yra sukuriamas prisijungimas prie įrenginio, panaudojant VPN tinklo technologiją.
Šiai strategijai galima pasirinkti Jums labiausiai tinkantį VPN protokolą, pagal verslo reikalavimus. Tačiau rekomenduojame naudoti vieną iš šių Wireguard, IPSEC (IKE2 su prisijungimu naudojant sertifikatus). Pastarieji yra vieni saugiausių VPN protokolų šiuo metu. Tačiau strategijos pavyzdyje panaudosime paprasčiausią ir greičiausiai sukonfigūruojamą VPN protokolą SSTP. Šis protokolas taip pat yra ganėtinai saugus, jei naudojame ne senesnę TLS versiją kaip 1.2.
Viešo ir privataus rakto infrastruktūros sukūrimas, prieš įjungiant SSTP protokolą.
Sukuriame CA, įrenginio ir kliento šablonus, įrenginyje į kurį jungsimės naudodami SSTP protokolą.
/certificate
add name=ca-template common-name=r1ca country=LT state=Klaipeda locality=LT organization=IT unit=IT key-usage=key-cert-sign,crl-sign subject-alt-name=IP:::
add name=server-template common-name=r1sstpserver country=LT state=Klaipeda locality=LT organization=IT unit=IT key-usage=key-cert-sign,crl-sign,digital-signature,key-encipherment,data-encipherment subject-alt-name=IP:::
add name=client-template common-name=man01 country=LT state=Klaipeda locality=LT organization=IT unit=IT key-usage=key-cert-sign,crl-sign,digital-signature,key-encipherment,data-encipherment subject-alt-name=IP:::
Verta paminėti, kad į laukelįsubject-alt-name=IP::: galime įtraukti IP ir DNS adresus, jei reikia papildomai klientui užtikrinti, kad jungiamės į sertifikatuose nurodytus IP adresus.
Užtvirtiname CA įrenginyje. Taip pat nurodome IP adresą, kur ieškoti sertifikatų galiojimo atšaukimus.
/certificate sign ca-template ca-crl-host=1.1.1.2 name=r1ca
Panaudojant naują įrenginio CA pasirašome likusius sertifikatus. Taip pat suteikiame pasitikėjimo žymą.
/certificate sign server-template ca=r1ca name=r1sstpserver
/certificate sign client-template ca=r1ca name=man01
/certificate set r1sstpserver trusted=yes
/certificate set man01 trusted=yes
Toliau, išeksportuojame mums reikiamus sertifikatus, kad vartotojas galėtų prisijungti SSTP protokolu saugiai.
/certificate export-certificate r1ca type=pem export-passphrase=12345678
/certificate export-certificate man01 type=pem export-passphrase=12345678
Kliento įrenginyje išeksportuotus sertifikatus importuojame atitinkamai su jų privačiais raktais.
/certificate import file-name=cert_export_r1ca.crt passphrase=12345678 name=r1ca
/certificate import file-name=cert_export_r1ca.crt passphrase=12345678 name=r1ca
/certificate import file-name=cert_export_man01.crt passphrase=12345678 name=man01
/certificate import file-name=cert_export_man01.key passphrase=12345678 name=man01
Po šių žingsniu turime atitinkamą viešo/privataus rakto infrastruktūrą, kurią galėsime panaudoti su SSTP protokolo VPN prisijungimui.
Pirmiausia įjungiame SSTP protokolo palaikymą ir nustatome reikiamus mums parametrus, tarp jų ir sertifikato naudojimą.
/ppp/profile add name=MANAGEMENT
/ppp secret
add local-address=10.10.10.1 name=user1 password=labas profile=MANAGEMENT remote-address=10.10.10.2 service=sstp
/interface sstp-server server
set authentication=mschap2 certificate=r1sstpserver default-profile=MANAGEMENT enabled=yes pfs=yes tls-version=only-1.2 \
verify-client-certificate=yes
Toliau kliento pusėje atitinkamai suvedame SSTP kliento prisijungimo duomenis, priskiriame sertifikatus ir jungiamės.
/interface sstp-client
add authentication=mschap2 certificate=man01 connect-to=1.1.1.2 disabled=no \
name=2_R1 password=labas pfs=yes profile=default-encryption tls-version=only-1.2 user=user1 \
verify-server-address-from-certificate=no verify-server-certificate=yes
Testuojame ar per VPN apjungimą, galime pasiekti nutolusį įrenginį.
/system/ssh address=10.10.10.1 user=ssh_in port=2222
Naudojantis šia strategija, taip rekomenduojame sukurti ugniasienės taisykles, kad SSH, ar Winbox protokolo pasiekimas būtų aprašytas tik iš VPN vartotojo IP adreso. Jei reikia pasiekti iš daugiau nei vieno IP adreso, galima naudoti adresų sąrašus.
/ip firewall filter
add action=accept chain=input dst-port=2222 protocol=tcp src-address=10.10.10.2/
Lokalus prisijungimas ir valdymas
Renkantis lokalų tinklo įrenginio valdymą, (jei įrenginys nėra virtualizuotas) turime dvi valdymo galimybes – valdyti tinklo įrenginį iš to paties duomenų srauto potinklio (angl. In-band), arba valdyti tinklo įrenginį naudojant atskirą ryšio kanalą, nepriklausomą nuo duomenų srauto tinklo (angl. Out-of-band). Pastarasis valdymas gali būti vykdomas per dedikuotą tinklo įrenginio jungtį ar kitokį fizinį ryšį (pvz. per serijinį prievadą ar specialią valdymo sąsają).
Abu valdymo būdai turi savo privalumų. Tiesioginis valdymas yra patogesnis kasdienėje veikloje, tačiau netiesioginis užtikrina didesnį patikimumą ir saugumą.
Kad ir kokio dydžio būtų jūsų tinklas, rekomenduojame rinktis netiesioginį tinklo įrenginio valdymą lokaliame tinkle. Geriausia sukurti atskirą valdymo potinklį VLAN (esant ypač aukšto saugumo reikalavimams gali būti kuriamas ne vienas toks potinklis) su atskiru tinklo adresavimu visiems įrenginiams. Tada priskirti įrenginio tinklo prievadą tik šiam valdymui. Taip pat svarbu, kad pasirinktas prievadas nebūtų virtualaus tilto (angl. Bridge) sudėtyje.
Toliau konfigūracija atliekame, pagal pasirinktą aplinką. Priskirsime tinklo įrenginyje tinklo prievadą enther3, kuris dalyvaus kaip klientas VLAN100 komutatoriaus potinklyje. IP adresą suteiksime 10.10.100.254/24, kuris visiems kitiems šio potinklio įrenginiams bus kaip šliuzas.
/ip address add address=10.10.100.254/24 interface=ether3
Verta paminėti apie naują technologiją VRF, kurios pagalba yra sukuriamas virtualus maršrutizatorius su atskirais duomenų srautai. Pranašei kaip VLAN, tik maršrutizatoriaus lygyje.
Jo pagalba galima sukurti atskirtą virtualų
/ip/vrf/add name=MANAGEMENT interfaces=ether3
Tinklo įrenginį įtraukus į valdymo potinklį, svarbu, naudojant ugniasienės taisykles, neleisti prisijungti prie įrenginio, iš kitų potinklių. Pateikiame paprastas ugniasienės taisykles, kaip pavyzdys, potinklio 192.168.168.0/24, kuriam neleisime jokių TCP prisijungimų prie įrenginio.
Leisime prisijungti tik IP adresui 10.10.100.1/32 naudojant SSH ir Winbox protokolus. Visas kitas duomenų į įrenginį įeinantis srautas yra blokuojamas. Taip pat verta paminėti, kad vietoje vieno IP adreso, galima ugniasienės taisykles naudoti su IP adresą sąrašais. Taip bus galime pridėti ir daugiau pavienių IP administravimo adresų.
/ip firewall filter
add action=accept chain=input dst-port=2222 protocol=tcp src-address=10.10.100.1
add action=accept chain=input dst-port=8291 protocol=tcp src-address=10.10.100.1
add action=accept chain=input protocol=icmp src-address=10.10.100.1
add action=drop chain=input protocol=tcp src-address=192.168.168.0/24
add action=drop chain=input
Sluoksniuota apsauga
Ugniasienės taisykles, mes galime apjungti su IP serviso ir vartotojo leidimais jungtis iš tam tikro IP adreso. To pasekoje, mes gauname daugiasluoksnę prisijungimo apsaugą. Kaip pavyzdį pateiksime SSH protokolo ir vartotojo SSH_IN apribojimus jungtis tik iš IP adreso 10.10.100.1/32.
/ip/service set ssh address=10.10.100.1/32
/user/set ssh_in address=10.10.100.1/32
Jei naudojame VRF technologiją su sukurtu virtualiu maršrutizavimu management.
/ip/service set ssh address=10.10.100.1/32 vrf=management
Žemesnio lygio prisijungimas
Įprastai pirminę Mikrotik tinklo įrangos konfigūraciją atliekame naudodami Winbox programą. Įjungus šią programinę įrangą, jos ekrane matome vietiniame tinkle esančius Mikrotik įrenginius, prie kurių galime prisijungti IP adreso pagalba arba MAC adreso pagalba. Baigę konfigūracijos darbus ir apsaugoję įrenginį L3 lygyje, dažnai pamirštame apie MAC prisijungimo apsaugojimą. Pastarasis prisijungimas visada yra įjungtas pagal pradinius gamyklinius nustatymus. Todėl reikia nepamiršti apsaugoti ir šį prisijungimo metodą.
Prisijungimo galimybę Winbox programa naudojant MAC tinklo įrenginyje teikia MAC WinBox Server tinklo paslauga. Taip pat norime atkreipti dėmesį, kad veikia dar viena panaši tinklo paslauga Mac Telnet server, kuri leidžia prijungti naudojant MAC adresą Telnet protokolu. Šią paslaugą rekomenduojame išjungti.
/tool/mac-server set allowed-interface-list=none
Taip pat išjungiame ir Telnet paslaugą, jei prieš tai nebuvote išjungę.
/ip/service/disable telnet
Grįžtant prie Winbox prisijungimo naudojant MAC adresą, galime išjungti visiškai arba apriboti, priskiriant valdymo tinklui priskirtam įrenginio tinklo prievadui.
Priskiriame valdymo tinklui priskirtam tinklo įrenginio prievadui pagal tinklo įrenginių sąrašą MANAGEMENT.
/interface/list add name=MANAGEMENT
/interface/list/member add interface=ether3 list=MANAGEMENT
/tool/mac-server/set allowed-interface-list=MANAGEMENT
Apribojame visai.
/tool/mac-server/set allowed-interface-list=none
Pabaigai, dar viena tinklo funkcija, tiksliau rinkinys visų protokolų (CDP, LLDO, MNDP), kurio pagalba galime matyti (atrasti) kitus tinklo įrenginius, esančius tame pačiame potinklyje. Jis Mikrotik tinklo įrenginyje vadinamas kaimynų atradimu (angl. Neighboards Discovery). Šią tinklo paslaugą taip pat naudoją Winbox programa, o išjungus – Winbox nebematys jūsų tinkle esančio Mikrotik tinklo įrenginio.
Kadangi ši tiklo paslauga teikia ir gauna nemažai informacijos apie tinklo įrenginius esančius potinklyje, rekomenduojama apriboti jos veikimą priskiriant tik valdymo tinklo prievadą arba tiesiog visiškai išjungti.
Apribojame priskirdami valdymo potinkliui priskirtam tinklo prievadui ether3.
/interface/list add name=MANAGEMENT
/interface/list/member add interface=ether3 list=MANAGEMENT
/ip neighbor discovery-settings set discover-interface-list=MANAGEMENT
Išjungiame visiškai šią paslaugą.
/ip neighbor discovery-settings set discover-interface-list=none