TP-Link Smart Smarts هي عائلة من المفاتيح المدارة القادرة على دعم جودة الخدمة و VLAN ومجموعات تجميع الارتباطات (LAGS). يتم إدارتها من خلال واجهة على شبكة الإنترنت ، مما يتيح الوصول إلى عدد من الوظائف ، بما في ذلك عدادات الحزم الأساسية لكل منفذ. لسوء الحظ ، لا تنفذ هذه المفاتيح SNMP للوصول إلى هذه العدادات ، ولا يبدو أنها تنفذ عنوان URL منفصلًا للوصول المباشر إلى هذه المعلومات. يعالج هذا المشروع هذه المشكلة لإنتاج إحصائيات لكل منفذ من احتجاج سطر أوامر واحد مع الإخراج الذي يمكن تحليله بشكل تافه للإخراج المنسق ، أو إدخاله في نظام مراقبة مثل Zabbix.
تم اختبار هذا المشروع مقابل نماذج TP-Link Switch TL-SG1016DE و TL-SG108E. يجب أن تكون متوافقة أيضًا مع أفراد هذه العائلة الآخرين ، بما في ذلك TL-SG105E و TL-SG1024DE.
*** تحذير ***
تحتوي عائلة Smart Switch Easy على عدد من نقاط الضعف التي لم يتم حلها ، بما في ذلك CVE-2017-17746. كما هو موضح في https://seclists.org/fulldisclosure/2017/dec/67 ، بمجرد معاملة مستخدم من عنوان IP مصدر معين إلى واجهة الإدارة المستندة إلى الويب للمفتاح ، يتم التعامل مع أي مستخدم آخر من عنوان IP المصدر نفسه على أنه مصادقة.
يجب استخدام البرامج النصية Python في هذا المشروع فقط من مضيف لا يتمتع بوصول المستخدم العام.
ESSSTAT.PY هي أداة خفيفة الوزن يتم استخدامها لسحب إحصائيات المنفذ من المفتاح والإخراج بتنسيق قابلين للوصول بسهولة. ستتم إضافة رمز إضافي إلى تحليل وإما إخراج أو تخزين هذه الإحصاءات.
يؤدي تطبيق Python الخفيف الوزن هذا تسجيل دخول سريع من خلال الواجهة الإدارية القائمة على الويب من Switch ، ثم يستفسر عن الوحدة لإحصائيات المنفذ الحالية. يتم تمرير بيانات الاعتماد للوصول إلى الوحدة على سطر الأوامر. تم ترميز الأداة المساعدة مع Python 3.6 وتستخدم مكتبة الحساء الجميلة.
essstat.py [-h] [-1] [-d] -p TPpswd [-s] [-u TPuser] TPhost
TPhost IP address or hostname of switch
-h, --help show this help message and exit
-1, --1line output in a single line
-d, --debug activate debugging output
-j, --json output in JSON format
-p TPpswd, --password TPpswd
password for switch access
-s, --statsonly output post statistics only
-u TPuser, --username TPuser
username for switch access
$ essstat.py myswitch -p ChangeMe
2020-03-28 11:25:15
max_port_num=8
1;Enabled;Link Down;0,0,0,0
2;Enabled;10M Full;3568644976,0,3144940915,0
3;Enabled;1000M Full;237232286,0,66662515,0
4;Enabled;1000M Full;4019260430,0,3721138807,0
5;Enabled;1000M Full;1300360968,0,355032522,0
6;Enabled;Link Down;0,0,0,0
7;Enabled;1000M Full;2903398648,0,4293632425,5
8;Enabled;Link Down;0,0,0,0
تتمثل أبسط طريقة لتراكم البيانات من المفاتيح في تنفيذ EssStat.py مع خيار --1line وإلحاق الإخراج إلى ملف CSV. يمكنك بعد ذلك سحب نسخة من ملف CSV ومعالجة البيانات الأولية من خلال مصنف Excel هذا لإنتاج مخطط ديناميكي من شأنه أن ينقذ البيانات المتاحة تلقائيًا.
الخطوة الأولى هي إعداد دليل حيث تتراكم ملفات CSV للبيانات. اخترت تشغيل كل هذا تحت مستخدم Zabbix الذي يدعم تطبيق المراقبة على هذا المضيف. يمكنك اختيار مستخدم مختلف ، ولكن فقط تأكد من أن مجموعة الدليل تتطابق مع مجموعة المستخدم التي ستستخدمها.
$ ls -ald /var/log/essstat
drwxrwxr-x. 2 root zabbix 68 Mar 30 10:56 /var/log/essstat
بعد ذلك ، قم بإنشاء وظيفة (وظائف) CRON لجمع البيانات الدورية. للقيام بذلك ، قم بإنشاء ملف /etc/cron.d/essstat وأضف جدولًا واحدًا لكل مفتاح ستراقبه. لجعل هذا الحافظة ذاتيا بشكل معقول ، قم بتضمين السنة الحالية كجزء من مواصفات ملف CSV.
*/10 * * * * zabbix /usr/local/bin/essstat.py -1 -p ChangeMe1 orange >> /var/log/essstat/essstat-orange-`date +%G`.csv
*/10 * * * * zabbix /usr/local/bin/essstat.py -1 -p ChangeMe2 black >> /var/log/essstat/essstat-black-`date +%G`.csv
في المثال أعلاه ، هناك مفتاحان يجري مراقبتهما ، يدعى orange و black . لكل مفتاح ، سيتم تشغيل جمع البيانات كل 10 دقائق تبدأ في كل ساعة. سيتم تجميع البيانات الخاصة بـ orange في الملف /var/log/essstat/essstat-orange-2020.csv خلال السنة التقويمية 2020.
ربما يكون مصنف Excel الذي يدعم الماكرو هو أفضل طريقة لقراءة وإحصائيات المنفذ. سيقوم المصنف تلقائيًا ببناء استعلام وتنفيذ عملية الحصول على شبكة الإنترنت مقابل خادم المراقبة باستخدام البرنامج النصي essstat2.cgi . لتكوين المصنف للتثبيت المحلي الخاص بك ، يجب تعديل الاسم المحدد essstatBaseURL للإشارة إلى خادم الويب الذي يعمل على مضيف المراقبة الخاص بك واسم البرنامج النصي CGI. لجعل هذا التحديث في Excel 2019 على Windows ، انقر فوق علامة التبويب Excel Formulas ، ثم انقر فوق زر Name Manager على الشريط. انقر على إدخال essstatBaseURL وتعديل الإدخال ليناسب. تأكد من النقر فوق الزر باستخدام علامة الاختيار الخضراء لحفظ التعديل ، وأغلق مربع الحوار وحفظ المصنف المحدث. هذا يجب القيام به مرة واحدة فقط.
عند استخدام المصنف ، يتم تحديد اسم التبديل والتقارير من وإلى تاريخ/الأوقات في جدول المعلمة في أعلى يسار علامة التبويب WebData . انقر فوق الزر Update From Web لجلب البيانات إلى الجدول وقم بتحديث المؤامرة بشكل ديناميكي في علامة التبويب "PPS" . إذا كان المفتاح قيد الدراسة يحتوي على ثمانية منافذ فقط ، فسيتم إخفاء المنافذ الإضافية تلقائيًا.
يظهر اسم المفتاح والمقياس المرسم في عنوان الرسم البياني. بمجرد تحميل المقاييس في الجدول ، قد يتم تحميل المقاييس المختلفة في المخطط عن طريق الاختيار من الخيارات في الخلية المنسدلة بجوار label. Moving between theses metrics for the same switch does *not* require doing another من عملية الويب.
يتيح لك الجدول في علامة التبويب * LocalPortNames تجاوز أسماء المنافذ الافتراضية الموضحة في المخطط. هذا الجدول اختياري تمامًا ، ولا يلزم تحديد إدخالات جميع المنافذ الموجودة على مفتاح معين (من الجيد تمامًا تحديد عمليات تخطي اسم المنفذ لمجرد منافذتين لمفتاح معين). إذا كان لديك مفاتيح متعددة ، فيمكنك إضافة إدخالات لها جميعًا في جدول واحد.
يمكن استخدام هذا النموذج الأولي لـ Excel Workbook لمعالجة نسخة من إخراج البيانات RAW --1line من ESSSTAT.py التي تم تجميعها في ملف CSV. ابدأ بنسخ الملف إلى اسم جديد ، مع إدراج اسم المفتاح الذي يتم مراقبته. سيكون هذا هو دفتر مراقبة التبديل. على سبيل المثال:
C:usermeDocuments> copy essstat-TPLhost.xlsx essstat-orange.xlsx
بعد ذلك ، قم بتنزيل نسخة من بيانات CSV التي تم تجميعها على مضيف المراقبة الخاص بك وفتحها في Excel ، بالإضافة إلى مصنف مراقبة التبديل. في هذه المرحلة ، ستحتاج إلى نسخ البيانات من CSV إلى علامة التبويب RAWDATA من دفتر مراقبة التبديل حسب القيمة . للقيام بذلك ، انتقل إلى ملف CSV في Excel وحدد الخلية ذات اليسار العلوي ، A1 . في Windows ، يمكنك استخدام تسلسل المفاتيح Ctrl-Shift-End لتحديد جميع البيانات ، ثم اضغط على Ctrl-Insert لنسخ كل ذلك. ثم انتقل إلى مصنف مراقبة التبديل وحدد خلية البيانات الأولى في علامة التبويب RAWDATA في A2 (خلية اليسار العلوي ، أسفل العناوين). انقر بزر الماوس الأيمن واختر خيار لصق القيم. مع وجود بيانات RAW في مكانها ، يجب عليك التمرير لأسفل لتدوين الصف المملوء بالسكان. يمكن الآن إغلاق ملف CSV الأصلي.
انقر فوق علامة التبويب جدول PPS لتمديد جدول التحليل وحدد المقياس المراد رسمه. المفتاح هو تمديد نطاق الجدول المهيكلة لمطابقة RAWDATA المتاحة. اضغط على Ctrl-End لتحديد موقع نهاية الجدول. الماوس فوق المربع الصغير في الركن الأيسر السفلي من الخلية حتى يتغير مؤشر الماوس إلى التقاطع. انقر واسحب لأسفل إلى نفس رقم الصف مثل رقم الصف المأثور آخر في علامة التبويب RawData . سيتم تمديد جميع الصيغ والنطاقات في جدول PPS ومخطط PPS تلقائيًا.
هناك أربعة مقاييس يتم تتبعها لكل منفذ: TX Packets Good Packets ، TX Bad Packets ، RX Good PKTS ، و RX Bad PKTs. يتم استخدام القائمة المنسدلة في الخلية B2 في علامة تبويب جدول PPS لتحديد أي مقياس يجب ملؤه في الجدول ورسمه.
يتم استخدام البرنامج النصي CGI هذا للاستعلام عن بيانات CSV التي تم تجميعها على مضيف المراقبة وإرجاع إدخالات مطابقة. CGI مكتفية ذاتيا ، ويعتمد فقط على الوصول إلى awk لتنفيذ نص مضمّن بسيط. هناك ثلاثة متغيرات مدعومة في CGI:
لاحظ أن مواصفات التاريخ/الوقت الجزئي مسموح بها ، حيث يتم تحديد إدخالات المطابقة من خلال مقارنة السلسلة البسيطة. يُسمح للمواعيد من وإلى الحدود على حدود عام (على سبيل المثال من 2019 إلى 2020).
للاستعلام عن خادم المراقبة لإحصائيات المنفذ للمفتاح المعروف باسم Orange للنطاق الزمني من 2/23/2020 00:00 إلى 3/7/2020 11:30 ، سيبدو URI:
http://monitoring.mydomain.com/cgi-bin/essstat.cgi?esTPLhost=orange&esTo=2020-03-07%2011:30&esFrom=2020-02-23
تم تصميم البرنامج النصي CGI هذا لدعم تشغيل مصنف essstat.xlsm Excel. يدعم البرنامج النصي نفس معلمات الاستعلام مثل essstat.cgi وإرجاع البيانات لنفس المقاييس. ومع ذلك ، بدلاً من إرجاع عدد الحزم الخام في كل سجل ، ستعيد essstat2.cgi متوسط الحزم في المعدل في الثانية منذ السجل السابق. سيحسب البرنامج النصي وقت دلتا الفعلي بين السجل الحالي والسجل السابق لضمان دقيق المعدل. يحتوي البرنامج النصي أيضًا على معالجة العدادات الفردية التي تتم إعادة ضبطها إلى الصفر لأنها تلتف الحد الأقصى لحجم عدد صحيح للعداد. في مثل هذه الحالة ، سيتم إرجاع الحزمة في الثانية من الفاصل الزمني السابق للإحصاء المتأثر.
يحتوي Switch Smart Switch Easy Switch TP-Link على إمكانات أكثر من التبديل غير المُدار تمامًا. ومع ذلك ، فإن بيئة الإدارة مغلقة نسبيًا ، مع عميل إدارة الملكية فقط (الأداة المساعدة للتكوين الذكي السهل) أو صفحة إدارة قائمة على الويب على المحول المتاحة. علاوة على ذلك ، لا يوجد أي دعم لمراقبة المفتاح باستخدام SNMP. هذا يعني أن إدخالنا الوحيد في المفتاح سيكون عبر البروتوكول الذي يستخدمه العميل الملكي ، أو عن طريق وضع واجهة الإدارة المستندة إلى الويب على المفتاح.
أولاً ، خلفية صغيرة عن بروتوكول التكوين الذكي السهل UDP-Base (ESCP) الذي لا يستخدمه هذا المشروع. تتفاعل الأداة المساعدة للتكوين الذكي السهل مع التبديل عبر UDP مع عمليات البث. سيرسل العميل بث UDP من المنفذ 29809 إلى 29808 من حزمة اكتشاف مشفرة خصيصًا. ستقوم المحولات المتوافقة على الشبكة ببث استجابة من المنفذ 29808 إلى 29809 مما يتضمن اسم ونموذج وعنوان IP للمفتاح. من هذه النقطة ، يعود الأمر إلى العميل لتشفير تسلسل تسجيل الدخول وبث هذا على الشبكة ، مع توقع أن يتلقى مفتاح الهدف المحدد ومعالجة التعليمات. قد يكون هذا هو إعادة إرسال معلومات في حزمة إذاعية أخرى ، أو تعديل تكوين المفتاح ، أو اتخاذ بعض الإجراءات الأخرى.
يحتوي هذا التصميم والتنفيذ على عدد من المشكلات التي يجب أن تسبب بعض القلق الذي تم تسليط الضوء عليه من قبل الباحثين الأمن (chrisdcmoore في الضعف الكشف عن المعلومات في مفاتيح TP-Link Smart Smart و @CHMOD7850 في الكشف عن الضعف TP-Link Multiples). على الرغم من أن اختراق ESCP سيكون سهلاً بما فيه الكفاية ، إلا أنني لم أحب حقًا فكرة بث أوراق الاعتماد حرفيًا عبر الشبكة بشكل منتظم للاستيلاء على الإحصاءات.
الاعتماد على أن هذا المشروع يستخدم ، العميل القائم على الويب ، يمثل مشكلة أيضًا. يعد استخدام اتصالات TCP Unicast أفضل ، ولكن لم يتم تنفيذ SSL بواسطة المفتاح. على الرغم من أنه من الممكن إعادة تكوين المفتاح لاستخدام اسم مستخدم إداري مختلف ، إلا أن هناك اسم مستخدم واحد فقط للوصول إلى المفتاح. هذا يمنع توظيف الوصول القائم على الأدوار مع اسم مستخدم مخصص لإحصائيات القراءة فقط. يمكن أيضًا استخدام بيانات الاعتماد التي نستخدمها للاستيلاء على الإحصاءات للوصول إلى واجهة الإدارة التي تسمح بإعادة تعيين العدادات أو إعادة تكوين المفتاح أو حتى استبدال البرامج الثابتة.
والأسوأ من ذلك هو أن نقاط الضعف المذكورة في CVE-2017-17746 . كما هو موضح في https://seclists.org/fulldisclosure/2017/dec/67 ، بمجرد معاملة مستخدم من عنوان IP مصدر معين إلى واجهة الإدارة المستندة إلى الويب للمفتاح ، يتم التعامل مع أي مستخدم آخر من عنوان IP المصدر نفسه على أنه مصادقة. يتم إنشاء هذا الشرط عن طريق تنفيذ البرامج النصية Python في هذا المشروع ، حيث قام المستخدمون الآخرون بتسجيل الدخول أو النفق عبر نفس المضيف ، عندها يمكن أن يكون الوصول غير مصادفة إلى واجهة الإدارة للمفتاح. يمكن تخفيف هذه المشكلة عن طريق تشغيل البرامج النصية من مضيف إدارة مخصص. يمكن أن يوفر استخدام شبكة LAN المخصصة خارج نطاق النطاق الحماية أيضًا ، ولكن من غير المرجح أن يتم استخدام هذه المفاتيح في مثل هذه البيئة المهيكلة المتقدمة.
بيتر سمود
psmode [at] kitsnet.us