Mitt orealiserade projekt. NĂ€tverkskonfiguration med 200 MikroTik-routerar

Mitt orealiserade projekt. NĂ€tverkskonfiguration med 200 MikroTik-routerar

Hej alla. Denna artikel Àr avsedd för dem som har mÄnga MikroTik-enheter i sitt nÀtverk och som vill maximera enheten, sÄ att de inte behöver ansluta till varje enhet individuellt. I denna artikel kommer jag att beskriva ett projekt som tyvÀrr inte nÄdde produktionsstadiet pÄ grund av mÀnskliga faktorer. Kort sagt: över 200 routrar, snabb installation och utbildning av personal, enhetlighet enligt regioner, filtrering av nÀtverk och specifika vÀrdar, möjlighet till enkel tillÀgg av regler till alla enheter, loggning och Ätkomstkontroll.

Det som beskrivs nedan anses inte vara en fĂ€rdig lösning, men jag hoppas att det kommer att vara till nytta för dig nĂ€r du planerar dina nĂ€tverk och minimerar misstagen. Vissa punkter och lösningar kan verka inte helt korrekta – om sĂ„ Ă€r fallet, skriv en kommentar. Kritik i detta fall kommer att vara en erfarenhet i den allmĂ€nna kunskapsbasen. DĂ€rför, lĂ€sare, kolla in kommentarerna, kanske författaren har gjort ett grovt misstag – gemenskapen kommer att hjĂ€lpa till.

Antalet routrar Ă€r 200–300, spridda över olika stĂ€der med varierande kvalitet pĂ„ internetanslutningen. Det Ă€r nödvĂ€ndigt att göra allt snyggt och tydligt för lokala administratörer för att förklara hur allt kommer att fungera.

SÄ, var börjar nÄgot projekt? SjÀlvklart, med Kravspecifikation.

  1. Organisering av nÀtverksplaner för alla kontor enligt kundens krav, segmentering av nÀtverk (frÄn 3 till 20 nÀtverk i kontoren beroende pÄ antalet enheter).
  2. InstÀllning av enheter i varje kontor. Kontroll av faktisk bandbredd frÄn leverantören under olika arbetsförhÄllanden.
  3. Organisering av skydd för enheter, hantering enligt vit lista, automatisk upptÀckning av attacker med automatisk tillÀgg i svart lista under en viss tidsperiod, minimering av anvÀndningen av olika tekniska medel som anvÀnds för att avlyssna Ätkomst till styrning och avvÀgning frÄn service.
  4. Organisering av skyddade VPN-anslutningar med filtrering enligt kundens krav. Minst 3 VPN-anslutningar frÄn varje kontor till centralen.
  5. Baserat pÄ punkt 1 och 2. VÀlj optimala sÀtt att bygga redundanta VPN. Teknologin för dynamisk routing kan vÀljas av utföraren med korrekt motivering.
  6. Organisation av trafikprioritering efter protokoll, portar, vÀrdar och andra specifika tjÀnster som kunden anvÀnder. (VOIP, vÀrdar med viktiga tjÀnster)
  7. Organisation av övervakning och loggning av routerhÀndelser för att reagera pÄ teknisk supportpersonal.

Som vi förstÄr, upprÀttas specifikationer ibland utifrÄn krav. Dessa krav har jag formulerat sjÀlv efter att ha lyssnat pÄ de huvudsakliga problemen. Jag förutsatte att genomförandet av dessa punkter eventuellt skulle kunna hanteras av nÄgon annan.

Vilka verktyg kommer att anvÀndas för att uppfylla dessa krav:

  1. ELK-stacken (efter en tid insÄg vi att istÀllet för logstash skulle fluentd anvÀndas).
  2. Ansible. För att underlÀtta administrationen och dela upp Ätkomsten kommer vi att anvÀnda AWX.
  3. GITLAB. HÀr behövs inga ytterligare förklaringar. Vad skulle vi göra utan versionskontroll av vÄra konfigurationer.
  4. PowerShell. Det kommer att finnas ett enkelt skript för den första genereringen av konfigurationen.
  5. Dokuwiki, för att skriva dokumentation och guider. I det hÀr fallet anvÀnder vi habr.com.
  6. Övervakning kommer att ske via zabbix. HĂ€r kommer ocksĂ„ en diagram över anslutningar att ritas för att ge en allmĂ€n förstĂ„else.

Aspekter av EFK-konfiguration

För det första punkten kommer jag att beskriva den ideologi enligt vilken index ska byggas. Det finns mÄnga
utmÀrkta artiklar om konfiguration och mottagning av loggar frÄn enheter som styrs av mikrotik.

Jag kommer att fokusera pÄ vissa aspekter:

1. Enligt schemat bör man tÀnka igenom mottagningen av loggar frÄn olika platser och olika portar. För detta kommer vi att anvÀnda en loggaggregator. Vi vill ocksÄ göra universella grafer för alla routrar med möjlighet till Ätskillnad av Ätkomst. DÄ bygger vi indexen pÄ följande sÀtt:

HÀr Àr en del av konfigurationen med fluentd typ elasticsearch
logstash_format true
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
hosts , dÀr serveradressen och mönstret för indexnamnet anges för att skicka det formaterade dokumentet::9200
port 9200

PÄ sÄ sÀtt kan vi förena routrarna och segmentera enligt planen - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Varför komplicera det sÄ? Vi förstÄr att vi kommer att ha 200 eller fler enheter. Det gÄr inte att hÄlla koll pÄ allt. Med version 6.8 av elasticsearch fÄr vi tillgÄng till sÀkerhetsinstÀllningar (utan att behöva köpa licens), vilket gör att vi kan fördela rÀttigheterna att se mellan teknisk supportpersonal eller lokala systemadministratörer.
Tabeller och diagram – hĂ€r behöver vi helt enkelt komma överens – antingen anvĂ€nda enhetliga eller sĂ„ gör var och en som de tycker Ă€r bekvĂ€mt.

2. NÀr det gÀller loggning. Om vi aktiverar logg i brandvÀggens regler, gör vi namnen utan mellanslag. Det Àr tydligt att genom att anvÀnda en enkel konfiguration i fluentd kan vi filtrera data och skapa anvÀndbara paneler. PÄ bilden nedan Àr min hemrouter.

Mitt orealiserade projekt. NĂ€tverkskonfiguration med 200 MikroTik-routerar

3. NÀr det gÀller lagringsutrymme och loggar. I genomsnitt, vid 1000 meddelanden per timme, tar loggarna upp 2-3 MB per dag, vilket, som ni hÄller med om, inte Àr sÄ mycket. Version elasticsearch 7.5.

ANSIBLE.AWX

Till vÄr glÀdje har vi en fÀrdig modul för routeros.
Jag nĂ€mnde AWX, men kommandona nedan handlar bara om ansible i ren form – jag tror att det inte kommer att vara nĂ„gra problem att anvĂ€nda det via gui awx för dem som har arbetat med ansible.

Ärligt talat har jag tidigare sett andra guider som anvĂ€nde ssh, och alla hade olika problem med svarstider och en massa andra problem. Jag upprepar, vi kom inte till striden 🙂, sĂ„ se denna information som ett experiment som inte kom lĂ€ngre Ă€n en benkört med 20 routrar.

Vi behöver anvĂ€nda ett certifikat eller ett konto. Det Ă€r upp till er att avgöra, jag föredrar certifikat. NĂ„got som Ă€r viktigt angĂ„ende rĂ€ttigheter. Jag ger skrivrĂ€ttigheter – men att göra en 'reset config' kommer inte att vara möjligt.

NÀr det gÀller generation, kopiering av certifikat och import ska det inte uppstÄ nÄgra problem:

Kortfattat lista över kommandonPÄ din PC
ssh-keygen -t RSA, besvara frÄgorna, spara nyckeln.
Kopiera till mikrotik:
user ssh-keys import public-key-file=id_mtx.pub user=ansible
Först mÄste du skapa ett konto och ge det rÀttigheter.
Kontrollera anslutningen med hjÀlp av certifikatet
ssh -p 49475 -i /keys/mtx ansible@192.168.0.120

Skriv in 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

Och hĂ€r Ă€r ett exempel pĂ„ playbook: — namn: add_work_sites
hosts: testmt
serial: 1
connection: network_cli
remote_user: mikrotik.west
gather_facts: yes
tasks:
— namn: add Work_sites
routeros_command:
commands:
— /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

Som man kan se av den angivna konfigurationen Àr det ganska enkelt att skapa sina egna playbooks. Det Àr tillrÀckligt att bemÀstra mikrotiks cli vÀl. LÄt oss tÀnka oss en situation dÀr vi behöver ta bort address list med viss information frÄn alla routrar, dÄ:

Hitta och ta bort/ip firewal address-list remove [find where list=«gov.ru»]

Jag har medvetet inte inkluderat hela brandvÀggslistan hÀr eftersom den kommer att vara individuell för varje projekt. Men jag kan sÀga en sak sÀkert, anvÀnd endast adresslistor.

GÀllande GITLAB Àr allt klart. Jag kommer inte att stanna pÄ den punkten. Allt ser bra ut med separata uppgifter, mallar och hanterare.

Powershell

HÀr kommer det att finnas tre filer. Varför PowerShell? Man kan vÀlja vilket verktyg man vill för att generera konfigurationer, beroende pÄ vad som Àr mest bekvÀmt. I det hÀr fallet har alla Windows, sÄ varför anvÀnda Bash nÀr det Àr mer bekvÀmt med PowerShell? Vad som Àr mest praktiskt.

SjÀlva skriptet (enkelt och tydligt):[cmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$EXTERNALIPADDRESS,
[Parameter(Mandatory=$true)]
[string]$EXTERNALIPROUTE,
[Parameter(Mandatory=$true)]
[string]$BWorknets,
[Parameter(Mandatory=$true)]
[string]$CWorknets,
[Parameter(Mandatory=$true)]
[string]$BVoipNets,
[Parameter(Mandatory=$true)]
[string]$CVoipNets,
[Parameter(Mandatory=$true)]
[string]$CClientss,
[Parameter(Mandatory=$true)]
[string]$BVPNWORKs,
[Parameter(Mandatory=$true)]
[string]$CVPNWORKs,
[Parameter(Mandatory=$true)]
[string]$BVPNCLIENTSs,
[Parameter(Mandatory=$true)]
[string]$cVPNCLIENTSs,
[Parameter(Mandatory=$true)]
[string]$NAMEROUTER,
[Parameter(Mandatory=$true)]
[string]$ServerCertificates,
[Parameter(Mandatory=$true)]
[string]$infile,
[Parameter(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

Jag ber om ursÀkt, jag kan inte publicera alla regler eftersom det inte skulle se sÀrskilt bra ut. Du kan sjÀlv skapa reglerna med hjÀlp av bÀsta praxis.

Till exempel, hÀr Àr en lista pÄ lÀnkar som jag följde:wiki.mikrotik.com/wiki/Manual:Securing_Your_Router
wiki.mikrotik.com/wiki/Manual:IP/Firewall/Filter
wiki.mikrotik.com/wiki/Manual:OSPF-examples
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 — hĂ€r mĂ„ste man veta att nĂ€r fasttrack Ă€r aktiverat, kommer prioritetsregler och trafikformning inte att fungera – anvĂ€ndbart för svaga enheter.

Förklaringar av variabler:Exempel pÄ följande nÀtverk:
192.168.0.0/24 arbetsnÀtverk
172.22.4.0/24 VOIP-nÀtverk
10.0.0.0/24 nÀtverk för kunder utan Ätkomst till det lokala nÀtverket
192.168.255.0/24 VPN-nÀtverk för stora filialer
172.19.255.0/24 VPN-nÀtverk för smÄ

NÀtverksadressen bestÄr av 4 decimaler, enligt A.B.C.D-principen, pÄ samma sÀtt fungerar substitutionen, om den vid start begÀr B, sÄ mÄste man ange för nÀtverket 192.168.0.0/24 nummer 0, och för C = 0.
$EXTERNALIPADDRESS — dedikerad adress frĂ„n leverantören.
$EXTERNALIPROUTE — standardrutt till nĂ€tverket 0.0.0.0/0
$BWorknets — ArbetsnĂ€t, i vĂ„rt exempel hĂ€r kommer det att vara 168
$CWorknets — ArbetsnĂ€t, i vĂ„rt exempel hĂ€r kommer det att vara 0
$BVoipNets — VOIP-nĂ€tverk i vĂ„rt exempel hĂ€r 22
$CVoipNets — VOIP-nĂ€tverk i vĂ„rt exempel hĂ€r 4
$CClientss — NĂ€tverk för kunder – endast Ă„tkomst till internet, i vĂ„rt fall hĂ€r 0
$BVPNWORKs — VPN-nĂ€tverk för stora filialer, i vĂ„rt exempel 20
$CVPNWORKs — VPN-nĂ€tverk för stora filialer, i vĂ„rt exempel 255
$BVPNCLIENTS — VPN-nĂ€tverk för smĂ„ filialer, alltsĂ„ 19
$CVPNCLIENTS — VPN-nĂ€tverk för smĂ„ filialer, alltsĂ„ 255
$NAMEROUTER — namn pĂ„ routern
$ServerCertificate — namn pĂ„ certifikatet som du importerar pĂ„ förhand
$infile — Ange sökvĂ€gen till filen som vi ska lĂ€sa konfigurationen frĂ„n, till exempel D:config.txt (bĂ€ttre med en engelsk sökvĂ€g utan citationstecken och mellanslag)
$outfile — Ange sökvĂ€gen dĂ€r filen ska sparas, till exempel D:MT-test.txt

Jag har avsiktligt Àndrat adresserna i exemplen av uppenbara skÀl.

Jag hoppade över punkten om detektering av attacker och onormalt beteende – detta förtjĂ€nar en egen artikel. Men det Ă€r vĂ€rt att nĂ€mna att i denna kategori kan man anvĂ€nda övervakningsdata frĂ„n Zabbix + processade curl-data frĂ„n elasticsearch.

Vilka punkter som behöver uppmÀrksammas:

  1. NĂ€tverksplan. Det Ă€r bĂ€ttre att göra en lĂ€sbar version frĂ„n början. Excel rĂ€cker gott. TyvĂ€rr ser jag ofta att nĂ€tverk planeras med principen "Ny filial, hĂ€r har ni /24". Ingen tar reda pĂ„ hur mĂ„nga enheter som planeras pĂ„ plats och om det kommer att bli nĂ„gon fortsatt tillvĂ€xt. Till exempel om en liten butik öppnar, dĂ€r det frĂ„n början Ă€r klart att det inte kommer att finnas mer Ă€n 10 enheter, varför avsĂ€tta /24? För stora filialer – tvĂ€rtom, avsĂ€tter man /24 och enheterna blir 500 – man kan enkelt lĂ€gga till ett nĂ€tverk, men man vill gĂ€rna planera allt frĂ„n början.
  2. Filtreringsregler. Om projektet förutsÀtter att det kommer att vara nÀtverksuppdelningar och maximal segmentering. Best Practices förÀndras över tid. Tidigare delade man upp nÀtverk för datorer och nÀtverk för skrivare, nu Àr det helt okej att inte dela dessa nÀtverk. AnvÀnd sunt förnuft och undvik att skapa mÄnga subnÀt dÀr de inte behövs och att slÄ samman alla enheter i ett nÀtverk.
  3. "Gyllene" instÀllningar pÄ alla routrar. Det vill sÀga, om du har bestÀmt dig för en plan. Det Àr bra att tÀnka pÄ allt frÄn början och försöka se till att alla instÀllningar Àr identiska - det handlar endast om olika adresseringslistor och IP-adresser. Vid eventuella problem kommer tiden för felsökning att bli kortare.
  4. Organisatoriska aspekter Àr lika viktiga som de tekniska. Ofta utför lata anstÀllda de angivna rekommendationerna "för hand", utan att anvÀnda fÀrdiga konfigurationer och skript, vilket i slutÀndan leder till problem utan orsak.

Om dynamisk routing. OSPF anvÀndes med zonindelning. Men detta Àr en testmiljö; i skarpa förhÄllanden Àr det mer intressant att konfigurera sÄdana saker.

Jag hoppas att ingen blev besviken över att jag inte la upp routerkonfigurationerna. Jag tror att lÀnkarna rÀcker, och sedan beror allt pÄ kraven. Och givetvis tester, vi behöver fler tester.

Jag önskar alla att förverkliga sina projekt det nya Äret. MÄ access granted vara med er!!!

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster