المحتويات

المقدمة

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

المتطلبات

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

التكوين

ASA مع المصادقة المحلية

ACS والمستخدمون المحليون

مستخدمو ACS و Active Directory

ASA مع ACS عبر RADIUS

ASA مع ACS عبر TACACS+

ASA مع LDAP

Microsoft LDAP ل SSL

LDAP والتنبيه قبل انتهاء الصلاحية

ASA و L2TP

عميل ASA SSL VPN

بوابة الويب ASA SSL

كلمة مرور تغيير المستخدم ل ACS

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

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

معلومات ذات صلة

المقدمة

يصف هذا المستند ميزات انتهاء صلاحية كلمة المرور وتغيير كلمة المرور على نفق VPN للوصول عن بعد تم إنهاؤه على جهاز الأمان القابل للتكيف (ASA) من Cisco. وتغطي الوثيقة:

- العملاء المختلفون: عميل Cisco VPN و Cisco AnyConnect Secure Mobility

- البروتوكولات المختلفة: بروتوكول الوصول إلى الدليل خفيف الوزن (LDAP) و TACACS و RADIUS

- متاجر مختلفة على نظام التحكم في الوصول الآمن (ACS) من Cisco: خدمة Active Directory (AD) المحلية والنشطة

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

المتطلبات

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

- معرفة تكوين ASA من خلال واجهة سطر الأوامر (CLI)

- معرفة أساسية بتكوين VPN على ASA

- معرفة أساسية ب Cisco Secure ACS

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

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

- جهاز Cisco Adaptive Security Appliance، الإصدار 8.4 والإصدارات الأحدث

- نظام التشغيل Microsoft Windows Server 2003 SP1

- نظام التحكم بالوصول الآمن من Cisco، الإصدار 5.4 أو إصدار أحدث

- Cisco AnyConnect Secure Mobility، الإصدار 3.1

- عميل شبكة VPN من Cisco، الإصدار 5

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

التكوين

ملاحظات:

استخدم أداة بحث الأوامر (للعملاء المسجلين فقط) للحصول على مزيد من المعلومات حول الأوامر المُستخدمة في هذا القسم.

ارجع إلى معلومات مهمة عن أوامر تصحيح الأخطاء قبل أن تستخدم أوامر debug.

ASA مع المصادقة المحلية

لا يسمح ASA مع المستخدمين المحددين محليا باستخدام ميزات انتهاء صلاحية كلمة المرور أو تغيير كلمة المرور. يلزم وجود خادم خارجي، مثل RADIUS أو TACACS أو LDAP أو Windows NT.

ACS والمستخدمون المحليون

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

يمكنك تكوين نهج كلمة المرور لكافة المستخدمين. على سبيل المثال، بعد انتهاء صلاحية كلمة المرور، يمكنك تعطيل حساب المستخدم (منعه بدون إمكانية تسجيل الدخول)، أو يمكنك تقديم الخيار لتغيير كلمة المرور:

الإعدادات الخاصة بالمستخدم لها الأولوية على الإعدادات العامة.

ACS-RESERVED-Never-Expired سمة داخلية لهوية المستخدم.

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

مستخدمو ACS و Active Directory

يمكن تكوين ACS لفحص المستخدمين في قاعدة بيانات AD. يتم دعم انتهاء صلاحية كلمة المرور وتغييرها عند إستخدام بروتوكول المصادقة لتأكيد الاتصال بقيمة التحدي ل Microsoft الإصدار 2 (MSCHAPv2)؛ راجع دليل المستخدم لنظام التحكم بالوصول الآمن من Cisco 5.4: المصادقة في ACS 5.4: توافق بروتوكول المصادقة ومخزن الهوية للحصول على تفاصيل.

على ASA، يمكنك إستخدام ميزة إدارة كلمة المرور، كما هو موضح في القسم التالي، لإجبار ASA على إستخدام MSCHAPv2.

يستخدم ACS إستدعاء بيئة الحوسبة الموزعة/الإجراء البعيد (DCE/RPC) لنظام ملفات الإنترنت العام (CIFS) عند إتصاله بدليل وحدة التحكم بالمجال (DC) لتغيير كلمة المرور:

يمكن أن يستخدم ASA كلا من بروتوكولات RADIUS و TACACS+ للاتصال ب ACS لتغيير كلمة مرور AD.

ASA مع ACS عبر RADIUS

لا يدعم بروتوكول RADIUS بطبيعتها انتهاء صلاحية كلمة المرور أو تغيير كلمة المرور. نموذجيا، يتم إستخدام بروتوكول مصادقة كلمة المرور (PAP) ل RADIUS. يرسل ال ASA ال username وكلمة في نص عادي، وبعد ذلك يشفر الكلمة من خلال إستعمال من ال RADIUS يشارك سر.

في سيناريو نموذجي عند انتهاء صلاحية كلمة مرور المستخدم، يرجع ACS رسالة رفض RADIUS إلى ASA. يشير ACS إلى:

بالنسبة إلى ASA، فإنها رسالة رفض RADIUS بسيطة، وتفشل المصادقة.

لحل هذه المشكلة، يسمح ASA باستخدام الأمر password-management ضمن تكوين مجموعة النفق:

tunnel-group RA general-attributes

authentication-server-group ACS

password-management

يقوم الأمر password-management بتغيير السلوك بحيث يتم فرض ASA لاستخدام MSCHAPv2، بدلا من PAP، في طلب Radius.

يدعم بروتوكول MSCHAPv2 انتهاء صلاحية كلمة المرور وتغيير كلمة المرور. لذلك، إذا هبط مستخدم شبكة VPN في مجموعة النفق المحددة أثناء مرحلة Xauth، فإن طلب Radius من ASA يتضمن الآن تحديا MS-CHAP:

إذا لاحظ ACS أن المستخدم يحتاج إلى تغيير كلمة المرور، فإنه يرجع رسالة رفض Radius مع خطأ MSCHAPv2 648.

يفهم ال ASA أن رسالة ويستعمل MODE_CFG in order to طلبت الكلمة جديد من ال cisco VPN زبون:

Oct 02 06:22:26 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,

Received Password Expiration from Auth server!

يقدم عميل Cisco VPN مربع حوار يطلب كلمة مرور جديدة:

يرسل ASA طلب Radius آخر مع MS-CHAP-CPW و MS-CHAP-NT-ENC-PW حمولة (كلمة المرور الجديدة):

تؤكد ACS الطلب وتعيد قبول RADIUS مع MS-CHAP2-SUCCESS:

يمكن التحقق من هذا الإجراء على ACS، الذي يشير إلى "تغيير كلمة المرور 24204 بنجاح":

يبلغ ASA بعد ذلك عن المصادقة الناجحة ويواصل عملية الوضع السريع (QM):

Oct 02 06:22:28 [IKEv1]Group = RA, Username = cisco, IP = 192.168.10.67,

User (cisco) authenticated.

ASA مع ACS عبر TACACS+

وبالمثل، يمكن إستخدام TACACS+ لانتهاء صلاحية كلمة المرور وتغييرها. لا يلزم وجود ميزة إدارة كلمة المرور، لأن ASA لا يزال يستخدم TACACS+ مع نوع مصادقة ASCII بدلا من MSCHAPv2.

يتم تبادل حزم متعددة، ويطلب ACS كلمة مرور جديدة:

يقدم عميل شبكة VPN من Cisco مربع حوار (يختلف عن الحوار المستخدم بواسطة RADIUS) يطلب كلمة مرور جديدة:

يطلب ACS تأكيد كلمة المرور الجديدة:

يقدم عميل Cisco VPN مربع تأكيد:

إذا كان التأكيد صحيحا، يبلغ ACS عن مصادقة ناجحة:

يقوم ACS بعد ذلك بتسجيل حدث تم فيه تغيير كلمة المرور بنجاح:

تظهر تصحيح أخطاء ASA عملية الاستبدال بالكامل والمصادقة الناجحة:

Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,

Received challenge status!

Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,

process_attr(): Enter!

Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,

Processing MODE_CFG Reply attributes

Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,

Received challenge status!

Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,

process_attr(): Enter!

Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,

Processing MODE_CFG Reply attributes.

Oct 02 07:44:41 [IKEv1]Group = RA, Username = cisco, IP = 192.168.10.67,

User (cisco) authenticated.

تغيير كلمة المرور هذا شفاف تماما ل ASA. أطول قليلا من جلسة TACACS+ مع المزيد من حزم الطلب والرد، والتي يتم تحليلها بواسطة عميل VPN ويتم تقديمها إلى المستخدم الذي يقوم بتغيير كلمة المرور.

ASA مع LDAP

تم دعم انتهاء صلاحية كلمة المرور وتغييرها بالكامل بواسطة مخطط خادم Microsoft AD و Sun LDAP.

لتغيير كلمة المرور، ترجع الخوادم 'bindResponse = invalidCredentials' مع 'error = 773.' يشير هذا الخطأ إلى أنه يجب على المستخدم إعادة تعيين كلمة المرور. تتضمن رموز الأخطاء النموذجية:

رمز الخطأ

الخطأ

525

لم يتم العثور على المستخدم

52 اس

بيانات الاعتماد غير الصالحة

530

غير مسموح بتسجيل الدخول في هذا الوقت

531

غير مسموح بتسجيل الدخول في محطة العمل هذه

532

انتهت صلاحية كلمة المرور

533

تم تعطيل الحساب

701

انتهت صلاحية الحساب

773

يجب على المستخدم إعادة تعيين كلمة المرور

775

حساب المستخدم مؤمن

قم بتكوين خادم LDAP:

aaa-server LDAP protocol ldap

aaa-server LDAP (outside) host 10.48.66.128

ldap-base-dn CN=USers,DC=test-cisco,DC=com

ldap-scope subtree

ldap-naming-attribute sAMAccountName

ldap-login-password *****

ldap-login-dn CN=Administrator,CN=users,DC=test-cisco,DC=com

server-type microsoft

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

tunnel-group RA general-attributes

address-pool POOL

authentication-server-group LDAP

default-group-policy MY

password-management

قم بتكوين مستخدم AD لذلك يلزم تغيير كلمة المرور:

عندما يحاول المستخدم إستخدام عميل Cisco VPN، يبلغ ASA عن كلمة مرور غير صحيحة:

ASA(config-tunnel-general)# debug ldap 255

<some output ommited for clarity>

[111] Session Start

[111] New request Session, context 0xbd835c10, reqType = Authentication

[111] Fiber started

[111] Creating LDAP context with uri=ldap://10.48.66.128:389

[111] Connect to LDAP server: ldap://10.48.66.128:389, status = Successful

[111] supportedLDAPVersion: value = 3

[111] supportedLDAPVersion: value = 2

[111] Binding as Administrator

[111] Performing Simple authentication for Administrator to 10.48.66.128

[111] LDAP Search:

Base DN = [CN=USers,DC=test-cisco,DC=com]

Filter  = [sAMAccountName=cisco-test]

Scope   = [SUBTREE]

[111] User DN = [CN=cisco-test,CN=Users,DC=test-cisco,DC=com]

[111] Talking to Active Directory server 10.48.66.128

[111] Reading password policy for cisco-test, dn:CN=cisco-test,CN=Users,

DC=test-cisco,DC=com

[111] Read bad password count 2

[111] Binding as cisco-test

[111] Performing Simple authentication for cisco-test to 10.48.66.128

[111] Simple authentication for cisco-test returned code (49) Invalid

credentials

[111] Message (cisco-test): 80090308: LdapErr: DSID-0C090334, comment:

AcceptSecurityContext error, data 773, vece

[111] Invalid password for cisco-test

إذا كانت بيانات الاعتماد غير صحيحة، يظهر الخطأ 52e:

[110] Message (cisco-test): 80090308: LdapErr: DSID-0C090334, comment:

AcceptSecurityContext error, data 52e, vece

يطلب عميل Cisco VPN بعد ذلك تغيير كلمة المرور:

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

ما إن يغير المستعمل الكلمة، ال ASA أمكن إستلمت هذا إخفاق رسالة من ال LDAP نادل:

[113] Modify Password for cisco-test successfully converted password to unicode

[113] modify failed, no SSL enabled on connection

يتطلب نهج Microsoft إستخدام طبقة مآخذ التوصيل الآمنة (SSL) لتعديل كلمة المرور. غيرت التشكيل:

aaa-server LDAP (outside) host 10.48.66.128

ldap-over-ssl enable

Microsoft LDAP ل SSL

بشكل افتراضي، لا يعمل Microsoft LDAP عبر SSL. لتمكين هذه الوظيفة، يجب تثبيت شهادة حساب الكمبيوتر بملحق المفتاح الصحيح. راجع كيفية تمكين LDAP عبر SSL باستخدام مرجع مصدق تابع لجهة خارجية  للحصول على مزيد من التفاصيل.

يمكن أن تكون الشهادة موقعة ذاتيا لأن ASA لا يتحقق من شهادة LDAP. راجع معرف تصحيح الأخطاء من Cisco CSCui40212، "السماح ASA بالتحقق من صحة الشهادة من خادم LDAP"، للحصول على طلب تحسين ذي صلة.

ملاحظة: يتحقق ACS من شهادة LDAP في الإصدار 5.5 والإصدارات اللاحقة.

لتثبيت الشهادة، افتح وحدة تحكم MMC، وحدد إضافة/إزالة الأداة الإضافية، وقم بإضافة الشهادة، واختر حساب الكمبيوتر:

حدد كمبيوتر محلي، وقم باستيراد الشهادة إلى المخزن الشخصي، ثم قم بنقل شهادة المرجع المصدق المقترن (CA) إلى المخزن الموثوق به. تحقق من أن الشهادة موثوق بها:

هناك خطأ في إصدار ASA 8.4.2، حيث قد يتم إرجاع هذا الخطأ عندما تحاول إستخدام LDAP عبر SSL:

ASA(config)# debug ldap 255

[142] Connect to LDAP server: ldaps://10.48.66.128:636, status = Successful

[142] supportedLDAPVersion: value = 3

[142] supportedLDAPVersion: value = 2

[142] Binding as Administrator

[142] Performing Simple authentication for Administrator to 10.48.66.128

[142] LDAP Search:

Base DN = [CN=Users,DC=test-cisco,DC=com]

Filter  = [sAMAccountName=Administrator]

Scope   = [SUBTREE]

[142] Request for Administrator returned code (-1) Can't contact LDAP server

يعمل الإصدار 9.1.3 من ASA بشكل صحيح مع التكوين نفسه. هناك إثنان LDAP جلسة. ترجع الجلسة الأولى فشل مع الرمز 773 (كلمة منتهية الصلاحية)، بينما يتم إستخدام الجلسة الثانية لتغيير كلمة المرور:

[53] Session Start

[53] New request Session, context 0xadebe3d4, reqType = Modify Password

[53] Fiber started

[53] Creating LDAP context with uri=ldaps://10.48.66.128:636

[53] Connect to LDAP server: ldaps://10.48.66.128:636, status = Successful

[53] supportedLDAPVersion: value = 3

[53] supportedLDAPVersion: value = 2

[53] Binding as Administrator

[53] Performing Simple authentication for Administrator to 10.48.66.128

[53] LDAP Search:

Base DN = [CN=Users,DC=test-cisco,DC=com]

Filter  = [sAMAccountName=cisco-test]

Scope   = [SUBTREE]

[53] User DN = [CN=cisco-test,CN=Users,DC=test-cisco,DC=com]

[53] Talking to Active Directory server 10.48.66.128

[53] Reading password policy for cisco-test, dn:CN=cisco-test,CN=Users,

DC=test-cisco,DC=com

[53] Read bad password count 0

[53] Change Password for cisco-test successfully converted old password to

unicode

[53] Change Password for cisco-test successfully converted new password to

unicode

[53] Password for cisco-test successfully changed

[53] Retrieved User Attributes:

<....most attributes details ommitted for clarity>

accountExpires: value = 130256568000000000 <----- 100ns intervals since

January 1, 1601 (UTC)

للتحقق من تغيير كلمة المرور، راجع الحزم. يمكن إستخدام المفتاح الخاص لخادم LDAP من قبل Wireshark لفك تشفير حركة مرور SSL:

تتماثل أخطاء تبادل مفتاح الإنترنت (IKE)/المصادقة والتفويض والمحاسبة (AAA) على ASA إلى حد كبير مع تلك المقدمة في سيناريو مصادقة RADIUS.

LDAP والتنبيه قبل انتهاء الصلاحية

ل LDAP، أنت يستطيع استعملت سمة أن يرسل تحذير قبل كلمة مرور ينتهي. يقوم ASA بتحذير المستخدم قبل انتهاء صلاحية كلمة المرور ب 90 يوما باستخدام هذا الإعداد:

tunnel-group RA general-attributes

password-management password-expire-in-days 90

هنا تنتهي كلمة السر في 42 يوم، والمستعمل يحاول أن يدون:

ASA# debug ldap 255

<some outputs removed for clarity>

[84] Binding as test-cisco

[84] Performing Simple authentication for test-cisco to 10.48.66.128

[84] Processing LDAP response for user test-cisco

[84] Message (test-cisco):

[84] Checking password policy

[84] Authentication successful for test-cisco to 10.48.66.128

[84] now: Fri, 04 Oct 2013 09:41:55 GMT, lastset: Fri, 04 Oct 2013 09:07:23

GMT, delta=2072, maxage=1244139139 secs

[84] expire in: 3708780 secs, 42 days

[84] Password expires Sat, 16 Nov 2013 07:54:55 GMT

[84] Password expiring in 42 day(s),threshold 90 days

يرسل ال ASA تحذير ويقدم الخيار ل كلمة تغيير:

إن يختار المستعمل أن يغير الكلمة، هناك رسالة حث لكلمة جديد، ويبدأ الإجراء عادي كلمة تغيير.

ASA و L2TP

قدمت الأمثلة السابقة الإصدار 1 من IKE (IKEv1) وشبكة VPN من IPSec.

بالنسبة لبروتوكول الاتصال النفقي للطبقة 2 (L2TP) و IPSec، يتم إستخدام PPP كنقل للمصادقة. يلزم وجود MSCHAPv2 بدلا من PAP حتى يعمل تغيير كلمة المرور:

ciscoasa(config-tunnel-general)# tunnel-group DefaultRAGroup ppp-attributes

ciscoasa(config-ppp)# authentication ms-chap-v2

للمصادقة الموسعة في L2TP داخل جلسة PPP، يتم التفاوض حول MSCHAPv2:

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

ثم يلزم تغيير كلمة المرور. أما بقية العملية فهي مماثلة جدا لسيناريو RADIUS باستخدام MSCHAPv2.

راجع L2TP عبر IPsec بين Windows 2000/XP PC و PIX/ASA 7.2 باستخدام مثال تكوين مفتاح مشترك مسبقا للحصول على تفاصيل إضافية حول كيفية تكوين L2TP.

عميل ASA SSL VPN

أشارت الأمثلة السابقة إلى IKEv1 وعميل Cisco VPN، وهو نهاية العمر (EOL).

الحل الموصى به لشبكة VPN للوصول عن بعد هو Cisco AnyConnect Secure Mobility، والذي يستخدم الإصدار 2 من IKE (IKEv2) وبروتوكولات SSL. تعمل ميزات تغيير كلمة المرور وانتهاء الصلاحية بنفس الطريقة تماما ل Cisco AnyConnect كما فعلت لعميل Cisco VPN.

بالنسبة ل IKEv1، تم تبادل بيانات تغيير كلمة المرور وانتهاء الصلاحية بين ASA وعميل VPN في المرحلة 1.5 (Xauth/mode config).

بالنسبة ل IKEv2، هو مماثل؛ يستخدم وضع config حزم CFG_REQUEST/CFG_REPLY.

بالنسبة ل SSL، تكون البيانات في جلسة عمل "أمان طبقة النقل في مخطط بيانات التحكم" (DTLS).

التشكيل هو نفسه ل ال ASA.

هذا مثال على التكوين باستخدام بروتوكول Cisco AnyConnect و SSL باستخدام خادم LDAP عبر SSL:

aaa-server LDAP protocol ldap

aaa-server LDAP (outside) host win2003-mga.test-cisco.com

ldap-base-dn CN=Users,DC=test-cisco,DC=com

ldap-scope subtree

ldap-naming-attribute sAMAccountName

ldap-login-password *****

ldap-login-dn CN=Administrator,CN=users,DC=test-cisco,DC=com

ldap-over-ssl enable

server-type microsoft

webvpn

enable outside

anyconnect image disk0:/anyconnect-win-3.1.02040-k9.pkg 1

anyconnect enable

tunnel-group-list enable

group-policy MY internal

group-policy MY attributes

vpn-tunnel-protocol ikev1 ikev2 l2tp-ipsec ssl-client ssl-clientless

tunnel-group RA type remote-access

tunnel-group RA general-attributes

address-pool POOL

authentication-server-group LDAP

default-group-policy MY

password-management

tunnel-group RA webvpn-attributes

group-alias RA enable

without-csd

ip local pool POOL 192.168.11.100-192.168.11.105 mask 255.255.255.0

بمجرد توفير كلمة المرور الصحيحة (التي انتهت صلاحيتها)، يحاول Cisco AnyConnect الاتصال ويطلب كلمة مرور جديدة:

تشير السجلات إلى إدخال بيانات اعتماد المستخدم مرتين:

تتوفر سجلات أكثر تفصيلا في أداة تقارير AnyConnect التشخيصية (DART).

بوابة الويب ASA SSL

تحدث نفس عملية تسجيل الدخول في بوابة الويب:

تحدث نفس عملية انتهاء صلاحية كلمة المرور والتغيير:

كلمة مرور تغيير المستخدم ل ACS

إن لا يمكن أن يغير الكلمة على ال VPN، أنت يستطيع استعملت ال ACS مستعمل يغير كلمة (UCP) كرست موقع خدمة. انظر دليل مطور البرامج لنظام التحكم بالوصول الآمن من Cisco 5.4: إستخدام خدمات ويب UCP.

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

لا يوجد حاليًا إجراء للتحقق من صحة هذا التكوين.

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

لا تتوفر حاليًا معلومات محددة لاستكشاف الأخطاء وإصلاحها لهذا التكوين.

معلومات ذات صلة

- دليل تكوين سلسلة Cisco ASA 5500 باستخدام CLI، 8.4 و 8.6: تكوين خادم خارجي لتفويض مستخدم جهاز الأمان

- الدعم التقني والمستندات - Cisco Systems