Môj nerealizovaný projekt. Sieť 200 smerovačov MikroTik

Môj nerealizovaný projekt. Sieť 200 smerovačov MikroTik

Ahojte všetci. Tento článok je určený pre tých, ktorí majú vo svojej flotile veľa zariadení Mikrotik a chcú maximálne zjednotiť, aby sa nepripájali ku každému zariadeniu samostatne. V tomto článku popíšem projekt, ktorý, žiaľ, nedosiahol bojové podmienky vplyvom ľudského faktora. Stručne povedané: viac ako 200 smerovačov, rýchle nastavenie a školenie personálu, zjednotenie podľa regiónu, filtrovanie sietí a konkrétnych hostiteľov, možnosť jednoduchého pridávania pravidiel do všetkých zariadení, protokolovanie a riadenie prístupu.

To, čo je popísané nižšie, sa netvári ako hotový prípad, ale dúfam, že vám to bude užitočné pri plánovaní sietí a minimalizácii chýb. Možno sa vám niektoré body a riešenia nemusia zdať úplne správne – ak áno, napíšte do komentárov. Kritika bude v tomto prípade zážitkom pre spoločnú pokladnicu. Preto, čitateľ, pozri sa na komentáre, možno sa autor vážne pomýlil - komunita pomôže.

Počet smerovačov je 200-300, roztrúsených po rôznych mestách s rôznou kvalitou internetového pripojenia. Je potrebné urobiť všetko krásne a jasne vysvetliť miestnym adminom, ako bude všetko fungovať.

Takže, kde začína nejaký projekt? Samozrejme, s TK.

  1. Organizácia sieťového plánu pre všetky pobočky podľa požiadaviek zákazníka, segmentácia siete (od 3 do 20 sietí v pobočkách v závislosti od počtu zariadení).
  2. Nastavenie zariadení v každej pobočke. Kontrola skutočnej priepustnosti poskytovateľa pri rôznych prevádzkových podmienkach.
  3. Organizácia ochrany zariadenia, správa whitelistu, automatická detekcia útokov s automatickým blacklistom na určitý čas, minimalizácia používania rôznych technických prostriedkov používaných na odpočúvanie kontrolného prístupu a odmietnutie služby.
  4. Organizácia bezpečných VPN spojení s filtrovaním siete podľa požiadaviek zákazníka. Minimálne 3 pripojenia VPN z každej pobočky do centra.
  5. Na základe bodov 1, 2. Vyberte optimálne spôsoby budovania sietí VPN odolných voči chybám. Ak je to správne odôvodnené, technológiu dynamického smerovania si môže zvoliť zhotoviteľ.
  6. Organizácia priority prevádzky podľa protokolov, portov, hostiteľov a iných špecifických služieb používaných zákazníkom. (VOIP, hostitelia s dôležitými službami)
  7. Organizácia monitorovania a zaznamenávania udalostí smerovača pre reakciu pracovníkov technickej podpory.

Ako vieme, v mnohých prípadoch sú technické špecifikácie vypracované na základe požiadaviek. Tieto požiadavky som sformuloval sám po vypočutí hlavných problémov. Pripustil možnosť, že by sa o tieto body mohol postarať niekto iný.

Aké nástroje sa použijú na splnenie týchto požiadaviek:

  1. ELK stack (po nejakom čase sa ukázalo, že namiesto logstash sa použije fluentd).
  2. Ansible. Pre jednoduchú správu a zdieľanie prístupu použijeme AWX.
  3. GITLAB. Tu nie je potrebné vysvetľovať. Kde by sme boli bez kontroly verzií našich konfigurácií?
  4. PowerShell. Na úvodné vygenerovanie konfigurácie bude k dispozícii jednoduchý skript.
  5. Doku wiki na písanie dokumentácie a príručiek. V tomto prípade používame habr.com.
  6. Monitorovanie sa bude vykonávať prostredníctvom zabbix. Pre všeobecné pochopenie tam bude nakreslená aj schéma zapojenia.

Body nastavenia EFK

Pokiaľ ide o prvý bod, popíšem len ideológiu, podľa ktorej budú indexy postavené. Je ich veľa
vynikajúce články o nastavení a prijímaní protokolov zo zariadení s mikrotikom.

Zastavím sa pri niektorých bodoch:

1. Podľa diagramu stojí za zváženie prijímanie protokolov z rôznych miest a na rôznych portoch. Na to použijeme agregátor protokolov. Chceme tiež urobiť univerzálnu grafiku pre všetky routery s možnosťou zdieľania prístupu. Potom zostavíme indexy takto:

tu je časť konfigurácie s fluentd zadajte elasticsearch
logstash_format true
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
hosts ElasticSearch: 9200
Port 9200

Takto môžeme kombinovať routery a segmentovať podľa plánu - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Prečo to tak komplikovať? Chápeme, že budeme mať 200 alebo viac zariadení. Nemôžete sledovať všetko. S verziou elasticsearch 6.8 máme k dispozícii bezpečnostné nastavenia (bez zakúpenia licencie), vďaka čomu môžeme distribuovať práva na prezeranie medzi zamestnancami technickej podpory alebo lokálnymi systémovými administrátormi.
Tabuľky, grafy – tu sa treba len dohodnúť – buď použi tie isté, alebo si každý robí to, čo mu vyhovuje.

2. Logovaním. Ak povolíme prihlásenie do pravidiel brány firewall, mená vytvoríme bez medzier. Je vidieť, že pomocou jednoduchej konfigurácie v fluentd môžeme filtrovať dáta a vytvárať pohodlné panely. Na obrázku nižšie je môj domáci router.

Môj nerealizovaný projekt. Sieť 200 smerovačov MikroTik

3. Podľa obsadeného priestoru a protokolov. V priemere pri 1000 2 správach za hodinu zaberajú denníky 3 až 7.5 MB za deň, čo, ako vidíte, nie je až tak veľa. Elasticsearch verzia XNUMX.

ANSIBLE.AWX

Našťastie pre nás máme pripravený modul pre routery
Spomínal som o AWX, ale príkazy nižšie sú len o ansible v jeho čistej forme - myslím, že pre tých, ktorí s ansible pracovali, nebudú žiadne problémy s použitím awx cez gui.

Aby som bol úprimný, predtým som sa pozrel na iných sprievodcov, kde používali ssh, a všetci mali iné problémy s dobou odozvy a veľa ďalších problémov. Opakujem, neprišlo to na boj , berte túto informáciu ako experiment, ktorý sa nedostal ďalej ako na stánok 20 routerov.

Musíme použiť certifikát alebo účet. Je na tebe ako sa rozhodneš, ja som za certifikáty. Nejaký jemný bod o právach. Dávam práva na zápis - aspoň „resetovať konfiguráciu“ nebude fungovať.

S generovaním, kopírovaním a importovaním certifikátu by nemali byť žiadne problémy:

Stručný výpis príkazovNa vašom PC
ssh-keygen -t RSA, odpovedzte na otázky, uložte kľúč.
Kopírovať do mikrotiku:
user ssh-keys import public-key-file=id_mtx.pub user=ansible
Najprv si musíte vytvoriť účet a prideliť mu práva.
Kontrola pripojenia pomocou certifikátu
ssh -p 49475 -i /keys/mtx [chránené e-mailom]

Zaregistrujte sa 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, príklad zošita: - názov: add_work_sites
hostitelia: testmt
seriál: 1
pripojenie: network_cli
remote_user: mikrotik.west
zhromaždiť fakty: áno
úlohy:
- name: add Work_sites
routeros_command:
príkazy:
— /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

Ako môžete vidieť z vyššie uvedenej konfigurácie, vytváranie vlastných zošitov nie je ťažké. Stačí dobre zvládnuť cli mikrotik. Predstavme si situáciu, keď potrebujete odstrániť zoznam adries s určitými údajmi na všetkých smerovačoch, potom:

Nájsť a odstrániť/ip firewal address-list remove [nájsť kde list="gov.ru"]

Zámerne som sem nezahrnul celý zoznam firewallov, pretože... bude to individuálne pre každý projekt. Jedno však môžem povedať s istotou, používajte iba zoznam adries.

Podľa GITLAB je všetko jasné. Nebudem sa venovať tomuto bodu. Všetko je krásne pre jednotlivé úlohy, šablóny, handlery.

PowerShell

Budú tu 3 súbory. Prečo powershell? Na generovanie konfigurácií si môžete vybrať ľubovoľný nástroj, ktorý je pre vás výhodnejší. V tomto prípade má každý na svojom PC Windows, tak prečo to robiť v bash, keď powershell je pohodlnejší. Ktorý je výhodnejší?

Samotný skript (jednoduchý a zrozumiteľný):[cmdletBinding()] Param(
[Parameter(Povinné=$true)] [string]$EXTERNALIPADDRESS,
[Parameter(Povinné=$true)] [string]$EXTERNALIPROUTE,
[Parameter(Povinné=$true)] [string]$BWorknets,
[Parameter(Povinné=$true)] [string]$CWorknets,
[Parameter(Povinné=$true)] [string]$BVoipNets,
[Parameter(Povinné=$true)] [string]$CVoipNets,
[Parameter(Povinné=$true)] [string]$CClients,
[Parameter(Povinné=$true)] [string]$BVPNWORKs,
[Parameter(Povinné=$true)] [string]$CVPNWORKs,
[Parameter(Povinné=$true)] [string]$BVPNCLIENTS,
[Parameter(Povinné=$true)] [string]$cVPNCLIENTS,
[Parameter(Povinné=$true)] [string]$NAMEROUTER,
[Parameter(Povinné=$true)] [string]$ServerCertificates,
[Parameter(Povinné=$true)] [string]$infile,
[Parameter(Povinné=$true)] [string]$outfile
)

Získať obsah $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

Odpusť mi, nemôžem uverejniť všetky pravidlá, pretože... nebude to veľmi pekné. Pravidlá si môžete vytvoriť sami podľa osvedčených postupov.

Tu je napríklad zoznam odkazov, ktoré som sledoval:wiki.mikrotik.com/wiki/Manual:Securing_Your_Router
wiki.mikrotik.com/wiki/Manual:IP/Firewall/Filter
wiki.mikrotik.com/wiki/Manual: Príklady OSPF
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 – tu musíte vedieť, že keď je povolený fasttrack, pravidlá uprednostňovania a tvarovania premávky nebudú fungovať – užitočné pre slabé zariadenia.

Symboly pre premenné:Ako príklad sú uvedené nasledujúce siete:
192.168.0.0/24 pracovná sieť
172.22.4.0/24 sieť VOIP
10.0.0.0/24 sieť pre klientov bez prístupu do lokálnej siete
192.168.255.0/24 VPN sieť pre veľké pobočky
172.19.255.0/24 VPN sieť pre malých

Sieťová adresa sa skladá zo 4 desiatkových čísel, respektíve A.B.C.D, náhrada funguje na rovnakom princípe, ak sa pri štarte pýta na B, tak to znamená, že treba zadať číslo 192.168.0.0 pre sieť 24/0 a pre C = 0.
$EXTERNALIPADDDRESS - vyhradená adresa od poskytovateľa.
$EXTERNALIPROUTE - predvolená cesta do siete 0.0.0.0/0
$BWorknets – Pracovná sieť, v našom príklade to bude 168
$CWorknets – Pracovná sieť, v našom príklade to bude 0
$BVoipNets - VOIP sieť v našom príklade tu 22
$CVoipNets – sieť VOIP v našom príklade tu 4
$CClientss – Sieť pre klientov – iba prístup na internet, v našom prípade tu 0
$BVPNWORKs - sieť VPN pre veľké pobočky, v našom príklade 20
$CVPNWORKs - sieť VPN pre veľké pobočky, v našom príklade 255
$BVPNCLIENTS - VPN sieť pre malé pobočky, čo znamená 19
$CVPNCLIENTS - VPN sieť pre malé pobočky, čo znamená 255
$NAMEROUTER - názov smerovača
$ServerCertificate – názov certifikátu, ktorý ste predtým importovali
$infile — Zadajte cestu k súboru, z ktorého budeme čítať konfiguráciu, napríklad D:config.txt (najlepšie anglickú cestu bez úvodzoviek a medzier)
$outfile — zadajte cestu, kam sa má súbor uložiť, napríklad D:MT-test.txt

Zámerne som zmenil adresy v príkladoch z pochopiteľných dôvodov.

Ušla mi pointa o odhaľovaní útokov a anomálneho správania – to si zaslúži samostatný článok. Je však potrebné zdôrazniť, že v tejto kategórii môžete použiť monitorovacie hodnoty údajov zo Zabbix + spracované údaje o zvlnení z elasticsearch.

Aké body by ste mali venovať pozornosť:

  1. Sieťový plán. Je lepšie ho hneď poskladať do čitateľnej podoby. Excel postačí. Žiaľ, veľmi často vidím, že siete sú budované podľa princípu „Objavila sa nová pobočka, tu je /24 pre vás“. Nikto nezisťuje, koľko zariadení sa v danej lokalite očakáva a či dôjde k ďalšiemu rastu. Napríklad sa otvoril malý obchod, v ktorom bolo spočiatku jasné, že zariadenie nebude viac ako 10, prečo prideľovať /24? Pri veľkých pobočkách naopak prideľujú /24 a zariadení je 500 - jednoducho pridáte sieť, ale chcete všetko premyslieť naraz.
  2. Pravidlá filtrovania. Ak projekt predpokladá, že dôjde k oddeleniu sietí a maximálnej segmentácii. Osvedčené postupy sa časom menia. Predtým sa sieť PC a sieť tlačiarní rozdeľovali, ale v súčasnosti je už celkom normálne tieto siete nerozdeľovať. Oplatí sa použiť zdravý rozum a nevytvárať veľa podsietí tam, kde nie sú potrebné a nespájať všetky zariadenia do jednej siete.
  3. „Zlaté“ nastavenia na všetkých smerovačoch. Tie. ak ste sa rozhodli pre plán. Stojí za to predvídať všetko hneď a pokúsiť sa uistiť, že všetky nastavenia sú rovnaké - iba zoznam adries a adresy IP sa líšia. Ak sa vyskytnú problémy, čas ladenia bude kratší.
  4. Organizačné záležitosti nie sú o nič menej dôležité ako technické. Leniví zamestnanci často vykonávajú tieto odporúčania „ručne“ bez použitia hotových konfigurácií a skriptov, čo v konečnom dôsledku vedie k problémom z ničoho nič.

Dynamickým smerovaním. Bol použitý OSPF s delením na zóny. Ale toto je testovacia lavica; je zaujímavejšie nastaviť takéto veci v bojových podmienkach.

Dúfam, že nikto nie je naštvaný, že som nezverejnil konfigurácie smerovača. Myslím, že odkazy budú stačiť a potom všetko závisí od požiadaviek. A samozrejme testy, sú potrebné ďalšie testy.

Prajem všetkým, aby v novom roku zrealizovali svoje projekty. Nech je udelený prístup s vami!!!

Zdroj: hab.com

Pridať komentár