My onvoltooide projek. Netwerk van 200 MikroTik-routers

My onvoltooide projek. Netwerk van 200 MikroTik-routers

Hi almal. Hierdie artikel is bedoel vir diegene wat baie Mikrotik-toestelle in die park het, en wat maksimum vereniging wil maak om nie afsonderlik aan elke toestel te koppel nie. In hierdie artikel sal ek 'n projek beskryf wat weens menslike faktore ongelukkig nie gevegstoestande bereik het nie. Kortom: meer as 200 routers, vinnige opstelling en opleiding van personeel, eenwording volgens streek, filternetwerke en spesifieke gashere, die vermoë om maklik reëls by alle toestelle te voeg, aanteken en toegangsbeheer.

Wat hieronder beskryf word, gee nie voor om 'n klaargemaakte saak te wees nie, maar ek hoop dit sal vir jou nuttig wees wanneer jy jou netwerke beplan en foute minimaliseer. Miskien sal sommige punte en besluite nie vir jou heeltemal korrek lyk nie - indien wel, skryf in die kommentaar. Kritiek in hierdie geval sal 'n ervaring in 'n algemene spaarvarkie wees. Daarom, leser, kyk in die kommentaar, miskien het die skrywer 'n growwe fout gemaak - die gemeenskap sal help.

Die aantal routers is 200-300, verspreid in verskillende stede met verskillende kwaliteit internetverbindings. Dit is nodig om alles mooi te maak en op 'n toeganklike manier aan plaaslike admins te verduidelik hoe alles sal werk.

So waar begin elke projek? Natuurlik, met TK.

  1. Organisering van 'n netwerkplan vir alle takke volgens klantvereistes, netwerksegmentering (van 3 tot 20 netwerke in takke, afhangende van die aantal toestelle).
  2. Stel toestelle in elke tak op. Kontroleer die werklike bandwydte van die verskaffer in verskillende werksomstandighede.
  3. Organisasie van toestelbeskerming, witlysbeheer, outo-opsporing van aanvalle met outo-swartlys vir 'n sekere tydperk, minimalisering van die gebruik van verskeie tegniese middele wat gebruik word om beheertoegang en ontkenning van diens te onderskep.
  4. Organisasie van veilige vpn-verbindings met netwerkfiltrering volgens klantvereistes. Ten minste 3 vpn-verbindings van elke tak na die sentrum.
  5. Gebaseer op punte 1, 2. Kies die beste maniere om foutverdraagsame vpn te bou. Die dinamiese roetetegnologie, met die korrekte regverdiging, kan deur die kontrakteur gekies word.
  6. Organisasie van verkeersprioritisering deur protokolle, poorte, gashere en ander spesifieke dienste wat die kliënt gebruik. (VOIP, gashere met belangrike dienste)
  7. Organisering van monitering en aanteken van router-gebeure vir die reaksie van tegniese ondersteuningspersoneel.

Soos ons verstaan, word die TOR in sommige gevalle uit die vereistes saamgestel. Ek het hierdie vereistes op my eie geformuleer, nadat ek na die hoofprobleme geluister het. Hy het die moontlikheid erken dat iemand anders die implementering van hierdie punte kan opneem.

Watter gereedskap sal gebruik word om aan hierdie vereistes te voldoen:

  1. ELK-stapel (na 'n geruime tyd was dit verstaan ​​dat fluentd in plaas van logstash gebruik sou word).
  2. Ansible. Vir gemak van administrasie en deling van toegang, sal ons AWX gebruik.
  3. GITLAB. Dit is nie nodig om hier te verduidelik nie. Waar sonder weergawebeheer van ons konfigurasies.
  4. PowerShell. Daar sal 'n eenvoudige skrif wees vir die aanvanklike generasie van die konfigurasie.
  5. Doku wiki, vir die skryf van dokumentasie en handleidings. In hierdie geval gebruik ons ​​habr.com.
  6. Monitering sal deur zabbix gedoen word. Daar sal ook 'n verbindingsdiagram wees vir 'n algemene begrip.

EFK opstelpunte

Op die eerste punt sal ek slegs die ideologie beskryf waarop die indekse gebou gaan word. Daar is baie
uitstekende artikels oor die opstel en ontvang van logs vanaf toestelle wat mikrotik gebruik.

Ek sal stilstaan ​​by 'n paar punte:

1. Volgens die skema is dit die moeite werd om te oorweeg om logs van verskillende plekke en op verskillende hawens te ontvang. Om dit te doen, sal ons 'n log aggregator gebruik. Ons wil ook universele grafika vir alle routers maak met die vermoë om toegang te deel. Dan bou ons die indekse soos volg:

hier is 'n stukkie config met fluentd elastiese soektog
logstash_formaat waar
indeksnaam mikrotiklogs.noord
logstash_prefix mikrotiklogs.north
spoelinterval 10s
die leërskare elasticsearch: 9200
hawe 9200

Ons kan dus routers kombineer en segmenteer volgens die plan - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Hoekom dit so moeilik maak? Ons verstaan ​​dat ons 200 of meer toestelle sal hê. Moenie alles volg nie. Sedert weergawe 6.8 van elasticsearch is sekuriteitsinstellings vir ons beskikbaar (sonder om 'n lisensie te koop), dus kan ons kykregte tussen tegniese ondersteuningswerknemers of plaaslike stelseladministrateurs versprei.
Tabelle, grafieke - hier moet jy net saamstem - óf gebruik dieselfde, óf almal doen dit soos dit vir hom gerieflik sal wees.

2. Deur aan te meld. As ons aanteken in die firewall-reëls aktiveer, maak ons ​​die name sonder spasies. Dit kan gesien word dat die gebruik van 'n eenvoudige konfigurasie in vloeiend, ons die data kan filter en gerieflike panele kan maak. Die foto hieronder is my tuisrouter.

My onvoltooide projek. Netwerk van 200 MikroTik-routers

3. Volgens die besette spasie en stompe. Gemiddeld, met 1000 boodskappe per uur, neem die logs 2-3 MB per dag op, wat, jy sien, nie so baie is nie. elasticsearch weergawe 7.5.

ANSIBLE.AWX

Gelukkig vir ons het ons 'n klaargemaakte module vir routeros
Ek het uitgewys oor AWX, maar die opdragte hieronder gaan net oor ansible in sy suiwerste vorm - ek dink vir diegene wat met ansible gewerk het, sal daar geen probleme wees om awx deur die gui te gebruik nie.

Om eerlik te wees, voor dit het ek na ander gidse gekyk waar hulle ssh gebruik het, en almal het verskillende probleme gehad met reaksietyd en 'n klomp ander probleme. Ek herhaal, dit het nie tot die stryd gekom nie , neem hierdie inligting as 'n eksperiment wat nie verder gegaan het as 'n stand van 20 routers nie.

Ons moet 'n sertifikaat of 'n rekening gebruik. Dit is aan jou om te besluit, ek is vir sertifikate. Een of ander subtiele punt oor regte. Ek gee die regte om te skryf - ten minste sal "reset config" nie werk nie.

Daar behoort geen probleme te wees met die generering, kopiëring van die sertifikaat en invoer nie:

Kort lys van opdragteOp jou rekenaar
ssh-keygen -t RSA, beantwoord vrae, stoor die sleutel.
Kopieer na mikrotik:
gebruiker ssh-sleutels invoer publieke-sleutel-lêer=id_mtx.pub gebruiker=aanpasbaar
Eerstens moet jy 'n rekening skep en regte daaraan toeken.
Kontroleer die verbinding met die sertifikaat
ssh -p 49475 -i /keys/mtx [e-pos beskerm]

Skryf 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

Wel, 'n voorbeeld van 'n speelboek: naam: add_work_sites
gashere: testmt
reeks: 1
verbinding: netwerk_cli
remote_user: mikrotik.west
versamel_feite: ja
take:
naam: voeg Work_sites by
routeros_opdrag:
beveel:
- /ip firewall adres-lys voeg adres = gov.ru list = werk_webwerwe kommentaar = Kaartjie665436_Ochen_nado
- /ip firewall adreslys voeg adres=habr.com list=work_sites comment=for_habr by

Soos u uit die bogenoemde konfigurasie kan sien, is dit 'n eenvoudige saak om u eie speelboeke saam te stel. Dit is goed genoeg om cli mikrotik te bemeester. Stel jou 'n situasie voor waar jy die adreslys met sekere data op alle routers moet verwyder, dan:

Soek en verwyder/ip firewal adreslys verwyder [vind waar lys="gov.ru"]

Ek het doelbewus nie die hele firewall-lys hier ingesluit nie. dit sal individueel wees vir elke projek. Maar ek kan een ding vir seker sê, gebruik net die adreslys.

Volgens GITLAB is alles duidelik. Ek sal nie by hierdie oomblik stilstaan ​​nie. Alles is pragtig in terme van individuele take, sjablone, hanteerders.

Powershell

Daar sal 3 lêers wees. Hoekom powershell? Die instrument vir die generering van konfigurasies kan gekies word deur enigiemand wat meer gemaklik is. In hierdie geval het almal vensters op hul rekenaar, so hoekom doen dit op bash as powershell geriefliker is. Wie is gemakliker.

Die skrif self (eenvoudig en verstaanbaar):[cmdletBinding()] Param(
[Parameter(Verpligtend=$true)] [string]$EXTERNALIPADDRESS,
[Parameter(Verpligtend=$true)] [string]$EXTERNALIPROUTE,
[Parameter(Verpligtend=$true)] [string]$BWorknets,
[Parameter(Verpligtend=$true)] [string]$CWorknets,
[Parameter(Verpligtend=$true)] [string]$BVoipNets,
[Parameter(Verpligtend=$true)] [string]$CVoipNets,
[Parameter(Verpligtend=$true)] [string]$CClientss,
[Parameter(Verpligtend=$true)] [string]$BVPNWORKs,
[Parameter(Verpligtend=$true)] [string]$CVPNWORKs,
[Parameter(Verpligtend=$true)] [string]$BVPNCLIENTS'e,
[Parameter(Verpligtend=$true)] [string]$cVPNCLIENTSs,
[Parameter(Verpligtend=$true)] [string]$NAMEROUTER,
[Parameter(Verpligtend=$true)] [string]$ServerCertificates,
[Parameter(Verpligtend=$true)] [string]$inlêer,
[Parameter(Verpligtend=$waar)] [string]$uitlêer
)

Kry-inhoud $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", $cVNCLIENTSs)} |
Foreach-Object {$_.Replace("MYNAMEROUTER", $NAMEROUTER)} |
Foreach-Object {$_.Replace("ServerCertificate", $ServerCertificates)} | Stel-inhoud $outfile

Ek vra om verskoning, ek kan nie al die reëls uitlê nie. dit sal nie mooi wees nie. Jy kan self die reëls opstel, gelei deur die beste praktyke.

Byvoorbeeld, hier is 'n lys van skakels wat ek gelei is deur:wiki.mikrotik.com/wiki/Manual:Beveilig_Jou_roeteerder
wiki.mikrotik.com/wiki/Manual:IP/brandmuur/filter
wiki.mikrotik.com/wiki/Manual:OSPF-voorbeelde
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 - hier moet jy weet dat wanneer vinnige spoor geaktiveer is, die verkeersprioritisering en -vormreëls nie sal werk nie - nuttig vir swak toestelle.

Veranderlike konvensies:Die volgende netwerke word as voorbeeld geneem:
192.168.0.0/24 werkende netwerk
172.22.4.0/24 VOIP-netwerk
10.0.0.0/24-netwerk vir kliënte sonder LAN-toegang
192.168.255.0/24 VPN-netwerk vir groot takke
172.19.255.0/24 VPN-netwerk vir klein

Die netwerkadres bestaan ​​uit 4 desimale getalle, onderskeidelik ABCD, die vervanging werk volgens dieselfde beginsel, as dit B vra by opstart, moet jy die nommer 192.168.0.0 vir die netwerk 24/0 invoer, en vir C = 0 .
$EXTERNALIPADRESS - toegeken adres van die verskaffer.
$EXTERNALIPROUTE - verstekroete na netwerk 0.0.0.0/0
$BWorknets - Werkende netwerk, in ons voorbeeld sal daar 168 wees
$CWorknets - Werk netwerk, in ons voorbeeld sal dit 0 wees
$BVoipNets - VOIP-netwerk in ons voorbeeld hier 22
$CVoipNets - VOIP-netwerk in ons voorbeeld hier 4
$CClientss - Netwerk vir kliënte - toegang slegs tot die internet, in ons geval hier 0
$BVPNWORKs - VPN-netwerk vir groot takke, in ons voorbeeld 20
$CVPNWORKs - VPN-netwerk vir groot takke, in ons voorbeeld 255
$BVPNCLIENTS - VPN-netwerk vir klein takke, beteken 19
$CVPNCLIENTS - VPN-netwerk vir klein takke, beteken 255
$NAMEROUTER - router naam
$ServerCertificate - die naam van die sertifikaat wat jy eerste invoer
$infile - Spesifiseer die pad na die lêer waaruit ons die config sal lees, byvoorbeeld D:config.txt (beter Engelse pad sonder aanhalingstekens en spasies)
$outfile - spesifiseer die pad waarheen om te stoor, byvoorbeeld D:MT-test.txt

Ek het om ooglopende redes doelbewus die adresse in die voorbeelde verander.

Ek het die punt oor die opsporing van aanvalle en abnormale gedrag gemis - dit verdien 'n aparte artikel. Maar dit is die moeite werd om daarop te wys dat u in hierdie kategorie moniteringsdatawaardes van Zabbix + uitgewerkte kruldata van elasticsearch kan gebruik.

Watter punte om op te fokus:

  1. Netwerkplan. Dit is beter om dit in 'n leesbare vorm te skryf. Excel is genoeg. Ongelukkig sien ek gereeld dat netwerke saamgestel word volgens die beginsel "'n Nuwe tak het verskyn, hier is /24 vir jou." Niemand vind uit hoeveel toestelle op 'n gegewe plek verwag word en of daar verdere groei sal wees nie. Byvoorbeeld, 'n klein winkel het geopen, waarin dit aanvanklik duidelik is dat die toestel nie meer as 10 sal wees nie, hoekom toeken / 24? Vir groot takke, inteendeel, hulle ken / 24 toe, en daar is 500 toestelle - jy kan net 'n netwerk byvoeg, maar jy wil alles dadelik deurdink.
  2. Filterreëls. As die projek aanvaar dat daar skeiding van netwerke en maksimum segmentering sal wees. Beste praktyke verander met verloop van tyd. Voorheen het hulle 'n rekenaarnetwerk en 'n drukkernetwerk gedeel, nou is dit heel normaal om nie hierdie netwerke te deel nie. Dit is die moeite werd om gesonde verstand te gebruik en nie baie subnette te produseer waar dit nie nodig is nie en nie alle toestelle in een netwerk te kombineer nie.
  3. "Golden" instellings op alle routers. Dié. as jy 'n plan het. Dit is die moeite werd om alles dadelik te voorsien en te probeer seker maak dat alle instellings identies is - daar is net verskillende adreslys en IP-adresse. In die geval van probleme, sal die tyd vir ontfouting minder wees.
  4. Organisatoriese aspekte is nie minder belangrik as tegniese aspekte nie. Dikwels volg lui werknemers hierdie aanbevelings "handmatig", sonder om gereedgemaakte konfigurasies en skrifte te gebruik, wat uiteindelik tot probleme van nuuts af lei.

Deur dinamiese roetering. OSPF met sonering is gebruik. Maar dit is 'n toetsbank, in gevegsomstandighede is sulke dinge interessanter om op te stel.

Ek hoop niemand was ontsteld dat ek nie die konfigurasie van die routers geplaas het nie. Ek dink dat skakels genoeg sal wees, en dan hang dit alles af van die vereistes. En natuurlik toetse, meer toetse is nodig.

Ek wens almal om hul projekte in die nuwe jaar te realiseer. Mag toegang verleen met jou wees!!!

Bron: will.com

Voeg 'n opmerking