Myn ûnfoltôge projekt. Netwurk fan 200 MikroTik-routers

Myn ûnfoltôge projekt. Netwurk fan 200 MikroTik-routers

Hoi allegearre. Dit artikel is bedoeld foar dyjingen dy't in protte Mikrotik-apparaten yn it park hawwe, en dy't maksimale ienwurding meitsje wolle om net te ferbinen mei elk apparaat apart. Yn dit artikel sil ik in projekt beskriuwe dat, spitigernôch, gjin bestridingsbetingsten berikt troch minsklike faktoaren. Koartsein: mear dan 200 routers, rappe opset en training fan personiel, ferieniging per regio, filterjen fan netwurken en spesifike hosts, de mooglikheid om maklik regels ta te foegjen oan alle apparaten, logging en tagongskontrôle.

Wat hjirûnder beskreaun docht net foar as in klearebare saak, mar ik hoopje dat it jo nuttich sil wêze by it plannen fan jo netwurken en it minimalisearjen fan flaters. Miskien sille guon punten en besluten jo net hielendal korrekt lykje - as dat sa is, skriuw dan yn 'e opmerkings. Krityk yn dit gefal sil in ûnderfining wêze yn in mienskiplike piggy bank. Dêrom, lêzer, sjoch yn 'e opmerkingen, miskien hat de skriuwer in grutte flater makke - de mienskip sil helpe.

It oantal routers is 200-300, ferspraat yn ferskate stêden mei ferskillende kwaliteit fan ynternetferbining. It is needsaaklik om alles moai te meitsjen en oan lokale admins op in tagonklike manier út te lizzen hoe't alles sil wurkje.

Dus wêr begjint elk projekt? Fansels, mei TK.

  1. Organisaasje fan in netwurkplan foar alle tûken neffens klanteasken, netwurksegmentaasje (fan 3 oant 20 netwurken yn tûken, ôfhinklik fan it oantal apparaten).
  2. Set apparaten yn elke branch. Kontrolearje de echte bânbreedte fan 'e provider yn ferskate wurkomstannichheden.
  3. Organisaasje fan apparaatbeskerming, witelistkontrôle, auto-deteksje fan oanfallen mei auto-swartlisting foar in bepaalde perioade, minimalisearjen fan it gebrûk fan ferskate technyske middels dy't brûkt wurde om kontrôle tagong te ûnderskeppen en tsjinstferliening.
  4. Organisaasje fan feilige vpn-ferbiningen mei netwurkfiltering neffens klanteasken. Op syn minst 3 vpn-ferbiningen fan elke tûke nei it sintrum.
  5. Op grûn fan punten 1, 2. Kies de bêste manieren om flater-tolerante vpn te bouwen. De dynamyske routingtechnology, mei de juste rjochtfeardiging, kin keazen wurde troch de oannimmer.
  6. Organisaasje fan ferkearsprioritearring troch protokollen, havens, hosts en oare spesifike tsjinsten dy't de klant brûkt. (VOIP, hosts mei wichtige tsjinsten)
  7. Organisaasje fan tafersjoch en logging fan router-eveneminten foar it antwurd fan technyske stipepersoniel.

Lykas wy begripe, wurdt yn guon gefallen de TOR gearstald út 'e easken. Ik formulearre dizze easken op mysels, nei it harkjen fan de wichtichste problemen. Hy joech de mooglikheid ta dat in oar de útfiering fan dizze punten koe nimme.

Hokker ark sille brûkt wurde om oan dizze easken te foldwaan:

  1. ELK stack (nei in skoftke waard begrepen dat fluentd soe brûkt wurde ynstee fan logstash).
  2. Ansible. Foar gemak fan administraasje en dielen fan tagong sille wy AWX brûke.
  3. GITLAB. It hoecht hjir net út te lizzen. Wêr sûnder ferzjekontrôle fan ús konfiguraasjes.
  4. PowerShell. D'r sil in ienfâldich skript wêze foar de earste generaasje fan 'e konfiguraasje.
  5. Doku wiki, foar it skriuwen fan dokumintaasje en hânboeken. Yn dit gefal brûke wy habr.com.
  6. Tafersjoch sil dien wurde fia zabbix. Der sil ek in ferbiningsdiagram wêze foar in algemien begryp.

EFK opset punten

Op it earste punt sil ik allinich de ideology beskriuwe wêrop de yndeksen boud wurde sille. Der binne in soad
poerbêste artikels oer it ynstellen en ûntfangen fan logs fan apparaten mei mikrotik.

Ik sil op guon punten stean:

1. Neffens it skema is it wurdich te beskôgjen om logs te ûntfangen fan ferskate plakken en op ferskate havens. Om dit te dwaan, sille wy in log-aggregator brûke. Wy wolle ek universele grafiken meitsje foar alle routers mei de mooglikheid om tagong te dielen. Dan bouwe wy de yndeksen as folget:

hjir is in stik konfiguraasje mei fluentd elasticsearch
logstash_format true
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
hosts elastyk sykje: 9200
Port 9200

Sa kinne wy ​​kombinearje routers en segment neffens it plan - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Wêrom meitsje it sa dreech? Wy begripe dat wy 200 of mear apparaten sille hawwe. Folgje net alles. Sûnt ferzje 6.8 fan elasticsearch binne befeiligingsynstellingen foar ús beskikber (sûnder in lisinsje te keapjen), dus kinne wy ​​sjochrjochten fersprieden tusken meiwurkers fan technyske stipe as lokale systeembehearders.
Tabellen, grafiken - hjir moatte jo gewoan iens wêze - brûke of deselde, of elkenien docht it sa't it foar him handich sil wêze.

2. Troch logging. As wy ynskeakelje log yn de firewall regels, dan meitsje wy de nammen sûnder spaasjes. It kin sjoen wurde dat it brûken fan in ienfâldige konfiguraasje yn fluentd, wy kinne filterje de gegevens en meitsje handige panielen. De foto hjirûnder is myn thús router.

Myn ûnfoltôge projekt. Netwurk fan 200 MikroTik-routers

3. Neffens de besette romte en logs. Yn trochsneed, mei 1000 berjochten per oere, nimme de logs 2-3 MB per dei op, wat, sjogge jo, net sa folle. elasticsearch ferzje 7.5.

ANSIBLE.AWX

Gelokkich foar ús hawwe wy in ready-made module foar routeros
Ik wiisde út oer AWX, mar de kommando's hjirûnder binne allinnich oer ansible yn syn suverste foarm - ik tink foar dyjingen dy't hawwe wurke mei ansible, der sil gjin problemen mei help fan awx fia de gui.

Om earlik te wêzen, dêrfoar seach ik nei oare gidsen wêr't se ssh brûkten, en elkenien hie ferskate problemen mei reaksjetiid en in protte oare problemen. Ik werhelje, it kaam net oan 'e slach , nim dizze ynformaasje as in eksperimint dat net fierder as in stand fan 20 routers gie.

Wy moatte in sertifikaat of in akkount brûke. It is oan jo om te besluten, ik bin foar sertifikaten. Guon subtyl punt oer rjochten. Ik jou de rjochten om te skriuwen - teminsten "reset config" sil net wurkje.

D'r moatte gjin problemen wêze mei it generearjen, kopiearjen fan it sertifikaat en ymportearjen:

Koarte list fan kommando'sOp jo PC
ssh-keygen -t RSA, antwurdzje fragen, bewarje de kaai.
Kopiearje nei mikrotik:
brûker ssh-keys ymportearje public-key-file=id_mtx.pub brûker=ansible
Earst moatte jo in akkount oanmeitsje en rjochten derop tawize.
Kontrolearje de ferbining mei it sertifikaat
ssh -p 49475 -i /keys/mtx [e-post beskerme]

Skriuw 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, in foarbyld fan in toanielstik: namme: add_work_sites
hosts: testmt
searje: 1
ferbining: netwurk_cli
remote_user: mikrotik.west
sammelje_feiten: ja
taken:
namme: tafoegje Work_sites
routeros_kommando:
kommando's:
- / ip firewall adres-list tafoegje adres = gov.ru list = work_sites comment = Ticket665436_Ochen_nado
- / ip firewall adres-list add address = habr.com list = work_sites comment = for_habr

Lykas jo kinne sjen út 'e boppesteande konfiguraasje, is it kompilearjen fan jo eigen playbooks in ienfâldige saak. It is goed genôch om te master cli mikrotik. Stel jo in situaasje foar wêr't jo de adreslist mei bepaalde gegevens op alle routers moatte fuortsmite, dan:

Fyn en fuortsmite/ ip firewal adres-list fuortsmite [fine wêr list = "gov.ru"]

Ik haw mei opsetsin de hiele firewalllist hjir net opnommen. it sil foar elk projekt yndividueel wêze. Mar ik kin ien ding foar wis sizze, brûk allinnich de adreslist.

Neffens GITLAB is alles dúdlik. Ik sil net dwaen op dit momint. Alles is moai yn termen fan yndividuele taken, sjabloanen, handlers.

Powershell

D'r sille 3 bestannen wêze. Wêrom powershell? It ark foar it generearjen fan konfiguraasjes kin wurde keazen troch elkenien dy't nofliker is. Yn dit gefal hat elkenien finsters op har PC, dus wêrom dogge it op bash as powershell handiger is. Wa is nofliker.

It skript sels (ienfâldich en begryplik):[cmdletBinding()] Param(
[Parameter(Verplicht=$wier)] [string]$EXTERNALIPADDRESS,
[Parameter(Verplicht=$wier)] [string]$EXTERNALIPROUTE,
[Parameter(Verplicht=$wier)] [string]$BWorknets,
[Parameter(Verplicht=$wier)] [string]$CWorknets,
[Parameter(Verplicht=$wier)] [string]$BVoipNets,
[Parameter(Verplicht=$wier)] [string]$CVoipNets,
[Parameter(Verplicht=$wier)] [string]$CClientss,
[Parameter(Verplicht=$wier)] [string]$BVPNWORKs,
[Parameter(Verplicht=$wier)] [string]$CVPNWORKs,
[Parameter(Verplicht=$wier)] [string]$BVPNCLIENTSs,
[Parameter(Verplicht=$wier)] [string]$cVPNCLIENTSs,
[Parameter(Verplicht=$wier)] [string]$NAMEROUTER,
[Parameter(Verplicht=$true)] [string]$ServerCertificates,
[Parameter(Verplicht=$wier)] [string]$ynbestân,
[Parameter(Verplicht=$true)] [string]$outfile
)

Get-Ynhâld $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", $cVNCLIENTSs)} |
Foreach-Object {$_.Replace("MYNAMERROUTER", $NAMEROUTER)} |
Foreach-Object {$_.Replace("ServerCertificate", $ServerCertificates)} | Set-ynhâld $outfile

Pardon, ik kin net alle regels útlizze. it sil net moai wêze. Jo kinne sels de regels opmeitsje, liede troch de bêste praktiken.

Hjir is bygelyks in list mei keppelings dy't ik liede troch:wiki.mikrotik.com/wiki/Manual:Befeiliging_Jo_router
wiki.mikrotik.com/wiki/Manual:IP/brânmuorre/filter
wiki.mikrotik.com/wiki/Manual:OSPF-foarbylden
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 - hjir moatte jo witte dat as fasttrack ynskeakele is, de regels foar ferkearsprioriteit en foarmjouwing net wurkje - nuttich foar swakke apparaten.

Fariabele konvinsjes:De folgjende netwurken wurde as foarbyld nommen:
192.168.0.0/24 wurkje netwurk
172.22.4.0/24 VOIP netwurk
10.0.0.0/24 netwurk foar kliïnten sûnder LAN tagong
192.168.255.0/24 VPN netwurk foar grutte tûken
172.19.255.0/24 VPN netwurk foar lyts

It netwurkadres bestiet út 4 desimale nûmers, respektivelik ABCD, de ferfanging wurket neffens itselde prinsipe, as it freget B by it opstarten, dan moatte jo it nûmer 192.168.0.0 ynfiere foar it netwurk 24/0, en foar C = 0 .
$EXTERNALIPADRESS - tawiisd adres fan de provider.
$EXTERNALIPROUTE - standert rûte nei netwurk 0.0.0.0/0
$BWorknets - Wurknetwurk, yn ús foarbyld sil d'r 168 wêze
$CWorknets - Wurknetwurk, yn ús foarbyld sil it 0 wêze
$BVoipNets - VOIP-netwurk yn ús foarbyld hjir 22
$CVoipNets - VOIP-netwurk yn ús foarbyld hjir 4
$CClientss - Netwurk foar kliïnten - tagong allinich ta it ynternet, yn ús gefal hjir 0
$BVPNWORKs - VPN-netwurk foar grutte tûken, yn ús foarbyld 20
$CVPNWORKs - VPN-netwurk foar grutte tûken, yn ús foarbyld 255
$BVPNCLIENTS - VPN-netwurk foar lytse tûken, betsjut 19
$CVPNCLIENTS - VPN-netwurk foar lytse tûken, betsjut 255
$NAMEROUTER - router namme
$ServerCertificate - de namme fan it sertifikaat dat jo earst ymportearje
$infile - Spesifisearje it paad nei it bestân wêrfan wy de konfiguraasje lêze, bygelyks D:config.txt (better Ingelsk paad sûnder oanhalings en spaasjes)
$outfile - spesifisearje it paad wêr't jo bewarje wolle, bygelyks D:MT-test.txt

Ik haw om dúdlike redenen de adressen yn 'e foarbylden bewust feroare.

Ik miste it punt oer it opspoaren fan oanfallen en abnormale gedrach - dit fertsjinnet in apart artikel. Mar it is de muoite wurdich op te wizen dat jo yn dizze kategory tafersjochgegevenswearden kinne brûke fan Zabbix + útwurke krulgegevens fan elasticsearch.

Hokker punten om te rjochtsjen op:

  1. Netwurk plan. It is better om it yn in lêsbere foarm te skriuwen. Excel is genôch. Spitigernôch sjoch ik faak dat netwurken wurde gearstald neffens it prinsipe "In nije tûke is ferskynd, hjir is /24 foar jo." Nimmen fynt út hoefolle apparaten wurde ferwachte op in bepaalde lokaasje en oft der fierdere groei sil wêze. Bygelyks, in lytse winkel is iepene, wêryn it yn earste ynstânsje dúdlik is dat it apparaat net mear dan 10 sil wêze, wêrom allocearje / 24? Foar grutte tûken, krekt oarsom, se allocearje / 24, en d'r binne 500 apparaten - jo kinne gewoan in netwurk tafoegje, mar jo wolle alles direkt trochtinke.
  2. Filtering regels. As it projekt derfan útgiet dat der skieding fan netwurken en maksimale segmintaasje sil wêze. Best Practices feroarje oer de tiid. Earder dielde se in PC-netwurk en in printernetwurk, no is it gewoan normaal om dizze netwurken net te dielen. It is it wurdich om sûn ferstân te brûken en net in protte subnetten te produsearjen wêr't se net nedich binne en net alle apparaten yn ien netwurk kombinearje.
  3. "Gouden" ynstellings op alle routers. Dy. as jo in plan hawwe. It is de muoite wurdich om alles yn ien kear te foarsjen en besykje te soargjen dat alle ynstellingen identyk binne - d'r binne allinich ferskate adreslist en IP-adressen. Yn gefal fan problemen sil de tiid foar debuggen minder wêze.
  4. Organisatoaryske aspekten binne net minder wichtich as technyske. Faak folgje luie meiwurkers dizze oanbefellingen "hânmjittich", sûnder gebrûk fan klearmakke konfiguraasjes en skripts, wat úteinlik liedt ta problemen fanôf it begjin.

Troch dynamyske routing. OSPF mei bestimmingsplan waard brûkt. Mar dit is in testbank, yn fjochtsomstannichheden binne sokke dingen ynteressanter om op te setten.

Ik hoopje dat gjinien oerstjoer wie dat ik de konfiguraasje fan 'e routers net pleatste. Ik tink dat keplingen genôch wêze sille, en dan hinget it allegear ôf fan 'e easken. En fansels testen, mear testen binne nedich.

Ik winskje elkenien om har projekten yn it nije jier te realisearjen. Mei tagong ta jo wêze !!!

Boarne: www.habr.com

Add a comment