المحتويات

المقدمة

المتطلبات الأساسية

المتطلبات

المكونات المستخدمة

معلومات أساسية

التكوين

تحديد اسم الخدمة المراد فحصه

(إختياري) تحقق من تفاصيل الخدمة لتحديد ما إذا كان هناك وكيل أو جهاز

تحديد عامل تشغيل الخدمة المراد تقييمه

الخدمات المحملة

الخدمات غير المحملة

التحميل والتشغيل

محمل برمز الإنهاء

التحميل والتشغيل أو برمز الإنهاء

تكوين المتطلب ونهج الوضع لمثل هذا الشرط

التحقق من الصحة

استكشاف الأخطاء وإصلاحها

الشهادة غير موثوق بها

تجاوز فحص Cisco Secure Client

مسائل أخرى

المقدمة

يصف هذا وثيقة العملية من يشكل MacOS خدمة شرط في cisco ISE.

المتطلبات الأساسية

المتطلبات

توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:

- معرفة أساسية بأنظمة التشغيل MacOS.

- معرفة تدفق ISE Posture (وضعية محرك خدمات الهوية (ISE)).

ملاحظة: يغطي هذا وثيقة التشكيل ل MacOS خدمة شرط. تكوين الوضع الأولي غير مغطى في هذا المستند.

المكونات المستخدمة

تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج والمكونات المادية التالية:

- حزمة تصحيح Cisco ISE 3.3 1

- جهاز MacoOS يشغل Sonoma 14.3.1

- Cisco Secure Client 5.1.2.42

- وحدة التوافق، الإصدار 4.3.3432.64000

تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.

معلومات أساسية

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

البرنامج الخفي هو برنامج يتم تشغيله في الخلفية كجزء من النظام الشامل (أي أنه غير مرتبط بمستخدم معين). لا يمكن للمساعد عرض أي واجهة مستخدم رسومية؛ وبشكل أكثر تحديدا، لا يسمح له بالاتصال بخادم النافذة. خادم الويب هو المثال المثالي للخوادم.

العامل هو عملية يتم تشغيلها في الخلفية نيابة عن مستخدم معين. الوكيل مفيد لأنه يمكن أن تفعل أشياء لا يمكن للخوادم المساعدة، مثل الوصول بشكل موثوق به إلى الدليل الرئيسي للمستخدم أو الاتصال بخادم النافذة. يعد برنامج مراقبة التقويم مثالا جيدا للوكيل.

في الرسم التخطيطي التالي يمكنك رؤية كيفية تحميل كل جهاز استنادا إلى بدء تشغيل الجهاز وتسجيل دخول المستخدم:

يمكن العثور على المزيد من المعلومات حول البرامج الخداعية والوكلاء هنا في وثائق Apple

تتوفر الأدوات والوكلاء على جهاز MacOS الخاص بك في المواقع التالية:

الموقع

الوصف

~/المكتبة/وكلاء الإطلاق

العملاء لكل مستخدم الذين يوفرهم المستخدم.

/Library/LaunchAgents

وكلاء لكل مستخدم يوفرهم المسؤول.

/Library/LaunchDaemons

التعليمات على مستوى النظام التي يوفرها المسؤول.

/System/Library/LaunchAgents

عوامل OS X لكل مستخدم

/System/Library/LaunchDaemons

أنظمة التشغيل OS X عبر النظام

يمكنك التحقق من قائمة كل فئة من وحدة MacOS الطرفية باستخدام الأوامر التالية:

LS -ltr ~/Library/LaunchAgents

LS -ltr /Library/LaunchAgents

ls -ltr /Library/LaunchDaemons

LS -ltr /System/Library/LaunchAgents

LS -ltr /System/Library/LaunchDaemons

يمكن أن تظهر لك المواقع السابقة جميع الأجهزة والوكلاء المتوفرة على جهاز MacOS، على الرغم من أنها ليست جميعها محملة أو قيد التشغيل.

التكوين

يمكن إجراء التكوين لشرط خدمة MacOS باستخدام الخطوات التالية:

1. حدد اسم الخدمة المراد فحصه.

2. (إختياري) تحقق من تفاصيل الخدمة لتحديد ما إذا كان سيتم إستخدام أحد الوكلاء أو اسم العميل.

3. حدد مشغل الخدمة المراد تقييمه.

4. تكوين المتطلب ونهج الوضع لمثل هذا الشرط.

ملاحظة: تتطلب حالة الخدمة امتيازا مرتفعا للعمل، وبالتالي، فهي عبارة عن ضرورة أن يكون ISE PSN موثوقا به من قبل Cisco Secure Client (المعروف سابقا باسم AnyConnect) - دليل المرجع

تحديد اسم الخدمة المراد فحصه

يمكن ل ISE Posture Compliance Module التحقق من الخدمات التي تم تحميلها وتشغيلها وتحميلها وتشغيلها برمز الخروج.

للتحقق من الخدمات التي يتم تحميلها، أستخدم الأمر sudo launchctl dumpstate.

للتحقق من الخدمات التي يتم تحميلها والتي تحتوي على رمز خروج، أستخدم الأمر sudo launchctl list.

يمكن أن تظهر الأوامر السابقة الكثير من المعلومات، بدلا من ذلك، أستخدم هذه الأوامر لعرض اسم الخدمة الفعلي فقط:

للتحقق فقط من أسماء الخدمات التي تم تحميلها، أستخدم هذا الأمر:

Sudo Grep -B 10 -A 10 -E "^\s*state = " <<<"$(Launchctl dumpstate)" | GREP -aiE "\/.*= {" | SED 's|.*/|؛s| = {$||'

للتحقق فقط من أسماء الخدمات التي تم تحميلها والتي تحتوي على رمز خروج أستخدم هذا الأمر:

قائمة غسيل سودو | AWK '{if (NR>1) قم بطباعة $3}'

تظهر هذه الأوامر الكثير من المعلومات، لذلك في نهاية كل أمر يوصى باستخدام مرشح GREP آخر للعثور على الخدمة التي تبحث عنها.

على سبيل المثال، إذا كنت تبحث عن خدمة خاصة بالمورد، فيمكنك إستخدام كلمة أساسية كعامل تصفية في AND.

في حالة خدمات Cisco، ستكون الأوامر كالتالي:

Sudo Grep -B 10 -A 10 -E "^\s*state = " <<<"$(Launchctl dumpstate)" | GREP -aiE "\/.*= {" | SED 's|.*/|؛s| = {$||' | GREP -i من Cisco

قائمة غسيل سودو | AWK '{if (NR>1) قم بطباعة $3}' | GREP -i من Cisco

(إختياري) تحقق من تفاصيل الخدمة لتحديد ما إذا كان هناك وكيل أو جهاز

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

تلميح: هذه الخطوة إختيارية، نظرا لأن ISE تتيح لك تحديد الخيار ل Daemon أو وكيل المستخدم، لذا يمكنك تحديد هذا الخيار وتخطي هذا الجزء.

في حالة رغبتك في أن تكون محببا في هذا الشرط، يمكنك التحقق من النوع من خلال القيام بهذا:

1. أولا، تحقق من اسم Launchctl الكامل للخدمة باستخدام الأمر sudo grep -B 10 -A 10 -E "^\s*state = " <<<<"$(Launchctl dumpstate)" | GREP -aiE "\/.*= {" | SED 's|.*/|؛s| = {$||' | GREP -i {اسم الخدمة الخاص بك}

على سبيل المثال، للأمر sudo grep -b 10 -a 10 -e "^\s*state = " <<<"$(launchctl dumpstate)" | GREP -aiE "\/.*= {" | SED 's/.\{3\}$/' | grep -i com.cisco.secure.iseposture، الإنتاج: gui/501/com.cisco.secure.iseposture.

2. تحقق من نوع الخدمة باستخدام الأمر sudo launchctl print{ اسم خدمة Launchctl الخاصة بك } | GREP -i 'type = Launch'

اقتداء بالمثال، للأمر: طباعة Sudo Launchctl gui/501/com.cisco.secureRecent.iseposture | GREP -i 'type = إطلاق'، المخرجات هي: type = LaunchAgent.

هذا يعني أن نوع الخدمة هو "عميل"، وإلا فسيظهر النوع = LaunchDaemon.

ملاحظة: في حال كانت المعلومات فارغة، حدد الخيار ل Daemon أو User Agent في ISE لإعداد نوع الخدمة.

تحديد عامل تشغيل الخدمة المراد تقييمه

يسمح لك ISE بتحديد 5 مشغلات خدمة مختلفة:

- تم التحميل

- لم يتم التحميل

- التحميل والتشغيل

- تم التحميل برمز الخروج

- التحميل والتشغيل أو برمز الإنهاء

الخدمات المحملة

هي كل الخدمات التي يتم سردها عند إستخدام هذين الأمرين:

Sudo Grep -B 10 -A 10 -E "^\s*state = " <<<"$(Launchctl dumpstate)" | GREP -aiE "\/.*= {" | SED 's|.*/|؛s| = {$||'

قائمة غسيل سودو | AWK '{if (NR>1) قم بطباعة $3}'

الخدمات غير المحملة

هل تم تعريف كافة الخدمات التي تحتوي على قائمة الخصائص (PLIST) الخاصة بها، ولكن لم يتم تحميلها، أو الخدمات التي لا تحتوي حتى على قائمة ملكية (PLIST) معرفة، وبالتالي لا يمكن تحميلها على الإطلاق.

ليس من السهل تعريف هذه الخدمات، وهو أكثر شيوعا لحالة الاستخدام عندما تريد التحقق من عدم وجود خدمة معينة في جهاز MacOS.

على سبيل المثال، إذا كنت ترغب في منع تحميل خدمة التكبير/التصغير على جهاز MacOS، يمكنك وضع Us.Zoom.ZoomDaemon كقيمة للخدمة، بهذه الطريقة تتأكد من أن التكبير/التصغير لا يعمل أو غير مثبت على الإطلاق.

هناك خدمات لا يمكن إزالة تثبيتها، وقائمة الخصائص الخاصة بها محددة.

على سبيل المثال، باستخدام هذا الأمر، يمكنك أن ترى أن لوحة DHCP6d معرفة:

LS -ltr /System/Library/LaunchDaemons | grep com.apple.dhcp6d.plist

عند التحقق من قائمة الخدمات، يمكنك ملاحظة أنه لم يتم تحميلها:

Sudo Grep -B 10 -A 10 -E "^\s*state = " <<<"$(Launchctl dumpstate)" | GREP -aiE "\/.*= {" | SED 's|.*/|؛s| = {$||' | grep -i com.apple.dhcp6d

قائمة غسيل سودو | AWK '{if (NR>1) قم بطباعة $3}' | grep -i com.apple.dhcp6d

إذا قمت بضبط القيمة على com.apple.dhcp6d" فإن جهاز MacOS متوافق، لأنه على الرغم من تحديد لوحة الخدمة، فإنه لا يتم تحميل الخدمة.

التحميل والتشغيل

ليست جميع الخدمات قيد التشغيل، هناك عدة حالات لكل خدمة، مثل التشغيل، وعدم التشغيل، والانتظار، والمنتهى، وغير مهيأ، وما إلى ذلك.

للتحقق من جميع الخدمات قيد التشغيل، أستخدم هذا الأمر:

SUDO GREP -B 10 -A 10 -E "^\s*state = تشغيل" <<"$(Launchctl dumpstate)" | GREP -aiE "\/.*= {" | SED 's|.*/|؛s| = {$||'

الخدمات المدرجة مع الأمر أعلاه في وضع التحميل والتشغيل كشرط مشغل الخدمة.

محمل برمز الإنهاء

قد تنتهي بعض الخدمات برمز خروج متوقع أو غير متوقع، مثل هذه الخدمات يمكن سردها باستخدام الأمر:

SUDO GREP -B 10 -A 10 "الحالة = e" <<<"$ (حاوية وحدة التحكم في التشغيل)" | GREP -aiE "\/.*= {" | SED 's/.\{3\}$/'

لمعرفة رمز الخروج الخاص بها، يمكنك إختيار أي خدمة واستخدام الأمر:

طابعة Sudo Launchctl { اسم خدمة Launchctl } | GREP -أنا 'رمز الخروج الأخير'

على سبيل المثال:

sudo launchctl يطبع gui/501/com.apple.mdmclient.agent | GREP -أنا 'رمز الخروج الأخير'

وهو الناتج: رمز الخروج الأخير = 0

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

التحميل والتشغيل أو برمز الإنهاء

يعمل هذا الخيار الأخير عند تحميل الخدمة وتشغيلها أو تحميلها برمز الخروج.

تعرض هذه الصورة مثالا لشرط خدمة MacOS.

ملاحظة: حاليا، اسم الخدمة الدقيق فقط هو المعتمد. هناك طلب تحسين لدعم حرف البدل في أسماء الخدمات، معرف تصحيح الأخطاء من Cisco CSCwf01373

تكوين المتطلب ونهج الوضع لمثل هذا الشرط

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

انتقل إلى ISE > مراكز العمل > الوضع > المتطلبات لإنشائه.

ملاحظة: لا توجد خيارات إصلاح لظروف الخدمة.

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

انتقل إلى ISE > مراكز العمل > Posture (وضعية) > سياسة Posture (وضعية) لإنشاء السياسة.

قم بتمكين النهج الجديد، قم بتسميته كما ترغب وحدد المتطلب الذي قمت بإنشائه للتو.

التحقق من الصحة

يمكنك التحقق من تمرير حالة MacOS أو فشلها، من واجهة المستخدم الرسومية (GUI) ل Cisco Secure Client.

أيضا، أنت يستطيع فحصت ال ISE Posture تقرير من ISE > عمليات > تقارير > تقارير > نقاط نهاية ومستخدمين > تقييم الوضع حسب نقطة النهاية.

استكشاف الأخطاء وإصلاحها

المشاكل المشتركة التي قد تواجهها أثناء تكوين حالة خدمة MacOS هذه هي:

الشهادة غير موثوق بها

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

وإلا واجهت هذا الخطأ:

يكتشف وحدة ISE Posture النمطية خوادم PSN إما بواسطة عنوان IP أو اسم المجال المؤهل بالكامل (FQDN). أفضل ممارسة هي وجود ملفات تكوين Posture (وضعية) لاكتشاف عقد ISE من خلال FQDN، لذلك يجب أن تتضمن شهادات Admin و Portal (مدخل إمداد العميل) FQDN في حقل CN أو حقل SAN. يمكنك إستخدام شهادة حرف البدل لهذا أيضا، وشهادات حرف البدل مدعومة لهذا التدفق.

لا يمكن الوثوق بحقل CN في المستقبل بسبب الأوراق المالية للنظام. قم بتضمين إدخال حرف البدل أو FQDN في حقل شبكة التخزين (SAN) كأفضل ممارسة.

في حالة اكتشاف شبكات ISE PSN من خلال عنوان IP بدلا من شبكة FQDN، يلزم تضمين عنوان IP للعقد إما في حقل CN أو حقل شبكة التخزين (SAN) للشهادة (الشهادات) المرتبطة باستخدام "الإدارة" و"المدخل".

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

قد تواجه السلوك الخاطئ حتى عند تحميل الشهادة بشكل صحيح والوفاء بجميع متطلبات CN و SAN، فإن نظام MacOS لا يزال لا يثق في الشهادة. في مثل هذه الحالات، افتح تطبيق الوصول إلى سلسلة المفاتيح، وتصفح إلى علامة التبويب مخزن شهادات النظام، واحذف شهادة CA من هناك.

بعد ذلك، انتقل إلى التطبيق الطرفي في نظام التشغيل MacOS وأقم هذا الأمر: sudo /usr/bin/security add-trusted-cert -r trustRoot -d -k /Library/Keychains/System.keychain

{مسار شهادة المرجع المصدق}

على سبيل المثال، إذا كانت شهادتك في سطح المكتب الخاص بك، فإن الأمر هو التالي: sudo /usr/bin/security add-trusted-cert -r trustRoot -d -k /Library/Keychains/System.keychain /Users/JohnDoe/Downloads/CA_certificate.crt

بعد تنفيذ الأمر، قم بإعادة تشغيل الكمبيوتر ثم حاول مرة أخرى.

تجاوز فحص Cisco Secure Client

وقد تواجه أيضا رسائل الخطأ "تخطي الفحص الآمن للعملاء من Cisco"، و"لم يتم تكوين شبكتك لاستخدام وكيل وضعية ISE من Cisco":

تظهر هذه الرسالة لعدم وجود توصيفات تم تكوينها في إمداد العميل في ISE > مراكز العمل > Posture > إمداد العميل > سياسات إمداد العميل.

على الرغم من أنك قد ترى شرط لأنظمة تشغيل Mac OSX، إلا أن ذلك لا يعني أنك تغطي كل إصدارات MacOS.

وبشكل افتراضي، لا يتضمن ISE أحدث إصدارات نظام التشغيل MacOS، مثل Sequoia (15.6.x)، لتجنب مثل هذه الرسالة، تأكد من أن الوضع تم تحديثه.

يجب عليك تحديث موجز ويب الوضع من ISE > مراكز العمل > الوضع > الإعدادات > تحديثات البرامج > تحديثات الوضع.

يمكن تحديث هذا الملف عبر الإنترنت مباشرة من ISE أو دون اتصال من خلال ملف zip يمكن تنزيله هنا من موقع Posture Offline

مسائل أخرى

إذا كنت تريد الدخول في التفاصيل، يمكنك تجميع حزمة DART من جهاز MacOS. لهذا يجب أن يكون لديك وحدة DART مثبتة، بعد ذلك، مع انتقال تطبيق Cisco Secure Client النشط إلى شريط القائمة وانقر فوق Cisco Secure Client ثم، في إنشاء تقارير التشخيص.

ملاحظة: من المهم أن يتم تمكين خيار تضمين سجلات النظام عند إنشاء حزمة DART، وإلا فإن حزمة DART لن تتضمن معلومات وحدة ISE Posture (وضعية محرك خدمات الهوية (ISE)).

لأسباب أمنية، قد يتم تشفير بعض السجلات ولا يمكن رؤيتها، ولكن في unified_log.log من حزمة DART، قد ترى سجلات مماثلة كما هو موضح:

ملاحظة: مثال السجل هذا خاص بشرط خدمة MacOS المكون في هذا المستند.

[Tue Feb 27 10:30:58.576 2024][csc_iseposture]Function: createCheckXMLString Thread Id: 0x4A9FD7C0 File: Check.cpp Line: 417 Level: debug :: parsed Check string to: (

macOS-Service-Condition

3

303

com.apple.sysmond

running

0

)

[Tue Feb 27 10:30:58.576 2024][csc_iseagent]Function: processPostureData Thread Id: 0x4A9FD7C0 File: AuthInfo.cpp Line: 763 Level: debug :: Decrypted posture data, X-Perfigo-DM-Software-List =

ISE: 3.3.0.430

ISE: 2.x

0

30

macOS-Service-Requirement

macOS Service is non compliant

3

0

3

macOS-Service-Condition

3

303

com.apple.sysmond

running

0

(macOS-Service-Condition)

[Tue Feb 27 10:30:58.576 2024][csc_iseagent]Function: SMP_initCheck Thread Id: 0x4A9FD7C0 File: SMNavPosture.cpp Line: 682 Level: debug :: MSG_SP_START_CHK, {item:0,str:"

ISE: 3.3.0.430

ISE: 2.x

0

30

macOS-Service-Requirement

macOS Service is non compliant

3

0

3

macOS-Service-Condition

3

303

com.apple.sysmond

running

0

(macOS-Service-Condition)

",isElevationAllowed:1,nRemediationTimeLeft:0}

[Tue Feb 27 10:30:58.646 2024][csc_eliseposture]Function: createCheckXMLString Thread Id: 0x4A9FD7C0 File: Check.cpp Line: 417 Level: debug :: parsed Check string to: (

macOS-Service-Condition

3

303

com.apple.sysmond

running

0

)

[Tue Feb 27 10:30:58.646 2024][csc_eliseposture]Function: doCheck Thread Id: 0x4A9FD7C0 File: Rqmt.cpp Line: 279 Level: debug :: Checking rqmt, [macOS-Service-Requirement]:Mandatory

[Tue Feb 27 10:30:58.658 2024][csc_eliseposture]Function: doCheck Thread Id: 0x4A9FD7C0 File: CheckSvc.cpp Line: 87 Level: debug :: The agent com.apple.sysmond check had a result of : success.  The requested checkType was: ctDaemonOrUserAgentStatus and opType was: cotRunning

[Tue Feb 27 10:30:58.658 2024][csc_eliseposture]Function: completeCheck Thread Id: 0x4A9FD7C0 File: Rqmt.cpp Line: 318 Level: debug :: check result of rqmt, [macOS-Service-Requirement]:PASSED

كذلك، يمكنك تعيين مكون الوضع على مستوى سجل التصحيح في عقدة ISE PSN التي تصادق وتضع نقطة النهاية.

يمكنك تكوين مستوى السجل هذا من ISE > Operations > Troubleshooting (أستكشاف الأخطاء وإصلاحها) > Debug Log Processor (معالج تصحيح الأخطاء) > Debug Log Configuration. انقر فوق اسم مضيف PSN وقم بتغيير مستوى سجل مكون Posture من المعلومات إلى تصحيح الأخطاء.

باستخدام نفس المثال لشرط خدمة MacOS، يمكنك أن ترى سجلات مماثلة ضمن ال ise-psc.log:

2024-02-27 10:30:58.658 DEBUG [https-jsse-nio-10.4.21.59-8443-exec-1][[]] cisco.cpm.posture.runtime.PostureHandlerImpl -::username:::- NAC agent xml

ISE: 3.3.0.430

ISE: 2.x

0

30

macOS-Service-Requirement

macOS Service is non compliant

3

0

3

macOS-Service-Condition

3

303

com.apple.sysmond

running

0

(macOS-Service-Condition)

2024-02-27 10:30:58.659 DEBUG [https-jsse-nio-10.4.21.59-8443-exec-1][[]] cisco.cpm.posture.util.StatusUtil -::username:::- StatusUtil - getPosturePolicyHTML [

ISE: 3.3.0.430

ISE: 2.x

0

30

macOS-Service-Requirement

macOS Service is non compliant

3

0

3

macOS-Service-Condition

3

303

com.apple.sysmond

running

0

(macOS-Service-Condition)

]

2024-02-27 10:31:06.044 DEBUG [https-jsse-nio-10.4.21.59-8443-exec-8][[]] cisco.cpm.posture.util.AgentUtil -::username:::- Increase MnT counter at POSTURE:Posture.Requirement.Success.macOS-Service-Requirement

إذا إستمرت المشكلات، فقم برفع بطاقة TAC مع فريق Cisco.