Minu elluviimata projekt. 200 MikroTik marsruutijaga vÔrk.

Minu elluviimata projekt. 200 MikroTik marsruutijaga vÔrk.

Tere kĂ”igile. See artikkel on mĂ”eldud neile, kellel on rohkesti MikroTik seadmeid, ja kes soovivad saavutada maksimaalset ĂŒhtsust, et mitte ĂŒhendada igat seadet eraldi. Selles artiklis kirjeldan projekti, mis kahjuks ei jĂ”udnud reaalsesse ellu inimfaktorite tĂ”ttu. LĂŒhidalt: ĂŒle 200 ruuteri, kiire seadistamine ja personali koolitus, ĂŒhtsuse saavutamine piirkondade kaupa, vĂ”rgu ja teatud hostide filtreerimine, lihtne reeglite lisamise vĂ”imalus kĂ”ikidele seadmetele, logimine ja ligipÀÀsu kontroll.

Allpool kirjeldatu ei pretendeeri valmi juhtumile, kuid loodan, et see aitab teil oma vĂ”rkude planeerimisel ja vigade minimeerimisel. VĂ”ib-olla tunduvad mĂ”ned punktid ja lahendused teile mitte eriti Ă”iged - kui nii, siis kirjutage kommentaarides. Kritiseerimine on antud juhul kogemus meie ĂŒhisesse kogumisse. Seega, lugeja, vaata kommentaare, vĂ”ib-olla on autor teinud tĂ”sise vea - kogukond aitab.

Ruuterite arv 200-300, hajutatud erinevatesse linnadesse erineva internetiĂŒhenduse kvaliteediga. On vajalik, et kĂ”ik oleks ilus ja arusaadav, et selgitada kohalikele administreerijatele, kuidas kĂ”ik töötab.

Nii, millest iga projekt algab. Muidugi, TEx.

  1. VÔrkude plaanide korraldamine kÔikides filiaalides vastavalt kliendi nÔudmistele, vÔrkude segmentatsioon (3 kuni 20 vÔrku filiaalides sÔltuvalt seadmete arvust).
  2. Seadmete seadistamine igas filiaalis. Pakkuja tegeliku lÀbilaskevÔime kontrollimine erinevates töötingimustes.
  3. Seadmete kaitse korraldamine, haldamine valgelistide alusel, rĂŒnnakute automaatne tuvastamine ja musta nimekirja automaatne lisamine kindlaksmÀÀratud ajavahemikuks, erinevate tehniliste vahendite kasutamise minimeerimine, mis vĂ”ivad juhtimise juurdepÀÀsu tabamise kohta ja teenindamisest loobumise.
  4. Kaitstud VPN-ĂŒhenduste korraldamine vĂ”rgu filtreerimisega vastavalt kliendi nĂ”udmistele. Iga filiaali vĂ€hemalt 3 VPN-ĂŒhendust keskusesse.
  5. Punktide 1 ja 2 pÔhjal. Valige optimaalsed teed tÔrkekindlate VPN-ide ehitamiseks. Dynaamilise marsruutimise tehnoloogia, kui see on Ôigesti pÔhjendatud, vÔib valida teostaja.
  6. Liiklusprioriteetide korraldamine protokollide, portide, hostide ja teiste spetsiifiliste teenuste pÔhjal, mida klient kasutab. (VOIP, hostid oluliste teenuste jaoks)
  7. Marsruuterite sĂŒndmuste jĂ€lgimise ja logimise korraldamine tehnilise toe töötajate reageerimise jaoks.

Kuidas me mÔistame, koostatakse tehnilised nÔuded teatud juhtudel. Need nÔuded koostasin ise, kuuldes pÔhiprobleeme. Olen arvestanud, et nende punktide tÀitmisega vÔib tegeleda keegi teine.

Milliseid vahendeid kasutatakse nende nÔuete tÀitmiseks:

  1. ELK stack (aegade möödudes tuli arusaam, et logstashi asemel kasutatakse fluentd).
  2. Ansible. Mugavuse huvides haldamise ja juurdepÀÀsu jagamise jaoks kasutame AWX-i.
  3. GITLAB. Siin pole vaja pikalt seletada. Kuidas ilmanekse versioonikontrollid meie konfiguratsioonide jaoks.
  4. PowerShell. Algse konfiguratsiooni genereerimiseks tuleb lihtne skript.
  5. Dokuwiki, dokumentatsiooni ja juhendite kirjutamiseks. Antud juhul kasutame habr.com.
  6. JĂ€lgimist teostatakse zabbixi kaudu. Seal joonistatakse ka ĂŒhenduste skeem ĂŒldiseks arusaamiseks.

EFK seadistamise hetked

Esimese punkti puhul kirjeldan ainult ideoloogiat, millega indeksid luuakse. On palju
ilusate artiklite seas seadistamise ja logide vastuvÔtmise kohta mikrotik seadmetest.

Peatun mÔningatel hetkedel:

1. Skeemi kohaselt tuleks kaaluda logide vastuvÔtmist erinevates kohtades ja erinevatel portidel. Selleks kasutame logide kogujat. Samuti soovime teha universaalseid graafikuid kÔigi marsruuterite jaoks juurdepÀÀsu jagamise vÔimalusega. Seega loome indeksid jÀrgmiselt:

see on kild konfiguratsioonist fluentd tĂŒĂŒp elasticsearch
logstash_format true
indeksi_nimi mikrotiklogs.north
logstash_prefix mikrotiklogs.north
vÀlgukeskmine 10s
hostid elasticsearch:9200
port 9200

Nii saame marsruuterid ĂŒhendada ja segmentida plaani kohaselt - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Miks nii keeruliseks teha? Me mĂ”istame, et meil on ĂŒle 200 seadme. KĂ”ike ei saa jĂ€lgida. Elasticsearchi versiooniga 6.8 on meil saadaval turvaseaded (ilma litsentsi ostmata), seega saame jagada Ă”igusi vaatamiseks tehnilise toe töötajate vĂ”i kohalike sĂŒsteemiadministraatorite vahel.
Tabelid, graafikud – siin tuleb lihtsalt kokku leppida, kas kasutada ĂŒhtseid vĂ”i lasta igalĂŒhel teha, nagu tahab.

2. Logimise kohta. Kui firewall'i reeglites aktiveerime logi, siis nimed teeme ilma tĂŒhikuteta. NĂ€ha on, et kasutades lihtsat konfiguratsiooni fluentd's, saame andmeid filtreerida ja mugavaid paneele teha. Alloleval pildil on minu kodune ruuter.

Minu elluviimata projekt. 200 MikroTik marsruutijaga vÔrk.

3. Ruumi ja logide kohta. Keskmiselt, 1000 sÔnumit tunni kohta, logid vÔtavad 2-3 MB pÀevas, mis, nÔustuge, ei ole palju. Elasticsearchi versioon 7.5.

ANSIBLE.AWX

Kuni meie Ônneks on meil olemas valmis moodul routeros'ele.
Mainisin AWX-i, kuid allolevad kĂ€sud on ainult ansible'i puhtal kujul – arvan, et need, kes on ansible'iga töötanud, ei saa AWX kaudu kasutamisel probleeme.

Tunnistan ausalt, et enne vaatasin teisi juhiseid, kus kasutati ssh-d, ja kÔigil olid erinevad probleemid reageerimise ajaga ning veel hulk muid probleeme. Kordan, enne lahingut ei lÀinud; kÀsitlege seda teavet nagu eksperimenti, mis ei jÔudnud kaugemale 20 ruuterist.

Me peame kasutama sertifikaati vĂ”i kontot. Siin otsustate teie, mina olen sertifikaatide poolt. MĂ”ned peened punktid Ă”iguste osas. Teen Ă”igused write – vĂ€hemalt "reset config" teha ei Ă”nnestu.

Sertifikaadi genereerimise, kopeerimise ja impordiga ei tohiks probleeme tekkida:

LĂŒhidalt kĂ€sutuste loeteluTeie arvutis
ssh-keygen -t RSA, vastame kĂŒsimustele, salvestame vĂ”tme.
Kopeerime mikrotik'ule:
user ssh-keys import public-key-file=id_mtx.pub user=ansible
Eelnevalt tuleb konto luua ja sellele Ôigused mÀÀrata.
Kontrollime ĂŒhendust sertifikaadi kaudu
ssh -p 49475 -i /keys/mtx ansible@192.168.0.120

Kirjutame vi /etc/ansible/hosts
MT01 ansible_network_os=routeros ansible_ssh_port=49475 ansible_ssh_user=ansible
MT02 ansible_network_os=routeros ansible_ssh_port=49475 ansible_ssh_user=ansible
MT03 ansible_network_os=routeros ansible_ssh_port=49475 ansible_ssh_user=ansible
MT04 ansible_network_os=routeros ansible_ssh_port=49475 ansible_ssh_user=ansible

Ja siin on nÀide playbookist: -- name: add_work_sites
hosts: testmt
serial: 1
connection: network_cli
remote_user: mikrotik.west
gather_facts: yes
tasks:
-- name: add Work_sites
routeros_command:
commands:
-- /ip firewall address-list add address=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
-- /ip firewall address-list add address=habr.com list=work_sites comment=for_habr

Kuidas nĂ€ha ĂŒlaltoodud konfiguratsioonist, oma playbookide koostamine pole keeruline. Piisab, kui hĂ€sti osata mikrotik'i CLI-d. Kujutame ette olukorda, kus kĂ”ikide ruuterite pealt tuleb eemaldada address list teatud andmetega, siis:

Leida ja eemaldada/ip firewal address-list remove [find where list=«gov.ru»]

Ma ei lisanud siia kogu tulemusi tulemĂŒĂŒri kohta, kuna need on iga projekti jaoks individuaalsed. Aga ma vĂ”in kindlalt öelda, et kasutage ainult aadressi loendit.

GITLABi osas on kĂ”ik selge. Ma ei peatuks sellel hetkel. KĂ”ik on kenasti eraldi ĂŒlesannetes, mallides ja kĂ€itlejates.

Powershell

Siin on kolm faili. Miks Powershell? Konfiguratsioonide genereerimiseks vĂ”ib valida ĂŒkskĂ”ik millise tööriista, olenevalt sellest, mis kellelegi mugavam on. Antud juhul on kĂ”igil arvutites Windows, seega miks teha bash'i peal, kui Powershell on mugavam. Kellelegi, mis on mugav.

Siin on ise skript (lihtne ja arusaadav):[cmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$EXTERNALIPADDRESS,
[Parameter(Mandatory=$true)]
[string]$EXTERNALIPROUTE,
[Parameter(Mandatory=$true)]
[string]$BWorknets,
[Parameter(Mandatory=$true)]
[string]$CWorknets,
[Parameter(Mandatory=$true)]
[string]$BVoipNets,
[Parameter(Mandatory=$true)]
[string]$CVoipNets,
[Parameter(Mandatory=$true)]
[string]$CClientss,
[Parameter(Mandatory=$true)]
[string]$BVPNWORKs,
[Parameter(Mandatory=$true)]
[string]$CVPNWORKs,
[Parameter(Mandatory=$true)]
[string]$BVPNCLIENTSs,
[Parameter(Mandatory=$true)]
[string]$cVPNCLIENTSs,
[Parameter(Mandatory=$true)]
[string]$NAMEROUTER,
[Parameter(Mandatory=$true)]
[string]$ServerCertificates,
[Parameter(Mandatory=$true)]
[string]$infile,
[Parameter(Mandatory=$true)]
[string]$outfile
)

Get-Content $infile | Foreach-Object {$_.Replace("EXTERNIP", $EXTERNALIPADDRESS)} |
Foreach-Object {$_.Replace("EXTROUTE", $EXTERNALIPROUTE)} |
Foreach-Object {$_.Replace("BWorknet", $BWorknets)} |
Foreach-Object {$_.Replace("CWorknet", $CWorknets)} |
Foreach-Object {$_.Replace("BVoipNet", $BVoipNets)} |
Foreach-Object {$_.Replace("CVoipNet", $CVoipNets)} |
Foreach-Object {$_.Replace("CClients", $CClientss)} |
Foreach-Object {$_.Replace("BVPNWORK", $BVPNWORKs)} |
Foreach-Object {$_.Replace("CVPNWORK", $CVPNWORKs)} |
Foreach-Object {$_.Replace("BVPNCLIENTS", $BVPNCLIENTSs)} |
Foreach-Object {$_.Replace("CVPNCLIENTS", $cVPNCLIENTSs)} |
Foreach-Object {$_.Replace("MYNAMERROUTER", $NAMEROUTER)} |
Foreach-Object {$_.Replace("ServerCertificate", $ServerCertificates)} | Set-Content $outfile

Palun andke andeks, ma ei saa kÔiki reegleid avaldada, kuna see ei oleks just ilus. Reegleid saate ise koostada, jÀrgides parimaid praktikaid.

NÀiteks, siin on linkide loetelu, mille jÀrgi mina juhindusin:wiki.mikrotik.com/wiki/Manual:Securing_Your_Router
wiki.mikrotik.com/wiki/Manual:IP/Firewall/Filter
wiki.mikrotik.com/wiki/Manual:OSPF-examples
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual:Winbox
wiki.mikrotik.com/wiki/Manual:Upgrading_RouterOS
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack — siin tuleb mĂ€rkida, et fasttrack'i sisselĂŒlitamisel ei tööta prioriseerimise ja liikluskuju reeglid – kasulik nĂ”rkadele seadmetele.

MÀrkused muutujate kohta:NÀiteks on vÔetud jÀrgmised vÔrgud:
192.168.0.0/24 töövÔrk
172.22.4.0/24 VOIP vÔrk
10.0.0.0/24 vÔrk klientidele, kellel pole juurdepÀÀsu kohalikule vÔrgule
192.168.255.0/24 VPN vÔrk suurtele osakondadele
172.19.255.0/24 VPN vÔrk vÀikestele

VĂ”rgu aadress koosneb neljast kĂŒmnendarvust, vastavalt A.B.C.D, toimetatakse sarnasel pĂ”himĂ”ttel asendamist, kui kĂ€ivitamisel kĂŒsitakse B, siis tuleb sisestada vĂ”rgu 192.168.0.0/24 numbri 0 jaoks, ja C = 0.
$EXTERNALIPADDRESS — mÀÀratud aadress teenusepakkujalt.
$EXTERNALIPROUTE — vaikimisi marsruut vĂ”rku 0.0.0.0/0
$BWorknets — TöövĂ”rk, meie nĂ€ites on siin 168
$CWorknets — TöövĂ”rk, meie nĂ€ites on siin 0
$BVoipNets — VOIP vĂ”rgustik meie nĂ€ites siin 22
$CVoipNets — VOIP vĂ”rgustik meie nĂ€ites siin 4
$CClientss — Klientide vĂ”rk – juurdepÀÀs ainult internetile, meie puhul siin 0
$BVPNWORKs — VPN vĂ”rgustik suurtele harudele, meie nĂ€ites 20
$CVPNWORKs — VPN vĂ”rgustik suurtele harudele, meie nĂ€ites 255
$BVPNCLIENTS — VPN vĂ”rgustik vĂ€ikestele harudele, tĂ€hendab 19
$CVPNCLIENTS — VPN vĂ”rgustik vĂ€ikestele harudele, tĂ€hendab 255
$NAMEROUTER — ruuteri nimi
$ServerCertificate — sertifikaadi nimi, mille eelnevalt impordite
$infile — MÀÀrake failitee, millelt konfi loeme, nĂ€iteks D:config.txt (parem ingliskeelne tee ilma jutumĂ€rkide ja tĂŒhikuteta)
$outfile — mÀÀrake tee, kuhu salvestada, nĂ€iteks D:MT-test.txt

Ma muutsin nÀidatud aadresse tahtlikult arusaadavatel pÔhjustel.

JĂ€tan vĂ€lja rĂŒnnakute ja ebanormaalse kĂ€itumise tuvastamise punkti – see vÀÀrib eraldi artiklit. Kuid tasub mĂ€rkida, et selle kategooria korral on vĂ”imalik kasutada jĂ€lgimisandmeid Zabbix'ist + töötatud andmeid curl'iga elasticsearchist.

Millistele momentidele tuleks tÀhelepanu pöörata:

  1. VĂ”rgud. Paremini koostada kohe loetaval kujul. Excel on tĂ€iesti piisav. Kahjuks nĂ€en vĂ€ga sageli, et vĂ”rgud koostatakse pĂ”himĂ”tte jĂ€rgi 'Ilmus uus haru, siin on teile /24'. Keegi ei uurige, kui palju seadmeid antud kohas eeldatakse ja kas edasine kasv on vĂ”imalik. NĂ€iteks avati vĂ€ike pood, kus on algselt selge, et seadmeid ei ole rohkem kui 10, miks eraldada /24? Suurte harude puhul – vastupidi, eraldatakse /24, kuid seadmeid on 500 — lihtsalt saab vĂ”rku lisada, kuid tahaks kĂ”ike kohe lĂ€bi mĂ”elda.
  2. Filtreerimise reeglid. Kui projektis eeldatakse, et vĂ”rgud on eraldatud ja maksimaalne segmenteerimine. Parim praktika muutub ajas. Varasemalt eraldati arvutivĂ”rk ja printerivĂ”rk, nĂŒĂŒd on tĂ€iesti normaalne neid vĂ”rke mitte eraldada. Tuleb kasutada tervet mĂ”istust ja mitte paljundada palju alamvĂ”rke seal, kus neid ei vajata, ning mitte ĂŒhendada kĂ”iki seadmeid ĂŒhte vĂ”rku.
  3. Kuldsed seaded kĂ”igil ruuteritel. See tĂ€hendab, et kui olete planeeringuga mÀÀratlenud, tuleks kohe kĂ”ik ette nĂ€ha ja pĂŒĂŒda teha nii, et kĂ”ik seadistused oleksid identsed – oleksid ainult erinevad aadresside loendid ja IP-aadressid. Probleemide tekkimisel on aega tĂ”rgete kĂ”rvaldamiseks vĂ€hem.
  4. Organisatsioonilised aspektid on sama olulised kui tehnilised. Tihti tÀidavad laisad töötajad antud soovitusi "manuaalselt", kasutades valmis konfiguratsioone ja skripte, mis lÔpuks toob kaasa probleeme, mille tÔttu on asjata.

DĂŒnaamilise marsruutimise kohta. Kasutati OSPF-i koos tsoonide jagamisega. Kuid see on testimisstand, tĂ”elistes tingimustes on selliste asjade seadistamine palju huvitavam.

Loodan, et keegi ei olnud kurb, et ma ei postitanud marsruuterite konfiguratsioone. Arvan, et lingid on piisavad, edasi sÔltub kÔik nÔudmistest. Ja muidugi testid, vajalik on rohkem teste.

Soovin kÔigile uuel aastal oma projekte ellu viia. Olgu teie kÔrval access granted!!!

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster