Mening amalga oshirilmagan loyiham. 200 ta MikroTik router tarmog'i

Mening amalga oshirilmagan loyiham. 200 ta MikroTik router tarmog'i

Hammaga salom. Ushbu maqola o'z parkida ko'plab Mikrotik qurilmalariga ega bo'lganlar va har bir qurilmaga alohida ulanmaslik uchun maksimal unifikatsiya qilishni xohlaydiganlar uchun mo'ljallangan. Ushbu maqolada men, afsuski, inson omillari tufayli jangovar sharoitlarga etib bormagan loyihani tasvirlab beraman. Muxtasar qilib aytganda: 200 dan ortiq marshrutizatorlar, tezkor sozlash va xodimlarni o'qitish, mintaqalar bo'yicha birlashtirish, tarmoqlar va maxsus xostlarni filtrlash, barcha qurilmalarga osonlikcha qoidalar qo'shish, jurnalga kirish va kirishni boshqarish.

Quyida tasvirlangan narsa tayyor ish bo'lib ko'rinmaydi, lekin bu sizning tarmoqlaringizni rejalashtirish va xatolarni minimallashtirishda sizga foydali bo'ladi deb umid qilaman. Ehtimol, ba'zi fikrlar va echimlar sizga mutlaqo to'g'ri kelmasligi mumkin - agar shunday bo'lsa, sharhlarda yozing. Bu holatda tanqid umumiy xazina uchun tajriba bo'ladi. Shuning uchun, o'quvchi, sharhlarni ko'rib chiqing, ehtimol muallif jiddiy xatoga yo'l qo'ygandir - jamoa yordam beradi.

Routerlar soni 200-300 dona bo'lib, turli xil shaharlar bo'ylab tarqalib, Internetga ulanishning sifati har xil. Hamma narsani chiroyli qilish va mahalliy adminlarga hammasi qanday ishlashini aniq tushuntirish kerak.

Xo'sh, har qanday loyiha qaerdan boshlanadi? Albatta, bilan TK.

  1. Mijozlarning talablariga muvofiq barcha filiallar uchun tarmoq rejasini tashkil etish, tarmoq segmentatsiyasi (qurilmalar soniga qarab filiallarda 3 tadan 20 tagacha).
  2. Har bir filialda qurilmalarni sozlash. Turli xil ish sharoitlarida provayderning haqiqiy o'tkazish tezligini tekshirish.
  3. Qurilmani himoya qilishni tashkil etish, oq ro'yxatni boshqarish, ma'lum vaqt davomida avtomatik qora ro'yxatga olish bilan hujumlarni avtomatik aniqlash, boshqaruvga kirishni to'xtatish va xizmatni rad etish uchun ishlatiladigan turli xil texnik vositalardan foydalanishni minimallashtirish.
  4. Mijozlarning talablariga muvofiq tarmoq filtrlash bilan xavfsiz VPN ulanishlarini tashkil etish. Har bir filialdan markazga kamida 3 ta VPN ulanishi.
  5. 1, 2-bandlar asosida. Nosozliklarga chidamli VPN-larni qurishning optimal usullarini tanlang. Agar to'g'ri asoslansa, dinamik marshrutlash texnologiyasi pudratchi tomonidan tanlanishi mumkin.
  6. Protokollar, portlar, xostlar va mijoz foydalanadigan boshqa maxsus xizmatlar bo'yicha trafik ustuvorligini tashkil etish. (VOIP, muhim xizmatlarga ega xostlar)
  7. Texnik qo'llab-quvvatlash xodimlarining javobi uchun marshrutizator hodisalarini monitoring qilish va qayd qilishni tashkil etish.

Biz tushunganimizdek, bir qator hollarda texnik shartlar talablar asosida tuziladi. Men asosiy muammolarni tinglaganimdan keyin bu talablarni o'zim ishlab chiqdim. U boshqa birovning bu fikrlarga g'amxo'rlik qilishi mumkinligini tan oldi.

Ushbu talablarni bajarish uchun qanday vositalar qo'llaniladi:

  1. ELK stack (bir muncha vaqt o'tgach, logstash o'rniga fluentd ishlatilishi aniq bo'ldi).
  2. Ansible. Boshqaruv va ruxsat almashish qulayligi uchun biz AWX dan foydalanamiz.
  3. GITLAB. Bu erda tushuntirishga hojat yo'q. Konfiguratsiyalarimizni versiya nazoratisiz qayerda bo'lardik?
  4. PowerShell. Konfiguratsiyaning dastlabki avlodi uchun oddiy skript bo'ladi.
  5. Doku wiki, hujjatlar va qo'llanmalar yozish uchun. Bunday holda biz habr.com dan foydalanamiz.
  6. Monitoring zabbix orqali amalga oshiriladi. U yerda umumiy tushunish uchun ulanish sxemasi ham chiziladi.

EFK o'rnatish nuqtalari

Birinchi nuqtaga kelsak, men faqat indekslar qanday mafkura asosida tuzilishini tasvirlab beraman. Juda ko'p .. lar bor
mikrotik bilan ishlaydigan qurilmalardan jurnallarni sozlash va qabul qilish bo'yicha ajoyib maqolalar.

Men ba'zi fikrlarga to'xtalaman:

1. Diagrammaga ko'ra, turli joylardan va turli portlardan jurnallarni qabul qilishni ko'rib chiqishga arziydi. Buning uchun log agregatordan foydalanamiz. Shuningdek, biz kirishni almashish imkoniyatiga ega bo'lgan barcha routerlar uchun universal grafiklarni yaratmoqchimiz. Keyin indekslarni quyidagicha tuzamiz:

Mana fluentd bilan konfiguratsiyaning bir qismi elasticsearch yozing
logstash_format rost
indeks_nomi mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
hosts elastika: 9200
9200 porti

Shunday qilib, biz marshrutizatorlar va segmentlarni rejaga muvofiq birlashtira olamiz - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Nega buni juda murakkablashtirasiz? Biz 200 yoki undan ortiq qurilmaga ega bo'lishini tushunamiz. Siz hamma narsani kuzatib bo'lmaydi. Elasticsearch 6.8 versiyasida xavfsizlik sozlamalari biz uchun mavjud (litsenziya sotib olmasdan), shu bilan biz texnik yordam xodimlari yoki mahalliy tizim ma'murlari o'rtasida ko'rish huquqlarini taqsimlashimiz mumkin.
Jadvallar, grafiklar - bu erda siz faqat rozi bo'lishingiz kerak - yoki bir xillaridan foydalaning yoki hamma o'zi uchun qulay bo'lgan narsani qiladi.

2. Jurnalga kirish orqali. Agar biz xavfsizlik devori qoidalarida logni yoqsak, biz nomlarni bo'sh joysiz qilamiz. Ko'rinib turibdiki, fluentd-da oddiy konfiguratsiyadan foydalanib, biz ma'lumotlarni filtrlashimiz va qulay panellar yaratishimiz mumkin. Quyidagi rasm mening uy routerim.

Mening amalga oshirilmagan loyiham. 200 ta MikroTik router tarmog'i

3. Bo'sh joy va jurnallar bo'yicha. O'rtacha soatiga 1000 ta xabar bilan jurnallar kuniga 2-3 MB joy oladi, ko'ryapsizmi, bu unchalik ko'p emas. Elasticsearch versiyasi 7.5.

ANSIBLE.AWX

Yaxshiyamki, bizda marshrutizatorlar uchun tayyor modul mavjud
Men AWX haqida aytib o'tdim, lekin quyidagi buyruqlar faqat sof shaklda ansible haqida - menimcha, ansible bilan ishlaganlar uchun gui orqali awx dan foydalanishda hech qanday muammo bo'lmaydi.

Rostini aytsam, bundan oldin men ssh dan foydalangan boshqa qo'llanmalarni ko'rib chiqdim va ularning barchasi javob berish vaqti va boshqa bir qator muammolar bilan bog'liq turli xil muammolarga duch keldi. Takror aytaman, bu jangga kelmadi , bu ma'lumotni 20 marshrutizatorli stenddan uzoqqa chiqmagan tajriba sifatida qabul qiling.

Biz sertifikat yoki hisob qaydnomasidan foydalanishimiz kerak. Siz qaror qilasiz, men sertifikatlar tarafdoriman. Huquqlar haqida ba'zi nozik fikrlar. Men yozish huquqini beraman - hech bo'lmaganda "konfiguratsiyani tiklash" ishlamaydi.

Sertifikatni yaratish, nusxalash va import qilishda hech qanday muammo bo'lmasligi kerak:

Qisqacha buyruqlar ro'yxatiKompyuteringizda
ssh-keygen -t RSA, savollarga javob bering, kalitni saqlang.
Mikrotik-ga nusxalash:
foydalanuvchi ssh-keys import public-key-file=id_mtx.pub user=ansible
Avval siz hisob yaratishingiz va unga huquqlarni belgilashingiz kerak.
Sertifikat yordamida ulanishni tekshirish
ssh -p 49475 -i / kalitlari / mtx [elektron pochta bilan himoyalangan]

Ro'yxatdan o'ting 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

Xo'sh, misol o'yin kitobi: - nomi: add_work_sites
xostlar: testmt
seriya: 1
ulanish: network_cli
masofaviy_foydalanuvchi: mikrotik.west
Faktlarni to'plash: ha
vazifalar:
- nomi: Work_sites qo'shing
routeros_buyruq:
buyruqlar:
- /ip xavfsizlik devori manzil-ro'yxatiga manzil qo'shing=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
- /ip xavfsizlik devori manzillar ro'yxatiga manzil qo'shing=habr.com list=work_sites comment=for_habr

Yuqoridagi konfiguratsiyadan ko'rinib turibdiki, o'zingizning o'yin kitoblaringizni yaratish qiyin emas. Cli mikrotikni yaxshi o'zlashtirish kifoya. Keling, barcha marshrutizatorlardagi ma'lum ma'lumotlar bilan manzillar ro'yxatini olib tashlashingiz kerak bo'lgan vaziyatni tasavvur qilaylik, keyin:

Toping va olib tashlang/ip xavfsizlik devori manzillar ro'yxatini olib tashlang [ro'yxatni qaerdan toping="gov.ru"]

Men bu yerga butun xavfsizlik devori ro'yxatini ataylab kiritmadim, chunki... har bir loyiha uchun individual bo'ladi. Lekin bir narsani aniq aytishim mumkin, faqat manzillar ro'yxatidan foydalaning.

GITLABga ko'ra, hamma narsa aniq. Bu masalaga toβ€˜xtalmayman. Har bir narsa individual vazifalar, shablonlar, ishlov beruvchilar uchun chiroyli.

PowerShell

Bu erda 3 ta fayl bo'ladi. Nima uchun powershell? Konfiguratsiyalarni yaratish uchun siz o'zingiz uchun qulayroq bo'lgan har qanday vositani tanlashingiz mumkin. Bunday holda, har bir kishi o'z shaxsiy kompyuterida Windows-ga ega, shuning uchun nima uchun powershell qulayroq bo'lsa, uni bash-da qilish kerak. Qaysi biri qulayroq?

Skriptning o'zi (oddiy va tushunarli):[cmdletBinding()] Param(
[Parametr(majburiy=$true)] [string]$EXTERNALIPADRESS,
[Parametr(majburiy=$true)] [string]$EXTERNALIPROUTE,
[Parametr(majburiy=$true)] [string]$BWorknets,
[Parametr(majburiy=$true)] [string]$CWorknets,
[Parametr(majburiy=$true)] [string]$BVoipNets,
[Parametr(majburiy=$true)] [string]$CVoipNets,
[Parametr(majburiy=$true)] [string]$CClientss,
[Parametr(majburiy=$true)] [string]$BVPNWORKs,
[Parametr(majburiy=$true)] [string]$CVPNWORKs,
[Parametr(majburiy=$true)] [string]$BVPNCLIENTSs,
[Parametr(majburiy=$true)] [string]$cVPNCLIENTSs,
[Parametr(majburiy=$true)] [string]$NAMEROUTER,
[Parametr(majburiy=$true)] [string]$ServerCertificates,
[Parametr(majburiy=$true)] [string]$infile,
[Parametr(majburiy=$true)] [string]$outfile
)

Get-Content $infile | Foreach-Object {$_.Replace("EXTERNIP", $EXTERNALIPADRESS)} |
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("ServerCertificates", $ServerCertificates)} | Set-Content $outfile

Iltimos, meni kechiring, men barcha qoidalarni e'lon qila olmayman, chunki... juda chiroyli bo'lmaydi. Siz eng yaxshi amaliyotlarga asoslanib, qoidalarni o'zingiz qilishingiz mumkin.

Masalan, men kuzatib borgan havolalar ro'yxati:wiki.mikrotik.com/wiki/Manual:Routeringizni_xavfsizlantirish
wiki.mikrotik.com/wiki/Manual:IP/Xavfsizlik devori/Filtr
wiki.mikrotik.com/wiki/Manual:OSPF-misollar
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 - bu yerda bilishingiz kerakki, fasttrack yoqilganda, trafik ustuvorligini belgilash va shakllantirish qoidalari ishlamaydi - zaif qurilmalar uchun foydalidir.

O'zgaruvchilar uchun belgilar:Misol tariqasida quyidagi tarmoqlar olinadi:
192.168.0.0/24 ishlaydigan tarmoq
172.22.4.0/24 VOIP tarmog'i
Mahalliy tarmoqqa kirish imkoni bo'lmagan mijozlar uchun 10.0.0.0/24 tarmog'i
Katta filiallar uchun 192.168.255.0/24 VPN tarmog'i
Kichik uchun 172.19.255.0/24 VPN tarmog'i

Tarmoq manzili mos ravishda A.B.C.D 4 o'nlik raqamdan iborat, almashtirish xuddi shu printsip bo'yicha ishlaydi, agar ishga tushirishda u B ni so'rasa, bu 192.168.0.0/24 tarmog'i uchun va C uchun 0 raqamini kiritish kerakligini anglatadi. = 0.
$EXTERNALIPADDRESS - provayderning maxsus manzili.
$EXTERNALIPROUTE - 0.0.0.0/0 tarmoqqa standart marshrut
$BWorknets - Ish tarmog'i, bizning misolimizda 168 bo'ladi
$CWorknets - Ishchi tarmoq, bizning misolimizda bu 0 bo'ladi
$BVoipNets - bu erda bizning misolimizda VOIP tarmog'i 22
$CVoipNets - bu erda bizning misolimizda VOIP tarmog'i 4
$CClientss - Mijozlar uchun tarmoq - faqat Internetga kirish, bizning holatlarimizda bu erda 0
$BVPNWORKs - Katta filiallar uchun VPN tarmog'i, bizning misolimizda 20
$CVPNWORKs - Katta filiallar uchun VPN tarmog'i, bizning misolimizda 255
$BVPNCLIENTS - kichik filiallar uchun VPN tarmog'i, ya'ni 19
$CVPNCLIENTS - kichik filiallar uchun VPN tarmog'i, ya'ni 255
$NAMEROUTER - router nomi
$ServerCertificate - siz avval import qilgan sertifikat nomi
$infile β€” Biz konfiguratsiyani oΚ»qib chiqadigan faylga yoΚ»lni belgilang, masalan D:config.txt (inglizcha yoΚ»l qoΚ»shtirnoq va boΚ»shliqsiz afzalroq)
$outfile β€” uni saqlash uchun yoΚ»lni belgilang, masalan D:MT-test.txt

Men aniq sabablarga ko'ra misollardagi manzillarni ataylab o'zgartirdim.

Men hujumlar va g'ayritabiiy xatti-harakatlarni aniqlashni o'tkazib yubordim - bu alohida maqolaga loyiqdir. Ammo shuni ta'kidlash kerakki, ushbu turkumda siz Zabbix + elasticsearch-dan qayta ishlangan curl ma'lumotlaridan olingan monitoring ma'lumotlari qiymatlaridan foydalanishingiz mumkin.

Qaysi jihatlarga e'tibor berish kerak:

  1. Tarmoq rejasi. Uni darhol o'qilishi mumkin bo'lgan shaklda tuzish yaxshiroqdir. Excel etarli bo'ladi. Afsuski, men ko'pincha tarmoqlar "Yangi filial paydo bo'ldi, mana siz uchun / 24" tamoyili bo'yicha qurilganligini ko'raman. Hech kim ma'lum bir joyda qancha qurilmalar kutilayotganini yoki keyingi o'sish bo'lishini aniqlamaydi. Misol uchun, dastlab qurilma 10 dan ortiq bo'lmasligi aniq bo'lgan kichik do'kon ochildi, nima uchun /24 ajratish kerak? Katta filiallar uchun, aksincha, ular /24 ni ajratadilar va 500 ta qurilma mavjud - siz shunchaki tarmoq qo'shishingiz mumkin, lekin siz bir vaqtning o'zida hamma narsani o'ylab ko'rishni xohlaysiz.
  2. Filtrlash qoidalari. Agar loyiha tarmoqlarni ajratish va maksimal segmentatsiya bo'lishini nazarda tutsa. Eng yaxshi amaliyotlar vaqt o'tishi bilan o'zgaradi. Ilgari kompyuter tarmog'i va printer tarmog'i bo'lingan, ammo hozir bu tarmoqlarni bo'lmaslik odatiy holdir. Sog'lom fikrdan foydalanishga arziydi va kerak bo'lmagan joylarda ko'plab kichik tarmoqlar yaratmaslik va barcha qurilmalarni bitta tarmoqqa birlashtirmaslik kerak.
  3. Barcha routerlarda "Oltin" sozlamalari. Bular. agar siz rejaga qaror qilgan bo'lsangiz. Darhol hamma narsani oldindan ko'rish va barcha sozlamalar bir xil ekanligiga ishonch hosil qilishga harakat qilish kerak - faqat manzillar ro'yxati va IP manzillar boshqacha. Muammolar yuzaga kelsa, disk raskadrovka vaqti kamroq bo'ladi.
  4. Tashkiliy masalalar texnik masalalardan kam emas. Ko'pincha dangasa xodimlar ushbu tavsiyalarni tayyor konfiguratsiyalar va skriptlardan foydalanmasdan "qo'lda" bajaradilar, bu esa oxir-oqibat hech qanday holatda muammolarga olib keladi.

Dinamik marshrutlash orqali. Hududga bo'linish bilan OSPF ishlatilgan. Ammo bu sinov stoli, jangovar sharoitlarda bunday narsalarni sozlash qiziqroq.

Router konfiguratsiyasini joylashtirmaganimdan hech kim xafa emas deb umid qilaman. O'ylaymanki, havolalar etarli bo'ladi, keyin hamma narsa talablarga bog'liq. Va, albatta, testlar, ko'proq testlar kerak.

Yangi yilda barchaga o'z loyihalarini amalga oshirishlarini tilayman. Kirish sizga hamroh bo'lsin!!!

Manba: www.habr.com

a Izoh qo'shish