rpc.gssd(8)

الاسم
rpc.gssd - برنامج خفي RPCSEC_GSS

موجز
rpc.gssd [-DfMnlvrHC] [-k keytab] [-p pipefsdir] [-d ccachedir] [-t timeout] [-T timeout] [-U timeout] [-R realm]

مقدمة
بروتوكول RPCSEC_GSS، المُعرّف في RFC 5403، يُستخدم لتوفير أمان قوي للبروتوكولات القائمة على RPC مثل NFS.

قبل تبادل طلبات RPC باستخدام RPCSEC_GSS، يجب على عميل RPC إنشاء سياق أمان GSS. سياق الأمان هو حالة مشتركة على كل طرف من أطراف النقل الشبكي تُفعّل خدمات أمان GSS-API.

تُنشأ سياقات الأمان باستخدام بيانات اعتماد أمان. تمنح بيانات الاعتماد وصولاً مؤقتًا إلى خدمة شبكة آمنة، تمامًا كما تمنح تذكرة القطار وصولاً مؤقتًا لاستخدام خدمة السكك الحديدية.

يحصل المستخدم عادةً على بيانات اعتماد بتوفير كلمة مرور لأمر kinit(1)، أو عبر مكتبة PAM عند تسجيل الدخول. تُعرف بيانات الاعتماد المكتسبة بـ مبدأ المستخدم باسم بيانات اعتماد المستخدم (انظر kerberos(1) لمزيد من المعلومات حول المبادئ).

تتطلب عمليات معينة بيانات اعتماد لا تمثل مستخدمًا معينًا أو تمثل المضيف نفسه. يُسمى هذا النوع من بيانات الاعتماد بيانات اعتماد الآلة.

ينشئ المضيف بيانات اعتماد آلته باستخدام مبدأ خدمة تُخزّن كلمة مروره المشفرة في ملف محلي يُعرف باسم keytab. تظل بيانات اعتماد الآلة فعّالة دون تدخل المستخدم طالما يمكن للمضيف تجديدها.

بمجرد الحصول عليها، تُخزّن بيانات الاعتماد عادةً في ملفات مؤقتة محلية بأسماء مسارات معروفة.

الوصف
لإنشاء سياقات أمان GSS باستخدام ملفات بيانات الاعتماد هذه، يعتمد عميل RPC لنواة لينكس على برنامج خفي في مساحة المستخدم يُسمى rpc.gssd. يستخدم البرنامج الخفي rpc.gssd نظام الملفات rpc_pipefs للتواصل مع النواة.

  بيانات اعتماد المستخدم
عندما يُوثّق المستخدم باستخدام أمر مثل kinit(1)، تُخزّن بيانات الاعتماد الناتجة في ملف باسم معروف يُنشأ باستخدام UID الخاص بالمستخدم.

للتفاعل مع خادم NFS نيابة عن مستخدم معين مُوثّق عبر Kerberos، يطلب عميل RPC لنواة لينكس من rpc.gssd تهيئة سياق أمان باستخدام بيانات الاعتماد في ملف بيانات اعتماد ذلك المستخدم.

عادةً، تُوضع ملفات بيانات الاعتماد في /tmp. ومع ذلك، يمكن لـ rpc.gssd البحث عن ملفات بيانات الاعتماد في أكثر من دليل. انظر وصف الخيار -d للتفاصيل.

  بيانات اعتماد الآلة
يبحث rpc.gssd في keytab المبدئي، /etc/krb5.keytab، بالترتيب التالي عن مبدأ وكلمة مرور لاستخدامهما عند إنشاء بيانات اعتماد الآلة. للبحث، يستبدل rpc.gssd <hostname> و<REALM> باسم مضيف النظام المحلي ونطاق Kerberos.

   <HOSTNAME>$@<REALM>
   root/<hostname>@<REALM>
   nfs/<hostname>@<REALM>
   host/<hostname>@<REALM>
   root/<anyname>@<REALM>
   nfs/<أي_إسم>@<REALM>
   host/<anyname>@<REALM>

يختار rpc.gssd أحد إدخالات <anyname> إذا لم يجد مبدأ خدمة يطابق اسم المضيف المحلي، مثلاً إذا عيّن DHCP اسم المضيف المحلي ديناميكيًا. تُفعّل ميزة <anyname> استخدام نفس keytab على أنظمة متعددة. ومع ذلك، قد يؤدي استخدام نفس مبدأ الخدمة لإنشاء بيانات اعتماد آلة على مضيفين متعددين إلى تعريضات أمنية غير مرغوب فيها، وبالتالي لا يُنصح بذلك.

لاحظ أن <HOSTNAME>$@<REALM> هو مبدأ مستخدم يُفعّل NFS المُؤمّن بـ Kerberos عندما ينضم النظام المحلي إلى نطاق Active Directory باستخدام Samba. يوفر keytab كلمة المرور لهذا المبدأ.

يمكنك تحديد keytab مختلف باستخدام الخيار -k إذا كان /etc/krb5.keytab غير موجود أو لا يوفر أحد هذه المبادئ.

  بيانات اعتماد UID 0
UID 0 هي حالة خاصة. افتراضيًا، يستخدم rpc.gssd بيانات اعتماد الآلة الخاصة بالنظام لوصول UID 0 الذي يتطلب استيثاق GSS. هذا يحد من صلاحيات المستخدم الجذر عند الوصول إلى موارد الشبكة التي تتطلب الاستيثاق.

حدد الخيار -n عند بدء rpc.gssd إذا كنت ترغب في إجبار المستخدم الجذر على الحصول على بيانات اعتماد مستخدم بدلاً من استخدام بيانات اعتماد الآلة للنظام المحلي.

عند تحديد -n، تستمر النواة في طلب سياق GSS تم إنشاؤه باستخدام بيانات اعتماد آلة لعمليات NFSv4، مثل SETCLIENTID أو RENEW، التي تدير الحالة. إذا لم يتمكن rpc.gssd من الحصول على بيانات اعتماد آلة (على سبيل المثال، النظام المحلي ليس لديه keytab)، فستفشل عمليات NFSv4 التي تتطلب بيانات اعتماد آلة.

  أنواع التشفير
يمكن لمسؤول النطاق اختيار إضافة مفاتيح مشفرة بعدد من أنواع التشفير المختلفة إلى keytab النظام المحلي. على سبيل المثال، قد يكون للمضيف/الرئيسي مفاتيح لأنواع التشفير aes256-cts-hmac-sha384-192 وaes128-cts-hmac-sha256-128 وaes256-cts-hmac-sha1-96 وaes128-cts-hmac-sha1-96. هذا يسمح لـ rpc.gssd باختيار نوع تشفير مناسب يدعمه خادم NFS الهدف.

الخيارات

-D  اسم الخادم الذي يُمرر إلى GSSAPI للاستيثاق هو عادةً الاسم كما هو مطلوب بالضبط. على سبيل المثال، لـ NFS هو اسم الخادم في طلب التثبيت "servername:/path". فقط إذا بدا اسم الخادم هذا عنوان IP (IPv4 أو IPv6) أو اسمًا غير مؤهل (بدون نقاط)، فسيتم إجراء بحث DNS عكسي للحصول على اسم الخادم الأساسي.

    إذا كان -D موجودًا، فسيتم استخدام بحث DNS عكسي دائمًا، حتى إذا بدا اسم الخادم اسمًا أساسيًا. لذا فهو مطلوب إذا تم استخدام أسماء مؤهلة جزئيًا أو غير أساسية بانتظام.

    استخدام -D قد يُحدث ثغرة أمنية، لذا يُوصى بعدم استخدام -D، واستخدام الأسماء الأساسية دائمًا عند طلب الخدمات.

-f  يشغل rpc.gssd في المقدمة ويرسل المخرجات إلى stderr (على عكس syslogd)

-n  عند التحديد، يُجبر UID 0 على الحصول على بيانات اعتماد مستخدم تُستخدم بدلاً من بيانات اعتماد آلة النظام المحلي.

-k keytab
    يخبر rpc.gssd باستخدام المفاتيح الموجودة في keytab للحصول على بيانات اعتماد آلة. القيمة المبدئية هي /etc/krb5.keytab.

-p path
    يخبر rpc.gssd أين يبحث عن نظام ملفات rpc_pipefs. القيمة المبدئية هي /var/lib/nfs/rpc_pipefs.

-d search-path
    يحدد هذا الخيار قائمة مفصولة بنقطتين من الدلائل التي يبحث فيها rpc.gssd عن ملفات بيانات الاعتماد. القيمة المبدئية هي /tmp:/run/user/%U. يمكن تحديد التسلسل الحرفي "%U" لاستبدال UID للمستخدم الذي تُبحث بيانات اعتماده.

-M  افتراضيًا، تُخزن بيانات اعتماد الآلة في ملفات في الدليل الأول في مسار بحث دليل بيانات الاعتماد (انظر الخيار -d). عند تعيين -M، يخزن rpc.gssd بيانات اعتماد الآلة في الذاكرة بدلاً من ذلك.

-v  يزيد من تفصيل المخرجات (يمكن تحديده عدة مرات).

-r  إذا كانت مكتبة RPCSEC_GSS تدعم تعيين مستوى التصحيح، يزيد من إسهاب المخرجات (يمكن تحديده عدة مرات).

-R realm
    سيتم تفضيل تذاكر Kerberos من هذا النطاق عند مسح ملفات خبيئة بيانات الاعتماد المتاحة لاستخدامها في إنشاء سياق. افتراضيًا، يُفضل النطاق المبدئي، كما هو مكون في ملف تكوين Kerberos.

-t مهلة_الانتظار
    مهلة، بالثواني، لسياقات GSS للنواة. يسمح لك هذا الخيار بإجبار سياقات نواة جديدة على التفاوض بعد مهلة ثانية، مما يسمح بتغيير تذاكر Kerberos والهويات بشكل متكرر. المبدئي هو عدم وجود مهلة صريحة، مما يعني أن سياق النواة سيعيش طوال عمر تذكرة خدمة Kerberos المستخدمة في إنشائه.

-T timeout
    مهلة، بالثواني، لإنشاء اتصال RPC مع خادم أثناء إنشاء سياق gss مستوثق لمستخدم. المهلة المبدئية مضبوطة على 5 ثوانٍ. إذا تلقيت رسائل مثل "WARNING: can't create tcp rpc_clnt to server %servername% for user with uid %uid%: RPC: Remote system error - Connection timed out"، فيجب عليك التفكير في زيادة هذه المهلة.

-U timeout
    مهلة، بالثواني، لخيوط الاستدعاء العلوي. الخيوط التي تنفذ لفترة أطول من مهلة ثانية ستتسبب في تسجيل رسالة خطأ. المهلة المبدئية هي 30 ثانية. الحد الأدنى هو 5 ثوانٍ. الحد الأقصى هو 600 ثانية.

-C  بالإضافة إلى تسجيل رسالة خطأ للخيوط التي تجاوزت المهلة، سيتم إلغاء الخيط وسيتم الإبلاغ عن خطأ -ETIMEDOUT للنواة.

-H  يتجنب تعيين $HOME إلى "/". يسمح هذا لـ rpc.gssd بقراءة ملفات k5identity لكل مستخدم بدلاً من محاولة قراءة /.k5identity لكل مستخدم.

    إذا لم يتم تعيين -H، فسيستخدم rpc.gssd أول تطابق موجود في /var/kerberos/krb5/user/$EUID/client.keytab ولن يستخدم هوية رئيسية (principal) تستند إلى معلمات المضيف و/أو الخدمة المدرجة في $HOME/.k5identity.

ملف الضبط
يمكن أيضًا التحكم في العديد من الخيارات التي يمكن تعيينها في سطر الأوامر من خلال القيم المحددة في القسم [gssd] من ملف التهيئة /etc/nfs.conf. القيم المعترف بها تشمل:

verbosity
    القيمة التي تعادل عدد مرات -v.

rpc-verbosity
    القيمة التي تعادل عدد مرات -r.

use-memcache
    علامة منطقية مكافئة لـ -M.

use-machine-creds
    علامة منطقية. تعيينها إلى false يكافئ إعطاء العلامة -n.

avoid-dns
    تعيينها إلى false يكافئ توفير العلامة -D.

allowed-enctypes
    يسمح لك بتقييد rpc.gssd لاستخدام مجموعة فرعية من أنواع التشفير المسموح بها من قبل النواة ومكتبات krb5. هذا مفيد إذا كنت بحاجة إلى التشغيل البيني مع خادم NFS لا يدعم أنواع التشفير الأحدث SHA2 وCamellia، على سبيل المثال. خيار ملف التهيئة هذا ليس له خيار مكافئ في سطر الأوامر.

context-timeout
    مكافئ لـ -t.

rpc-timeout
    مكافئ لـ -T.

keytab-file
    مكافئ لـ -k.

cred-cache-directory
    مكافئ لـ -d.

preferred-realm
    مكافئ لـ -R.

upcall-timeout
    مكافئ لـ -U.

cancel-timed-out-upcalls
    تعيينها إلى true يكافئ توفير العلامة -C.

set-home
    تعيينها إلى false يكافئ توفير العلامة -H.

use-gss-proxy
    تعيين هذا إلى 1 يسمح لـ gssproxy(8) باعتراض استدعاءات GSSAPI وخدمتها نيابة عن rpc.gssd، مما يتيح ميزات معينة مثل بدء العميل المستند إلى keytab. لاحظ أن هذا لا علاقة له بالوظيفة التي يوفرها gssproxy(8) نيابة عن خادم NFS. لمزيد من المعلومات، انظر https://github.com/gssapi/gssproxy/blob/main/docs/NFS.md#nfs-client.

بالإضافة إلى ذلك، يتم التعرف على القيمة التالية من القسم [general]:

pipefs-directory
    مكافئ لـ -p.

انظر أيضًا
rpc.svcgssd(8)، kerberos(1)، kinit(1)، krb5.conf(5)، gssproxy(8)

المؤلفون
Dug Song <dugsong@umich.edu>
أندي أدامسون <andros@umich.edu>
ماريوس أمودت إريكسن <marius@umich.edu>
جي. بروس فيلدز (J. Bruce Fields) <bfields@umich.edu>

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.