Gerçekleşmemiş projem. 200 MikroTik yönlendiriciden oluşan ağ

Gerçekleşmemiş projem. 200 MikroTik yönlendiriciden oluşan ağ

Herkese selam. Bu yazı, filosunda çok sayıda Mikrotik cihazı bulunan ve her cihaza ayrı ayrı bağlanmamak için maksimum birleştirme yapmak isteyenler için hazırlanmıştır. Bu yazımda maalesef insan faktörü nedeniyle savaş şartlarına ulaşamayan bir projeyi anlatacağım. Kısacası: 200'den fazla yönlendirici, hızlı kurulum ve personel eğitimi, bölgeye göre birleştirme, ağları ve belirli ana bilgisayarları filtreleme, tüm cihazlara kolayca kural ekleme yeteneği, günlük kaydı ve erişim kontrolü.

Aşağıda anlatılanlar hazır bir örnek gibi durmuyor ama ağlarınızı planlarken ve hataları en aza indirirken işinize yarayacağını umuyorum. Belki bazı noktalar ve çözümler size tamamen doğru gelmeyebilir - öyleyse yorumlara yazın. Bu durumda eleştiri ortak hazine için bir deneyim olacaktır. Bu nedenle okuyucu, yorumlara bir göz atın, belki de yazar ciddi bir hata yapmıştır - topluluk yardımcı olacaktır.

Yönlendiricilerin sayısı 200-300'dür ve farklı şehirlere dağılmış, farklı kalitede İnternet bağlantılarına sahiptir. Her şeyi güzel yapmak ve yerel yöneticilere her şeyin nasıl işleyeceğini net bir şekilde anlatmak gerekiyor.

Peki herhangi bir proje nerede başlar? Tabii ki onunla TK.

  1. Müşteri gereksinimlerine göre tüm şubeler için ağ planının düzenlenmesi, ağ segmentasyonu (cihaz sayısına bağlı olarak şubelerde 3'ten 20'ye kadar ağ).
  2. Her şubedeki cihazların kurulumu. Farklı çalışma koşulları altında sağlayıcının gerçek üretim hızının kontrol edilmesi.
  3. Cihaz korumasının organizasyonu, beyaz liste yönetimi, belirli bir süre için otomatik kara listeye alma ile saldırıların otomatik olarak algılanması, kontrol erişimini engellemek ve hizmeti reddetmek için kullanılan çeşitli teknik araçların kullanımını en aza indirir.
  4. Müşteri gereksinimlerine göre ağ filtreleme ile güvenli VPN bağlantılarının organizasyonu. Her şubeden merkeze minimum 3 VPN bağlantısı.
  5. 1, 2. noktalara göre. Hataya dayanıklı VPN'ler oluşturmanın en uygun yollarını seçin. Doğru şekilde gerekçelendirilmesi durumunda dinamik yönlendirme teknolojisi yüklenici tarafından seçilebilir.
  6. Müşteri tarafından kullanılan protokoller, bağlantı noktaları, ana bilgisayarlar ve diğer belirli hizmetlere göre trafik önceliklendirmesinin organizasyonu. (VOIP, önemli hizmetlere sahip ana bilgisayarlar)
  7. Teknik destek personelinin yanıtı için yönlendirici olaylarının izlenmesi ve günlüğe kaydedilmesinin organizasyonu.

Anladığımız kadarıyla, bazı durumlarda teknik özellikler gereksinimlere göre hazırlanmaktadır. Ana sorunları dinledikten sonra bu gereksinimleri kendim formüle ettim. Bu noktalarla başka birinin ilgilenebileceği ihtimalini kabul etti.

Bu gereklilikleri yerine getirmek için hangi araçlar kullanılacaktır:

  1. ELK yığını (bir süre sonra logstash yerine fluentd'nin kullanılacağı anlaşıldı).
  2. Ansible. Yönetim ve erişim paylaşımı kolaylığı için AWX kullanacağız.
  3. GITLAB. Burada açıklamaya gerek yok. Yapılandırmalarımızın sürüm kontrolü olmasaydı nerede olurduk?
  4. Güç kalkanı. Yapılandırmanın ilk nesli için basit bir komut dosyası olacaktır.
  5. Doku wiki, dokümantasyon ve kılavuz yazmak için. Bu durumda habr.com'u kullanıyoruz.
  6. İzleme zabbix üzerinden gerçekleştirilecektir. Genel bir anlayış için orada bir bağlantı şeması da çizilecektir.

EFK kurulum noktaları

İlk noktaya gelince, sadece endekslerin oluşturulacağı ideolojiyi anlatacağım. Çok var
mikrotik çalıştıran cihazlardan günlük ayarlama ve alma konusunda mükemmel makaleler.

Bazı noktalar üzerinde duracağım:

1. Diyagrama göre, günlüklerin farklı yerlerden ve farklı bağlantı noktalarından alınması dikkate alınmalıdır. Bunun için bir günlük toplayıcı kullanacağız. Ayrıca tüm yönlendiriciler için erişimi paylaşma özelliğine sahip evrensel grafikler oluşturmak istiyoruz. Daha sonra indeksleri şu şekilde oluşturuyoruz:

işte fluentd ile yapılandırmanın bir parçası elastik arama yazın
logstash_format doğru
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
floş_aralık 10s
ana elastik arama: 9200
liman 9200

Bu şekilde yönlendiricileri ve segmentleri plana göre birleştirebiliriz - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Neden bu kadar karmaşık hale getirdiniz? 200 ve daha fazla cihaza sahip olacağımızı anlıyoruz. Her şeyi takip edemezsiniz. Elasticsearch'ün 6.8 sürümüyle güvenlik ayarları (lisans satın almadan) kullanımımıza sunuluyor, böylece görüntüleme haklarını teknik destek çalışanları veya yerel sistem yöneticileri arasında dağıtabiliyoruz.
Tablolar, grafikler - burada sadece aynı fikirde olmanız gerekir - ya aynı olanları kullanın ya da herkes kendisi için uygun olanı yapar.

2. Giriş yaparak. Güvenlik duvarı kurallarında oturum açmayı etkinleştirirsek, adları boşluksuz yaparız. Fluentd'de basit bir yapılandırma kullanarak verileri filtreleyebildiğimiz ve uygun paneller oluşturabildiğimiz görülmektedir. Aşağıdaki resim ev yönlendiricimdir.

Gerçekleşmemiş projem. 200 MikroTik yönlendiriciden oluşan ağ

3. Kaplanan alana ve kütüklere göre. Ortalama olarak saatte 1000 mesajla günlükler günde 2-3 MB yer kaplıyor ki bu da çok fazla değil. Elasticsearch sürüm 7.5.

ANSIBLE.AWX

Neyse ki bizim için yönlendiriciler için hazır bir modülümüz var
AWX'ten bahsetmiştim ama aşağıdaki komutlar sadece ansible'ın saf hali ile ilgili - ansible ile çalışmış olanlar için awx'i gui üzerinden kullanmakta herhangi bir sorun yaşamayacağını düşünüyorum.

Dürüst olmak gerekirse, bundan önce ssh kullandıkları diğer rehberlere baktım ve hepsinin yanıt süresi ve bir sürü başka sorunla ilgili farklı sorunları vardı. Tekrar ediyorum, kavgaya varılmadı , bu bilgiyi 20 yönlendiriciden daha ileri gitmeyen bir deney olarak kabul edin.

Bir sertifika veya hesap kullanmamız gerekiyor. Karar size kalmış, ben sertifikalardan yanayım. Haklarla ilgili bazı ince noktalar. Yazma haklarını veriyorum - en azından “yapılandırmayı sıfırla” çalışmıyor.

Sertifikanın oluşturulmasında, kopyalanmasında ve içe aktarılmasında herhangi bir sorun olmamalıdır:

Kısa komut listesiPC'nizde
ssh-keygen -t RSA, soruları yanıtlayın, anahtarı kaydedin.
Mikrotik'e kopyala:
kullanıcı ssh-anahtarları import public-key-file=id_mtx.pub user=ansible
Öncelikle bir hesap oluşturmanız ve ona haklar atamanız gerekir.
Sertifikayı kullanarak bağlantıyı kontrol etme
ssh -p 49475 -i /anahtarlar/mtx ansible@192.168.0.120

vi /etc/ansible/hosts dosyasını kaydedin
MT01 ansible_network_os=yönlendiriciler ansible_ssh_port=49475 ansible_ssh_user= ansible
MT02 ansible_network_os=yönlendiriciler ansible_ssh_port=49475 ansible_ssh_user= ansible
MT03 ansible_network_os=yönlendiriciler ansible_ssh_port=49475 ansible_ssh_user= ansible
MT04 ansible_network_os=yönlendiriciler ansible_ssh_port=49475 ansible_ssh_user= ansible

Örnek bir taktik kitabı: - ad: add_work_sites
ana bilgisayarlar: testmt
seri: 1
bağlantı: network_cli
Remote_user: mikrotik.west
Collect_facts: evet
görevler:
- ad: Çalışma_sitelerini ekle
routeros_komutu:
komutları:
— /ip güvenlik duvarı adres listesi add adresi=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
— /ip güvenlik duvarı adres listesi add adres=habr.com list=work_sites comment=for_habr

Yukarıdaki konfigürasyondan da görebileceğiniz gibi, kendi oyun kitaplarınızı oluşturmak zor değildir. Cli mikrotik'e iyi hakim olmanız yeterli. Tüm yönlendiricilerdeki belirli verileri içeren adres listesini kaldırmanız gereken bir durumu hayal edelim, ardından:

Bul ve kaldır/ip firewal adres listesi kaldır [listenin nerede olduğunu bulun = "gov.ru"]

Güvenlik duvarı listesinin tamamını kasıtlı olarak buraya eklemedim çünkü... her proje için ayrı olacaktır. Ancak kesin olarak söyleyebileceğim bir şey var ki, yalnızca adres listesini kullanın.

GITLAB'a göre her şey açık. Bu nokta üzerinde durmayacağım. Bireysel görevler, şablonlar ve işleyiciler için her şey güzeldir.

powershell

Burada 3 dosya olacak. Neden powershell? Yapılandırma oluşturmak için sizin için daha uygun olan herhangi bir aracı seçebilirsiniz. Bu durumda herkesin bilgisayarında Windows var, peki powershell daha kullanışlıyken bunu neden bash'ta yapalım? Hangisi daha kullanışlı?

Komut dosyasının kendisi (basit ve anlaşılır):[cmdletBinding()]
Parametre(
[Parametre(Zorunlu=$true)]
[dize]$HARİCİIPADRES,
[Parametre(Zorunlu=$true)]
[string]$DışsalÇıktı,
[Parametre(Zorunlu=$true)]
[dize]$BWorknets,
[Parametre(Zorunlu=$true)]
[dize]$CWorknets,
[Parametre(Zorunlu=$true)]
[string]$BVoipNets,
[Parametre(Zorunlu=$true)]
[string]$CVoipNets,
[Parametre(Zorunlu=$true)]
[string]$CClients,
[Parametre(Zorunlu=$true)]
[string]$BVPNWORKS,
[Parametre(Zorunlu=$true)]
[string]$CVPNWORKS,
[Parametre(Zorunlu=$true)]
[dize]$BVPNMÜŞTERİLERİ,
[Parametre(Zorunlu=$true)]
[dize]$cVPNCLIENTSs,
[Parametre(Zorunlu=$true)]
[dize]$NAMEROUTER,
[Parametre(Zorunlu=$true)]
[string]$SunucuSertifikaları,
[Parametre(Zorunlu=$true)]
[dize]$infile,
[Parametre(Zorunlu=$true)]
[string]$outfile
)

İçerik Al $dosya | 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 İçeriği $outfile

Lütfen beni affedin, tüm kuralları yayınlayamam çünkü... pek güzel olmayacak. En iyi uygulamaların rehberliğinde kuralları kendiniz oluşturabilirsiniz.

Örneğin, takip ettiğim bağlantıların bir listesi:wiki.mikrotik.com/wiki/Manual:Yönlendiricinizin_Güvenliği Sağlanıyor
wiki.mikrotik.com/wiki/Manual:IP/Güvenlik Duvarı/Filtre
wiki.mikrotik.com/wiki/Manual:OSPF örnekleri
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual:Kazanma kutusu
wiki.mikrotik.com/wiki/Manual:Yükseltme_RouterOS
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack - burada hızlı izleme etkinleştirildiğinde trafik önceliklendirmesinin ve şekillendirme kurallarının çalışmayacağını bilmeniz gerekir; zayıf cihazlar için kullanışlı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ğı
Yerel ağa erişimi olmayan istemciler için 10.0.0.0/24 ağı
Büyük şubeler için 192.168.255.0/24 VPN ağı
Küçükler için 172.19.255.0/24 VPN ağı

Ağ adresi sırasıyla ABCD olmak üzere 4 ondalık sayıdan oluşur, değiştirme aynı prensipte çalışır, başlangıçta B istenirse, bu, 192.168.0.0/24 ağı için 0 sayısını ve C için 0 sayısını girmeniz gerektiği anlamına gelir. = XNUMX.
$EXTERNALIPADDDRESS - sağlayıcının özel adresi.
$EXTERNALIPROUTE - ağa varsayılan rota 0.0.0.0/0
$BWorknets - İş ağı, örneğimizde 168 olacak
$CWorknets - Çalışan ağ, örneğimizde bu 0 olacaktır
$BVoipNets - Buradaki örneğimizdeki VOIP ağı 22
$CVoipNets - Buradaki örneğimizde VOIP ağı 4
$CClientss - İstemciler için ağ - Yalnızca İnternet erişimi, bizim durumumuzda 0
$BVPNWORKs - Büyük şubeler için VPN ağı, örneğimizde 20
$CVPNWORKs - Büyük şubeler için VPN ağı, örneğimizde 255
$BVPNCLIENTS - Küçük şubeler için VPN ağı, yani 19
$CVPNCLIENTS - Küçük şubeler için VPN ağı, yani 255
$NAMEROUTER - yönlendirici adı
$ServerCertificate - daha önce içe aktardığınız sertifikanın adı
$infile — Yapılandırmayı okuyacağımız dosyanın yolunu belirtin, örneğin D:config.txt (tercihen tırnak işaretleri ve boşluklar olmadan İngilizce yol)
$outfile — kaydedileceği yolu belirtin, örneğin D:MT-test.txt

Örneklerdeki adresleri bariz nedenlerden dolayı kasıtlı olarak değiştirdim.

Saldırıları ve anormal davranışları tespit etme konusunu kaçırdım; bu ayrı bir makaleyi hak ediyor. Ancak şunu belirtmekte fayda var ki bu kategoride Zabbix'ten izleme verisi değerleri + elasticsearch'ten işlenmiş curl verisi kullanabilirsiniz.

Hangi noktalara dikkat etmelisiniz:

  1. Ağ planı. Hemen okunabilir bir biçimde oluşturmak daha iyidir. Excel yeterli olacaktır. Maalesef ağların “Yeni bir şube ortaya çıktı, işte size /24” ilkesine göre kurulduğunu çok sık görüyorum. Hiç kimse belirli bir konumda kaç cihazın beklendiğini veya daha fazla büyüme olup olmayacağını çözemiyor. Örneğin, başlangıçta cihazın 10'dan fazla olmayacağının açık olduğu küçük bir mağaza açıldı, neden /24 ayırasınız ki? Büyük şubeler için ise tam tersine /24 tahsis ediyorlar ve 500 cihaz var - sadece bir ağ ekleyebilirsiniz, ancak her şeyi aynı anda düşünmek istiyorsunuz.
  2. Filtreleme kuralları. Proje, ağların ayrılması ve maksimum segmentasyon olacağını varsayarsa. En İyi Uygulamalar zamanla değişir. Daha önce bir PC ağı ve bir yazıcı ağı bölünmüştü ancak artık bu ağların bölünmemesi oldukça normal. Sağduyunuzu kullanmaya, ihtiyaç duyulmayan çok sayıda alt ağ oluşturmamaya ve tüm cihazları tek bir ağda birleştirmemeye değer.
  3. Tüm yönlendiricilerde “altın” ayarlar. Onlar. eğer bir plana karar verdiyseniz. Her şeyi hemen öngörmeye ve tüm ayarların aynı olduğundan emin olmaya değer - yalnızca adres listesi ve IP adresleri farklıdır. Sorun ortaya çıkarsa hata ayıklama süresi daha az olacaktır.
  4. Organizasyonel konular teknik olanlardan daha az önemli değildir. Çoğu zaman tembel çalışanlar bu önerileri hazır konfigürasyonları ve komut dosyalarını kullanmadan "manuel olarak" yerine getirir ve bu da sonuçta birdenbire sorunlara yol açar.

Dinamik yönlendirme ile. Bölge bölmeli OSPF kullanıldı. Ancak bu bir test tezgahı; bu tür şeyleri savaş koşullarında kurmak daha ilginç.

Umarım kimse yönlendirici yapılandırmalarını yayınlamadığım için üzülmez. Bağlantıların yeterli olacağını düşünüyorum ve sonra her şey gereksinimlere bağlı. Ve elbette testlere, daha fazla teste ihtiyaç var.

Yeni yılda herkesin projelerini hayata geçirmesini diliyorum. İzin verilen erişim sizinle olsun!!!

Kaynak: habr.com

DDoS korumalı siteler, VPS VDS sunucuları için güvenilir hosting satın alın 🔥 DDoS korumalı, güvenilir VPS ve VDS sunucu barındırma hizmeti satın alın | ProHoster