Můj nedokončený projekt. Síť 200 routerů MikroTik

Můj nedokončený projekt. Síť 200 routerů MikroTik

Ahoj všichni. Tento článek je určen pro ty, kteří mají v parku hodně zařízení Mikrotik a kteří chtějí dosáhnout maximálního sjednocení, aby se nepřipojovali ke každému zařízení zvlášť. V tomto článku popíšu projekt, který se bohužel kvůli lidskému faktoru nedostal do bojových podmínek. Stručně řečeno: více než 200 routerů, rychlé nastavení a školení personálu, sjednocení podle regionů, filtrování sítí a konkrétních hostitelů, možnost snadno přidat pravidla na všechna zařízení, protokolování a řízení přístupu.

To, co je popsáno níže, se netváří jako hotový případ, ale doufám, že se vám to bude hodit při plánování vašich sítí a minimalizaci chyb. Možná se vám některé body a rozhodnutí nebudou zdát zcela správné – pokud ano, napište do komentářů. Kritika bude v tomto případě zážitkem ve společném prasátku. Proto, čtenáři, podívejte se do komentářů, možná se autor hrubě spletl - komunita pomůže.

Počet routerů je 200-300, rozmístěných v různých městech s různou kvalitou internetového připojení. Je potřeba vše udělat krásné a přístupným způsobem vysvětlit místním adminům, jak bude vše fungovat.

Kde tedy každý projekt začíná? Samozřejmě s TK.

  1. Organizace plánu sítě pro všechny pobočky dle požadavků zákazníka, segmentace sítě (od 3 do 20 sítí v pobočkách, dle počtu zařízení).
  2. Nastavte zařízení v každé pobočce. Kontrola skutečné šířky pásma poskytovatele v různých pracovních podmínkách.
  3. Organizace ochrany zařízení, kontrola whitelistu, autodetekce útoků s automatickým blacklistem po určitou dobu, minimalizace použití různých technických prostředků sloužících k odposlechu kontrolního přístupu a odmítnutí služby.
  4. Organizace zabezpečených vpn připojení s filtrováním sítě dle požadavků zákazníka. Minimálně 3 vpn připojení z každé pobočky do centra.
  5. Na základě bodů 1, 2. Vyberte nejlepší způsoby, jak vytvořit vpn odolné proti chybám. Technologii dynamického trasování se správným zdůvodněním může zvolit zhotovitel.
  6. Organizace prioritizace provozu podle protokolů, portů, hostitelů a dalších specifických služeb, které zákazník využívá. (VOIP, hostitelé s důležitými službami)
  7. Organizace sledování a logování událostí routeru pro reakci pracovníků technické podpory.

Jak víme, v některých případech je TOR sestaven z požadavků. Tyto požadavky jsem formuloval sám, po vyslechnutí hlavních problémů. Připustil možnost, že by se realizace těchto bodů mohl ujmout někdo jiný.

Jaké nástroje budou použity ke splnění těchto požadavků:

  1. ELK stack (po nějaké době bylo jasné, že místo logstash bude použit fluentd).
  2. Ansible. Pro snadnou administraci a sdílení přístupu využijeme AWX.
  3. GITLAB. Zde není třeba vysvětlovat. Kde bez kontroly verzí našich konfigurací.
  4. PowerShell. Pro prvotní vygenerování konfigurace bude k dispozici jednoduchý skript.
  5. Doku wiki pro psaní dokumentace a manuálů. V tomto případě používáme habr.com.
  6. Monitorování bude probíhat přes zabbix. K dispozici bude také schéma zapojení pro obecné pochopení.

Body nastavení EFK

V prvním bodě popíšu pouze ideologii, na které budou indexy postaveny. Je jich mnoho
vynikající články o nastavení a příjmu protokolů ze zařízení s mikrotikem.

Zastavím se u některých bodů:

1. Podle schématu stojí za zvážení přijímání protokolů z různých míst a na různých portech. K tomu použijeme agregátor protokolů. Chceme také udělat univerzální grafiku pro všechny routery s možností sdílení přístupu. Poté sestavíme indexy následovně:

zde je část konfigurace s fluentd elasticsearch
logstash_format true
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
hosts elasticsearch: 9200
Port 9200

Můžeme tedy kombinovat routery a segmentovat podle plánu - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Proč to dělat tak těžké? Chápeme, že budeme mít 200 nebo více zařízení. Neřiďte se vším. Od verze 6.8 elasticsearch máme k dispozici bezpečnostní nastavení (bez zakoupení licence), takže můžeme distribuovat práva k prohlížení mezi pracovníky technické podpory nebo místními správci systému.
Tabulky, grafy - tady se stačí dohodnout - buď použij stejné, nebo to každý udělá tak, jak mu to bude vyhovovat.

2. Logováním. Pokud povolíme přihlášení do pravidel firewallu, pak jména vytvoříme bez mezer. Je vidět, že pomocí jednoduché konfigurace v Fluentd můžeme filtrovat data a vytvářet pohodlné panely. Na obrázku níže je můj domácí router.

Můj nedokončený projekt. Síť 200 routerů MikroTik

3. Podle obsazeného prostoru a protokolů. V průměru při 1000 zprávách za hodinu zaberou protokoly 2–3 MB za den, což, jak vidíte, není tolik. elasticsearch verze 7.5.

ANSIBLE.AWX

Naštěstí pro nás máme připravený modul pro routery
Upozorňoval jsem na AWX, ale níže uvedené příkazy jsou pouze o ansible v jeho nejčistší podobě - ​​myslím, že pro ty, kteří s ansible pracovali, nebudou žádné problémy s použitím awx přes gui.

Abych byl upřímný, před tím jsem se díval na jiné návody, kde používali ssh, a každý měl jiné problémy s dobou odezvy a spoustu dalších problémů. Opakuji, do bitvy se to nedostalo , berte tuto informaci jako experiment, který nepřesáhl stánek 20 routerů.

Musíme použít certifikát nebo účet. Je na vás, jak se rozhodnete, já jsem pro certifikáty. Nějaký jemný bod o právech. Dávám práva k zápisu - alespoň „resetovat konfiguraci“ nebude fungovat.

S generováním, kopírováním certifikátu a importem by neměly být žádné problémy:

Stručný výpis příkazůNa vašem PC
ssh-keygen -t RSA, odpovědět na otázky, uložit klíč.
Kopírovat do mikrotiku:
user ssh-keys import public-key-file=id_mtx.pub user=ansible
Nejprve si musíte vytvořit účet a přidělit k němu práva.
Kontrola spojení s certifikátem
ssh -p 49475 -i /keys/mtx [chráněno e-mailem]

Napište 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

No, příklad herní knihy: název: add_work_sites
hostitelé:testmt
seriál: 1
připojení: network_cli
vzdálený_uživatel: mikrotik.west
shromáždit_fakta: ano
úkoly:
název: přidat Work_sites
routeros_command:
pří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

Jak můžete vidět z výše uvedené konfigurace, sestavení vlastních playbooků je jednoduchá záležitost. Stačí dostatečně dobře zvládnout cli mikrotik. Představte si situaci, kdy potřebujete odstranit seznam adres s určitými údaji na všech směrovačích, pak:

Najít a odstranit/ip firewal address-list remove [najít kde list="gov.ru"]

Záměrně jsem sem neuvedl celý výpis firewallu. bude to individuální pro každý projekt. Jedno ale můžu říct s jistotou, používejte pouze seznam adres.

Podle GITLAB je vše jasné. Nebudu se tímto okamžikem zdržovat. Vše je krásné z hlediska jednotlivých úkolů, šablon, handlerů.

PowerShell

Budou 3 soubory. Proč powershell? Nástroj pro generování konfigurací si může vybrat každý pohodlnější. V tomto případě má windows na svém PC každý, tak proč to dělat na bash, když powershell je pohodlnější. Kdo je pohodlnější.

Samotný skript (jednoduchý a srozumitelný):[cmdletBinding()] Param(
[Parametr(Povinný=$true)] [řetězec]$EXTERNALIPADDRESS,
[Parametr(Mandatory=$true)] [řetězec]$EXTERNALIPROUTE,
[Parameter(Mandatory=$true)] [string]$BWorknets,
[Parameter(Mandatory=$true)] [string]$CWorknets,
[Parametr(Mandatory=$true)] [string]$BVoipNets,
[Parametr(Mandatory=$true)] [string]$CVoipNets,
[Parametr(Mandatory=$true)] [string]$CClients,
[Parametr(Povinný=$true)] [řetězec]$BVPNWORKs,
[Parametr(Mandatory=$true)] [řetězec]$CVPNWORKs,
[Parametr(Mandatory=$true)] [řetězec]$BVPNCLIENTS,
[Parametr(Mandatory=$true)] [řetězec]$cVPNCLIENTS,
[Parametr(Mandatory=$true)] [řetězec]$NAMEROUTER,
[Parameter(Mandatory=$true)] [string]$ServerCertificates,
[Parametr(Povinný=$true)] [řetězec]$infile,
[Parametr(Mandatory=$true)] [řetězec]$outfile
)

Získat 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

Omlouvám se, nemohu vyložit všechna pravidla. nebude to hezké. Pravidla si můžete vytvořit sami podle osvědčených postupů.

Zde je například seznam odkazů, kterými jsem se řídil:wiki.mikrotik.com/wiki/Manual:Securing_Your_Router
wiki.mikrotik.com/wiki/Manual:IP/Firewall/Filtr
wiki.mikrotik.com/wiki/Manual:Pří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 - zde musíte vědět, že když je povolen fasttrack, nebudou fungovat pravidla pro prioritizaci a tvarování provozu - užitečné pro slabá zařízení.

Variabilní konvence:Následující sítě jsou brány jako příklad:
192.168.0.0/24 pracovní síť
172.22.4.0/24 síť VOIP
Síť 10.0.0.0/24 pro klienty bez přístupu k LAN
192.168.255.0/24 VPN síť pro velké pobočky
172.19.255.0/24 VPN síť pro malé

Síťová adresa se skládá ze 4 desetinných čísel, respektive ABCD, náhrada funguje na stejném principu, pokud se při startu zeptá B, pak je potřeba zadat číslo 192.168.0.0 pro síť 24/0 a pro C = 0 .
$EXTERNALIPADDRESS - přidělená adresa od poskytovatele.
$EXTERNALIPROUTE - výchozí cesta do sítě 0.0.0.0/0
$BWorknets - Pracovní síť, v našem příkladu bude 168
$CWorknets - Pracovní síť, v našem příkladu to bude 0
$BVoipNets - VOIP síť v našem příkladu zde 22
$CVoipNets - VOIP síť v našem příkladu zde 4
$CClientss - Síť pro klienty - přístup pouze na internet, v našem případě zde 0
$BVPNWORKs - VPN síť pro velké pobočky, v našem příkladu 20
$CVPNWORKs - VPN síť pro velké pobočky, v našem příkladu 255
$BVPNCLIENTS - VPN síť pro malé pobočky, znamená 19
$CVPNCLIENTS - VPN síť pro malé pobočky, znamená 255
$NAMEROUTER - název routeru
$ServerCertificate – název certifikátu, který importujete jako první
$infile - Zadejte cestu k souboru, ze kterého budeme číst konfiguraci, například D:config.txt (lépe anglická cesta bez uvozovek a mezer)
$outfile - zadejte cestu, kam se má uložit, například D:MT-test.txt

Záměrně jsem z pochopitelných důvodů změnil adresy v příkladech.

Chyběla mi pointa detekce útoků a anomálního chování – to si zaslouží samostatný článek. Ale stojí za zmínku, že v této kategorii můžete použít monitorovací hodnoty dat ze Zabbix + vypracovaná curl data z elasticsearch.

Na co se zaměřit:

  1. Síťový plán. Je lepší to napsat čtivou formou. Excel stačí. Bohužel se často setkávám s tím, že sítě jsou sestavovány podle principu "Objevila se nová větev, tady je /24 pro vás." Nikdo nezjišťuje, kolik zařízení se v dané lokalitě očekává a zda dojde k dalšímu růstu. Například se otevřel malý obchod, ve kterém je zpočátku jasné, že zařízení nebude více než 10, proč přidělovat / 24? U velkých poboček naopak přidělují / 24 a zařízení je 500 - stačí přidat síť, ale chcete si vše hned promyslet.
  2. Pravidla filtrování. Pokud projekt předpokládá, že dojde k oddělení sítí a maximální segmentaci. Osvědčené postupy se v průběhu času mění. Dříve sdíleli počítačovou síť a síť tiskáren, nyní je zcela normální tyto sítě nesdílet. Vyplatí se používat zdravý rozum a neprodukovat mnoho podsítí tam, kde nejsou potřeba a neslučovat všechna zařízení do jedné sítě.
  3. "Zlaté" nastavení na všech routerech. Tito. pokud máte plán. Vyplatí se předvídat vše najednou a pokusit se ujistit, že všechna nastavení jsou identická - existuje pouze jiný seznam adres a ip adresy. V případě problémů bude čas na ladění kratší.
  4. Organizační aspekty jsou neméně důležité než ty technické. Líní zaměstnanci často dodržují tato doporučení „ručně“, bez použití hotových konfigurací a skriptů, což nakonec vede k problémům od nuly.

Dynamickým směrováním. Bylo použito OSPF s zónováním. Ale to je zkušební stolice, v bojových podmínkách jsou takové věci zajímavější na nastavení.

Doufám, že se nikdo nenaštval, že jsem nezveřejnil konfiguraci routerů. Myslím, že odkazy budou stačit a pak už záleží na požadavcích. A samozřejmě testy, dalších testů je potřeba.

Přeji všem, aby v novém roce realizovali své projekty. Nechť je udělen přístup s vámi!!!

Zdroj: www.habr.com

Přidat komentář