مشروعي غير المحقق شبكة من 200 جهاز توجيه MikroTik



مرحبا بالجميع. هذه المقالة مخصصة لأولئك الذين لديهم الكثير من أجهزة Mikrotik في الحديقة ، والذين يرغبون في تحقيق أقصى قدر من التوحيد حتى لا يتم الاتصال بكل جهاز على حدة. في هذه المقالة ، سوف أصف مشروعًا ، للأسف ، لم يصل إلى ظروف القتال بسبب عوامل بشرية. باختصار: أكثر من 200 من أجهزة التوجيه والتكوين السريع وتدريب الموظفين والتوحيد حسب المنطقة وتصفية الشبكات والمضيفين المحددين ، والقدرة على إضافة القواعد بسهولة إلى جميع الأجهزة وتسجيل الدخول والتحكم في الوصول.

ما هو موضح أدناه لا يدعي أنه حالة مكتملة ، لكنني آمل أن تكون مفيدة لك عند التخطيط لشبكاتك وتقليل الأخطاء. ربما لا تبدو بعض النقاط والقرارات ملائمة لك - إذا كان الأمر كذلك ، فاكتب في التعليقات. النقد في هذه الحالة سيكون تجربة في بنك أصبع مشترك. لذلك ، القارئ ، انظر إلى التعليقات ، وربما ارتكب المؤلف خطأ فادحًا - سيساعد المجتمع.

عدد أجهزة التوجيه 200-300 ، منتشرة في مدن مختلفة مع جودة مختلفة للاتصال بالإنترنت. من الضروري أن تفعل كل شيء بشكل جميل وبسهولة تشرح للمسؤولين المحليين كيف سيعمل كل شيء.

لذلك ، من أين يبدأ أي مشروع. بالطبع ، مع المعارف التقليدية .

  1. تنظيم خطة شبكة لجميع الفروع وفقًا لمتطلبات العملاء ، تجزئة الشبكة (من 3 إلى 20 شبكة في الفروع اعتمادًا على عدد الأجهزة).
  2. تكوين الأجهزة في كل فرع. التحقق من النطاق الترددي الحقيقي للموفر في ظروف عمل مختلفة.
  3. تنظيم حماية الجهاز ، وإدارة القائمة البيضاء ، والكشف التلقائي عن الهجمات باستخدام القائمة السوداء تلقائيًا لفترة زمنية معينة ، وتقليل استخدام الوسائل التقنية المختلفة المستخدمة في اعتراض وصول التحكم ورفض الخدمة.
  4. تنظيم اتصالات VPN آمنة مع تصفية الشبكة وفقًا لمتطلبات العملاء. ما لا يقل عن 3 فبن اتصالات من كل فرع إلى المركز.
  5. استنادًا إلى الفقرة 1 ، 2. اختر الطرق المثلى لإنشاء الشبكات الافتراضية الخاصة التي تتحمل الأخطاء. إن تقنية التوجيه الديناميكية ، إذا تم تبريرها بشكل صحيح ، يمكن اختيارها من قبل المقاول.
  6. تنظيم تحديد الأولويات لحركة المرور بواسطة البروتوكولات والموانئ والمضيفين والخدمات المحددة الأخرى التي يستخدمها العميل. (VOIP ، يستضيف مع الخدمات الهامة)
  7. تنظيم مراقبة وتسجيل أحداث جهاز التوجيه لاستجابة موظفي الدعم الفني.

كما نفهم ، في عدد من الحالات يتم تجميع المعارف التقليدية من المتطلبات. قمت بصياغة هذه المتطلبات بنفسي ، بعد الاستماع إلى المشكلات الرئيسية. اعترفت بإمكانية قيام شخص آخر بتنفيذ هذه النقاط.

ما الأدوات التي سيتم استخدامها لتحقيق هذه المتطلبات:

  1. مكدس ELK (بعد مرور بعض الوقت ، جاء الفهم بأنه سيتم استخدام fluentd بدلاً من logstash).
  2. Ansible. لسهولة الإدارة ومشاركة الوصول ، سنستخدم AWX.
  3. GITLAB. ليست هناك حاجة لشرح. حيث دون سيطرة الإصدار من التكوينات لدينا.
  4. بوويرشيل. سيكون هناك برنامج نصي بسيط للجيل الأولي من التكوين.
  5. دوكو ويكي لكتابة الوثائق والأدلة. في هذه الحالة ، استخدم habr.com.
  6. وسيتم الرصد من خلال zabbix. سيتم رسم مخطط اتصال هناك لفهم عام.

لحظات إعدادات EFK


في الفقرة الأولى ، سأصف فقط الأيديولوجية التي سيتم بها بناء المؤشرات. هناك الكثير
مقالات ممتازة حول إعداد واستقبال السجلات من الأجهزة التي تشغل mikrotik.

سأتناول بعض النقاط:

1. وفقًا للمخطط ، يجدر النظر في تلقي سجلات من أماكن مختلفة وفي منافذ مختلفة. لهذا سوف نستخدم مجمع سجل. ونريد أيضًا إنشاء جداول عالمية لجميع أجهزة التوجيه مع إمكانية مشاركة الوصول. ثم نقوم ببناء المؤشرات على النحو التالي:

هنا قطعة من التكوين مع fluentd
اكتب elasticsearch
logstash_format صحيح
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
10s flush_interval
تستضيف elasticsearch : 9200
المنفذ 9200


وبالتالي يمكننا الجمع بين أجهزة التوجيه وقطاع وفقا لخطة - mikrotiklogs.west ، mikrotiklogs.south ، mikrotiklogs.east. لماذا تعقيد هذا؟ نحن نفهم أنه سيكون لدينا 200 جهاز أو أكثر. لا تتبع كل شيء. منذ الإصدار 6.8 من elasticsearch ، لدينا إمكانية الوصول إلى إعدادات الأمان (دون شراء ترخيص) ، حتى نتمكن من توزيع حقوق المشاهدة بين موظفي الدعم الفني أو مسؤولي النظام المحلي.
الجداول والرسوم البيانية - هنا تحتاج فقط إلى الموافقة - إما استخدام نفسه ، أو يفعل كل ما يناسبه.

2. عن طريق تسجيل الدخول. إذا قمنا بتمكين تسجيل الدخول في قواعد جدار الحماية ، فإننا نقوم بالأسماء بدون مسافات. يمكن أن نرى أنه باستخدام تكوين بسيط في fluentd ، يمكننا تصفية البيانات وإنشاء لوحات مريحة. في الصورة أدناه ، جهاز التوجيه المنزلي.

صورة

3. وفقا للمكان المحتلة وسجلات. في المتوسط ​​، مع 1000 رسالة في الساعة ، تستغرق السجلات من 2-3 ميغابايت في اليوم ، والتي ، كما ترى ، ليست كبيرة. الإصدار Elasticsearch 7.5.

ANSIBLE.AWX


لحسن الحظ بالنسبة لنا ، لدينا وحدة نمطية جاهزة لجهاز التوجيه
أشرت إلى AWX ، لكن الأوامر الواردة أدناه هي فقط حول ansible في أنقى صورها - أعتقد أنه بالنسبة لأولئك الذين عملوا مع ansible ، لن تكون هناك مشاكل في استخدام واجهة المستخدم الرسومية.

أعترف بأمانة ، قبل ذلك نظرت إلى أدلة أخرى حيث استخدموا ssh ، وكان الجميع يعانون من مشاكل مختلفة مع زمن الاستجابة ومجموعة من المشاكل الأخرى. أكرر ، لم تصل إلى المعركة take ، خذ هذه المعلومات كتجربة لم تتجاوز موقف الـ 20 جهاز توجيه.

نحن بحاجة إلى استخدام شهادة أو المحاسبة. الأمر متروك لك ، أنا للشهادات. بعض نقطة خفية على الحقوق. أعطي أذونات الكتابة - على الأقل "إعادة ضبط التكوين" لا يمكن القيام به.

يجب ألا تكون هناك مشكلة في إنشاء الشهادة ونسخها واستيرادها:

قائمة قصيرة من الفرق
على جهاز الكمبيوتر الخاص بك
ssh-keygen -t RSA ، أجب عن الأسئلة ، واحفظ المفتاح.
نسخ إلى mikrotik:
user-ssh-keys استيراد ملف المفتاح العام = id_mtx.pub user = ansible
تحتاج أولاً إلى إنشاء حساب وتخصيص حقوق له.
تحقق من الاتصال عن طريق الشهادة
ssh -p 49475 -i / keys / mtx ansible@192.168.0.120

نكتب السادس / الخ / ansible / المضيفين
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

حسنًا ، مثال على playbook:
- الاسم: add_work_sites
المضيفين: testmt
المسلسل: 1
اتصال: network_cli
remote_user: mikrotik.west
collect_facts: نعم
المهام:
- الاسم: إضافة مواقع العمل
routeros_command:
الأوامر:
- / ip firewall list-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

كما ترون من التكوين أعلاه ، فإن تجميع كتاب اللعب الخاص بك هو مجرد لحظة. انه لامر جيد بما فيه الكفاية لإتقان cli mikrotik. تخيل موقفًا تحتاج فيه على جميع أجهزة التوجيه لإزالة قائمة العناوين ببيانات معينة ، ثم:

البحث والحذف
/ ip firewal list-remove remove [find where list = "gov.ru"]

لم أقم بإدراج القائمة الكاملة لجدار الحماية هنا عمداً. سيكون فرديًا لكل مشروع. ولكن هناك شيء واحد مؤكد ، استخدم قائمة العناوين فقط.

بواسطة GITLAB ، كل شيء واضح. لن أسهب في هذه اللحظة. كل شيء جميل لمهام منفصلة ، قوالب ، معالجات.

بوويرشيل


سيكون هناك 3 ملفات. لماذا بوويرشيل؟ يمكن لأي شخص أكثر راحة اختيار أداة لتكوين التكوينات. في هذه الحالة ، كل شخص لديه نوافذ على جهاز الكمبيوتر ، فلماذا تفعل ذلك على باش عندما يكون بوويرشيل أكثر ملاءمة. لمن هو أكثر ملاءمة.

البرنامج النصي نفسه (بسيط ومباشر):
[cmdletBinding ()]
بارام (
[المعلمة (إلزامي = $ صواب)]
[سلسلة] $ EXTERNALIPADDRESS ،
[المعلمة (إلزامي = $ صواب)]
[سلسلة] $ EXTERNALIPROUTE ،
[المعلمة (إلزامي = $ صواب)]
[string] $ BWorknets ،
[المعلمة (إلزامي = $ صواب)]
[string] $ CWorknets ،
[المعلمة (إلزامي = $ صواب)]
[string] $ BVoipNets ،
[المعلمة (إلزامي = $ صواب)]
[string] $ CVoipNets ،
[المعلمة (إلزامي = $ صواب)]
[سلسلة] $ CClientss ،
[المعلمة (إلزامي = $ صواب)]
[string] $ BVPNWORKs ،
[المعلمة (إلزامي = $ صواب)]
[string] $ CVPNWORKs ،
[المعلمة (إلزامي = $ صواب)]
[string] $ BVPNCLIENTSs ،
[المعلمة (إلزامي = $ صواب)]
[string] $ cVPNCLIENTSs ،
[المعلمة (إلزامي = $ صواب)]
[string] $ NAMEROUTER ،
[المعلمة (إلزامي = $ صواب)]
[سلسلة] $ ServerCertificates ،
[المعلمة (إلزامي = $ صواب)]
[سلسلة] $ infile ،
[المعلمة (إلزامي = $ صواب)]
[سلسلة] $ outfile
)

الحصول على المحتوى $ infile | كائن Foreach {$ _. استبدال ("EXTERNIP" ، $ EXTERNALIPADDRESS)} | |
كائن Foreach {$ _. استبدال ("EXTROUTE" ، $ EXTERNALIPROUTE)} |
Foreach-Object {$ _. استبدال ("BWorknet" ، $ BWorknets)} | |
Foreach-Object {$ _. استبدال ("CWorknet" ، $ CWorknets)} |
كائن Foreach {$ _. استبدال ("BVoipNet" ، $ BVoipNets)} |
Foreach-Object {$ _. استبدال ("CVoipNet" ، $ CVoipNets)} | |
Foreach-Object {$ _. استبدال ("CClients" ، $ CClientss)} | |
كائن Foreach {$ _. استبدال ("BVPNWORK" ، $ BVPNWORKs)} |
كائن Foreach {$ _. استبدال ("CVPNWORK" ، $ CVPNWORKs)} |
كائن Foreach {$ _. استبدال ("BVPNCLIENTS" ، $ BVPNCLIENTSs)} |
كائن Foreach {$ _. استبدال ("CVPNCLIENTS" ، $ cVPNCLIENTSs)} |
كائن Foreach {$ _. استبدال ("MYNAMERROUTER" ، $ NAMEROUTER)} |
كائن Foreach {$ _. استبدال ("ServerCertificate" ، $ ServerCertificates)} | مجموعة المحتوى $ outfile


أرجوك سامحني ، لا يمكنني وضع جميع القواعد لأنه لن تكون جميلة جدا. يمكنك أن تجعل القواعد بنفسك ، مسترشدة بأفضل الممارسات.

على سبيل المثال ، فيما يلي قائمة بالروابط التي تم توجيهي بها:
wiki.mikrotik.com/wiki/ دليل : Securing_Your_Router
wiki.mikrotik.com/wiki/ دليل : IP / جدار الحماية / تصفية
wiki.mikrotik.com/wiki/ دليل : OSPF- أمثلة
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/ دليل : Winbox
wiki.mikrotik.com/wiki/ دليل : Upgrading_RouterOS
wiki.mikrotik.com/wiki/ دليل : IP / Fasttrack - هنا ، عليك أن تعرف أنه عند تمكين 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 أرقام عشرية ، على التوالي ABCD ، يعمل الاستبدال وفقًا لنفس المبدأ ، إذا طلب B عند بدء التشغيل ، فأنت بحاجة إلى إدخال الرقم 0 للشبكة 192.168.0.0/24 ، و C = 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. خطة الشبكة. من الأفضل أن تؤلف على الفور في شكل مقروء. يكفي بما فيه الكفاية. لسوء الحظ ، كثيراً ما أرى أن الشبكات يتم تجميعها وفقًا للمبدأ: "لقد ظهر فرع جديد ، إليك / 24". لا أحد يعرف عدد الأجهزة التي من المفترض أن تكون في مكان معين وما إذا كان سيكون هناك مزيد من النمو. على سبيل المثال ، تم فتح متجر صغير ، يكون من الواضح فيه مبدئيًا أن الجهاز لن يتجاوز 10 ، لماذا تخصيص / 24؟ في الفروع الكبيرة - على العكس من ذلك ، يتم تخصيص / 24 ، وهناك 500 جهاز - يمكنك فقط إضافة شبكة ، لكنك ترغب في التفكير في كل شيء على الفور.
  2. تصفية القواعد. إذا افترض المشروع أنه سيكون هناك فصل بين الشبكات والحد الأقصى للتجزئة. أفضل الممارسات تتغير مع مرور الوقت. في السابق ، شاركوا شبكة كمبيوتر وشبكة من الطابعات ، والآن أصبح من الطبيعي جدًا عدم مشاركة هذه الشبكات. يجدر استخدام المنطق السليم وعدم إنشاء الكثير من الشبكات الفرعية حيث لا تكون هناك حاجة إليها وعدم توصيل جميع الأجهزة بشبكة واحدة.
  3. إعدادات "الذهبي" على جميع أجهزة التوجيه. أي إذا كنت قد قررت على خطة. يجدر التنبؤ فورًا بكل شيء ومحاولة التأكد من أن جميع الإعدادات متطابقة - لا يوجد سوى قائمة عناوين وعناوين IP مختلفة فقط. في حالة حدوث مشاكل ، سيكون وقت تصحيح الأخطاء أقل.
  4. المسائل التنظيمية لا تقل أهمية عن المسائل الفنية. غالبًا ما يتبع الموظفون الكسول هذه التوصيات "يدويًا" ، دون استخدام التكوينات والبرامج النصية الجاهزة ، مما يؤدي في النهاية إلى حدوث مشاكل من الصفر.

عن طريق التوجيه الديناميكي. استخدام OSPF مع تقسيم المناطق. ولكن هذا مقعد اختبار ، في ظروف القتال ، من المثير للاهتمام إعداد مثل هذه الأشياء.

آمل ألا يكون أحد منزعجًا من أنني لم أنشر تهيئة أجهزة التوجيه. أعتقد أنه سيكون هناك روابط كافية ، ثم يعتمد كل شيء على المتطلبات. وبالطبع الاختبارات ، هناك حاجة إلى المزيد من الاختبارات.

أتمنى للجميع تنفيذ مشاريعهم في العام الجديد. نعم ، سيأتي الوصول الممنوح معك!

Source: https://habr.com/ru/post/ar482384/


All Articles