Moj nedokončan projekt. Omrežje 200 usmerjevalnikov MikroTik

Moj nedokončan projekt. Omrežje 200 usmerjevalnikov MikroTik

Pozdravljeni vsi skupaj. Ta članek je namenjen tistim, ki imajo v svojem voznem parku veliko Mikrotik naprav in želijo maksimalno poenotiti, da se ne priklapljajo na vsako napravo posebej. V tem članku bom opisal projekt, ki zaradi človeških dejavnikov žal ni dosegel bojnih pogojev. Na kratko: več kot 200 usmerjevalnikov, hitra nastavitev in usposabljanje osebja, poenotenje po regijah, filtriranje omrežij in določenih gostiteljev, možnost enostavnega dodajanja pravil vsem napravam, beleženje in nadzor dostopa.

To, kar je opisano spodaj, se ne pretvarja, da je že pripravljen primer, vendar upam, da vam bo koristilo pri načrtovanju vaših omrežij in zmanjševanju napak. Morda se vam nekatere točke in rešitve morda ne zdijo povsem pravilne - če je tako, napišite v komentarje. Kritika bo v tem primeru izkušnja za skupno blagajno. Zato, bralec, poglej komentarje, morda je avtor naredil resno napako - skupnost bo pomagala.

Število usmerjevalnikov je 200-300, razpršenih po različnih mestih z različno kakovostjo internetnih povezav. Vse je treba narediti lepo in lokalnim skrbnikom jasno razložiti, kako bo vse delovalo.

Kje se torej kateri koli projekt začne? Seveda, z TK.

  1. Organizacija omrežnega načrta za vse poslovalnice glede na zahteve naročnika, segmentacija omrežja (od 3 do 20 omrežij v poslovalnicah glede na število naprav).
  2. Postavitev naprav v posamezni poslovalnici. Preverjanje realne prepustne hitrosti ponudnika v različnih pogojih delovanja.
  3. Organizacija zaščite naprave, upravljanje belih seznamov, samodejno zaznavanje napadov s samodejnim črnim seznamom za določeno časovno obdobje, zmanjšanje uporabe različnih tehničnih sredstev, ki se uporabljajo za prestrezanje nadzora dostopa in zavrnitev storitev.
  4. Organizacija varnih VPN povezav s filtriranjem omrežja po zahtevah naročnika. Najmanj 3 VPN povezave od vsake podružnice do centra.
  5. Na podlagi točk 1, 2. Izberite optimalne načine za izgradnjo VPN-jev, odpornih na napake. Ob pravilni utemeljitvi lahko izvajalec izbere dinamično tehnologijo trasiranja.
  6. Organizacija prioritizacije prometa po protokolih, vratih, gostiteljih in drugih posebnih storitvah, ki jih uporablja stranka. (VOIP, gostitelji s pomembnimi storitvami)
  7. Organizacija spremljanja in beleženja dogodkov usmerjevalnika za odziv osebja tehnične podpore.

Kot razumemo, so tehnične specifikacije v številnih primerih sestavljene na podlagi zahtev. Te zahteve sem oblikoval sam, potem ko sem poslušal glavne težave. Dopustil je možnost, da bi za te točke poskrbel kdo drug.

Katera orodja bodo uporabljena za izpolnitev teh zahtev:

  1. ELK stack (čez nekaj časa je postalo jasno, da bo namesto logstash uporabljen fluentd).
  2. Ansible. Za lažjo administracijo in deljenje dostopa bomo uporabili AWX.
  3. GITLAB. Tukaj ni treba razlagati. Kje bi bili brez nadzora različic naših konfiguracij?
  4. PowerShell. Za prvo generacijo konfiguracije bo na voljo preprost skript.
  5. Doku wiki, za pisanje dokumentacije in vodnikov. V tem primeru uporabljamo habr.com.
  6. Spremljanje bo potekalo preko zabbix. Tam bo narisan tudi diagram povezave za splošno razumevanje.

Nastavitvene točke EFK

Glede prve točke bom opisal le ideologijo, po kateri bodo indeksi zgrajeni. Veliko jih je
odlični članki o nastavljanju in prejemanju dnevnikov iz naprav, ki poganjajo mikrotik.

Ustavil se bom pri nekaterih točkah:

1. Glede na diagram je vredno razmisliti o prejemanju dnevnikov iz različnih krajev in na različnih pristaniščih. Za to bomo uporabili zbiralnik dnevnikov. Prav tako želimo narediti univerzalno grafiko za vse usmerjevalnike z možnostjo deljenja dostopa. Nato gradimo indekse na naslednji način:

tukaj je delček konfiguracije s fluentd tip elasticsearch
logstash_format true
ime_indeksa mikrotiklogs.sever
logstash_prefix mikrotiklogs.sever
flush_interval 10 s
Gostitelji elastično iskanje: 9200
vrata 9200

Tako lahko kombiniramo usmerjevalnike in segmentiramo po načrtu - mikrotiklogs.zahod, mikrotiklogs.jug, mikrotiklogs.vzhod. Zakaj bi tako kompliciral? Zavedamo se, da bomo imeli 200 ali več naprav. Vsega ne moreš spremljati. Z verzijo elasticsearch 6.8 so nam na voljo varnostne nastavitve (brez nakupa licence), s čimer lahko razdelimo pravice za ogled med zaposlenimi v tehnični podpori ali lokalnimi sistemskimi skrbniki.
Tabele, grafi - tukaj se morate samo strinjati - ali uporabite iste ali pa vsak naredi, kar mu ustreza.

2. S sečnjo. Če omogočimo prijavo v pravila požarnega zidu, naredimo imena brez presledkov. Vidimo lahko, da lahko z uporabo preproste konfiguracije v fluentd filtriramo podatke in naredimo priročne plošče. Na spodnji sliki je moj domači usmerjevalnik.

Moj nedokončan projekt. Omrežje 200 usmerjevalnikov MikroTik

3. Po zasedenem prostoru in dnevnikih. V povprečju pri 1000 sporočilih na uro zavzamejo dnevniki 2-3 MB na dan, kar, vidite, ni tako veliko. Elasticsearch različica 7.5.

ANSIBLE.AWX

Na našo srečo imamo že pripravljen modul za usmerjevalnike
Omenil sem AWX, vendar se spodnji ukazi nanašajo le na ansible v njegovi čisti obliki - mislim, da za tiste, ki so delali z ansible, ne bo težav z uporabo awx prek grafičnega vmesnika.

Če sem iskren, sem pred tem pogledal druge vodiče, kjer so uporabljali ssh, in vsi so imeli različne težave z odzivnim časom in kup drugih težav. Ponavljam, ni prišlo do boja , vzemite to informacijo kot poskus, ki ni prišel dlje od stojala 20 usmerjevalnikov.

Uporabiti moramo potrdilo ali račun. Na vas je, da se odločite, jaz sem za certifikate. Nekaj ​​subtilne točke o pravicah. Dajem pravice za pisanje - vsaj "reset config" ne bo delovalo.

Pri ustvarjanju, kopiranju in uvozu potrdila ne bi smelo biti težav:

Kratek seznam ukazovNa vašem računalniku
ssh-keygen -t RSA, odgovori na vprašanja, shrani ključ.
Kopiraj v mikrotik:
uporabniški ssh-ključi import public-key-file=id_mtx.pub user=ansible
Najprej morate ustvariti račun in mu dodeliti pravice.
Preverjanje povezave s certifikatom
ssh -p 49475 -i /ključi/mtx [e-pošta zaščitena]

Registrirajte se v /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

No, primer knjige iger: - ime: add_work_sites
gostitelji: testmt
serija: 1
povezava: network_cli
oddaljeni_uporabnik: mikrotik.west
gather_facts: da
naloge:
- ime: dodaj Work_sites
routeros_command:
ukazi:
— /ip firewall address-list add address=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
— /ip seznam naslovov požarnega zidu add address=habr.com list=work_sites comment=for_habr

Kot lahko vidite iz zgornje konfiguracije, ustvarjanje lastnih knjig iger ni težko. Dovolj je, da dobro obvladate cli mikrotik. Predstavljajmo si situacijo, ko morate odstraniti seznam naslovov z določenimi podatki na vseh usmerjevalnikih, potem:

Poiščite in odstranite/ip požarni zid seznam naslovov odstranite [find where list="gov.ru"]

Tukaj namerno nisem vključil celotnega seznama požarnega zidu, ker ... za vsak projekt bo individualno. Toda eno stvar lahko rečem zagotovo, uporabljajte samo seznam naslovov.

Glede na GITLAB je vse jasno. Ne bom se zadrževal na tej točki. Vse je lepo za posamezne naloge, šablone, obdelovalce.

PowerShell

Tukaj bodo 3 datoteke. Zakaj powershell? Izberete lahko katero koli orodje za generiranje konfiguracij, kar vam bolj ustreza. V tem primeru ima vsak Windows na svojem računalniku, zakaj bi torej to delali v bashu, ko pa je powershell bolj priročen. Kateri je bolj priročen?

Sam scenarij (preprost in razumljiv):[cmdletBinding()] Param(
[Parameter(Obvezno=$true)] [niz]$EXTERNALIPADDDRESS,
[Parameter(Obvezno=$true)] [niz]$EXTERNALIPROUTE,
[Parameter(Mandatory=$true)] [string]$BWorknets,
[Parameter(Mandatory=$true)] [niz]$CWorknets,
[Parameter(Mandatory=$true)] [string]$BVoipNets,
[Parameter(Mandatory=$true)] [string]$CVoipNets,
[Parameter(Mandatory=$true)] [string]$CClientss,
[Parameter(Mandatory=$true)] [niz]$BVPNWORKs,
[Parameter(Mandatory=$true)] [string]$CVPNWORKs,
[Parameter(Mandatory=$true)] [string]$BVPNCLIENTSs,
[Parameter(Mandatory=$true)] [string]$cVPNCLIENTSs,
[Parameter(Mandatory=$true)] [niz]$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

Oprostite mi, ne morem objaviti vseh pravil, ker ... ne bo prav lepo. Pravila lahko sestavite sami, upoštevajoč najboljše prakse.

Tukaj je na primer seznam povezav, ki sem jim sledil:wiki.mikrotik.com/wiki/Manual:Zaščita_vašega_usmerjevalnika
wiki.mikrotik.com/wiki/Manual:IP/požarni zid/filter
wiki.mikrotik.com/wiki/Manual:OSPF-primeri
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual:Winbox
wiki.mikrotik.com/wiki/Manual:Nadgradnja_RouterOS
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack - tukaj morate vedeti, da ko je fasttrack omogočen, prednostna pravila za promet in oblikovanje ne bodo delovala - uporabno za šibke naprave.

Simboli za spremenljivke:Za primer so vzeta naslednja omrežja:
Delujoče omrežje 192.168.0.0/24
172.22.4.0/24 VOIP omrežje
Omrežje 10.0.0.0/24 za odjemalce brez dostopa do lokalnega omrežja
192.168.255.0/24 VPN omrežje za velike poslovalnice
172.19.255.0/24 VPN omrežje za male

Omrežni naslov je sestavljen iz 4 decimalnih številk oziroma ABCD, zamenjava deluje po istem principu, če ob zagonu zahteva B, pomeni, da morate vnesti številko 192.168.0.0 za omrežje 24/0, za C pa = 0.
$EXTERNALIPADDDRESS - namenski naslov ponudnika.
$EXTERNALIPROUTE - privzeta pot do omrežja 0.0.0.0/0
$BWorknets - Delovno omrežje, v našem primeru jih bo 168
$CWorknets - Delujoče omrežje, v našem primeru bo to 0
$BVoipNets – omrežje VOIP v našem primeru tukaj 22
$CVoipNets – omrežje VOIP v našem primeru tukaj 4
$CClientss - Omrežje za stranke - samo dostop do interneta, v našem primeru tukaj 0
$BVPNWORKs - VPN omrežje za velike podružnice, v našem primeru 20
$CVPNWORKs - VPN omrežje za velike podružnice, v našem primeru 255
$BVPNCLIENTS - VPN omrežje za male poslovalnice, kar pomeni 19
$CVPNCLIENTS - VPN omrežje za majhne poslovalnice, kar pomeni 255
$NAMEROUTER - ime usmerjevalnika
$ServerCertificate - ime potrdila, ki ste ga predhodno uvozili
$infile — Določite pot do datoteke, iz katere bomo prebrali konfiguracijo, na primer D:config.txt (po možnosti angleška pot brez narekovajev in presledkov)
$outfile — določite pot, kamor jo želite shraniti, na primer D:MT-test.txt

Namerno sem spremenil naslove v primerih iz očitnih razlogov.

Zgrešil sem bistvo o odkrivanju napadov in nenavadnega vedenja - to si zasluži ločen članek. Vendar je vredno poudariti, da lahko v tej kategoriji uporabite spremljanje vrednosti podatkov iz Zabbixa + obdelane podatke kodrov iz elasticsearch.

Na katere točke morate biti pozorni:

  1. Omrežni načrt. Bolje je, da ga takoj sestavite v berljivo obliko. Excel bo zadostoval. Na žalost zelo pogosto vidim, da so omrežja zgrajena po načelu "Pojavila se je nova podružnica, tukaj je /24 za vas." Nihče ne ugotavlja, koliko naprav se pričakuje na določeni lokaciji ali ali bo prišlo do nadaljnje rasti. Na primer, odprla se je majhna trgovina, v kateri je bilo sprva jasno, da naprava ne bo več kot 10, zakaj dodeliti /24? Za velike podružnice, nasprotno, dodelijo /24 in obstaja 500 naprav - lahko preprosto dodate omrežje, vendar želite razmišljati o vsem hkrati.
  2. Pravila filtriranja. Če projekt predpostavlja, da bo prišlo do ločitve omrežij in maksimalne segmentacije. Najboljše prakse se s časom spreminjajo. Prej sta bila računalniško in tiskalniško omrežje razdeljena, zdaj pa je povsem običajno, da teh omrežij ne delimo. Vredno je uporabiti zdrav razum in ne ustvarjati veliko podomrežij, kjer niso potrebna, in ne združevati vseh naprav v eno omrežje.
  3. “Zlate” nastavitve na vseh usmerjevalnikih. Tisti. če ste se odločili za načrt. Vredno je vse predvideti takoj in poskušati zagotoviti, da so vse nastavitve enake - samo seznam naslovov in naslovi IP so različni. Če se pojavijo težave, bo čas za odpravljanje napak krajši.
  4. Organizacijska vprašanja niso nič manj pomembna od tehničnih. Pogosto leni zaposleni izvajajo ta priporočila "ročno", brez uporabe že pripravljenih konfiguracij in skriptov, kar na koncu vodi do težav iz nič.

Z dinamičnim usmerjanjem. Uporabljen je OSPF s consko delitvijo. Ampak to je testna miza, bolj zanimivo je nastaviti takšne stvari v bojnih razmerah.

Upam, da ni kdo razburjen, ker nisem objavil konfiguracije usmerjevalnika. Mislim, da bo povezav dovolj, potem pa je vse odvisno od zahtev. In seveda testi, potrebnih je več testov.

Vsem želim, da v novem letu uresničijo svoje projekte. Naj bo dostop omogočen z vami!!!

Vir: www.habr.com

Dodaj komentar