Mənim reallaşmamış layihəm. 200 MikroTik marşrutlaşdırıcısından ibarət şəbəkə.

Mənim reallaşmamış layihəm. 200 MikroTik marşrutlaşdırıcısından ibarət şəbəkə.

Salam hər kəs. Bu məqalə Mikrotik cihazlarının sayı çox olanlar üçün nəzərdə tutulub və hər bir qurğuya ayrı-ayrılıqda qoşulmadan maksimum standartlaşdırma etmək istəyənlər üçün yazılıb. Bu məqalədə, təəssüf ki, insan amilləri səbəbindən real şəraitə çata bilməyən bir layihəni təsvir edəcəyəm. Qısa desəm: 200-dən çox marşrutlaşdırıcı, sürətli konfiqurasiya və personalın təhsili, bölgələr üzrə standartlaşdırma, şəbəkələrin və müəyyən xidmətlərin filtirlənməsi, bütün cihazlara qayda əlavə etmənin asanlığı, jurnallaşdırma və girişin idarə olunması.

Aşağıda təsvir edilənlər tam bir hallar toplusu iddiasında deyil, amma ümid edirəm ki, şəbəkələrinizi planlaşdırarkən və səhvləri minimuma endirərkən sizə faydalı olacaq. Bəlkə də, bəzi məqamlar və həllər sizə tam doğru görünməyəcək – əgər belədirsə, şərhlərdə yazın. Bu halda tənqid, ümumi təcrübəyə əlavə ediləcəkdir. Beləliklə, oxucu, şərhlərə bax, bəlkə müəllif ciddi bir səhv etdi – cəmiyyət kömək edəcək.

Marşrutlaşdırıcıların sayı 200-300 arasında, müxtəlif şəhərlərdə, müxtəlif internet bağlantısı keyfiyyətləri ilə yerləşir. Hər şeyi gözəl tərzdə tərtib etmək və lokal administratorlara necə işləyəcəyini aydınlaşdırmaq lazımdır.

Beləliklə, hər hansı bir layihəyə haradan başlayırıq. Təbii ki, Tələbnamə.

  1. Müştərinin tələblərinə uyğun olaraq bütün filiallarda şəbəkələrin planını hazırlamaq, şəbəkələri seqmentləşdirmək (filiallarda 3-dən 20-yə qədər şəbəkə, cihazların sayına görə).
  2. Hər bir filialda cihazların konfiqurasiyası. Müxtəlif iş şəraitlərində xidmət təminatçısının real ötürmə sürətinin yoxlanılması.
  3. Cihazların mühafizəsinin təşkil edilməsi, ağ siyahı ilə idarəetmə, hücumların avtomatik aşkarlanması və müəyyən bir zaman periodu üçün qara siyahıya alınması, idarəetmənin pozulmasına imkan verən müxtəlif texniki vasitələrin istifadəsinin minimuma endirilməsi.
  4. Müştərinin tələblərinə uyğun olaraq şəbəkələr üzrə filtrasiya ilə təmin edilmiş qorunan VPN bağlantılarının təşkili. Hər filialdan mərkəzə minimum 3 VPN bağlantısı.
  5. 1, 2-ci maddəyə əsasən. Dayanıqlı VPN yollarının ən optimal variantlarını seçmək. Düzgün əsaslandırma ilə dinamik marşrutlaşdırma texnologiyasını icraçının seçməsi mümkündür.
  6. Müştərinin istifadə etdiyi protokollar, portlar, hostlar və digər xüsusi xidmətlər üzrə trafik prioritetləşdirməsinin təşkil edilməsi. (VOIP, vacib xidmətləri olan hostlar)
  7. Texniki dəstək işçilərinin reaksiya verməsi üçün router hadisələrinin monitorinqi və qeydlərinin təşkil edilməsi.

Biz başa düşürük ki, bəzi hallarda TSh də tələbələrdən irəliləyir. Bu tələbləri mən müstəqil şəkildə formalaşdırdım, əsas problemləri dinlədikdən sonra. Bu maddələri yerinə yetirmək üçün başqası tərəfindən edilə biləcəyini nəzərə aldım.

Bu tələbləri yerinə yetirmək üçün hansı alətlər istifadə olunacaq:

  1. ELK stack (bir müddət sonra başa düşdüm ki, logstash yerinə fluentd istifadə olunacaq).
  2. Ansible. İdarəetmə asanlığı və girişin bölüşdürülməsi üçün AWX istifadə edəcəyik.
  3. GITLAB. Burada izah etməyə ehtiyac yoxdur. Konfiqurasiyaların versiyalarının idarə olunmasından hara qaça bilərik.
  4. PowerShell. İlk konfiqurasiya yaradılması üçün sadə bir skript olacaq.
  5. Dövrə viki, sənədləri və rəhbərlikləri yazmaq üçün. Bu halda, habr.com istifadə edirik.
  6. Monitorinq zabbix vasitəsilə həyata keçiriləcək. Eyni zamanda, ümumi başa düşmə üçün əlaqə sxemi çəkiləcək.

EFK-nın konfiqurasiya anları

Birinci maddə üzrə yalnız indekslərin necə qurulacağı ideologiyasını izah edəcəyəm. Çox sayda
mikrotik ilə idarə olunan cihazlardan loq qəbulu və konfiqurasiya etmə ilə bağlı çox sayda gözəl məqalələr var.

Bir neçə məqamda dayanacağam:

1. Sxemə uyğun olaraq, müxtəlif yerlərdən və müxtəlif portlardan loq qəbulu düşünülməlidir. Bunun üçün biz loq toplayıcı istifadə edəcəyik. Həmçinin, bütün routerlər üçün girişin bölüşdürülməsi imkanı olan universal qrafiklər yaratmaq istəyirik. Beləliklə, indeksləri aşağıdakı kimi qururuq:

bu, fluentd ilə konfiqurasiya hissəsidir type elasticsearch
logstash_format true
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
Filter by hosts (optional) :9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch"}:9200
port 9200

Beləliklə, routerləri birləşdirə bilərik və plan üzrə segmentləşdirə bilərik - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Niyə bunu çətinləşdiririk? Biz başa düşürük ki, bizdə 200-dən çox cihaz olacaq. Hər şeyə nəzarət etmək mümkün deyil. ElasticSearch-in 6.8 versiyası ilə təhlükəsizlik ayarları mövcuddur (licenziya alınmadan), beləliklə, biz texniki dəstək işçiləri və ya yerli sistem administratorları arasında baxış hüquqlarını bölüşdürə bilərik.
Cədvəllər, qrafiklər - burada sadəcə razılaşmalıyıq - ya eyni formatda istifadə edəcəyik, ya da hər kəs özünə uyğun olanı edəcək.

2. Loglama ilə bağlı. Firewall qaydalarında log aktiv edəndə, isimləri boşluqsuz yazmalıyıq. Görsənir ki, sadə konfiqurasiya ilə fluentd istifadə edərək, məlumatları süzgəcdən keçirə və rahat tabloslar yarada bilərik. Aşağıdakı şəkil - mənim ev routerimdir.

Mənim reallaşmamış layihəm. 200 MikroTik marşrutlaşdırıcısından ibarət şəbəkə.

3. Yerləşdirdiyi yer və loglar. Orta hesabla, saatda 1000 mesaj üçün loglar gündə 2-3 mb yer tutur, bu da razılaşın ki, çox deyil. Elasticsearch versiyası 7.5-dır.

ANSIBLE.AWX

Şükür ki, routeros üçün hazır modulumuz var.
AWX haqqında qeyd etdim, amma aşağıdakı komandalar yalnız saf ansible üçündür - düşünürəm ki, ansible ilə işləyənlər üçün awx vasitəsilə istifadə etməkdə problem çıxmayacaq.

Düzü, bundan əvvəl ssh istifadə edən digər təlimatlara baxmışdım və onların hər birində cavab vaxtı ilə bağlı fərqli problemlər var idi. Yenə də, döyüşə çatmadıq, düşünün ki, bu məlumatı 20 routerdən ibarət stend üzərində qalan bir eksperiment kimi qəbul edin.

Sertifikat və ya hesab istifadə etməliyik. Burada siz həll etməlisiniz, mən sertifikatlar tərəfdarıyam. İcaza verməkdə bir az incə məqam var. Yazma icazəsini verirəm - hətta "config sıfırlamaq" edə bilmirik.

Sertifikatın yaradılması, köçürülməsi və idxalı ilə bağlı problem olmamalıdır:

Qısa komandalar siyahısıSizin kompüterdə
ssh-keygen -t RSA, suallara cavab verin, açarı saxlayın.
Mikrotik-ə köçürürük:
user ssh-keys import public-key-file=id_mtx.pub user=ansible
Öncə hesab yaratmalı və ona icazalar verməlisiniz.
Sertifikatla bağlantını yoxlayırıq
ssh -p 49475 -i /keys/mtx ansible@192.168.0.120

vi /etc/ansible/hosts yazırıq
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

Və bir playbook nümunəsi: — name: add_work_sites
hosts: testmt
serial: 1
connection: network_cli
remote_user: mikrotik.west
gather_facts: yes
tasks:
— name: 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

Yuxarıda göstərilən konfiqurasiyadan göründüyü kimi, öz playbook-larınızı yazmaq çətin deyil. Yalnız mikrotik cli-ni yaxşı öyrənmək yetərlidir. Təsəvvür edin ki, bütün routerlərdə müəyyən məlumatlarla address list-i silmək lazımdırsa, o zaman:

Tapın və silin/ip firewal address-list remove [find where list=«gov.ru»]

Burada bütün firewall listesini kasıtlı olarak koymadım, çünki bu her proje için farklı olacaktır. Ancak kesin olarak şunu söyleyebilirim, yalnızca adres listesi kullanın.

GITLAB ile her şey net. Bu noktaya girmeyeceğim. Her şey ayrı görevler, şablonlar, işleyiciler şeklinde güzel.

Powershell

Burada 3 dosya olacak. Neden powershell? Konfigürasyonları oluşturma aracı olarak herkesin rahat ettiği herhangi bir aracı seçebilirsiniz. Bu durumda, herkesin bilgisayarında Windows var, o yüzden neden bash kullanmalıyız, powershell daha rahat.

Doğrudan kendisi basit ve anlaşılır olan script:[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

Lütfen beni affedin, bütün kuralları paylaşamıyorum çünkü bu oldukça hoş durmayacak. Kuralları en iyi uygulamalara dayanarak kendiniz oluşturabilirsiniz.

Örneğin, işte takip ettiğim bağlantıların bir listesi: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 — burada bilmeniz gereken şey, fasttrack etkinleştirildiğinde, önceliklendirme ve trafik şekillendirme kurallarının çalışmayacağıdır – zayıf cihazlar için faydalıdır.

Değişkenler için semboller:Aşağıdaki ağlar örnek olarak alınmıştır:
192.168.0.0/24 çalışma ağı
172.22.4.0/24 VOIP ağı
10.0.0.0/24 yerel ağa erişimi olmayan müşteri ağı
192.168.255.0/24 büyük şubeler için VPN ağı
172.19.255.0/24 küçükler için VPN ağı

Ağ adresi 4 ondalıklı sayıdan oluşur, dolayısıyla A.B.C.D şeklindedir, aynı prensibe göre değiştirme çalışır; eğer çalıştırırken B isteniyorsa, 192.168.0.0/24 ağı için 0 numarasını girmemiz gerekir, C için de = 0.
$EXTERNALIPADDRESS — sağlayıcınızdan tahsis edilen adres.
$EXTERNALIPROUTE — 0.0.0.0/0 ağı için varsayılan yol
$BWorknets — Çalışma ağı, bu örnekte burada 168 olacak.
$CWorknets — İşçi şəbəkəsi, bizim nümunəmizdə burada 0 olacaq
$BVoipNets — VOIP şəbəkəsi, bizim nümunəmizdə burada 22
$CVoipNets — VOIP şəbəkəsi, bizim nümunəmizdə burada 4
$CClientss — Müştəri şəbəkəsi – yalnız internetə çıxış, bizim vəziyyətimizdə burada 0
$BVPNWORKs — Böyük filiallar üçün VPN şəbəkəsi, bizim nümunəmizdə burada 20
$CVPNWORKs — Böyük filiallar üçün VPN şəbəkəsi, bizim nümunəmizdə burada 255
$BVPNCLIENTS — Kiçik filiallar üçün VPN şəbəkəsi, deməli 19
$CVPNCLIENTS — Kiçik filiallar üçün VPN şəbəkəsi, deməli 255
$NAMEROUTER — routerin adı
$ServerCertificate — əvvəlcədən idxal etdiyiniz sertifikatın adı
$infile — Konfiqurasiyanı oxuyacağımız faylın yolunu göstərin, məsələn D:config.txt (preferably English path without quotes and spaces)
$outfile — Saxlamaq üçün yol göstərin, məsələn D:MT-test.txt

Mən məlum səbəblərə görə nümunələrdə ünvanları bilərəkdən dəyişdirdim.

Hücumların aşkar edilməsi və anomaliya davranışı üzrə bəndi qaçırdım – bu ayrıca bir məqaləyə layiqdir. Amma qeyd etmək lazımdır ki, bu kateqoriyada Zabbix-in monitorinq verilənləri və elasticsearch ilə işləyən curl verilənlərini istifadə etmək mümkündür.

Diqqət yetirilməsi gərəkən məqamlar:

  1. Şəbəkə planı. Daha yaxşı görünüşdə dərhal tərtib etmək. Eksel kifayətdir. Təəssüf ki, çox vaxt görürəm ki, şəbəkələr "Yeni filial açıldı, buyurun /24" prinsipi ilə tərtib olunur. Heç kim burada neçə cihazın olacağını soruşmur və gələcək artım olacaqmı. Məsələn, kiçik bir mağaza açıldı, burada başlanğıcda 10-dan çox cihazın olacağı artıq aydındır; niyə /24 ayıraq? Böyük filiallar üçün isə, əksinə, /24 ayırılır, amma cihazların sayı 500-ə çevrilir — sadəcə şəbəkə əlavə edə bilmək olar, amma hər şeyi əvvəldən düşünmək istərsiniz.
  2. Filtrləmə qaydaları. Əgər layihəyə əsasən şəbəkələrin ayrılması və maksimum seqmentasiya gözlənilirsə. Best Practice zamanla dəyişir. Əvvəllər PC şəbəkəsini və printer şəbəkəsini ayırırdılar, indi bu şəbəkələri ayırmamaq tam normaldır. Mənasız yerlərdə bir çox subnet yaratmamaq üçün sağlam düşüncəni istifadə etmək lazımdır.
  3. Bütün routerlər üçün "qızıl" parametrlər. Yəni, əgər planla bağlı qərar vermişsinizsə. Hamısını dərhal nəzərə almaq və bütün parametrlərin eyni olmasına çalışmaq gərəkdir — yalnız fərqli address list və ip ünvanları olmalıdır. Problemlər yarandıqda, düzəliş üçün vaxt daha az olacaq.
  4. Təşkilati məsələlər texniki məsələlər qədər əhəmiyyətlidir. Tez-tez, tembel işçilər verilmiş tövsiyələri "əl ilə" yerinə yetirirlər, hazır konfiqurasiyalardan və skriptlərdən istifadə etmədən, bu da nəticədə boş yerə problemlərə səbəb olur.

Dinamik yönləndirmə ilə. OSPF zonalı bölməsindən istifadə edildi. Lakin bu, test mühitidir, döyüş şəraitində belə şeylərin konfiqurasiyası daha maraqlıdır.

Ümid edirəm ki, konfiqurasiya fayllarını paylaşmadığıma görə heç kim narahat olmayıb. Düşünürəm ki, linklər kifayət qədərdir, gerisi tələbdən asılıdır. Və əlbəttə ki, testlər, daha çox testlər lazımdır.

Həmçinin, hamınıza yeni ildən layihələrinizi reallaşdırmağı arzulayıram. Access granted olsun!!!

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster