Менің орындалмаған жобам. 200 MikroTik маршрутизаторының желісі

Менің орындалмаған жобам. 200 MikroTik маршрутизаторының желісі

Бәріңе сәлем. Бұл мақала өз паркінде көптеген Mikrotik құрылғылары бар және әр құрылғыға бөлек қосылмау үшін максималды біріктіруді қалайтындарға арналған. Бұл мақалада мен, өкінішке орай, адами факторларға байланысты жауынгерлік жағдайға жетпеген жобаны сипаттаймын. Қысқасы: 200-ден астам маршрутизаторлар, жылдам орнату және қызметкерлерді оқыту, аймақ бойынша біріктіру, желілерді және нақты хосттарды сүзу, барлық құрылғыларға ережелерді оңай қосу мүмкіндігі, журналды тіркеу және кіруді басқару.

Төменде сипатталған нәрсе дайын жағдай сияқты көрінбейді, бірақ бұл сіздің желілеріңізді жоспарлау және қателерді азайту кезінде сізге пайдалы болады деп үміттенемін. Мүмкін, кейбір тармақтар мен шешімдер сізге мүлдем дұрыс емес болып көрінуі мүмкін - егер солай болса, түсініктемелерде жазыңыз. Бұл жағдайда сын ортақ қазынаға тәжірибе болмақ. Сондықтан, оқырман, пікірлерге назар аударыңыз, мүмкін автор өрескел қателік жіберген шығар - қоғам көмектеседі.

Маршрутизаторлар саны 200-300, Интернетке қосылу сапасы әртүрлі әртүрлі қалаларға шашыраңқы. Барлығын әдемі етіп жасау керек және жергілікті әкімшілерге барлығы қалай жұмыс істейтінін нақты түсіндіру керек.

Сонымен, кез келген жоба неден басталады? Әрине, бірге ТЗ.

  1. Тұтынушылардың талаптарына сәйкес барлық филиалдар үшін желілік жоспарды ұйымдастыру, желіні сегменттеу (құрылғылар санына байланысты филиалдардағы 3-тен 20 желіге дейін).
  2. Әрбір филиалда құрылғыларды орнату. Түрлі жұмыс жағдайларында провайдердің нақты өткізу жылдамдығын тексеру.
  3. Құрылғыны қорғауды ұйымдастыру, ақ тізімді басқару, белгілі бір уақыт аралығында автоматты қара тізімге енгізу арқылы шабуылдарды автоматты түрде анықтау, бақылауға қол жеткізуді тоқтату және қызмет көрсетуден бас тарту үшін қолданылатын әртүрлі техникалық құралдарды пайдалануды азайту.
  4. Тұтынушының талаптарына сәйкес желіні сүзу арқылы қауіпсіз VPN қосылымдарын ұйымдастыру. Әр филиалдан орталыққа кемінде 3 VPN қосылымы.
  5. 1, 2-тармақтарға негізделген. Ақауларға төзімді VPN құрудың оңтайлы жолдарын таңдаңыз. Дұрыс негізделсе, динамикалық маршруттау технологиясын мердігер таңдай алады.
  6. Тұтынушы пайдаланатын хаттамалар, порттар, хосттар және басқа да нақты қызметтер бойынша трафик басымдығын ұйымдастыру. (VOIP, маңызды қызметтері бар хосттар)
  7. Техникалық қолдау персоналының әрекеті үшін маршрутизатор оқиғаларының мониторингін және журналын жүргізуді ұйымдастыру.

Біз түсінгеніміздей, бірқатар жағдайларда техникалық шарттар талаптар негізінде жасалады. Бұл талаптарды мен негізгі мәселелерді тыңдай отырып, өзім тұжырымдадым. Ол басқа біреудің бұл мәселелермен айналысуы мүмкін екенін мойындады.

Бұл талаптарды орындау үшін қандай құралдар қолданылады:

  1. ELK стек (біраз уақыттан кейін logstash орнына fluentd қолданылатыны белгілі болды).
  2. Ansible. Басқару және қол жеткізуді ортақ пайдалану үшін біз AWX қолданамыз.
  3. GITLAB. Бұл жерде түсіндірудің қажеті жоқ. Конфигурацияларымызды нұсқаны басқармай қай жерде боламыз?
  4. PowerShell. Конфигурацияның бастапқы буыны үшін қарапайым сценарий болады.
  5. Doku wiki, құжаттама мен нұсқаулықтарды жазуға арналған. Бұл жағдайда біз habr.com сайтын пайдаланамыз.
  6. Бақылау zabbix арқылы жүзеге асырылады. Жалпы түсіну үшін қосылым диаграммасы да сызылады.

EFK орнату нүктелері

Бірінші тармаққа келетін болсақ, мен индекстер қандай идеологиямен құрылатынын ғана сипаттаймын. Бар көп
mikrotik жұмыс істейтін құрылғылардан журналдарды орнату және қабылдау туралы тамаша мақалалар.

Мен кейбір мәселелерге тоқталамын:

1. Диаграммаға сәйкес, журналдарды әртүрлі жерлерден және әртүрлі порттардан алуды қарастырған жөн. Ол үшін журнал агрегаторын қолданамыз. Біз сондай-ақ ортақ пайдалану мүмкіндігі бар барлық маршрутизаторлар үшін әмбебап графика жасағымыз келеді. Содан кейін біз индекстерді келесідей құрастырамыз:

мұнда fluentd бар конфигурацияның бір бөлігі elasticsearch теріңіз
logstash_format шын
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
тазалау_интервалы 10с
иелері эластикалық ізденіс: 9200
9200 порты

Осылайша біз маршрутизаторлар мен сегменттерді жоспарға сәйкес біріктіре аламыз - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Неліктен мұны соншалықты күрделі етеді? Бізде 200 немесе одан да көп құрылғы болатынын түсінеміз. Сіз бәрін қадағалай алмайсыз. Elasticsearch 6.8 нұсқасымен қауіпсіздік параметрлері бізге қолжетімді (лицензияны сатып алмай-ақ), сол арқылы техникалық қолдау қызметкерлері немесе жергілікті жүйе әкімшілері арасында көру құқықтарын тарата аламыз.
Кестелер, графиктер - мұнда сіз жай ғана келісуіңіз керек - немесе бірдейлерді қолданыңыз, немесе әркім өзіне ыңғайлы нәрсені жасайды.

2. Тіркеу арқылы. Егер брандмауэр ережелеріне кіруді қоссақ, онда атауларды бос орынсыз жасаймыз. Fluentd тіліндегі қарапайым конфигурацияны пайдалану арқылы біз деректерді сүзіп, ыңғайлы панельдер жасай алатынымызды көруге болады. Төмендегі сурет менің үй маршрутизаторым.

Менің орындалмаған жобам. 200 MikroTik маршрутизаторының желісі

3. Орын алған және журналдар бойынша. Орташа алғанда, сағатына 1000 хабарламамен журналдар күніне 2-3 МБ алады, бұл, көріп отырсыздар, соншалықты көп емес. Elasticsearch нұсқасы 7.5.

ANSIBLE.AWX

Бақытымызға орай, бізде маршрутизаторларға арналған дайын модуль бар
Мен AWX туралы айттым, бірақ төмендегі пәрмендер тек таза түрде ansible туралы - менің ойымша, ansible-мен жұмыс істегендер үшін awx-ті gui арқылы пайдалануда қиындықтар болмайды.

Шынымды айтсам, бұған дейін мен ssh пайдаланатын басқа нұсқаулықтарды қарадым, олардың барлығында жауап беру уақыты мен басқа да көптеген мәселелерге қатысты әртүрлі мәселелер болды. Қайталап айтамын, бұл төбелеске келмеді , бұл ақпаратты эксперимент ретінде қабылдаңыз, ол 20 маршрутизатордың стендінен аспады.

Біз сертификатты немесе есептік жазбаны пайдалануымыз керек. Сіз шешесіз, мен сертификаттар үшінмін. Құқықтар туралы кейбір нәзік ойлар. Мен жазу құқығын беремін - кем дегенде «конфигурацияны қалпына келтіру» жұмыс істемейді.

Сертификат жасауда, көшіруде және импорттауда қиындықтар болмауы керек:

Қысқаша командалар тізіміКомпьютеріңізде
ssh-keygen -t RSA, сұрақтарға жауап беріңіз, кілтті сақтаңыз.
Микротикке көшіру:
пайдаланушы ssh-кілттерін импорттайды public-key-file=id_mtx.pub user=ansible
Алдымен тіркелгі жасап, оған құқықтарды тағайындау керек.
Сертификат арқылы қосылымды тексеру
ssh -p 49475 -i /keys/mtx [электрондық пошта қорғалған]

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

Ал, мысал ойын кітабы: - атауы: қосу_жұмыс_сайттары
хосттар: testmt
сериясы: 1
қосылым: network_cli
remote_user: mikrotik.west
фактілерді жинау: иә
тапсырмалар:
- атауы: Жұмыс_сайттарын қосыңыз
routeros_пәрмені:
командалар:
— /ip брандмауэр мекенжай-тізімі мекенжайын қосу=gov.ru тізімі=work_sites comment=Ticket665436_Ochen_nado
— /ip брандмауэрінің мекенжай-тізімі мекенжайын қосу=habr.com тізімі=жұмыс_сайттары пікірі=for_habr

Жоғарыдағы конфигурациядан көріп отырғаныңыздай, өз ойын кітаптарыңызды жасау қиын емес. Cli mikrotik-ті жақсы меңгеру жеткілікті. Барлық маршрутизаторлардағы белгілі деректермен мекенжайлар тізімін жою қажет жағдайды елестетіп көрейік, содан кейін:

Табыңыз және жойыңыз/ip брандмауэр мекенжай-тізімін алып тастаңыз [тізімді қайда табыңыз="gov.ru"]

Мен мұнда брандмауэр тізімін әдейі қоспадым, себебі... ол әрбір жоба үшін жеке болады. Бірақ бір нәрсені нақты айта аламын, тек мекенжайлар тізімін пайдаланыңыз.

GITLAB бойынша бәрі түсінікті. Мен бұл мәселеге тоқталмаймын. Жеке тапсырмалар, шаблондар, өңдеушілер үшін бәрі әдемі.

Powershell

Мұнда 3 файл болады. Неліктен powershell? Конфигурацияларды жасау үшін өзіңізге ыңғайлы кез келген құралды таңдай аласыз. Бұл жағдайда әркімнің өз компьютерінде Windows бар, сондықтан powershell ыңғайлы болған кезде оны неге bash-та жасау керек. Қайсысы ыңғайлы?

Сценарийдің өзі (қарапайым және түсінікті):[cmdletBinding()] Парам(
[Параметр(Міндетті=$true)] [string]$EXTERNALIPADRESS,
[Параметр(Міндетті=$true)] [string]$EXTERNALIPROUTE,
[Параметр(Міндетті=$true)] [string]$BWorknets,
[Параметр(Міндетті=$true)] [string]$CWorknets,
[Параметр(Міндетті=$true)] [string]$BVoipNets,
[Параметр(Міндетті=$true)] [string]$CVoipNets,
[Параметр(Міндетті=$true)] [string]$CClientss,
[Параметр(Міндетті=$true)] [string]$BVPNWORKs,
[Параметр(Міндетті=$true)] [string]$CVPNWORKs,
[Параметр(Міндетті=$true)] [string]$BVPNCLIENTSs,
[Параметр(Міндетті=$true)] [string]$cVPNCLIENTSs,
[Параметр(Міндетті=$true)] [string]$NAMEROUTER,
[Параметр(Міндетті=$true)] [string]$ServerCertificates,
[Параметр(Міндетті=$true)] [string]$infile,
[Параметр(Міндетті=$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

Мені кешіріңіз, мен барлық ережелерді жариялай алмаймын, себебі... бұл өте әдемі болмайды. Ең жақсы тәжірибелерді басшылыққа ала отырып, ережелерді өзіңіз жасай аласыз.

Мысалы, мен бақылаған сілтемелер тізімі:wiki.mikrotik.com/wiki/Manual:Маршрутизаторды_қорғау
wiki.mikrotik.com/wiki/Manual:IP/брандмауэр/сүзгі
wiki.mikrotik.com/wiki/Manual:OSPF мысалдары
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual:Winbox
wiki.mikrotik.com/wiki/Manual:Жоғарғылау_маршрутизаторы
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack - бұл жерде жылдам трек қосылған кезде трафик басымдылығы мен пішіндеу ережелері жұмыс істемейтінін білуіңіз керек - әлсіз құрылғылар үшін пайдалы.

Айнымалылар үшін белгілер:Мысал ретінде келесі желілер алынады:
192.168.0.0/24 жұмыс желісі
172.22.4.0/24 VOIP желісі
Жергілікті желіге қол жеткізе алмайтын клиенттер үшін 10.0.0.0/24 желісі
Ірі филиалдар үшін 192.168.255.0/24 VPN желісі
172.19.255.0/24 Кішіге арналған VPN желісі

Желінің мекенжайы 4 ондық саннан тұрады, сәйкесінше A.B.C.D, ауыстыру бірдей принцип бойынша жұмыс істейді, егер іске қосу кезінде ол В сұраса, бұл желі үшін 192.168.0.0/24, ал C үшін 0 санын енгізу керек дегенді білдіреді. = 0.
$EXTERNALIPADDRESS – провайдерден арнайы мекенжай.
$EXTERNALIPROUTE – 0.0.0.0/0 желіге әдепкі маршрут
$BWorknets - Жұмыс желісі, біздің мысалда 168 болады
$CWorknets - жұмыс істейтін желі, біздің мысалда бұл 0 болады
$BVoipNets - VOIP желісі біздің мысалдағы 22
$CVoipNets - VOIP желісі біздің мысалдағы 4
$CClientss - Клиенттерге арналған желі - тек Интернетке қол жеткізу, біздің жағдайда мұнда 0
$BVPNWORKs - ірі филиалдарға арналған VPN желісі, біздің мысалда 20
$CVPNWORKs - ірі филиалдарға арналған VPN желісі, біздің мысалда 255
$BVPNCLIENTS - шағын филиалдарға арналған VPN желісі, яғни 19
$CVPNCLIENTS - шағын филиалдарға арналған VPN желісі, яғни 255
$NAMEROUTER - маршрутизатордың аты
$ServerCertificate - бұрын импорттаған сертификаттың атауы
$infile — Конфигурацияны оқитын файлға жолды көрсетіңіз, мысалы D:config.txt (мүмкіндігінше тырнақшасыз және бос орынсыз ағылшынша жол)
$outfile — оны сақтайтын жолды көрсетіңіз, мысалы D:MT-test.txt

Мен мысалдардағы мекенжайларды белгілі себептермен әдейі өзгерттім.

Мен шабуылдар мен аномальды мінез-құлықты анықтау туралы мәселені жіберіп алдым - бұл бөлек мақалаға лайық. Бірақ бұл санатта Zabbix-тен алынған бақылау деректерінің мәндерін + elasticsearch-тен өңделген бұйра деректерін қолдануға болатынын атап өткен жөн.

Қандай тармақтарға назар аудару керек:

  1. Желі жоспары. Оны бірден оқылатын түрде құрастырған дұрыс. Excel бағдарламасы жеткілікті. Өкінішке орай, мен желілердің «Жаңа филиал пайда болды, міне, сізге / 24» қағидасы бойынша құрылғанын жиі көремін. Ешкім белгілі бір жерде қанша құрылғы күтілетінін немесе одан әрі өсу болатынын анықтамайды. Мысалы, бастапқыда құрылғы 10-нан аспайтыны анық болатын шағын дүкен ашылды, неге /24 бөлу керек? Үлкен филиалдар үшін, керісінше, олар /24 бөледі және 500 құрылғы бар - сіз жай ғана желіні қоса аласыз, бірақ сіз бәрін бірден ойластырғыңыз келеді.
  2. Сүзу ережелері. Егер жоба желілерді бөлу және максималды сегменттеу болады деп болжаса. Үздік тәжірибелер уақыт өте өзгереді. Бұрын ДК желісі мен принтер желісі екіге бөлінген, бірақ қазір бұл желілерді бөлмеу қалыпты жағдай. Ақыл-ойды пайдалану және қажет емес жерде көптеген ішкі желілерді жасамау және барлық құрылғыларды бір желіге біріктірмеу керек.
  3. Барлық маршрутизаторлардағы «Алтын» параметрлер. Анау. егер сіз жоспар туралы шешім қабылдаған болсаңыз. Барлығын бірден болжап, барлық параметрлердің бірдей екеніне көз жеткізуге тырысу керек - тек мекенжайлар тізімі мен IP мекенжайлары әртүрлі. Мәселелер туындаса, жөндеу уақыты қысқарады.
  4. Ұйымдастыру мәселелері техникалық мәселелерден кем емес. Көбінесе жалқау қызметкерлер бұл ұсыныстарды дайын конфигурациялар мен сценарийлерді пайдаланбай-ақ «қолмен» орындайды, бұл сайып келгенде, күтпеген жерден проблемаларға әкеледі.

Динамикалық маршруттау арқылы. Аймақтық бөлумен OSPF қолданылды. Бірақ бұл сынақ алаңы, ұрыс жағдайында мұндай заттарды орнату қызықтырақ.

Маршрутизатор конфигурацияларын жарияламағаныма ешкім ренжімейді деп үміттенемін. Менің ойымша, сілтемелер жеткілікті болады, содан кейін бәрі талаптарға байланысты. Және, әрине, сынақтар, қосымша сынақтар қажет.

Жаңа жылда барлығына өз жобаларын жүзеге асыруға тілектеспін. Сізге рұқсат берілген болсын!!!

Ақпарат көзі: www.habr.com

пікір қалдыру