Moj nedovršeni projekat. Mreža od 200 MikroTik rutera

Moj nedovršeni projekat. Mreža od 200 MikroTik rutera

Zdravo svima. Ovaj članak je namijenjen onima koji imaju puno Mikrotik uređaja u parku, a koji žele maksimalno objediniti kako se ne bi spajali na svaki uređaj posebno. U ovom članku ću opisati projekat koji zbog ljudskog faktora, nažalost, nije dostigao borbene uslove. Ukratko: više od 200 rutera, brzo podešavanje i obuka osoblja, objedinjavanje po regionima, filtriranje mreža i specifičnih hostova, mogućnost lakog dodavanja pravila svim uređajima, evidentiranje i kontrola pristupa.

Ono što je opisano u nastavku ne pretenduje da bude gotov slučaj, ali se nadam da će vam biti od koristi prilikom planiranja vaših mreža i minimiziranja grešaka. Možda vam se neke tačke i odluke neće činiti sasvim ispravnim - ako je tako, napišite u komentarima. Kritika će u ovom slučaju biti iskustvo u običnoj kasici prasici. Stoga, čitaoče, pogledajte u komentarima, možda je autor napravio veliku grešku - zajednica će pomoći.

Broj rutera je 200-300, raštrkanih u različitim gradovima sa različitim kvalitetom internet konekcije. Potrebno je sve uljepšati i na pristupačan način objasniti lokalnim adminima kako će sve funkcionirati.

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

  1. Organizacija mrežnog plana za sve poslovnice prema zahtjevima kupaca, segmentacija mreže (od 3 do 20 mreža u poslovnicama, ovisno o broju uređaja).
  2. Postavite uređaje u svakoj grani. Provjera stvarne propusnosti provajdera u različitim radnim uvjetima.
  3. Organizacija zaštite uređaja, kontrola bele liste, auto-detekcija napada sa automatskim stavljanjem na crnu listu na određeni vremenski period, minimiziranje upotrebe različitih tehničkih sredstava za presretanje kontrole pristupa i uskraćivanje usluge.
  4. Organizacija sigurnih vpn veza sa filtriranjem mreže prema zahtjevima korisnika. Najmanje 3 vpn veze od svake grane do centra.
  5. Na osnovu tačaka 1, 2. Odaberite najbolje načine za izgradnju vpn-a otpornog na greške. Tehnologiju dinamičkog usmjeravanja, uz ispravno opravdanje, može odabrati izvođač.
  6. Organizacija prioriteta saobraćaja po protokolima, portovima, hostovima i drugim specifičnim uslugama koje korisnik koristi. (VOIP, domaćini sa važnim uslugama)
  7. Organizacija praćenja i evidentiranja događaja rutera za odgovor osoblja tehničke podrške.

Kako razumijemo, u nekim slučajevima, TOR se sastavlja iz zahtjeva. Ove zahtjeve sam formulirao sam, nakon što sam saslušao glavne probleme. On je priznao mogućnost da se implementacijom ovih tačaka preuzme neko drugi.

Koji alati će se koristiti za ispunjavanje ovih zahtjeva:

  1. ELK stek (nakon nekog vremena, shvatilo se da će se fluentd koristiti umjesto logstash).
  2. Ansible. Radi lakše administracije i dijeljenja pristupa, koristit ćemo AWX.
  3. GITLAB. Ovdje nema potrebe objašnjavati. Gdje bez kontrole verzija naših konfiguracija.
  4. PowerShell. Postojat će jednostavna skripta za početno generiranje konfiguracije.
  5. Doku wiki, za pisanje dokumentacije i priručnika. U ovom slučaju koristimo habr.com.
  6. Praćenje će se vršiti putem zabbixa. Takođe će postojati dijagram povezivanja za opšte razumevanje.

EFK tačke podešavanja

U prvoj tački opisat ću samo ideologiju na kojoj će se indeksi graditi. Ima ih mnogo
odlični članci o podešavanju i prijemu logova sa uređaja koji rade na mikrotiku.

Zadržaću se na nekim tačkama:

1. Prema šemi, vrijedi razmotriti primanje trupaca sa različitih mjesta i na različitim lukama. Da bismo to učinili, koristit ćemo agregator dnevnika. Takođe želimo da napravimo univerzalnu grafiku za sve rutere sa mogućnošću deljenja pristupa. Zatim gradimo indekse na sljedeći način:

ovdje je dio konfiguracije sa fluentd-om elasticsearch
logstash_format true
index_name mikrotilogs.north
logstash_prefix mikrotilogs.north
flush_interval 10s
Domaćini elastična pretraga: 9200
port 9200

Tako možemo kombinovati rutere i segmentirati prema planu - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Zašto to otežavati? Razumijemo da ćemo imati 200 ili više uređaja. Ne prati sve. Od verzije 6.8 elasticsearch-a, dostupne su nam sigurnosne postavke (bez kupovine licence), tako da možemo distribuirati prava gledanja između zaposlenih u tehničkoj podršci ili lokalnih administratora sistema.
Tabele, grafikoni - ovdje se samo trebate složiti - ili koristite iste, ili svako to radi kako mu odgovara.

2. Logiranjem. Ako omogućimo prijavu u pravilima zaštitnog zida, tada ćemo napraviti imena bez razmaka. Može se vidjeti da pomoću jednostavne konfiguracije u fluentd-u možemo filtrirati podatke i napraviti prikladne panele. Slika ispod je moj kućni ruter.

Moj nedovršeni projekat. Mreža od 200 MikroTik rutera

3. Prema zauzetom prostoru i logovima. U prosjeku, sa 1000 poruka na sat, logovi zauzimaju 2-3 MB dnevno, što, vidite, i nije toliko. elasticsearch verzija 7.5.

ANSIBLE.AWX

Na našu sreću, imamo gotov modul za rutere
Istaknuo sam za AWX, ali naredbe ispod se odnose samo na ansible u njegovom najčistijem obliku - mislim da za one koji su radili sa ansible-om neće biti problema sa korištenjem awx-a kroz gui.

Da budem iskren, prije toga sam pogledao druge vodiče gdje su koristili ssh, i svi su imali različite probleme sa vremenom odziva i gomilom drugih problema. Ponavljam, nije došlo do bitke , shvatite ovu informaciju kao eksperiment koji nije prošao dalje od 20 rutera.

Trebamo koristiti certifikat ili račun. Na vama je da odlučite, ja sam za sertifikate. Neka suptilna tačka o pravima. Dajem prava za pisanje - barem „resetovanje konfiguracije“ neće raditi.

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

Kratak popis komandiNa vašem računaru
ssh-keygen -t RSA, odgovorite na pitanja, sačuvajte ključ.
Kopiraj na mikrotik:
user ssh-keys import public-key-file=id_mtx.pub user=ansible
Prvo morate kreirati račun i dodijeliti prava na njega.
Provjera veze sa certifikatom
ssh -p 49475 -i /keys/mtx [email zaštićen]

Napišite 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 knjige igranja: naziv: add_work_sites
hosts:testmt
serijski: 1
veza:mrežni_cli
daljinski_korisnik: mikrotik.west
gather_facts: da
zadaci:
naziv: dodajte Work_sites
routeros_command:
komande:
- /ip firewall adresa-list add address=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
- /ip firewall adresa-list add address=habr.com list=work_sites comment=for_habr

Kao što možete vidjeti iz gornje konfiguracije, sastavljanje vlastitih playbook-a je jednostavna stvar. Dovoljno je dobro savladati kli mikrotik. Zamislite situaciju u kojoj trebate ukloniti listu adresa sa određenim podacima na svim ruterima, a zatim:

Pronađite i uklonite/ip firewal address-list remove [pronađi gdje list="gov.ru"]

Namjerno nisam ovdje uključio cijeli popis firewall-a. biće individualno za svaki projekat. Ali jedno mogu reći sa sigurnošću, koristite samo listu adresa.

Prema GITLAB-u, sve je jasno. Neću se zadržavati na ovom trenutku. Sve je lijepo u pogledu pojedinačnih zadataka, šablona, ​​rukovalaca.

Powershell

Biće 3 fajla. Zašto powershell? Alat za generiranje konfiguracija može izabrati svako kome je ugodnije. U ovom slučaju, svi imaju Windows na svom računaru, pa zašto to raditi na bash-u kada je powershell praktičniji. Kome je udobnije.

Sama skripta (jednostavna i razumljiva):[cmdletBinding()] Param(
[Parametar(Obavezno=$true)] [niz]$EXTERNALIPADDRESS,
[Parametar(Obavezno=$true)] [niz]$EXTERNALIPROUTE,
[Parametar(Obavezno=$true)] [string]$BWorknets,
[Parametar(Obavezno=$true)] [string]$CWorknets,
[Parametar(Obavezno=$true)] [string]$BVoipNets,
[Parametar(Obavezno=$true)] [string]$CVoipNets,
[Parametar(Obavezno=$true)] [string]$CClientss,
[Parametar(Obavezno=$true)] [niz]$BVPNWORKs,
[Parametar(Obavezno=$true)] [string]$CVPNWORKs,
[Parametar(Obavezno=$true)] [niz]$BVPNCLIENTSs,
[Parametar(Obavezno=$true)] [string]$cVPNCLIENTSs,
[Parametar(Obavezno=$true)] [niz]$NAMEROUTER,
[Parametar(Obavezno=$true)] [string]$ServerCertificates,
[Parametar(Obavezno=$true)] [string]$infile,
[Parametar(Obavezno=$true)] [string]$outfile
)

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

Oprostite, ne mogu izložiti sva pravila. neće biti lepo. Možete sami sastaviti pravila, vođeni najboljom praksom.

Na primjer, evo liste linkova kojima sam se vodio:wiki.mikrotik.com/wiki/Manual:Securing_Your_Router
wiki.mikrotik.com/wiki/Manual:IP/Firewall/Filter
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:Upgrading_RouterOS
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack - ovdje morate znati da kada je fasttrack omogućen, pravila o prioritetima prometa i oblikovanju neće raditi - korisno za slabe uređaje.

Varijabilne konvencije:Sljedeće mreže su uzete kao primjer:
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 LAN pristupa
192.168.255.0/24 VPN mreža za velike filijale
172.19.255.0/24 VPN mreža za male

Mrežna adresa se sastoji od 4 decimalna broja, odnosno ABCD, zamjena radi po istom principu, ako pita B pri pokretanju, onda je potrebno unijeti broj 192.168.0.0 za mrežu 24/0, a za C = 0 .
$EXTERNALIPADDRESS - dodijeljena adresa od provajdera.
$EXTERNALIPROUTE - zadana ruta do mreže 0.0.0.0/0
$BWorknets - Radna mreža, u našem primjeru će biti 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 - pristup samo Internetu, u našem slučaju ovdje 0
$BVPNWORKs - VPN mreža za velike grane, u našem primjeru 20
$CVPNWORKs - VPN mreža za velike grane, u našem primjeru 255
$BVPNCLIENTS - VPN mreža za male filijale, znači 19
$CVPNCLIENTS - VPN mreža za male filijale, znači 255
$NAMEROUTER - ime rutera
$ServerCertificate - naziv certifikata koji prvi uvozite
$infile - Odredite putanju do datoteke iz koje ćemo čitati konfiguraciju, na primjer D:config.txt (bolja engleska putanja bez navodnika i razmaka)
$outfile - odredite putanju na koju želite da sačuvate, na primer D:MT-test.txt

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

Promašio sam poentu o otkrivanju napada i anomalnog ponašanja - ovo zaslužuje poseban članak. Ali vrijedi istaknuti da u ovoj kategoriji možete koristiti vrijednosti podataka praćenja ​​​iz Zabbixa + razrađene podatke curl iz elasticsearch.

Na koje tačke treba obratiti pažnju:

  1. Mrežni plan. Bolje je napisati u čitljivom obliku. Excel je dovoljan. Nažalost, često vidim da su mreže sastavljene po principu "Pojavila se nova grana, evo /24 za tebe." Niko ne sazna koliko uređaja se očekuje na određenoj lokaciji i hoće li biti daljeg rasta. Na primjer, otvorena je mala trgovina u kojoj je u početku jasno da uređaja neće biti više od 10, zašto dodijeliti / 24? Za velike grane, naprotiv, dodjeljuju / 24, a postoji 500 uređaja - možete samo dodati mrežu, ali želite odmah sve razmisliti.
  2. Pravila filtriranja. Ako projekat pretpostavlja da će doći do razdvajanja mreža i maksimalne segmentacije. Najbolje prakse se mijenjaju s vremenom. Ranije su dijelili PC mrežu i mrežu štampača, sada je sasvim normalno ne dijeliti te mreže. Vrijedi koristiti zdrav razum i ne proizvoditi mnogo podmreža tamo gdje nisu potrebne i ne kombinirati sve uređaje u jednu mrežu.
  3. "Zlatne" postavke na svim ruterima. One. ako imate plan. Vrijedno je predvidjeti sve odjednom i pokušati osigurati da su sve postavke identične - postoje samo različite liste adresa i ip adrese. U slučaju problema, vrijeme za otklanjanje grešaka bit će manje.
  4. Organizacioni aspekti nisu ništa manje važni od tehničkih. Često, lijeni zaposlenici slijede ove preporuke „ručno“, bez korištenja gotovih konfiguracija i skripti, što u konačnici dovodi do problema od nule.

Dinamičkim usmjeravanjem. Korišten je OSPF sa zoniranjem. Ali ovo je ispitna klupa, u borbenim uslovima takve stvari je zanimljivije postaviti.

Nadam se da se niko nije uznemirio što nisam objavio konfiguraciju rutera. Mislim da će linkovi biti dovoljni, a onda sve zavisi od zahteva. I naravno testovi, potrebno je još testova.

Želim svima da realizuju svoje projekte u novoj godini. Neka pristup bude sa vama!!!

izvor: www.habr.com

Dodajte komentar