Projek saya yang belum selesai. Rangkaian 200 penghala MikroTik

Projek saya yang belum selesai. Rangkaian 200 penghala MikroTik

Hai semua. Artikel ini ditujukan untuk mereka yang mempunyai banyak peranti Mikrotik dalam armada mereka, dan yang ingin membuat penyatuan maksimum agar tidak menyambung ke setiap peranti secara berasingan. Dalam artikel ini saya akan menerangkan projek yang, malangnya, tidak mencapai keadaan pertempuran kerana faktor manusia. Ringkasnya: lebih daripada 200 penghala, persediaan pantas dan latihan kakitangan, penyatuan mengikut wilayah, rangkaian penapisan dan hos tertentu, keupayaan untuk menambah peraturan dengan mudah pada semua peranti, pembalakan dan kawalan akses.

Apa yang diterangkan di bawah tidak berpura-pura menjadi kes siap, tetapi saya harap ia berguna kepada anda apabila merancang rangkaian anda dan meminimumkan ralat. Mungkin beberapa perkara dan penyelesaian mungkin kelihatan tidak betul kepada anda - jika ya, tulis dalam ulasan. Kritikan dalam kes ini akan menjadi pengalaman untuk perbendaharaan bersama. Oleh itu, pembaca lihat komen-komen tersebut, mungkin penulis melakukan kesilapan yang serius - masyarakat akan membantu.

Bilangan penghala ialah 200-300, bertaburan di bandar yang berbeza dengan kualiti sambungan Internet yang berbeza. Ia adalah perlu untuk melakukan segala-galanya dengan cantik dan jelas menerangkan kepada pentadbir tempatan bagaimana semuanya akan berfungsi.

Jadi, di mana mana-mana projek bermula? Sudah tentu, dengan TK.

  1. Organisasi pelan rangkaian untuk semua cawangan mengikut keperluan pelanggan, pembahagian rangkaian (dari 3 hingga 20 rangkaian di cawangan bergantung pada bilangan peranti).
  2. Menyediakan peranti di setiap cawangan. Menyemak kelajuan pemprosesan sebenar pembekal di bawah keadaan operasi yang berbeza.
  3. Organisasi perlindungan peranti, pengurusan senarai putih, pengesanan automatik serangan dengan penyenaraian hitam automatik untuk tempoh masa tertentu, meminimumkan penggunaan pelbagai cara teknikal yang digunakan untuk memintas akses kawalan dan menafikan perkhidmatan.
  4. Organisasi sambungan VPN selamat dengan penapisan rangkaian mengikut keperluan pelanggan. Minimum 3 sambungan VPN dari setiap cawangan ke pusat.
  5. Berdasarkan perkara 1, 2. Pilih cara yang optimum untuk membina VPN toleran kesalahan. Jika dibenarkan dengan betul, teknologi penghalaan dinamik boleh dipilih oleh kontraktor.
  6. Organisasi keutamaan trafik mengikut protokol, pelabuhan, hos dan perkhidmatan khusus lain yang digunakan oleh pelanggan. (VOIP, hos dengan perkhidmatan penting)
  7. Organisasi pemantauan dan pengelogan peristiwa penghala untuk maklum balas kakitangan sokongan teknikal.

Seperti yang kita fahami, dalam beberapa kes, spesifikasi teknikal disediakan berdasarkan keperluan. Saya merumuskan keperluan ini sendiri, selepas mendengar masalah utama. Dia mengakui kemungkinan orang lain boleh menjaga mata ini.

Apakah alat yang akan digunakan untuk memenuhi keperluan ini:

  1. Timbunan ELK (selepas beberapa lama, jelas bahawa fluentd akan digunakan dan bukannya logstash).
  2. Ansible. Untuk memudahkan pentadbiran dan perkongsian akses, kami akan menggunakan AWX.
  3. GITLAB. Tidak perlu dijelaskan di sini. Di manakah kita akan berada tanpa kawalan versi konfigurasi kita?
  4. PowerShell. Akan ada skrip mudah untuk penjanaan awal konfigurasi.
  5. Doku wiki, untuk menulis dokumentasi dan panduan. Dalam kes ini, kami menggunakan habr.com.
  6. Pemantauan akan dijalankan melalui zabbix. Gambar rajah sambungan juga akan dilukis di sana untuk pemahaman umum.

Titik persediaan EFK

Mengenai perkara pertama, saya hanya akan menerangkan ideologi yang akan membina indeks. Terdapat banyak
artikel yang sangat baik tentang menyediakan dan menerima log daripada peranti yang menjalankan mikrotik.

Saya akan membincangkan beberapa perkara:

1. Menurut gambar rajah, adalah wajar mempertimbangkan menerima log dari tempat yang berbeza dan di port yang berbeza. Untuk ini kami akan menggunakan agregator log. Kami juga ingin membuat grafik universal untuk semua penghala dengan keupayaan untuk berkongsi akses. Kemudian kami membina indeks seperti berikut:

berikut ialah sekeping konfigurasi dengan fluentd taip elasticsearch
logstash_format benar
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
tuan rumah elasticsearch: 9200
pelabuhan 9200

Dengan cara ini kita boleh menggabungkan penghala dan segmen mengikut pelan - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Mengapa menjadikannya begitu rumit? Kami faham bahawa kami akan mempunyai 200 atau lebih peranti. Anda tidak boleh menjejaki segala-galanya. Dengan versi 6.8 elasticsearch, tetapan keselamatan tersedia untuk kami (tanpa membeli lesen), dengan itu kami boleh mengedarkan hak tontonan antara pekerja sokongan teknikal atau pentadbir sistem tempatan.
Jadual, graf - di sini anda hanya perlu bersetuju - sama ada gunakan yang sama, atau semua orang melakukan apa yang sesuai untuknya.

2. Dengan pembalakan. Jika kami mendayakan log masuk peraturan tembok api, maka kami membuat nama tanpa ruang. Ia boleh dilihat bahawa dengan menggunakan konfigurasi mudah dalam fluentd, kami boleh menapis data dan membuat panel yang mudah. Gambar di bawah ialah penghala rumah saya.

Projek saya yang belum selesai. Rangkaian 200 penghala MikroTik

3. Dengan ruang yang diduduki dan balak. Secara purata, dengan 1000 mesej sejam, log mengambil masa 2-3 MB sehari, yang anda lihat, tidak begitu banyak. Elasticsearch versi 7.5.

ANSIBLE.AWX

Nasib baik untuk kami, kami mempunyai modul siap sedia untuk routeros
Saya menyebut tentang AWX, tetapi arahan di bawah hanya mengenai ansible dalam bentuk tulennya - Saya berpendapat bahawa bagi mereka yang telah bekerja dengan ansible, tidak akan ada masalah menggunakan awx melalui gui.

Sejujurnya, sebelum ini saya melihat panduan lain di mana mereka menggunakan ssh, dan mereka semua mempunyai masalah yang berbeza dengan masa tindak balas dan banyak masalah lain. Saya ulangi, ia tidak datang kepada pergaduhan , ambil maklumat ini sebagai percubaan yang tidak melebihi pendirian 20 penghala.

Kita perlu menggunakan sijil atau akaun. Terpulang kepada anda untuk membuat keputusan, saya bagi sijil. Beberapa perkara halus tentang hak. Saya memberi hak menulis - sekurang-kurangnya "set semula konfigurasi" tidak akan berfungsi.

Seharusnya tiada masalah menjana, menyalin dan mengimport sijil:

Penyenaraian arahan ringkasPada PC anda
ssh-keygen -t RSA, jawab soalan, simpan kunci.
Salin ke mikrotik:
pengguna ssh-keys import public-key-file=id_mtx.pub user=ansible
Mula-mula anda perlu membuat akaun dan memberikan hak kepadanya.
Menyemak sambungan menggunakan sijil
ssh -p 49475 -i /keys/mtx [e-mel dilindungi]

Daftar 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

Nah, contoh buku main: - nama: add_work_sites
hos: testmt
bersiri: 1
sambungan: network_cli
remote_user: mikrotik.west
kumpulkan_fakta: ya
tugas:
- nama: tambah Work_sites
routeros_command:
arahan:
β€” /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

Seperti yang anda lihat daripada konfigurasi di atas, membuat buku permainan anda sendiri tidaklah sukar. Cukuplah menguasai cli mikrotik dengan baik. Mari bayangkan situasi di mana anda perlu mengalih keluar senarai alamat dengan data tertentu pada semua penghala, kemudian:

Cari dan alih keluar/ip firewal address-list remove [cari di mana senarai="gov.ru"]

Saya sengaja tidak memasukkan keseluruhan penyenaraian firewall di sini kerana... ia akan menjadi individu untuk setiap projek. Tetapi satu perkara yang boleh saya katakan dengan pasti, gunakan senarai alamat sahaja.

Menurut GITLAB semuanya jelas. Saya tidak akan memikirkan perkara ini. Semuanya cantik untuk tugasan individu, templat, pengendali.

Powershell

Akan ada 3 fail di sini. Mengapa powershell? Anda boleh memilih mana-mana alat untuk menjana konfigurasi, apa sahaja yang lebih mudah untuk anda. Dalam kes ini, semua orang mempunyai Windows pada PC mereka, jadi mengapa melakukannya dalam bash apabila powershell lebih mudah. Mana satu lebih selesa?

Skrip itu sendiri (mudah dan boleh difahami):[cmdletBinding()] Param(
[Parameter(Wajib=$true)] [rentetan]$EXTERNALIPADDRESS,
[Parameter(Wajib=$true)] [rentetan]$EXTERNALIPROUTE,
[Parameter(Wajib=$true)] [rentetan]$BWorknets,
[Parameter(Wajib=$true)] [rentetan]$CWorknets,
[Parameter(Wajib=$true)] [rentetan]$BVoipNets,
[Parameter(Wajib=$true)] [rentetan]$CVoipNets,
[Parameter(Wajib=$true)] [rentetan]$CClientss,
[Parameter(Wajib=$true)] [rentetan]$BVPNWORKs,
[Parameter(Wajib=$true)] [rentetan]$CVPNWORKs,
[Parameter(Wajib=$true)] [rentetan]$BVPNCLIENTSs,
[Parameter(Wajib=$true)] [rentetan]$cVPNCLIENTSs,
[Parameter(Wajib=$true)] [rentetan]$NAMEROUTER,
[Parameter(Wajib=$true)] [string]$ServerCertificates,
[Parameter(Wajib=$true)] [rentetan]$infile,
[Parameter(Wajib=$true)] [rentetan]$outfile
)

Dapatkan-Kandungan $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

Harap maafkan saya, saya tidak dapat menyiarkan semua peraturan kerana... ia tidak akan menjadi sangat cantik. Anda boleh membuat peraturan sendiri, berpandukan amalan terbaik.

Sebagai contoh, berikut ialah senarai pautan yang saya ikuti:wiki.mikrotik.com/wiki/Manual:Securing_Your_Router
wiki.mikrotik.com/wiki/Manual:IP/Firewall/Penapis
wiki.mikrotik.com/wiki/Manual: Contoh-contoh OSPF
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 - di sini anda perlu tahu bahawa apabila fasttrack didayakan, keutamaan trafik dan peraturan pembentukan tidak akan berfungsi - berguna untuk peranti yang lemah.

Simbol untuk pembolehubah:Rangkaian berikut diambil sebagai contoh:
192.168.0.0/24 rangkaian berfungsi
172.22.4.0/24 rangkaian VOIP
10.0.0.0/24 rangkaian untuk pelanggan tanpa akses kepada rangkaian tempatan
192.168.255.0/24 Rangkaian VPN untuk cawangan besar
172.19.255.0/24 Rangkaian VPN untuk kecil

Alamat rangkaian terdiri daripada 4 nombor perpuluhan, masing-masing A.B.C.D, penggantian berfungsi pada prinsip yang sama, jika pada permulaan ia meminta B, maka ini bermakna anda perlu memasukkan nombor 192.168.0.0 untuk rangkaian 24/0, dan untuk C = 0.
$EXTERNALIPADDDRESS - alamat khusus daripada pembekal.
$EXTERNALIPROUTE - laluan lalai ke rangkaian 0.0.0.0/0
$BWorknets - Rangkaian kerja, dalam contoh kami akan terdapat 168
$CWorknets - Rangkaian yang berfungsi, dalam contoh kami ini akan menjadi 0
$BVoipNets - Rangkaian VOIP dalam contoh kami di sini 22
$CVoipNets - Rangkaian VOIP dalam contoh kami di sini 4
$CClientss - Rangkaian untuk pelanggan - Akses Internet sahaja, dalam kes kami di sini 0
$BVPNWORKs - Rangkaian VPN untuk cawangan besar, dalam contoh kami 20
$CVPNWORKs - Rangkaian VPN untuk cawangan besar, dalam contoh kami 255
$BVPNCLIENTS - Rangkaian VPN untuk cawangan kecil, bermakna 19
$CVPNCLIENTS - Rangkaian VPN untuk cawangan kecil, bermakna 255
$NAMEROUTER - nama penghala
$ServerCertificate - nama sijil yang anda import sebelum ini
$infile β€” Tentukan laluan ke fail dari mana kita akan membaca konfigurasi, contohnya D:config.txt (sebaik-baiknya laluan Inggeris tanpa petikan dan ruang)
$outfile β€” tentukan laluan untuk menyimpannya, contohnya D:MT-test.txt

Saya sengaja menukar alamat dalam contoh atas sebab yang jelas.

Saya terlepas perkara tentang mengesan serangan dan tingkah laku anomali - ini patut diberi artikel berasingan. Tetapi perlu diingatkan bahawa dalam kategori ini anda boleh menggunakan nilai data pemantauan daripada Zabbix + data curl yang diproses dari elasticsearch.

Apakah perkara yang perlu anda perhatikan:

  1. Pelan rangkaian. Adalah lebih baik untuk mengarangnya dengan segera dalam bentuk yang boleh dibaca. Excel akan mencukupi. Malangnya, saya sering melihat bahawa rangkaian dibina mengikut prinsip "Cawangan baharu telah muncul, inilah /24 untuk anda." Tiada siapa yang memikirkan berapa banyak peranti yang dijangkakan di lokasi tertentu atau sama ada akan terdapat pertumbuhan selanjutnya. Sebagai contoh, sebuah kedai kecil dibuka di mana pada mulanya jelas bahawa peranti itu tidak akan lebih daripada 10, mengapa memperuntukkan /24? Untuk cawangan besar, sebaliknya, mereka memperuntukkan /24, dan terdapat 500 peranti - anda boleh menambah rangkaian, tetapi anda mahu memikirkan semuanya sekaligus.
  2. Peraturan penapisan. Jika projek mengandaikan bahawa akan ada pemisahan rangkaian dan pembahagian maksimum. Amalan Terbaik berubah dari semasa ke semasa. Sebelum ini, rangkaian PC dan rangkaian pencetak telah dibahagikan, tetapi kini adalah perkara biasa untuk tidak membahagikan rangkaian ini. Perlu menggunakan akal dan tidak mencipta banyak subnet yang tidak diperlukan dan tidak menggabungkan semua peranti ke dalam satu rangkaian.
  3. Tetapan "Emas" pada semua penghala. Itu. jika anda telah memutuskan rancangan. Adalah wajar untuk meramalkan segala-galanya dengan segera dan cuba memastikan bahawa semua tetapan adalah sama - hanya senarai alamat dan alamat IP yang berbeza. Jika masalah timbul, masa penyahpepijatan akan menjadi kurang.
  4. Isu organisasi tidak kurang pentingnya daripada isu teknikal. Selalunya pekerja yang malas melaksanakan cadangan ini "secara manual", tanpa menggunakan konfigurasi dan skrip yang sudah siap, yang akhirnya membawa kepada masalah entah dari mana.

Dengan penghalaan dinamik. OSPF dengan pembahagian zon telah digunakan. Tetapi ini adalah bangku ujian; lebih menarik untuk menyediakan perkara sedemikian dalam keadaan pertempuran.

Saya harap tiada siapa yang kecewa kerana saya tidak menyiarkan konfigurasi penghala. Saya fikir pautan itu akan mencukupi, dan kemudian semuanya bergantung pada keperluan. Dan sudah tentu ujian, lebih banyak ujian diperlukan.

Saya berharap semua orang dapat merealisasikan projek mereka pada tahun baru. Semoga akses yang diberikan bersama anda!!!

Sumber: www.habr.com

Tambah komen