Moj nerealizirani projekt. Mreža od 200 MikroTik routera

Moj nerealizirani projekt. Mreža od 200 MikroTik routera

Bok svima. Ovaj članak je namijenjen onima koji imaju mnogo Mikrotik uređaja u svom voznom parku, a žele napraviti maksimalnu unificiranost kako se ne bi spajali na svaki uređaj posebno. U ovom ću članku opisati projekt koji, nažalost, nije dospio u borbene uvjete zbog ljudskog faktora. Ukratko: više od 200 usmjerivača, brzo postavljanje i obuka osoblja, objedinjavanje po regijama, filtriranje mreža i specifičnih hostova, mogućnost jednostavnog dodavanja pravila svim uređajima, bilježenje i kontrola pristupa.

Ono što je opisano u nastavku ne predstavlja se kao gotov slučaj, ali se nadam da će vam biti od koristi pri planiranju vaših mreža i minimiziranju pogrešaka. Možda vam se neke točke i rješenja ne čine potpuno točnima - ako je tako, napišite u komentarima. Kritika će u ovom slučaju biti iskustvo za zajedničku blagajnu. Stoga, čitatelju, pogledaj komentare, možda je autor ozbiljno pogriješio - zajednica će pomoći.

Broj usmjerivača je 200-300, razasutih po različitim gradovima s različitom kvalitetom internetske veze. Potrebno je učiniti sve lijepo i jasno objasniti lokalnim administratorima kako će sve funkcionirati.

Dakle, gdje počinje svaki projekt? Naravno, sa TK.

  1. Organizacija plana mreže za sve poslovnice prema zahtjevima korisnika, segmentacija mreže (od 3 do 20 mreža u poslovnicama ovisno o broju uređaja).
  2. Postavljanje uređaja u svakoj poslovnici. Provjera stvarne brzine propusnosti davatelja u različitim uvjetima rada.
  3. Organizacija zaštite uređaja, upravljanje popisom dopuštenih, automatsko otkrivanje napada s automatskim postavljanjem na crni popis za određeno vremensko razdoblje, minimiziranje upotrebe različitih tehničkih sredstava koja se koriste za presretanje kontrole pristupa i uskraćivanje usluge.
  4. Organizacija sigurnih VPN veza s mrežnim filtriranjem prema zahtjevima korisnika. Minimalno 3 VPN veze od svake poslovnice do centra.
  5. Na temelju točaka 1, 2. Odaberite optimalne načine za izgradnju VPN-ova otpornih na pogreške. Ako je ispravno obrazloženo, izvođač može odabrati tehnologiju dinamičkog trasiranja.
  6. Organizacija prioritizacije prometa po protokolima, portovima, hostovima i drugim specifičnim servisima koje korisnik koristi. (VOIP, hostovi s važnim uslugama)
  7. Organizacija praćenja i zapisivanja događaja usmjerivača za odgovor osoblja tehničke podrške.

Koliko razumijemo, u nizu slučajeva tehničke specifikacije se izrađuju na temelju zahtjeva. Sam sam formulirao ove zahtjeve, nakon što sam saslušao glavne probleme. Dopustio je mogućnost da se o tim točkama brine netko drugi.

Koji će se alati koristiti za ispunjavanje ovih zahtjeva:

  1. ELK stack (nakon nekog vremena postalo je jasno da će se koristiti fluentd umjesto logstash-a).
  2. Ansible. Radi lakše administracije i dijeljenja pristupa, koristit ćemo AWX.
  3. GITLAB. Ovdje nema potrebe objašnjavati. Gdje bismo bili bez kontrole verzija naših konfiguracija?
  4. PowerShell. Postojat će jednostavna skripta za početno generiranje konfiguracije.
  5. Doku wiki, za pisanje dokumentacije i vodiča. U ovom slučaju koristimo habr.com.
  6. Praćenje će se provoditi putem zabbixa. Tamo će također biti nacrtan dijagram povezivanja radi općeg razumijevanja.

Točke postavljanja EFK

Što se tiče prve točke, opisat ću samo ideologiju po kojoj će se indeksi graditi. Ima ih mnogo
izvrsni članci o postavljanju i primanju zapisa s uređaja koji pokreću mikrotik.

Zadržat ću se na nekim točkama:

1. Prema dijagramu, vrijedi razmotriti primanje dnevnika s različitih mjesta i na različitim lukama. Za ovo ćemo koristiti log agregator. Također želimo napraviti univerzalnu grafiku za sve routere s mogućnošću dijeljenja pristupa. Zatim gradimo indekse na sljedeći način:

ovdje je dio konfiguracije s fluentd tip elasticsearch
logstash_format true
naziv_indeksa mikrotiklogs.sjev
logstash_prefix mikrotiklogs.sjever
interval_ispiranja 10s
Domaćini elastično pretraživanje: 9200
port 9200

Na taj način možemo kombinirati rutere i segmentirati prema planu - mikrotiklogs.zapad, mikrotiklogs.jug, mikrotiklogs.istok. Zašto to tako komplicirati? Razumijemo da ćemo imati 200 ili više uređaja. Ne možete sve pratiti. S verzijom 6.8 elasticsearcha dostupne su nam sigurnosne postavke (bez kupnje licence), čime možemo raspodijeliti prava gledanja između zaposlenika tehničke podrške ili lokalnih administratora sustava.
Tablice, grafikoni - ovdje se samo trebate složiti - ili koristiti iste, ili svatko radi ono što mu odgovara.

2. Sječom. Ako omogućimo prijavu u pravilima vatrozida, tada imena unosimo bez razmaka. Može se vidjeti da korištenjem jednostavne konfiguracije u fluentd-u možemo filtrirati podatke i napraviti prikladne ploče. Slika ispod je moj kućni ruter.

Moj nerealizirani projekt. Mreža od 200 MikroTik routera

3. Po zauzimanom prostoru i trupcima. U prosjeku, sa 1000 poruka na sat, logovi zauzimaju 2-3 MB dnevno, što, vidite, nije tako puno. Elasticsearch verzija 7.5.

ANSIBLE.AWX

Srećom po nas, imamo gotov modul za rutere
Spomenuo sam AWX, ali naredbe u nastavku odnose se samo na ansible u njegovom čistom obliku - mislim da za one koji su radili s ansibleom neće biti problema s korištenjem awx-a kroz gui.

Da budem iskren, prije ovoga sam pogledao druge vodiče gdje su koristili ssh, i svi su imali različite probleme s vremenom odziva i hrpu drugih problema. Ponavljam, nije došlo do svađe , ovu informaciju shvatite kao eksperiment koji nije stigao dalje od postolja od 20 rutera.

Moramo koristiti certifikat ili račun. Na vama je da odlučite, ja sam za certifikate. Neka suptilna točka o pravima. Dajem prava pisanja - barem "reset config" neće raditi.

Ne bi trebalo biti problema s generiranjem, kopiranjem i uvozom certifikata:

Kratak popis naredbiNa vašem računalu
ssh-keygen -t RSA, odgovori na pitanja, spremi ključ.
Kopiraj na mikrotik:
korisnički ssh-ključevi import public-key-file=id_mtx.pub user=ansible
Prvo morate kreirati račun i dodijeliti mu prava.
Provjera veze pomoću certifikata
ssh -p 49475 -i /ključevi/mtx [e-pošta zaštićena]

Registrirajte se na 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

Pa, primjer igrokaza: - naziv: add_work_sites
domaćini: testmt
serijski: 1
veza: network_cli
udaljeni_korisnik: mikrotik.west
skup_činjenica: da
zadaci:
- naziv: dodaj Work_sites
routeros_command:
naredbe:
— /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

Kao što možete vidjeti iz gornje konfiguracije, stvaranje vlastitih knjiga igara nije teško. Dovoljno je dobro savladati cli mikrotik. Zamislimo situaciju u kojoj trebate ukloniti popis adresa s određenim podacima na svim usmjerivačima, a zatim:

Pronađite i uklonite/ip firewal adresa-popis uklanjanje [find where list="gov.ru"]

Ovdje namjerno nisam uključio cijeli popis vatrozida jer... to će biti individualno za svaki projekt. Ali jedno mogu reći sigurno, koristite samo popis adresa.

Prema GITLAB-u sve je jasno. Neću se zadržavati na ovom pitanju. Sve je lijepo za pojedinačne zadatke, predloške, rukovatelje.

PowerShell

Ovdje će biti 3 datoteke. Zašto powershell? Možete odabrati bilo koji alat za generiranje konfiguracija, što vam više odgovara. U ovom slučaju, svatko ima Windows na svom računalu, pa zašto to raditi u bashu kada je powershell praktičniji. Koji je prikladniji?

Sama skripta (jednostavna i razumljiva):[cmdletBinding()] Param(
[Parametar(Mandatory=$true)] [string]$EXTERNALIPADDRESS,
[Parametar(Mandatory=$true)] [string]$EXTERNALIPROUTE,
[Parametar(Mandatory=$true)] [string]$BWorknets,
[Parametar(Mandatory=$true)] [string]$CWorknets,
[Parametar(Mandatory=$true)] [string]$BVoipNets,
[Parametar(Mandatory=$true)] [string]$CVoipNets,
[Parametar(Mandatory=$true)] [string]$CClientss,
[Parametar(Mandatory=$true)] [string]$BVPNWORKs,
[Parametar(Mandatory=$true)] [string]$CVPNWORKs,
[Parametar(Mandatory=$true)] [string]$BVPNCLIENTSs,
[Parametar(Mandatory=$true)] [string]$cVPNCLIENTSs,
[Parametar(Mandatory=$true)] [string]$NAMEROUTER,
[Parametar(Mandatory=$true)] [string]$ServerCertificates,
[Parametar(Mandatory=$true)] [string]$infile,
[Parametar(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 mogu objaviti sva pravila jer... neće biti baš lijepo. Pravila možete napraviti sami, vođeni najboljim primjerima iz prakse.

Na primjer, ovdje je popis poveznica koje sam slijedio:wiki.mikrotik.com/wiki/Manual:Zaštita_vašeg_usmjerivača
wiki.mikrotik.com/wiki/Manual:IP/vatrozid/filtar
wiki.mikrotik.com/wiki/Manual:OSPF-primjeri
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual:Winbox
wiki.mikrotik.com/wiki/Manual:Nadogradnja_RouterOS
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack - ovdje morate znati da kada je fasttrack uključen, prioritet prometa i pravila oblikovanja neće raditi - korisno za slabe uređaje.

Simboli za varijable:Kao primjer uzete su sljedeće mreže:
192.168.0.0/24 radna mreža
172.22.4.0/24 VOIP mreža
10.0.0.0/24 mreža za klijente bez pristupa lokalnoj mreži
192.168.255.0/24 VPN mreža za velike poslovnice
172.19.255.0/24 VPN mreža za male

Mrežna adresa se sastoji od 4 decimalna broja, odnosno A.B.C.D, zamjena radi na istom principu, ako pri pokretanju traži B, to znači da trebate unijeti broj 192.168.0.0 za mrežu 24/0, a za C = 0.
$EXTERNALIPADDDRESS - namjenska adresa davatelja usluga.
$EXTERNALIPROUTE - zadana ruta do mreže 0.0.0.0/0
$BWorknets - Radna mreža, u našem primjeru bit će 168
$CWorknets - Radna mreža, u našem primjeru to će biti 0
$BVoipNets - VOIP mreža u našem primjeru ovdje 22
$CVoipNets - VOIP mreža u našem primjeru ovdje 4
$CClientss - Mreža za klijente - samo pristup internetu, u našem slučaju ovdje 0
$BVPNWORKs - VPN mreža za velike poslovnice, u našem primjeru 20
$CVPNWORKs - VPN mreža za velike poslovnice, u našem primjeru 255
$BVPNCLIENTS - VPN mreža za male poslovnice, znači 19
$CVPNCLIENTS - VPN mreža za male poslovnice, znači 255
$NAMEROUTER - naziv usmjerivača
$ServerCertificate - naziv certifikata koji ste prethodno uvezli
$infile — Navedite stazu do datoteke iz koje ćemo čitati konfiguraciju, na primjer D:config.txt (po mogućnosti engleska staza bez navodnika i razmaka)
$outfile — navedite stazu na koju će se spremiti, na primjer D:MT-test.txt

Namjerno sam promijenio adrese u primjerima iz očitih razloga.

Propustio sam poantu o otkrivanju napada i nenormalnog ponašanja - ovo zaslužuje poseban članak. Ali vrijedi istaknuti da u ovoj kategoriji možete koristiti vrijednosti podataka praćenja iz Zabbixa + obrađene podatke o kovrčama iz elasticsearch.

Na koje točke treba obratiti pozornost:

  1. Mrežni plan. Bolje ga je odmah sastaviti u čitljivom obliku. Excel će biti dovoljan. Nažalost, vrlo često vidim da su mreže izgrađene po principu "Pojavila se nova poslovnica, evo /24 za vas." Nitko ne shvaća koliko se uređaja očekuje na određenoj lokaciji ili hoće li doći do daljnjeg rasta. Na primjer, otvorila se mala trgovina u kojoj je u početku bilo jasno da uređaj neće imati više od 10, zašto dodijeliti /24? Za velike podružnice, naprotiv, dodjeljuju /24, a ima 500 uređaja - možete jednostavno dodati mrežu, ali želite razmišljati o svemu odjednom.
  2. Pravila filtriranja. Ako projekt pretpostavlja da će doći do razdvajanja mreža i maksimalne segmentacije. Najbolje prakse mijenjaju se tijekom vremena. Ranije su PC mreža i mreža pisača bile podijeljene, ali sada je sasvim normalno da se te mreže ne dijele. Vrijedno je koristiti zdrav razum i ne stvarati mnogo podmreža tamo gdje nisu potrebne i ne kombinirati sve uređaje u jednu mrežu.
  3. “Zlatne” postavke na svim ruterima. Oni. ako ste se odlučili za plan. Vrijedi sve predvidjeti odmah i pokušati biti sigurni da su sve postavke identične - samo su popis adresa i IP adrese različite. Ako se pojave problemi, vrijeme otklanjanja pogrešaka bit će kraće.
  4. Organizacijska pitanja nisu ništa manje važna od tehničkih. Često lijeni zaposlenici ove preporuke provode “ručno”, bez korištenja gotovih konfiguracija i skripti, što u konačnici dovodi do problema niotkuda.

Dinamičkim usmjeravanjem. Korišten je OSPF s podjelom na zone. Ali ovo je testni stol, zanimljivije je postaviti takve stvari u borbenim uvjetima.

Nadam se da se nitko ne ljuti što nisam objavio konfiguracije rutera. Mislim da će linkovi biti dovoljni, a dalje sve ovisi o zahtjevima. I naravno testovi, potrebno je više testova.

Želim svima da realiziraju svoje projekte u novoj godini. Neka pristup bude s vama!!!

Izvor: www.habr.com

Dodajte komentar